annotate test/surface_test.py @ 3172:d1b367fc08bc tests-returncode

Use a return code of 1 when the tests fail.
author Thomas Kluyver <takowl@gmail.com>
date Wed, 09 Jan 2013 10:13:57 +0000
parents 064cd23c4c2f
children 4a4611239021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1 if __name__ == '__main__':
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
2 import sys
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
3 import os
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
4 pkg_dir = os.path.split(os.path.abspath(__file__))[0]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
5 parent_dir, pkg_name = os.path.split(pkg_dir)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
6 is_pygame_pkg = (pkg_name == 'tests' and
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
7 os.path.split(parent_dir)[1] == 'pygame')
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
8 if not is_pygame_pkg:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
9 sys.path.insert(0, parent_dir)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
10 else:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
11 is_pygame_pkg = __name__.startswith('pygame.tests.')
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
12
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
13 if is_pygame_pkg:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
14 from pygame.tests import test_utils
3127
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
15 from pygame.tests.test_utils import test_not_implemented, unittest, example_path
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
16 try:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
17 from pygame.tests.test_utils.arrinter import *
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
18 except ImportError:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
19 pass
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
20 else:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
21 from test import test_utils
3127
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
22 from test.test_utils import test_not_implemented, unittest, example_path
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
23 try:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
24 from test.test_utils.arrinter import *
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
25 except ImportError:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
26 pass
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
27 import pygame
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
28 from pygame.locals import *
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
29 from pygame.compat import xrange_, as_bytes, as_unicode
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
30 from pygame._view import View
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
31
3031
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
32 import gc
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
33 import weakref
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
34
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
35 def intify(i):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
36 """If i is a long, cast to an int while preserving the bits"""
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
37 if 0x80000000 & i:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
38 return int((0xFFFFFFFF & i))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
39 return i
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
40
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
41 def longify(i):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
42 """If i is an int, cast to a long while preserving the bits"""
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
43 if i < 0:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
44 return 0xFFFFFFFF & i
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
45 return long(i)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
46
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
47
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
48 class SurfaceTypeTest(unittest.TestCase):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
49 def test_set_clip( self ):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
50 """ see if surface.set_clip(None) works correctly.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
51 """
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
52 s = pygame.Surface((800, 600))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
53 r = pygame.Rect(10, 10, 10, 10)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
54 s.set_clip(r)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
55 r.move_ip(10, 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
56 s.set_clip(None)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
57 res = s.get_clip()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
58 # this was garbled before.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
59 self.assertEqual(res[0], 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
60 self.assertEqual(res[2], 800)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
61
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
62 def test_print(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
63 surf = pygame.Surface((70,70), 0, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
64 self.assertEqual(repr(surf), '<Surface(70x70x32 SW)>')
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
65
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
66 def test_keyword_arguments(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
67 surf = pygame.Surface((70,70), flags=SRCALPHA, depth=32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
68 self.assertEqual(surf.get_flags() & SRCALPHA, SRCALPHA)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
69 self.assertEqual(surf.get_bitsize(), 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
70
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
71 # sanity check to make sure the check below is valid
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
72 surf_16 = pygame.Surface((70,70), 0, 16)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
73 self.assertEqual(surf_16.get_bytesize(), 2)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
74
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
75 # try again with an argument list
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
76 surf_16 = pygame.Surface((70,70), depth=16)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
77 self.assertEqual(surf_16.get_bytesize(), 2)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
78
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
79 def test_set_at(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
80
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
81 #24bit surfaces
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
82 s = pygame.Surface( (100, 100), 0, 24)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
83 s.fill((0,0,0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
84
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
85 # set it with a tuple.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
86 s.set_at((0,0), (10,10,10, 255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
87 r = s.get_at((0,0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
88 self.failUnless(isinstance(r, pygame.Color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
89 self.assertEqual(r, (10,10,10, 255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
90
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
91 # try setting a color with a single integer.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
92 s.fill((0,0,0,255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
93 s.set_at ((10, 1), 0x0000FF)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
94 r = s.get_at((10,1))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
95 self.assertEqual(r, (0,0,255, 255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
96
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
97
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
98 def test_SRCALPHA(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
99 # has the flag been passed in ok?
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
100 surf = pygame.Surface((70,70), SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
101 self.assertEqual(surf.get_flags() & SRCALPHA, SRCALPHA)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
102
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
103 #24bit surfaces can not have SRCALPHA.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
104 self.assertRaises(ValueError, pygame.Surface, (100, 100), pygame.SRCALPHA, 24)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
105
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
106 # if we have a 32 bit surface, the SRCALPHA should have worked too.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
107 surf2 = pygame.Surface((70,70), SRCALPHA)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
108 if surf2.get_bitsize() == 32:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
109 self.assertEqual(surf2.get_flags() & SRCALPHA, SRCALPHA)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
110
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
111 def test_masks(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
112 def make_surf(bpp, flags, masks):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
113 pygame.Surface((10, 10), flags, bpp, masks)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
114 # With some masks SDL_CreateRGBSurface does not work properly.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
115 masks = (0xFF000000, 0xFF0000, 0xFF00, 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
116 self.assertEqual(make_surf(32, 0, masks), None)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
117 # For 24 and 32 bit surfaces Pygame assumes no losses.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
118 masks = (0x7F0000, 0xFF00, 0xFF, 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
119 self.failUnlessRaises(ValueError, make_surf, 24, 0, masks)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
120 self.failUnlessRaises(ValueError, make_surf, 32, 0, masks)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
121 # What contiguous bits in a mask.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
122 masks = (0x6F0000, 0xFF00, 0xFF, 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
123 self.failUnlessRaises(ValueError, make_surf, 32, 0, masks)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
124
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
125 def test_get_buffer (self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
126 surf = pygame.Surface ((70, 70), 0, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
127 buf = surf.get_buffer ()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
128 # 70*70*4 bytes = 19600
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
129 self.assertEqual (repr (buf), "<BufferProxy(19600)>")
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
130
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
131 def test_get_bounding_rect (self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
132 surf = pygame.Surface ((70, 70), SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
133 surf.fill((0,0,0,0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
134 bound_rect = surf.get_bounding_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
135 self.assertEqual(bound_rect.width, 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
136 self.assertEqual(bound_rect.height, 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
137 surf.set_at((30,30),(255,255,255,1))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
138 bound_rect = surf.get_bounding_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
139 self.assertEqual(bound_rect.left, 30)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
140 self.assertEqual(bound_rect.top, 30)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
141 self.assertEqual(bound_rect.width, 1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
142 self.assertEqual(bound_rect.height, 1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
143 surf.set_at((29,29),(255,255,255,1))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
144 bound_rect = surf.get_bounding_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
145 self.assertEqual(bound_rect.left, 29)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
146 self.assertEqual(bound_rect.top, 29)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
147 self.assertEqual(bound_rect.width, 2)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
148 self.assertEqual(bound_rect.height, 2)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
149
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
150 surf = pygame.Surface ((70, 70), 0, 24)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
151 surf.fill((0,0,0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
152 bound_rect = surf.get_bounding_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
153 self.assertEqual(bound_rect.width, surf.get_width())
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
154 self.assertEqual(bound_rect.height, surf.get_height())
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
155
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
156 surf.set_colorkey((0,0,0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
157 bound_rect = surf.get_bounding_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
158 self.assertEqual(bound_rect.width, 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
159 self.assertEqual(bound_rect.height, 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
160 surf.set_at((30,30),(255,255,255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
161 bound_rect = surf.get_bounding_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
162 self.assertEqual(bound_rect.left, 30)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
163 self.assertEqual(bound_rect.top, 30)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
164 self.assertEqual(bound_rect.width, 1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
165 self.assertEqual(bound_rect.height, 1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
166 surf.set_at((60,60),(255,255,255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
167 bound_rect = surf.get_bounding_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
168 self.assertEqual(bound_rect.left, 30)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
169 self.assertEqual(bound_rect.top, 30)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
170 self.assertEqual(bound_rect.width, 31)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
171 self.assertEqual(bound_rect.height, 31)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
172
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
173 def test_copy(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
174
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
175 # __doc__ (as of 2008-06-25) for pygame.surface.Surface.copy:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
176
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
177 # Surface.copy(): return Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
178 # create a new copy of a Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
179
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
180 color = (25, 25, 25, 25)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
181 s1 = pygame.Surface((32,32), pygame.SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
182 s1.fill(color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
183
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
184 s2 = s1.copy()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
185
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
186 s1rect = s1.get_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
187 s2rect = s2.get_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
188
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
189 self.assert_(s1rect.size == s2rect.size)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
190 self.assert_(s2.get_at((10,10)) == color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
191
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
192 def test_fill(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
193
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
194 # __doc__ (as of 2008-06-25) for pygame.surface.Surface.fill:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
195
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
196 # Surface.fill(color, rect=None, special_flags=0): return Rect
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
197 # fill Surface with a solid color
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
198
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
199 color = (25, 25, 25, 25)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
200 fill_rect = pygame.Rect(0, 0, 16, 16)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
201
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
202 s1 = pygame.Surface((32,32), pygame.SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
203 s1.fill(color, fill_rect)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
204
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
205 for pt in test_utils.rect_area_pts(fill_rect):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
206 self.assert_(s1.get_at(pt) == color )
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
207
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
208 for pt in test_utils.rect_outer_bounds(fill_rect):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
209 self.assert_(s1.get_at(pt) != color )
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
210
3120
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
211
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
212
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
213 def test_fill_negative_coordinates(self):
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
214
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
215 # negative coordinates should be clipped by fill, and not draw outside the surface.
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
216 color = (25, 25, 25, 25)
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
217 color2 = (20, 20, 20, 25)
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
218 fill_rect = pygame.Rect(-10, -10, 16, 16)
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
219
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
220 s1 = pygame.Surface((32,32), pygame.SRCALPHA, 32)
3123
ab2d5aeb0997 Added test for #123 using negative coords.
Rene Dudfield <renesd@gmail.com>
parents: 3122
diff changeset
221 r1 = s1.fill(color, fill_rect)
3120
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
222 c = s1.get_at((0,0))
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
223 self.assertEqual(c, color)
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
224
3123
ab2d5aeb0997 Added test for #123 using negative coords.
Rene Dudfield <renesd@gmail.com>
parents: 3122
diff changeset
225 # make subsurface in the middle to test it doesn't over write.
3120
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
226 s2 = s1.subsurface((5, 5, 5, 5))
3123
ab2d5aeb0997 Added test for #123 using negative coords.
Rene Dudfield <renesd@gmail.com>
parents: 3122
diff changeset
227 r2 = s2.fill(color2, (-3, -3, 5, 5))
3120
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
228 c2 = s1.get_at((4,4))
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
229 self.assertEqual(c, color)
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
230
3123
ab2d5aeb0997 Added test for #123 using negative coords.
Rene Dudfield <renesd@gmail.com>
parents: 3122
diff changeset
231 # rect returns the area we actually fill.
ab2d5aeb0997 Added test for #123 using negative coords.
Rene Dudfield <renesd@gmail.com>
parents: 3122
diff changeset
232 r3 = s2.fill(color2, (-30, -30, 5, 5))
ab2d5aeb0997 Added test for #123 using negative coords.
Rene Dudfield <renesd@gmail.com>
parents: 3122
diff changeset
233 # since we are using negative coords, it should be an zero sized rect.
ab2d5aeb0997 Added test for #123 using negative coords.
Rene Dudfield <renesd@gmail.com>
parents: 3122
diff changeset
234 self.assertEqual(tuple(r3), (0, 0, 0, 0))
ab2d5aeb0997 Added test for #123 using negative coords.
Rene Dudfield <renesd@gmail.com>
parents: 3122
diff changeset
235
ab2d5aeb0997 Added test for #123 using negative coords.
Rene Dudfield <renesd@gmail.com>
parents: 3122
diff changeset
236
3120
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
237
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
238
bc8f95fbc4dd Adding a surface.fill test with negative coordinates.
Rene Dudfield <renesd@gmail.com>
parents: 3033
diff changeset
239
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
240 def test_fill_keyword_args(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
241 color = (1, 2, 3, 255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
242 area = (1, 1, 2, 2)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
243 s1 = pygame.Surface((4, 4), 0, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
244 s1.fill(special_flags=pygame.BLEND_ADD, color=color, rect=area)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
245 self.assert_(s1.get_at((0, 0)) == (0, 0, 0, 255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
246 self.assert_(s1.get_at((1, 1)) == color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
247
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
248 ########################################################################
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
249
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
250 def test_get_alpha(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
251
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
252 # __doc__ (as of 2008-06-25) for pygame.surface.Surface.get_alpha:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
253
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
254 # Surface.get_alpha(): return int_value or None
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
255 # get the current Surface transparency value
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
256
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
257 s1 = pygame.Surface((32,32), pygame.SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
258 self.assert_(s1.get_alpha() == 255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
259
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
260 for alpha in (0, 32, 127, 255):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
261 s1.set_alpha(alpha)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
262 for t in range(4): s1.set_alpha(s1.get_alpha())
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
263 self.assert_(s1.get_alpha() == alpha)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
264
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
265 ########################################################################
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
266
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
267 def test_get_bytesize(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
268
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
269 # __doc__ (as of 2008-06-25) for pygame.surface.Surface.get_bytesize:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
270
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
271 # Surface.get_bytesize(): return int
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
272 # get the bytes used per Surface pixel
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
273
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
274 s1 = pygame.Surface((32,32), pygame.SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
275 self.assert_(s1.get_bytesize() == 4)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
276 self.assert_(s1.get_bitsize() == 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
277
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
278 ########################################################################
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
279
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
280
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
281 def test_get_flags(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
282
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
283 # __doc__ (as of 2008-06-25) for pygame.surface.Surface.get_flags:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
284
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
285 # Surface.get_flags(): return int
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
286 # get the additional flags used for the Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
287
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
288 s1 = pygame.Surface((32,32), pygame.SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
289 self.assert_(s1.get_flags() == pygame.SRCALPHA)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
290
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
291
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
292 ########################################################################
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
293
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
294 def test_get_parent(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
295
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
296 # __doc__ (as of 2008-06-25) for pygame.surface.Surface.get_parent:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
297
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
298 # Surface.get_parent(): return Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
299 # find the parent of a subsurface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
300
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
301 parent = pygame.Surface((16, 16))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
302 child = parent.subsurface((0,0,5,5))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
303
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
304 self.assert_(child.get_parent() is parent)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
305
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
306 ########################################################################
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
307
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
308 def test_get_rect(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
309
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
310 # __doc__ (as of 2008-06-25) for pygame.surface.Surface.get_rect:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
311
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
312 # Surface.get_rect(**kwargs): return Rect
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
313 # get the rectangular area of the Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
314
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
315 surf = pygame.Surface((16, 16))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
316
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
317 rect = surf.get_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
318
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
319 self.assert_(rect.size == (16, 16))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
320
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
321 ########################################################################
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
322
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
323 def test_get_width__size_and_height(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
324
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
325 # __doc__ (as of 2008-06-25) for pygame.surface.Surface.get_width:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
326
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
327 # Surface.get_width(): return width
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
328 # get the width of the Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
329
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
330 for w in xrange_(0, 255, 32):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
331 for h in xrange_(0, 127, 15):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
332 s = pygame.Surface((w, h))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
333 self.assertEquals(s.get_width(), w)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
334 self.assertEquals(s.get_height(), h)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
335 self.assertEquals(s.get_size(), (w, h))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
336
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
337 def test_get_view(self):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
338 # Check that Views are returned when array depth is supported,
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
339 # ValueErrors returned otherwise.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
340 Error = ValueError
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
341
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
342 s = pygame.Surface((5, 7), 0, 8)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
343 v = s.get_view('2')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
344 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
345 self.assertRaises(Error, s.get_view, '3')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
346
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
347 s = pygame.Surface((5, 7), 0, 16)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
348 v = s.get_view('2')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
349 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
350 self.assertRaises(Error, s.get_view, '3')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
351
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
352 s = pygame.Surface((5, 7), pygame.SRCALPHA, 16)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
353 v = s.get_view('2')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
354 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
355 self.assertRaises(Error, s.get_view, '3')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
356
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
357 s = pygame.Surface((5, 7), 0, 24)
2139
f804bebb7287 Surface.get_view('2') now returns a view for 24 bit surfaces.
Lenard Lindstrom <len-l@telus.net>
parents: 2137
diff changeset
358 v = s.get_view('2')
f804bebb7287 Surface.get_view('2') now returns a view for 24 bit surfaces.
Lenard Lindstrom <len-l@telus.net>
parents: 2137
diff changeset
359 self.assert_(isinstance(v, View))
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
360 v = s.get_view('3')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
361 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
362
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
363 s = pygame.Surface((5, 7), 0, 32)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
364 v = s.get_view('2')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
365 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
366 v = s.get_view('3')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
367 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
368
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
369 s = pygame.Surface((5, 7), pygame.SRCALPHA, 32)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
370 v = s.get_view('2')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
371 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
372 v = s.get_view('3')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
373 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
374 v = s.get_view('a')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
375 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
376 v = s.get_view('A')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
377 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
378 v = s.get_view('r')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
379 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
380 v = s.get_view('G')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
381 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
382 v = s.get_view('g')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
383 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
384 v = s.get_view('B')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
385 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
386 v = s.get_view('b')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
387
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
388 # Check argument defaults.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
389 s = pygame.Surface((5, 7), 0, 16)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
390 v = s.get_view()
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
391 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
392
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
393 # Check keyword arguments.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
394 s = pygame.Surface((5, 7), 0, 24)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
395 v = s.get_view(kind='3')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
396 self.assert_(isinstance(v, View))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
397
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
398 # Check locking.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
399 s = pygame.Surface((2, 4), 0, 32)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
400 self.assert_(not s.get_locked())
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
401 v = s.get_view()
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
402 self.assert_(s.get_locked())
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
403 del v
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
404 self.assert_(not s.get_locked())
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
405
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
406 # Check invalid view kind values.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
407 s = pygame.Surface((2, 4), pygame.SRCALPHA, 32)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
408 self.assertRaises(TypeError, s.get_view, '')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
409 self.assertRaises(TypeError, s.get_view, '0')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
410 self.assertRaises(TypeError, s.get_view, 'RGBA')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
411 self.assertRaises(TypeError, s.get_view, 2)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
412
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
413 # Both unicode and bytes strings are allowed for kind.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
414 s = pygame.Surface((2, 4), 0, 32)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
415 s.get_view(as_unicode('2'))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
416 s.get_view(as_bytes('2'))
3031
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
417
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
418 # Garbage collection
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
419 s = pygame.Surface((2, 4), 0, 32)
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
420 weak_s = weakref.ref(s)
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
421 v = s.get_view('3')
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
422 weak_v = weakref.ref(v)
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
423 gc.collect()
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
424 self.assertTrue(weak_s() is s)
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
425 self.assertTrue(weak_v() is v)
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
426 del v
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
427 gc.collect()
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
428 self.assertTrue(weak_s() is s)
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
429 self.assertTrue(weak_v() is None)
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
430 del s
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
431 gc.collect()
7cd7afdc9e10 Ensure Surface reference count bug fix (changeset 3705fa59dd5b) actually works.
Lenard Lindstrom <len-l@telus.net>
parents: 3004
diff changeset
432 self.assertTrue(weak_s() is None)
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
433
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
434 def test_set_colorkey(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
435
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
436 # __doc__ (as of 2008-06-25) for pygame.surface.Surface.set_colorkey:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
437
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
438 # Surface.set_colorkey(Color, flags=0): return None
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
439 # Surface.set_colorkey(None): return None
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
440 # Set the transparent colorkey
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
441
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
442 s = pygame.Surface((16,16), pygame.SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
443
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
444 colorkeys = ((20,189,20, 255),(128,50,50,255), (23, 21, 255,255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
445
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
446 for colorkey in colorkeys:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
447 s.set_colorkey(colorkey)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
448 for t in range(4): s.set_colorkey(s.get_colorkey())
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
449 self.assertEquals(s.get_colorkey(), colorkey)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
450
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
451
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
452
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
453 def test_set_masks(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
454 s = pygame.Surface((32,32))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
455 r,g,b,a = s.get_masks()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
456 s.set_masks((b,g,r,a))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
457 r2,g2,b2,a2 = s.get_masks()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
458 self.assertEqual((r,g,b,a), (b2,g2,r2,a2))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
459
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
460
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
461 def test_set_shifts(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
462 s = pygame.Surface((32,32))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
463 r,g,b,a = s.get_shifts()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
464 s.set_shifts((b,g,r,a))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
465 r2,g2,b2,a2 = s.get_shifts()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
466 self.assertEqual((r,g,b,a), (b2,g2,r2,a2))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
467
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
468 def test_blit_keyword_args(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
469 color = (1, 2, 3, 255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
470 s1 = pygame.Surface((4, 4), 0, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
471 s2 = pygame.Surface((2, 2), 0, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
472 s2.fill((1, 2, 3))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
473 s1.blit(special_flags=BLEND_ADD, source=s2,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
474 dest=(1, 1), area=s2.get_rect())
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
475 self.assertEqual(s1.get_at((0, 0)), (0, 0, 0, 255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
476 self.assertEqual(s1.get_at((1, 1)), color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
477
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
478 def todo_test_blit(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
479 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.blit:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
480
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
481 # Surface.blit(source, dest, area=None, special_flags = 0): return Rect
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
482 # draw one image onto another
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
483 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
484 # Draws a source Surface onto this Surface. The draw can be positioned
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
485 # with the dest argument. Dest can either be pair of coordinates
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
486 # representing the upper left corner of the source. A Rect can also be
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
487 # passed as the destination and the topleft corner of the rectangle
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
488 # will be used as the position for the blit. The size of the
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
489 # destination rectangle does not effect the blit.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
490 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
491 # An optional area rectangle can be passed as well. This represents a
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
492 # smaller portion of the source Surface to draw.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
493 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
494 # An optional special flags is for passing in new in 1.8.0: BLEND_ADD,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
495 # BLEND_SUB, BLEND_MULT, BLEND_MIN, BLEND_MAX new in 1.8.1:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
496 # BLEND_RGBA_ADD, BLEND_RGBA_SUB, BLEND_RGBA_MULT, BLEND_RGBA_MIN,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
497 # BLEND_RGBA_MAX BLEND_RGB_ADD, BLEND_RGB_SUB, BLEND_RGB_MULT,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
498 # BLEND_RGB_MIN, BLEND_RGB_MAX With other special blitting flags
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
499 # perhaps added in the future.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
500 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
501 # The return rectangle is the area of the affected pixels, excluding
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
502 # any pixels outside the destination Surface, or outside the clipping
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
503 # area.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
504 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
505 # Pixel alphas will be ignored when blitting to an 8 bit Surface.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
506 # special_flags new in pygame 1.8.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
507
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
508 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
509
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
510 def test_blit__SRCALPHA_opaque_source(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
511 src = pygame.Surface( (256,256), SRCALPHA ,32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
512 dst = src.copy()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
513
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
514 for i, j in test_utils.rect_area_pts(src.get_rect()):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
515 dst.set_at( (i,j), (i,0,0,j) )
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
516 src.set_at( (i,j), (0,i,0,255) )
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
517
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
518 dst.blit(src, (0,0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
519
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
520 for pt in test_utils.rect_area_pts(src.get_rect()):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
521 self.assertEquals ( dst.get_at(pt)[1], src.get_at(pt)[1] )
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
522
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
523 def todo_test_blit__blit_to_self(self): #TODO
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
524 src = pygame.Surface( (256,256), SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
525 rect = src.get_rect()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
526
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
527 for pt, color in test_utils.gradient(rect.width, rect.height):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
528 src.set_at(pt, color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
529
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
530 src.blit(src, (0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
531
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
532 def todo_test_blit__SRCALPHA_to_SRCALPHA_non_zero(self): #TODO
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
533 # " There is no unit test for blitting a SRCALPHA source with non-zero
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
534 # alpha to a SRCALPHA destination with non-zero alpha " LL
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
535
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
536 w,h = size = 32,32
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
537
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
538 s = pygame.Surface(size, pygame.SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
539 s2 = s.copy()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
540
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
541 s.fill((32,32,32,111))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
542 s2.fill((32,32,32,31))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
543
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
544 s.blit(s2, (0,0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
545
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
546 # TODO:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
547 # what is the correct behaviour ?? should it blend? what algorithm?
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
548
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
549 self.assertEquals(s.get_at((0,0)), (32,32,32,31))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
550
2305
a1c860de4b0b Bug fix: Surface.blit seqfaulted on Debian for 8 bit target and 32 source with per-pixel alpha when the display was not initialized; add special blit case.
Lenard Lindstrom <len-l@telus.net>
parents: 2141
diff changeset
551 def test_blit__SRCALPHA32_to_8(self):
a1c860de4b0b Bug fix: Surface.blit seqfaulted on Debian for 8 bit target and 32 source with per-pixel alpha when the display was not initialized; add special blit case.
Lenard Lindstrom <len-l@telus.net>
parents: 2141
diff changeset
552 # Bug: fatal
a1c860de4b0b Bug fix: Surface.blit seqfaulted on Debian for 8 bit target and 32 source with per-pixel alpha when the display was not initialized; add special blit case.
Lenard Lindstrom <len-l@telus.net>
parents: 2141
diff changeset
553 # SDL_DisplayConvert segfaults when video is uninitialized.
a1c860de4b0b Bug fix: Surface.blit seqfaulted on Debian for 8 bit target and 32 source with per-pixel alpha when the display was not initialized; add special blit case.
Lenard Lindstrom <len-l@telus.net>
parents: 2141
diff changeset
554 target = pygame.Surface((11, 8), 0, 8)
a1c860de4b0b Bug fix: Surface.blit seqfaulted on Debian for 8 bit target and 32 source with per-pixel alpha when the display was not initialized; add special blit case.
Lenard Lindstrom <len-l@telus.net>
parents: 2141
diff changeset
555 color = target.get_palette_at(2)
a1c860de4b0b Bug fix: Surface.blit seqfaulted on Debian for 8 bit target and 32 source with per-pixel alpha when the display was not initialized; add special blit case.
Lenard Lindstrom <len-l@telus.net>
parents: 2141
diff changeset
556 source = pygame.Surface((1, 1), pygame.SRCALPHA, 32)
a1c860de4b0b Bug fix: Surface.blit seqfaulted on Debian for 8 bit target and 32 source with per-pixel alpha when the display was not initialized; add special blit case.
Lenard Lindstrom <len-l@telus.net>
parents: 2141
diff changeset
557 source.set_at((0, 0), color)
a1c860de4b0b Bug fix: Surface.blit seqfaulted on Debian for 8 bit target and 32 source with per-pixel alpha when the display was not initialized; add special blit case.
Lenard Lindstrom <len-l@telus.net>
parents: 2141
diff changeset
558 target.blit(source, (0, 0))
a1c860de4b0b Bug fix: Surface.blit seqfaulted on Debian for 8 bit target and 32 source with per-pixel alpha when the display was not initialized; add special blit case.
Lenard Lindstrom <len-l@telus.net>
parents: 2141
diff changeset
559
3127
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
560 def test_image_convert_bug_131(self):
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
561 # Bitbucket bug #131: Unable to Surface.convert(32) some 1-bit images.
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
562 # https://bitbucket.org/pygame/pygame/issue/131/unable-to-surfaceconvert-32-some-1-bit
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
563 pygame.display.init()
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
564 pygame.display.set_mode((640,480))
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
565
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
566 im = pygame.image.load(example_path(os.path.join("data", "city.png")))
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
567 im2 = pygame.image.load(example_path(os.path.join("data", "brick.png")))
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
568
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
569 self.assertEquals( im.get_palette(), ((0, 0, 0, 255), (255, 255, 255, 255)) )
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
570 self.assertEquals( im2.get_palette(), ((0, 0, 0, 255), (0, 0, 0, 255)) )
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
571
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
572 self.assertEqual(repr(im.convert(32)), '<Surface(24x24x32 SW)>')
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
573 self.assertEqual(repr(im2.convert(32)), '<Surface(469x137x32 SW)>')
064cd23c4c2f Adding test for issue #131.
Rene Dudfield <renesd@gmail.com>
parents: 3123
diff changeset
574
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
575 def todo_test_convert(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
576
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
577 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.convert:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
578
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
579 # Surface.convert(Surface): return Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
580 # Surface.convert(depth, flags=0): return Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
581 # Surface.convert(masks, flags=0): return Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
582 # Surface.convert(): return Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
583 # change the pixel format of an image
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
584 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
585 # Creates a new copy of the Surface with the pixel format changed. The
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
586 # new pixel format can be determined from another existing Surface.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
587 # Otherwise depth, flags, and masks arguments can be used, similar to
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
588 # the pygame.Surface() call.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
589 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
590 # If no arguments are passed the new Surface will have the same pixel
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
591 # format as the display Surface. This is always the fastest format for
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
592 # blitting. It is a good idea to convert all Surfaces before they are
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
593 # blitted many times.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
594 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
595 # The converted Surface will have no pixel alphas. They will be
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
596 # stripped if the original had them. See Surface.convert_alpha() for
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
597 # preserving or creating per-pixel alphas.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
598 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
599
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
600 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
601
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
602 def todo_test_convert_alpha(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
603
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
604 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.convert_alpha:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
605
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
606 # Surface.convert_alpha(Surface): return Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
607 # Surface.convert_alpha(): return Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
608 # change the pixel format of an image including per pixel alphas
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
609 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
610 # Creates a new copy of the surface with the desired pixel format. The
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
611 # new surface will be in a format suited for quick blitting to the
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
612 # given format with per pixel alpha. If no surface is given, the new
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
613 # surface will be optimized for blitting to the current display.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
614 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
615 # Unlike the Surface.convert() method, the pixel format for the new
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
616 # image will not be exactly the same as the requested source, but it
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
617 # will be optimized for fast alpha blitting to the destination.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
618 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
619
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
620 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
621
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
622 def todo_test_get_abs_offset(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
623
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
624 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_abs_offset:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
625
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
626 # Surface.get_abs_offset(): return (x, y)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
627 # find the absolute position of a child subsurface inside its top level parent
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
628 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
629 # Get the offset position of a child subsurface inside of its top
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
630 # level parent Surface. If the Surface is not a subsurface this will
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
631 # return (0, 0).
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
632 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
633
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
634 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
635
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
636 def todo_test_get_abs_parent(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
637
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
638 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_abs_parent:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
639
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
640 # Surface.get_abs_parent(): return Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
641 # find the top level parent of a subsurface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
642 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
643 # Returns the parent Surface of a subsurface. If this is not a
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
644 # subsurface then this surface will be returned.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
645 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
646
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
647 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
648
2137
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
649 def test_get_at(self):
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
650 surf = pygame.Surface((2, 2), 0, 24)
2137
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
651 c00 = pygame.Color(1, 2, 3)
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
652 c01 = pygame.Color(5, 10, 15)
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
653 c10 = pygame.Color(100, 50, 0)
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
654 c11 = pygame.Color(4, 5, 6)
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
655 surf.set_at((0, 0), c00)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
656 surf.set_at((0, 1), c01)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
657 surf.set_at((1, 0), c10)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
658 surf.set_at((1, 1), c11)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
659 c = surf.get_at((0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
660 self.failUnless(isinstance(c, pygame.Color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
661 self.failUnlessEqual(c, c00)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
662 self.failUnlessEqual(surf.get_at((0, 1)), c01)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
663 self.failUnlessEqual(surf.get_at((1, 0)), c10)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
664 self.failUnlessEqual(surf.get_at((1, 1)), c11)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
665 for p in [(-1, 0), (0, -1), (2, 0), (0, 2)]:
2137
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
666 self.failUnlessRaises(IndexError, surf.get_at, p)
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
667
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
668 def test_get_at_mapped(self):
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
669 color = pygame.Color(10, 20, 30)
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
670 for bitsize in [8, 16, 24, 32]:
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
671 surf = pygame.Surface((2, 2), 0, bitsize)
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
672 surf.fill(color)
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
673 pixel = surf.get_at_mapped((0, 0))
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
674 self.failUnlessEqual(pixel, surf.map_rgb(color),
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
675 "%i != %i, bitsize: %i" %
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
676 (pixel, surf.map_rgb(color), bitsize))
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
677
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
678 def todo_test_get_bitsize(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
679
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
680 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_bitsize:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
681
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
682 # Surface.get_bitsize(): return int
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
683 # get the bit depth of the Surface pixel format
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
684 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
685 # Returns the number of bits used to represent each pixel. This value
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
686 # may not exactly fill the number of bytes used per pixel. For example
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
687 # a 15 bit Surface still requires a full 2 bytes.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
688 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
689
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
690 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
691
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
692 def todo_test_get_clip(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
693
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
694 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_clip:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
695
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
696 # Surface.get_clip(): return Rect
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
697 # get the current clipping area of the Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
698 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
699 # Return a rectangle of the current clipping area. The Surface will
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
700 # always return a valid rectangle that will never be outside the
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
701 # bounds of the image. If the Surface has had None set for the
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
702 # clipping area, the Surface will return a rectangle with the full
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
703 # area of the Surface.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
704 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
705
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
706 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
707
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
708 def todo_test_get_colorkey(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
709 surf = pygame.surface((2, 2), 0, 24)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
710 self.failUnless(surf.get_colorykey() is None)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
711 colorkey = pygame.Color(20, 40, 60)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
712 surf.set_colorkey(colorkey)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
713 ck = surf.get_colorkey()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
714 self.failUnless(isinstance(ck, pygame.Color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
715 self.failUnlessEqual(ck, colorkey)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
716
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
717 def todo_test_get_height(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
718
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
719 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_height:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
720
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
721 # Surface.get_height(): return height
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
722 # get the height of the Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
723 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
724 # Return the height of the Surface in pixels.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
725
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
726 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
727
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
728 def todo_test_get_locked(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
729
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
730 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_locked:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
731
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
732 # Surface.get_locked(): return bool
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
733 # test if the Surface is current locked
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
734 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
735 # Returns True when the Surface is locked. It doesn't matter how many
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
736 # times the Surface is locked.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
737 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
738
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
739 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
740
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
741 def todo_test_get_locks(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
742
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
743 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_locks:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
744
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
745 # Surface.get_locks(): return tuple
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
746 # Gets the locks for the Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
747 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
748 # Returns the currently existing locks for the Surface.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
749
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
750 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
751
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
752 def todo_test_get_losses(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
753
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
754 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_losses:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
755
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
756 # Surface.get_losses(): return (R, G, B, A)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
757 # the significant bits used to convert between a color and a mapped integer
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
758 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
759 # Return the least significant number of bits stripped from each color
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
760 # in a mapped integer.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
761 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
762 # This value is not needed for normal Pygame usage.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
763
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
764 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
765
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
766 def todo_test_get_masks(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
767
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
768 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_masks:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
769
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
770 # Surface.get_masks(): return (R, G, B, A)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
771 # the bitmasks needed to convert between a color and a mapped integer
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
772 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
773 # Returns the bitmasks used to isolate each color in a mapped integer.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
774 # This value is not needed for normal Pygame usage.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
775
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
776 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
777
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
778 def todo_test_get_offset(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
779
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
780 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_offset:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
781
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
782 # Surface.get_offset(): return (x, y)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
783 # find the position of a child subsurface inside a parent
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
784 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
785 # Get the offset position of a child subsurface inside of a parent. If
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
786 # the Surface is not a subsurface this will return (0, 0).
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
787 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
788
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
789 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
790
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
791 def test_get_palette(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
792 pygame.init()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
793 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
794 palette = [Color(i, i, i) for i in range(256)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
795 pygame.display.set_mode((100, 50))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
796 surf = pygame.Surface((2, 2), 0, 8)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
797 surf.set_palette(palette)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
798 palette2 = surf.get_palette()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
799 r,g,b = palette2[0]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
800
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
801 self.failUnlessEqual(len(palette2), len(palette))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
802 for c2, c in zip(palette2, palette):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
803 self.failUnlessEqual(c2, c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
804 for c in palette2:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
805 self.failUnless(isinstance(c, pygame.Color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
806 finally:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
807 pygame.quit()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
808
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
809 def test_get_palette_at(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
810 # See also test_get_palette
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
811 pygame.init()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
812 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
813 pygame.display.set_mode((100, 50))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
814 surf = pygame.Surface((2, 2), 0, 8)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
815 color = pygame.Color(1, 2, 3, 255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
816 surf.set_palette_at(0, color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
817 color2 = surf.get_palette_at(0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
818 self.failUnless(isinstance(color2, pygame.Color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
819 self.failUnlessEqual(color2, color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
820 self.failUnlessRaises(IndexError, surf.get_palette_at, -1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
821 self.failUnlessRaises(IndexError, surf.get_palette_at, 256)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
822 finally:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
823 pygame.quit()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
824
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
825 def todo_test_get_pitch(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
826
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
827 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_pitch:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
828
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
829 # Surface.get_pitch(): return int
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
830 # get the number of bytes used per Surface row
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
831 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
832 # Return the number of bytes separating each row in the Surface.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
833 # Surfaces in video memory are not always linearly packed. Subsurfaces
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
834 # will also have a larger pitch than their real width.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
835 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
836 # This value is not needed for normal Pygame usage.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
837
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
838 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
839
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
840 def todo_test_get_shifts(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
841
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
842 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_shifts:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
843
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
844 # Surface.get_shifts(): return (R, G, B, A)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
845 # the bit shifts needed to convert between a color and a mapped integer
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
846 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
847 # Returns the pixel shifts need to convert between each color and a
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
848 # mapped integer.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
849 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
850 # This value is not needed for normal Pygame usage.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
851
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
852 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
853
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
854 def todo_test_get_size(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
855
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
856 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.get_size:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
857
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
858 # Surface.get_size(): return (width, height)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
859 # get the dimensions of the Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
860 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
861 # Return the width and height of the Surface in pixels.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
862
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
863 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
864
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
865 def todo_test_lock(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
866
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
867 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.lock:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
868
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
869 # Surface.lock(): return None
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
870 # lock the Surface memory for pixel access
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
871 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
872 # Lock the pixel data of a Surface for access. On accelerated
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
873 # Surfaces, the pixel data may be stored in volatile video memory or
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
874 # nonlinear compressed forms. When a Surface is locked the pixel
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
875 # memory becomes available to access by regular software. Code that
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
876 # reads or writes pixel values will need the Surface to be locked.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
877 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
878 # Surfaces should not remain locked for more than necessary. A locked
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
879 # Surface can often not be displayed or managed by Pygame.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
880 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
881 # Not all Surfaces require locking. The Surface.mustlock() method can
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
882 # determine if it is actually required. There is no performance
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
883 # penalty for locking and unlocking a Surface that does not need it.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
884 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
885 # All pygame functions will automatically lock and unlock the Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
886 # data as needed. If a section of code is going to make calls that
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
887 # will repeatedly lock and unlock the Surface many times, it can be
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
888 # helpful to wrap the block inside a lock and unlock pair.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
889 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
890 # It is safe to nest locking and unlocking calls. The surface will
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
891 # only be unlocked after the final lock is released.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
892 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
893
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
894 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
895
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
896 def test_map_rgb(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
897 color = Color(0, 128, 255, 64)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
898 surf = pygame.Surface((5, 5), SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
899 c = surf.map_rgb(color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
900 self.failUnlessEqual(surf.unmap_rgb(c), color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
901
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
902 self.failUnlessEqual(surf.get_at((0, 0)), (0, 0, 0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
903 surf.fill(c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
904 self.failUnlessEqual(surf.get_at((0, 0)), color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
905
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
906 surf.fill((0, 0, 0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
907 self.failUnlessEqual(surf.get_at((0, 0)), (0, 0, 0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
908 surf.set_at((0, 0), c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
909 self.failUnlessEqual(surf.get_at((0, 0)), color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
910
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
911 def todo_test_mustlock(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
912
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
913 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.mustlock:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
914
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
915 # Surface.mustlock(): return bool
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
916 # test if the Surface requires locking
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
917 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
918 # Returns True if the Surface is required to be locked to access pixel
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
919 # data. Usually pure software Surfaces do not require locking. This
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
920 # method is rarely needed, since it is safe and quickest to just lock
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
921 # all Surfaces as needed.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
922 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
923 # All pygame functions will automatically lock and unlock the Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
924 # data as needed. If a section of code is going to make calls that
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
925 # will repeatedly lock and unlock the Surface many times, it can be
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
926 # helpful to wrap the block inside a lock and unlock pair.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
927 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
928
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
929 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
930
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
931 def todo_test_set_alpha(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
932
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
933 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.set_alpha:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
934
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
935 # Surface.set_alpha(value, flags=0): return None
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
936 # Surface.set_alpha(None): return None
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
937 # set the alpha value for the full Surface image
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
938 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
939 # Set the current alpha value fo r the Surface. When blitting this
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
940 # Surface onto a destination, the pixels will be drawn slightly
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
941 # transparent. The alpha value is an integer from 0 to 255, 0 is fully
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
942 # transparent and 255 is fully opaque. If None is passed for the alpha
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
943 # value, then the Surface alpha will be disabled.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
944 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
945 # This value is different than the per pixel Surface alpha. If the
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
946 # Surface format contains per pixel alphas, then this alpha value will
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
947 # be ignored. If the Surface contains per pixel alphas, setting the
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
948 # alpha value to None will disable the per pixel transparency.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
949 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
950 # The optional flags argument can be set to pygame.RLEACCEL to provide
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
951 # better performance on non accelerated displays. An RLEACCEL Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
952 # will be slower to modify, but quicker to blit as a source.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
953 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
954
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
955 s = pygame.Surface((1,1), SRCALHPA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
956 s.fill((1, 2, 3, 4))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
957 s.set_alpha(None)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
958 self.failUnlessEqual(s.get_at((0, 0)), (1, 2, 3, 255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
959 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
960
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
961 def test_set_palette(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
962 palette = [pygame.Color(i, i, i) for i in range(256)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
963 palette[10] = tuple(palette[10]) # 4 element tuple
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
964 palette[11] = tuple(palette[11])[0:3] # 3 element tuple
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
965
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
966 surf = pygame.Surface((2, 2), 0, 8)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
967 pygame.init()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
968 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
969 pygame.display.set_mode((100, 50))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
970 surf.set_palette(palette)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
971 for i in range(256):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
972 self.failUnlessEqual(surf.map_rgb(palette[i]), i,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
973 "palette color %i" % (i,))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
974 c = palette[i]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
975 surf.fill(c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
976 self.failUnlessEqual(surf.get_at((0, 0)), c,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
977 "palette color %i" % (i,))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
978 for i in range(10):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
979 palette[i] = pygame.Color(255 - i, 0, 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
980 surf.set_palette(palette[0:10])
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
981 for i in range(256):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
982 self.failUnlessEqual(surf.map_rgb(palette[i]), i,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
983 "palette color %i" % (i,))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
984 c = palette[i]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
985 surf.fill(c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
986 self.failUnlessEqual(surf.get_at((0, 0)), c,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
987 "palette color %i" % (i,))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
988 self.failUnlessRaises(ValueError, surf.set_palette,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
989 [Color(1, 2, 3, 254)])
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
990 self.failUnlessRaises(ValueError, surf.set_palette,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
991 (1, 2, 3, 254))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
992 finally:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
993 pygame.quit()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
994
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
995 def test_set_palette_at(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
996 pygame.init()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
997 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
998 pygame.display.set_mode((100, 50))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
999 surf = pygame.Surface((2, 2), 0, 8)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1000 original = surf.get_palette_at(10)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1001 replacement = Color(1, 1, 1, 255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1002 if replacement == original:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1003 replacement = Color(2, 2, 2, 255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1004 surf.set_palette_at(10, replacement)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1005 self.failUnlessEqual(surf.get_palette_at(10), replacement)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1006 next = tuple(original)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1007 surf.set_palette_at(10, next)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1008 self.failUnlessEqual(surf.get_palette_at(10), next)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1009 next = tuple(original)[0:3]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1010 surf.set_palette_at(10, next)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1011 self.failUnlessEqual(surf.get_palette_at(10), next)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1012 self.failUnlessRaises(IndexError,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1013 surf.set_palette_at,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1014 256, replacement)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1015 self.failUnlessRaises(IndexError,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1016 surf.set_palette_at,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1017 -1, replacement)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1018 finally:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1019 pygame.quit()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1020
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1021 def test_subsurface(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1022
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1023 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.subsurface:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1024
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1025 # Surface.subsurface(Rect): return Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1026 # create a new surface that references its parent
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1027 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1028 # Returns a new Surface that shares its pixels with its new parent.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1029 # The new Surface is considered a child of the original. Modifications
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1030 # to either Surface pixels will effect each other. Surface information
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1031 # like clipping area and color keys are unique to each Surface.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1032 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1033 # The new Surface will inherit the palette, color key, and alpha
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1034 # settings from its parent.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1035 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1036 # It is possible to have any number of subsurfaces and subsubsurfaces
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1037 # on the parent. It is also possible to subsurface the display Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1038 # if the display mode is not hardware accelerated.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1039 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1040 # See the Surface.get_offset(), Surface.get_parent() to learn more
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1041 # about the state of a subsurface.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1042 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1043
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1044 surf = pygame.Surface((16, 16))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1045 s = surf.subsurface(0,0,1,1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1046 s = surf.subsurface((0,0,1,1))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1047
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1048
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1049
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1050 #s = surf.subsurface((0,0,1,1), 1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1051 # This form is not acceptable.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1052 #s = surf.subsurface(0,0,10,10, 1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1053
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1054 self.assertRaises(ValueError, surf.subsurface, (0,0,1,1,666))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1055
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1056
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1057 self.assertEquals(s.get_shifts(), surf.get_shifts())
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1058 self.assertEquals(s.get_masks(), surf.get_masks())
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1059 self.assertEquals(s.get_losses(), surf.get_losses())
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1060
3004
38cdc3d7302a Bug fix: Issue 2 - Surface.subsurface segfault
Lenard Lindstrom <len-l@telus.net>
parents: 2305
diff changeset
1061 # Issue 2 at Bitbucket.org/pygame/pygame
38cdc3d7302a Bug fix: Issue 2 - Surface.subsurface segfault
Lenard Lindstrom <len-l@telus.net>
parents: 2305
diff changeset
1062 surf = pygame.Surface.__new__(pygame.Surface)
38cdc3d7302a Bug fix: Issue 2 - Surface.subsurface segfault
Lenard Lindstrom <len-l@telus.net>
parents: 2305
diff changeset
1063 self.assertRaises(pygame.error, surf.subsurface, (0, 0, 0, 0))
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1064
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1065
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1066
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1067 def todo_test_unlock(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1068
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1069 # __doc__ (as of 2008-08-02) for pygame.surface.Surface.unlock:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1070
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1071 # Surface.unlock(): return None
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1072 # unlock the Surface memory from pixel access
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1073 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1074 # Unlock the Surface pixel data after it has been locked. The unlocked
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1075 # Surface can once again be drawn and managed by Pygame. See the
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1076 # Surface.lock() documentation for more details.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1077 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1078 # All pygame functions will automatically lock and unlock the Surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1079 # data as needed. If a section of code is going to make calls that
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1080 # will repeatedly lock and unlock the Surface many times, it can be
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1081 # helpful to wrap the block inside a lock and unlock pair.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1082 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1083 # It is safe to nest locking and unlocking calls. The surface will
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1084 # only be unlocked after the final lock is released.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1085 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1086
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1087 self.fail()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1088
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1089 def test_unmap_rgb(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1090 # Special case, 8 bit-per-pixel surface (has a palette).
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1091 surf = pygame.Surface((2, 2), 0, 8)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1092 c = (1, 1, 1) # Unlikely to be in a default palette.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1093 i = 67
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1094 pygame.init()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1095 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1096 pygame.display.set_mode((100, 50))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1097 surf.set_palette_at(i, c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1098 unmapped_c = surf.unmap_rgb(i)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1099 self.failUnlessEqual(unmapped_c, c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1100 # Confirm it is a Color instance
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1101 self.failUnless(isinstance(unmapped_c, pygame.Color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1102 finally:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1103 pygame.quit()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1104
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1105 # Remaining, non-pallete, cases.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1106 c = (128, 64, 12, 255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1107 formats = [(0, 16), (0, 24), (0, 32),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1108 (SRCALPHA, 16), (SRCALPHA, 32)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1109 for flags, bitsize in formats:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1110 surf = pygame.Surface((2, 2), flags, bitsize)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1111 unmapped_c = surf.unmap_rgb(surf.map_rgb(c))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1112 surf.fill(c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1113 comparison_c = surf.get_at((0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1114 self.failUnlessEqual(unmapped_c, comparison_c,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1115 "%s != %s, flags: %i, bitsize: %i" %
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1116 (unmapped_c, comparison_c, flags, bitsize))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1117 # Confirm it is a Color instance
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1118 self.failUnless(isinstance(unmapped_c, pygame.Color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1119
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1120 def test_scroll(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1121 scrolls = [(8, 2, 3),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1122 (16, 2, 3),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1123 (24, 2, 3),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1124 (32, 2, 3),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1125 (32, -1, -3),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1126 (32, 0, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1127 (32, 11, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1128 (32, 0, 11),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1129 (32, -11, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1130 (32, 0, -11),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1131 (32, -11, 2),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1132 (32, 2, -11)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1133 for bitsize, dx, dy in scrolls:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1134 surf = pygame.Surface((10, 10), 0, bitsize)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1135 surf.fill((255, 0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1136 surf.fill((0, 255, 0), (2, 2, 2, 2,))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1137 comp = surf.copy()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1138 comp.blit(surf, (dx, dy))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1139 surf.scroll(dx, dy)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1140 w, h = surf.get_size()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1141 for x in range(w):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1142 for y in range(h):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1143 self.failUnlessEqual(surf.get_at((x, y)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1144 comp.get_at((x, y)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1145 "%s != %s, bpp:, %i, x: %i, y: %i" %
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1146 (surf.get_at((x, y)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1147 comp.get_at((x, y)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1148 bitsize, dx, dy))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1149 # Confirm clip rect containment
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1150 surf = pygame.Surface((20, 13), 0, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1151 surf.fill((255, 0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1152 surf.fill((0, 255, 0), (7, 1, 6, 6))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1153 comp = surf.copy()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1154 clip = Rect(3, 1, 8, 14)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1155 surf.set_clip(clip)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1156 comp.set_clip(clip)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1157 comp.blit(surf, (clip.x + 2, clip.y + 3), surf.get_clip())
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1158 surf.scroll(2, 3)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1159 w, h = surf.get_size()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1160 for x in range(w):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1161 for y in range(h):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1162 self.failUnlessEqual(surf.get_at((x, y)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1163 comp.get_at((x, y)))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1164 # Confirm keyword arguments and per-pixel alpha
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1165 spot_color = (0, 255, 0, 128)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1166 surf = pygame.Surface((4, 4), pygame.SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1167 surf.fill((255, 0, 0, 255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1168 surf.set_at((1, 1), spot_color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1169 surf.scroll(dx=1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1170 self.failUnlessEqual(surf.get_at((2, 1)), spot_color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1171 surf.scroll(dy=1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1172 self.failUnlessEqual(surf.get_at((2, 2)), spot_color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1173 surf.scroll(dy=1, dx=1)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1174 self.failUnlessEqual(surf.get_at((3, 3)), spot_color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1175 surf.scroll(dx=-3, dy=-3)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1176 self.failUnlessEqual(surf.get_at((0, 0)), spot_color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1177
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1178 class SurfaceGetViewTest (unittest.TestCase):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1179
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1180 # These tests requires ctypes. They are disabled if ctypes
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1181 # is not installed.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1182 #
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1183 try:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1184 ArrayInterface
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1185 except NameError:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1186 __tags__ = ('ignore', 'subprocess_ignore')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1187
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1188 lilendian = pygame.get_sdl_byteorder () == pygame.LIL_ENDIAN
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1189
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1190 def _check_interface_2D(self, s):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1191 s_w, s_h = s.get_size()
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1192 s_bytesize = s.get_bytesize();
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1193 s_pitch = s.get_pitch()
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1194 s_pixels = s._pixels_address
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1195
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1196 # check the array interface structure fields.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1197 v = s.get_view('2')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1198 inter = ArrayInterface(v)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1199 flags = PAI_FORTRAN | PAI_ALIGNED | PAI_NOTSWAPPED | PAI_WRITEABLE
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1200 if (s.get_pitch() == s_w * s_bytesize):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1201 flags |= PAI_CONTIGUOUS
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1202 self.assertEqual(inter.two, 2)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1203 self.assertEqual(inter.nd, 2)
2141
70825b9e9cf3 Remove pixelcopy.make_surface stub function, as it is unnecessary. Fix Python 3 related problems in surfaca and pixelcopy unit tests.
Lenard Lindstrom <len-l@telus.net>
parents: 2139
diff changeset
1204 self.assertEqual(inter.typekind, 'u')
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1205 self.assertEqual(inter.itemsize, s_bytesize)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1206 self.assertEqual(inter.shape[0], s_w)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1207 self.assertEqual(inter.shape[1], s_h)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1208 self.assertEqual(inter.strides[0], s_bytesize)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1209 self.assertEqual(inter.strides[1], s_pitch)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1210 self.assertEqual(inter.flags, flags)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1211 self.assertEqual(inter.data, s_pixels);
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1212
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1213 def _check_interface_3D(self, s):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1214 s_w, s_h = s.get_size()
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1215 s_bytesize = s.get_bytesize();
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1216 s_pitch = s.get_pitch()
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1217 s_pixels = s._pixels_address
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1218 s_shifts = list(s.get_shifts())
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1219
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1220 # Check for RGB or BGR surface.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1221 if s_shifts[0:3] == [0, 8, 16]:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1222 # RGB
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1223 if self.lilendian:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1224 offset = 0
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1225 step = 1
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1226 else:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1227 offset = s_bytesize - 1
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1228 step = -1
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1229 elif s_shifts[0:3] == [16, 8, 0]:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1230 # BGR
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1231 if self.lilendian:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1232 offset = 2
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1233 step = -1
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1234 else:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1235 offset = 1
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1236 step = 1
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1237 else:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1238 return
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1239
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1240 # check the array interface structure fields.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1241 v = s.get_view('3')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1242 inter = ArrayInterface(v)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1243 flags = PAI_ALIGNED | PAI_NOTSWAPPED | PAI_WRITEABLE
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1244 self.assertEqual(inter.two, 2)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1245 self.assertEqual(inter.nd, 3)
2141
70825b9e9cf3 Remove pixelcopy.make_surface stub function, as it is unnecessary. Fix Python 3 related problems in surfaca and pixelcopy unit tests.
Lenard Lindstrom <len-l@telus.net>
parents: 2139
diff changeset
1246 self.assertEqual(inter.typekind, 'u')
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1247 self.assertEqual(inter.itemsize, 1)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1248 self.assertEqual(inter.shape[0], s_w)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1249 self.assertEqual(inter.shape[1], s_h)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1250 self.assertEqual(inter.shape[2], 3)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1251 self.assertEqual(inter.strides[0], s_bytesize)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1252 self.assertEqual(inter.strides[1], s_pitch)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1253 self.assertEqual(inter.strides[2], step)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1254 self.assertEqual(inter.flags, flags)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1255 self.assertEqual(inter.data, s_pixels + offset);
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1256
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1257 def _check_interface_rgba(self, s, plane):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1258 s_w, s_h = s.get_size()
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1259 s_bytesize = s.get_bytesize();
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1260 s_pitch = s.get_pitch()
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1261 s_pixels = s._pixels_address
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1262 s_shifts = s.get_shifts()
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1263 s_masks = s.get_masks()
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1264
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1265 # Find the color plane position within the pixel.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1266 if not s_masks[plane]:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1267 return
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1268 alpha_shift = s_shifts[plane]
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1269 offset = alpha_shift // 8
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1270 if not self.lilendian:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1271 offset = s_bytesize - offset - 1
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1272
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1273 # check the array interface structure fields.
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1274 v = s.get_view('rgba'[plane])
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1275 inter = ArrayInterface(v)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1276 flags = PAI_ALIGNED | PAI_NOTSWAPPED | PAI_WRITEABLE | PAI_FORTRAN
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1277 self.assertEqual(inter.two, 2)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1278 self.assertEqual(inter.nd, 2)
2141
70825b9e9cf3 Remove pixelcopy.make_surface stub function, as it is unnecessary. Fix Python 3 related problems in surfaca and pixelcopy unit tests.
Lenard Lindstrom <len-l@telus.net>
parents: 2139
diff changeset
1279 self.assertEqual(inter.typekind, 'u')
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1280 self.assertEqual(inter.itemsize, 1)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1281 self.assertEqual(inter.shape[0], s_w)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1282 self.assertEqual(inter.shape[1], s_h)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1283 self.assertEqual(inter.strides[0], s_bytesize)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1284 self.assertEqual(inter.strides[1], s_pitch)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1285 self.assertEqual(inter.flags, flags)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1286 self.assertEqual(inter.data, s_pixels + offset);
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1287
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1288 def test_array_interface(self):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1289 self._check_interface_2D(pygame.Surface((5, 7), 0, 8))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1290 self._check_interface_2D(pygame.Surface((5, 7), 0, 16))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1291 self._check_interface_2D(pygame.Surface((5, 7), pygame.SRCALPHA, 16))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1292 self._check_interface_3D(pygame.Surface((5, 7), 0, 24))
2137
e4a059ae7977 add updates to surface.c, etc that were skipped in the merge with the surface_buffer branch
Lenard Lindstrom <len-l@telus.net>
parents: 2134
diff changeset
1293 self._check_interface_3D(pygame.Surface((8, 4), 0, 24)) # No gaps
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1294 self._check_interface_2D(pygame.Surface((5, 7), 0, 32))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1295 self._check_interface_3D(pygame.Surface((5, 7), 0, 32))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1296 self._check_interface_2D(pygame.Surface((5, 7), pygame.SRCALPHA, 32))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1297 self._check_interface_3D(pygame.Surface((5, 7), pygame.SRCALPHA, 32))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1298
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1299 def test_array_interface_masks(self):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1300 """Test non-default color byte orders on 3D views"""
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1301
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1302 sz = (5, 7)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1303 # Reversed RGB byte order
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1304 s = pygame.Surface(sz, 0, 32)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1305 s_masks = list(s.get_masks())
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1306 masks = [0xff, 0xff00, 0xff0000]
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1307 if s_masks[0:3] == masks or s_masks[0:3] == masks[::-1]:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1308 masks = s_masks[2::-1] + s_masks[3:4]
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1309 self._check_interface_3D(pygame.Surface(sz, 0, 32, masks))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1310 s = pygame.Surface(sz, 0, 24)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1311 s_masks = list(s.get_masks())
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1312 masks = [0xff, 0xff00, 0xff0000]
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1313 if s_masks[0:3] == masks or s_masks[0:3] == masks[::-1]:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1314 masks = s_masks[2::-1] + s_masks[3:4]
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1315 self._check_interface_3D(pygame.Surface(sz, 0, 24, masks))
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1316
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1317 # Unsupported RGB byte orders
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1318 masks = [0xff00, 0xff0000, 0xff000000, 0]
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1319 self.assertRaises(ValueError,
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1320 pygame.Surface(sz, 0, 32, masks).get_view, '3')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1321 masks = [0xff00, 0xff, 0xff0000, 0]
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1322 self.assertRaises(ValueError,
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1323 pygame.Surface(sz, 0, 24, masks).get_view, '3')
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1324
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1325 def test_array_interface_alpha(self):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1326 for shifts in [[0, 8, 16, 24], [8, 16, 24, 0],
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1327 [24, 16, 8, 0], [16, 8, 0, 24]]:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1328 masks = [0xff << s for s in shifts]
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1329 s = pygame.Surface((4, 2), pygame.SRCALPHA, 32, masks)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1330 self._check_interface_rgba(s, 3)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1331
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1332 def test_array_interface_rgb(self):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1333 for shifts in [[0, 8, 16, 24], [8, 16, 24, 0],
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1334 [24, 16, 8, 0], [16, 8, 0, 24]]:
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1335 masks = [0xff << s for s in shifts]
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1336 masks[3] = 0
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1337 for plane in range(3):
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1338 s = pygame.Surface((4, 2), 0, 24)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1339 self._check_interface_rgba(s, plane)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1340 s = pygame.Surface((4, 2), 0, 32)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1341 self._check_interface_rgba(s, plane)
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1342
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1343 class SurfaceBlendTest (unittest.TestCase):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1344
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1345 _test_palette = [(0, 0, 0, 255),
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1346 (10, 30, 60, 0),
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1347 (25, 75, 100, 128),
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1348 (200, 150, 100, 200),
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1349 (0, 100, 200, 255)]
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1350 surf_size = (10, 12)
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1351 _test_points = [((0, 0), 1), ((4, 5), 1), ((9, 0), 2),
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1352 ((5, 5), 2), ((0, 11), 3), ((4, 6), 3),
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1353 ((9, 11), 4), ((5, 6), 4)]
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1354
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1355 def _make_surface(self, bitsize, srcalpha=False, palette=None):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1356 if palette is None:
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1357 palette = self._test_palette
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1358 flags = 0
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1359 if srcalpha:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1360 flags |= SRCALPHA
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1361 surf = pygame.Surface(self.surf_size, flags, bitsize)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1362 if bitsize == 8:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1363 surf.set_palette([c[:3] for c in palette])
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1364 return surf
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1365
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1366 def _fill_surface(self, surf, palette=None):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1367 if palette is None:
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1368 palette = self._test_palette
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1369 surf.fill(palette[1], (0, 0, 5, 6))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1370 surf.fill(palette[2], (5, 0, 5, 6))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1371 surf.fill(palette[3], (0, 6, 5, 6))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1372 surf.fill(palette[4], (5, 6, 5, 6))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1373
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1374 def _make_src_surface(self, bitsize, srcalpha=False, palette=None):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1375 surf = self._make_surface(bitsize, srcalpha, palette)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1376 self._fill_surface(surf, palette)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1377 return surf
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1378
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1379 def _assert_surface(self, surf, palette=None, msg=""):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1380 if palette is None:
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1381 palette = self._test_palette
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1382 if surf.get_bitsize() == 16:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1383 palette = [surf.unmap_rgb(surf.map_rgb(c)) for c in palette]
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1384 for posn, i in self._test_points:
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1385 self.failUnlessEqual(surf.get_at(posn), palette[i],
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1386 "%s != %s: flags: %i, bpp: %i, posn: %s%s" %
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1387 (surf.get_at(posn),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1388 palette[i], surf.get_flags(),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1389 surf.get_bitsize(), posn, msg))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1390
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1391 def setUp(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1392 # Needed for 8 bits-per-pixel color palette surface tests.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1393 pygame.init()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1394
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1395 def tearDown(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1396 pygame.quit()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1397
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1398 def test_blit_blend(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1399 sources = [self._make_src_surface(8),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1400 self._make_src_surface(16),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1401 self._make_src_surface(16, srcalpha=True),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1402 self._make_src_surface(24),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1403 self._make_src_surface(32),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1404 self._make_src_surface(32, srcalpha=True)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1405 destinations = [self._make_surface(8),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1406 self._make_surface(16),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1407 self._make_surface(16, srcalpha=True),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1408 self._make_surface(24),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1409 self._make_surface(32),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1410 self._make_surface(32, srcalpha=True)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1411 blend = [('BLEND_ADD', (0, 25, 100, 255),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1412 lambda a, b: min(a + b, 255)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1413 ('BLEND_SUB', (100, 25, 0, 100),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1414 lambda a, b: max(a - b, 0)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1415 ('BLEND_MULT', (100, 200, 0, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1416 lambda a, b: (a * b) // 256),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1417 ('BLEND_MIN', (255, 0, 0, 255), min),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1418 ('BLEND_MAX', (0, 255, 0, 255), max)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1419
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1420 for src in sources:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1421 src_palette = [src.unmap_rgb(src.map_rgb(c))
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1422 for c in self._test_palette]
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1423 for dst in destinations:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1424 for blend_name, dst_color, op in blend:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1425 dc = dst.unmap_rgb(dst.map_rgb(dst_color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1426 p = []
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1427 for sc in src_palette:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1428 c = [op(dc[i], sc[i]) for i in range(3)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1429 if dst.get_masks()[3]:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1430 c.append(dc[3])
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1431 else:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1432 c.append(255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1433 c = dst.unmap_rgb(dst.map_rgb(c))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1434 p.append(c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1435 dst.fill(dst_color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1436 dst.blit(src,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1437 (0, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1438 special_flags=getattr(pygame, blend_name))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1439 self._assert_surface(dst, p,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1440 (", op: %s, src bpp: %i"
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1441 ", src flags: %i" %
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1442 (blend_name,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1443 src.get_bitsize(),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1444 src.get_flags())))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1445
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1446 src = self._make_src_surface(32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1447 masks = src.get_masks()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1448 dst = pygame.Surface(src.get_size(), 0, 32,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1449 [masks[1], masks[2], masks[0], masks[3]])
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1450 for blend_name, dst_color, op in blend:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1451 p = []
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1452 for src_color in self._test_palette:
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1453 c = [op(dst_color[i], src_color[i]) for i in range(3)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1454 c.append(255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1455 p.append(tuple(c))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1456 dst.fill(dst_color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1457 dst.blit(src,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1458 (0, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1459 special_flags=getattr(pygame, blend_name))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1460 self._assert_surface(dst, p, ", %s" % blend_name)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1461
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1462 # Blend blits are special cased for 32 to 32 bit surfaces.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1463 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1464 # Confirm that it works when the rgb bytes are not the
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1465 # least significant bytes.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1466 pat = self._make_src_surface(32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1467 masks = pat.get_masks()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1468 if min(masks) == intify(0xFF000000):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1469 masks = [longify(m) >> 8 for m in masks]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1470 else:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1471 masks = [intify(m << 8) for m in masks]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1472 src = pygame.Surface(pat.get_size(), 0, 32, masks)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1473 self._fill_surface(src)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1474 dst = pygame.Surface(src.get_size(), 0, 32, masks)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1475 for blend_name, dst_color, op in blend:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1476 p = []
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1477 for src_color in self._test_palette:
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1478 c = [op(dst_color[i], src_color[i]) for i in range(3)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1479 c.append(255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1480 p.append(tuple(c))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1481 dst.fill(dst_color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1482 dst.blit(src,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1483 (0, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1484 special_flags=getattr(pygame, blend_name))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1485 self._assert_surface(dst, p, ", %s" % blend_name)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1486
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1487 def test_blit_blend_rgba(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1488 sources = [self._make_src_surface(8),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1489 self._make_src_surface(16),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1490 self._make_src_surface(16, srcalpha=True),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1491 self._make_src_surface(24),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1492 self._make_src_surface(32),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1493 self._make_src_surface(32, srcalpha=True)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1494 destinations = [self._make_surface(8),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1495 self._make_surface(16),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1496 self._make_surface(16, srcalpha=True),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1497 self._make_surface(24),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1498 self._make_surface(32),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1499 self._make_surface(32, srcalpha=True)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1500 blend = [('BLEND_RGBA_ADD', (0, 25, 100, 255),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1501 lambda a, b: min(a + b, 255)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1502 ('BLEND_RGBA_SUB', (0, 25, 100, 255),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1503 lambda a, b: max(a - b, 0)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1504 ('BLEND_RGBA_MULT', (0, 7, 100, 255),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1505 lambda a, b: (a * b) // 256),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1506 ('BLEND_RGBA_MIN', (0, 255, 0, 255), min),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1507 ('BLEND_RGBA_MAX', (0, 255, 0, 255), max)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1508
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1509 for src in sources:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1510 src_palette = [src.unmap_rgb(src.map_rgb(c))
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1511 for c in self._test_palette]
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1512 for dst in destinations:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1513 for blend_name, dst_color, op in blend:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1514 dc = dst.unmap_rgb(dst.map_rgb(dst_color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1515 p = []
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1516 for sc in src_palette:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1517 c = [op(dc[i], sc[i]) for i in range(4)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1518 if not dst.get_masks()[3]:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1519 c[3] = 255
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1520 c = dst.unmap_rgb(dst.map_rgb(c))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1521 p.append(c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1522 dst.fill(dst_color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1523 dst.blit(src,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1524 (0, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1525 special_flags=getattr(pygame, blend_name))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1526 self._assert_surface(dst, p,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1527 (", op: %s, src bpp: %i"
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1528 ", src flags: %i" %
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1529 (blend_name,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1530 src.get_bitsize(),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1531 src.get_flags())))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1532
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1533 # Blend blits are special cased for 32 to 32 bit surfaces
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1534 # with per-pixel alpha.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1535 #
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1536 # Confirm the general case is used instead when the formats differ.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1537 src = self._make_src_surface(32, srcalpha=True)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1538 masks = src.get_masks()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1539 dst = pygame.Surface(src.get_size(), SRCALPHA, 32,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1540 (masks[1], masks[2], masks[3], masks[0]))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1541 for blend_name, dst_color, op in blend:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1542 p = [tuple([op(dst_color[i], src_color[i]) for i in range(4)])
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1543 for src_color in self._test_palette]
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1544 dst.fill(dst_color)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1545 dst.blit(src,
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1546 (0, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1547 special_flags=getattr(pygame, blend_name))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1548 self._assert_surface(dst, p, ", %s" % blend_name)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1549
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1550 # Confirm this special case handles subsurfaces.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1551 src = pygame.Surface((8, 10), SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1552 dst = pygame.Surface((8, 10), SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1553 tst = pygame.Surface((8, 10), SRCALPHA, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1554 src.fill((1, 2, 3, 4))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1555 dst.fill((40, 30, 20, 10))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1556 subsrc = src.subsurface((2, 3, 4, 4))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1557 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1558 subdst = dst.subsurface((2, 3, 4, 4))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1559 try:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1560 subdst.blit(subsrc, (0, 0), special_flags=BLEND_RGBA_ADD)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1561 finally:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1562 del subdst
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1563 finally:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1564 del subsrc
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1565 tst.fill((40, 30, 20, 10))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1566 tst.fill((41, 32, 23, 14), (2, 3, 4, 4))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1567 for x in range(8):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1568 for y in range(10):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1569 self.failUnlessEqual(dst.get_at((x, y)), tst.get_at((x, y)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1570 "%s != %s at (%i, %i)" %
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1571 (dst.get_at((x, y)), tst.get_at((x, y)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1572 x, y))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1573
3032
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1574
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1575
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1576
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1577 def test_blit_blend_big_rect(self):
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1578 """ test that an oversized rect works ok.
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1579 """
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1580 color = (1, 2, 3, 255)
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1581 area = (1, 1, 30, 30)
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1582 s1 = pygame.Surface((4, 4), 0, 32)
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1583 r = s1.fill(special_flags=pygame.BLEND_ADD, color=color, rect=area)
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1584 self.assertEquals(pygame.Rect((1, 1, 3, 3)), r)
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1585 self.assert_(s1.get_at((0, 0)) == (0, 0, 0, 255))
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1586 self.assert_(s1.get_at((1, 1)) == color)
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1587
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1588
3033
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1589 black = pygame.Color("black")
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1590 red = pygame.Color("red")
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1591 self.assertNotEqual(black, red)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1592
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1593 surf = pygame.Surface((10, 10), 0, 32)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1594 surf.fill(black)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1595 subsurf = surf.subsurface(pygame.Rect(0, 1, 10, 8))
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1596 self.assertEqual(surf.get_at((0, 0)), black)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1597 self.assertEqual(surf.get_at((0, 9)), black)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1598
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1599 subsurf.fill(red, (0, -1, 10, 1), pygame.BLEND_RGB_ADD)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1600 self.assertEqual(surf.get_at((0, 0)), black)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1601 self.assertEqual(surf.get_at((0, 9)), black)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1602
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1603 subsurf.fill(red, (0, 8, 10, 1), pygame.BLEND_RGB_ADD)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1604 self.assertEqual(surf.get_at((0, 0)), black)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1605 self.assertEqual(surf.get_at((0, 9)), black)
efe9c4a4e42f Another fix for #93 where x or y were less than 0.
Rene Dudfield <renesd@gmail.com>
parents: 3032 3031
diff changeset
1606
3032
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1607
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1608
77c972eb11f0 [BUG] Fixes #93. Where oversized input rect would not work
Rene Dudfield <renesd@gmail.com>
parents: 3004
diff changeset
1609
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1610 def test_GET_PIXELVALS(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1611 # surface.h GET_PIXELVALS bug regarding whether of not
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1612 # a surface has per-pixel alpha. Looking at the Amask
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1613 # is not enough. The surface's SRCALPHA flag must also
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1614 # be considered. Fix rev. 1923.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1615 src = self._make_surface(32, srcalpha=True)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1616 src.fill((0, 0, 0, 128))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1617 src.set_alpha(None) # Clear SRCALPHA flag.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1618 dst = self._make_surface(32, srcalpha=True)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1619 dst.blit(src, (0, 0), special_flags=BLEND_RGBA_ADD)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1620 self.failUnlessEqual(dst.get_at((0, 0)), (0, 0, 0, 255))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1621
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1622 def test_fill_blend(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1623 destinations = [self._make_surface(8),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1624 self._make_surface(16),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1625 self._make_surface(16, srcalpha=True),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1626 self._make_surface(24),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1627 self._make_surface(32),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1628 self._make_surface(32, srcalpha=True)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1629 blend = [('BLEND_ADD', (0, 25, 100, 255),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1630 lambda a, b: min(a + b, 255)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1631 ('BLEND_SUB', (0, 25, 100, 255),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1632 lambda a, b: max(a - b, 0)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1633 ('BLEND_MULT', (0, 7, 100, 255),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1634 lambda a, b: (a * b) // 256),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1635 ('BLEND_MIN', (0, 255, 0, 255), min),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1636 ('BLEND_MAX', (0, 255, 0, 255), max)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1637
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1638 for dst in destinations:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1639 dst_palette = [dst.unmap_rgb(dst.map_rgb(c))
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1640 for c in self._test_palette]
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1641 for blend_name, fill_color, op in blend:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1642 fc = dst.unmap_rgb(dst.map_rgb(fill_color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1643 self._fill_surface(dst)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1644 p = []
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1645 for dc in dst_palette:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1646 c = [op(dc[i], fc[i]) for i in range(3)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1647 if dst.get_masks()[3]:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1648 c.append(dc[3])
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1649 else:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1650 c.append(255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1651 c = dst.unmap_rgb(dst.map_rgb(c))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1652 p.append(c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1653 dst.fill(fill_color, special_flags=getattr(pygame, blend_name))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1654 self._assert_surface(dst, p, ", %s" % blend_name)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1655
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1656 def test_fill_blend_rgba(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1657 destinations = [self._make_surface(8),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1658 self._make_surface(16),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1659 self._make_surface(16, srcalpha=True),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1660 self._make_surface(24),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1661 self._make_surface(32),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1662 self._make_surface(32, srcalpha=True)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1663 blend = [('BLEND_RGBA_ADD', (0, 25, 100, 255),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1664 lambda a, b: min(a + b, 255)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1665 ('BLEND_RGBA_SUB', (0, 25, 100, 255),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1666 lambda a, b: max(a - b, 0)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1667 ('BLEND_RGBA_MULT', (0, 7, 100, 255),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1668 lambda a, b: (a * b) // 256),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1669 ('BLEND_RGBA_MIN', (0, 255, 0, 255), min),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1670 ('BLEND_RGBA_MAX', (0, 255, 0, 255), max)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1671
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1672 for dst in destinations:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1673 dst_palette = [dst.unmap_rgb(dst.map_rgb(c))
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1674 for c in self._test_palette]
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1675 for blend_name, fill_color, op in blend:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1676 fc = dst.unmap_rgb(dst.map_rgb(fill_color))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1677 self._fill_surface(dst)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1678 p = []
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1679 for dc in dst_palette:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1680 c = [op(dc[i], fc[i]) for i in range(4)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1681 if not dst.get_masks()[3]:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1682 c[3] = 255
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1683 c = dst.unmap_rgb(dst.map_rgb(c))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1684 p.append(c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1685 dst.fill(fill_color, special_flags=getattr(pygame, blend_name))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1686 self._assert_surface(dst, p, ", %s" % blend_name)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1687
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1688 class SurfaceSelfBlitTest(unittest.TestCase):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1689 """Blit to self tests.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1690
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1691 This test case is in response to MotherHamster Bugzilla Bug 19.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1692 """
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1693
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1694 _test_palette = [(0, 0, 0, 255),
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1695 (255, 0, 0, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1696 (0, 255, 0, 255)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1697 surf_size = (9, 6)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1698
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1699 def _fill_surface(self, surf, palette=None):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1700 if palette is None:
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1701 palette = self._test_palette
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1702 surf.fill(palette[1])
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1703 surf.fill(palette[2], (1, 2, 1, 2))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1704
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1705 def _make_surface(self, bitsize, srcalpha=False, palette=None):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1706 if palette is None:
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1707 palette = self._test_palette
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1708 flags = 0
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1709 if srcalpha:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1710 flags |= SRCALPHA
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1711 surf = pygame.Surface(self.surf_size, flags, bitsize)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1712 if bitsize == 8:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1713 surf.set_palette([c[:3] for c in palette])
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1714 self._fill_surface(surf, palette)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1715 return surf
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1716
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1717 def _assert_same(self, a, b):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1718 w, h = a.get_size()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1719 for x in range(w):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1720 for y in range(h):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1721 self.failUnlessEqual(a.get_at((x, y)), b.get_at((x, y)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1722 ("%s != %s, bpp: %i" %
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1723 (a.get_at((x, y)), b.get_at((x, y)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1724 a.get_bitsize())))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1725
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1726 def setUp(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1727 # Needed for 8 bits-per-pixel color palette surface tests.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1728 pygame.init()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1729
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1730 def tearDown(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1731 pygame.quit()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1732
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1733 def test_overlap_check(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1734 # Ensure overlapping blits are properly detected. There are two
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1735 # places where this is done, within SoftBlitPyGame() in alphablit.c
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1736 # and PySurface_Blit() in surface.c. SoftBlitPyGame should catch the
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1737 # per-pixel alpha surface, PySurface_Blit the colorkey and blanket
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1738 # alpha surface. per-pixel alpha and blanket alpha self blits are
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1739 # not properly handled by SDL 1.2.13, so Pygame does them.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1740 bgc = (0, 0, 0, 255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1741 rectc_left = (128, 64, 32, 255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1742 rectc_right = (255, 255, 255, 255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1743 colors = [(255, 255, 255, 255), (128, 64, 32, 255)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1744 overlaps = [(0, 0, 1, 0, (50, 0)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1745 (0, 0, 49, 1, (98, 2)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1746 (0, 0, 49, 49, (98, 98)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1747 (49, 0, 0, 1, (0, 2)),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1748 (49, 0, 0, 49, (0, 98))]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1749 surfs = [pygame.Surface((100, 100), SRCALPHA, 32)]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1750 surf = pygame.Surface((100, 100), 0, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1751 surf.set_alpha(255)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1752 surfs.append(surf)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1753 surf = pygame.Surface((100, 100), 0, 32)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1754 surf.set_colorkey((0, 1, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1755 surfs.append(surf)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1756 for surf in surfs:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1757 for s_x, s_y, d_x, d_y, test_posn in overlaps:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1758 surf.fill(bgc)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1759 surf.fill(rectc_right, (25, 0, 25, 50))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1760 surf.fill(rectc_left, (0, 0, 25, 50))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1761 surf.blit(surf, (d_x, d_y), (s_x, s_y, 50, 50))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1762 self.failUnlessEqual(surf.get_at(test_posn), rectc_right)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1763
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1764 def test_colorkey(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1765 # Check a workaround for an SDL 1.2.13 surface self-blit problem
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1766 # (MotherHamster Bugzilla bug 19).
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1767 pygame.display.set_mode((100, 50)) # Needed for 8bit surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1768 bitsizes = [8, 16, 24, 32]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1769 for bitsize in bitsizes:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1770 surf = self._make_surface(bitsize)
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1771 surf.set_colorkey(self._test_palette[1])
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1772 surf.blit(surf, (3, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1773 p = []
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1774 for c in self._test_palette:
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1775 c = surf.unmap_rgb(surf.map_rgb(c))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1776 p.append(c)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1777 p[1] = (p[1][0], p[1][1], p[1][2], 0)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1778 tmp = self._make_surface(32, srcalpha=True, palette=p)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1779 tmp.blit(tmp, (3, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1780 tmp.set_alpha(None)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1781 comp = self._make_surface(bitsize)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1782 comp.blit(tmp, (0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1783 self._assert_same(surf, comp)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1784
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1785 def test_blanket_alpha(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1786 # Check a workaround for an SDL 1.2.13 surface self-blit problem
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1787 # (MotherHamster Bugzilla bug 19).
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1788 pygame.display.set_mode((100, 50)) # Needed for 8bit surface
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1789 bitsizes = [8, 16, 24, 32]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1790 for bitsize in bitsizes:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1791 surf = self._make_surface(bitsize)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1792 surf.set_alpha(128)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1793 surf.blit(surf, (3, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1794 p = []
2131
018779fb04f5 Merge the buffer branch back into trunk.
Lenard Lindstrom <len-l@telus.net>
parents: 2078
diff changeset
1795 for c in self._test_palette:
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1796 c = surf.unmap_rgb(surf.map_rgb(c))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1797 p.append((c[0], c[1], c[2], 128))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1798 tmp = self._make_surface(32, srcalpha=True, palette=p)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1799 tmp.blit(tmp, (3, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1800 tmp.set_alpha(None)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1801 comp = self._make_surface(bitsize)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1802 comp.blit(tmp, (0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1803 self._assert_same(surf, comp)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1804
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1805 def test_pixel_alpha(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1806 bitsizes = [16, 32]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1807 for bitsize in bitsizes:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1808 surf = self._make_surface(bitsize, srcalpha=True)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1809 comp = self._make_surface(bitsize, srcalpha=True)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1810 comp.blit(surf, (3, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1811 surf.blit(surf, (3, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1812 self._assert_same(surf, comp)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1813
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1814 def test_blend(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1815 bitsizes = [8, 16, 24, 32]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1816 blends = ['BLEND_ADD',
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1817 'BLEND_SUB',
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1818 'BLEND_MULT',
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1819 'BLEND_MIN',
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1820 'BLEND_MAX']
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1821 for bitsize in bitsizes:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1822 surf = self._make_surface(bitsize)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1823 comp = self._make_surface(bitsize)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1824 for blend in blends:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1825 self._fill_surface(surf)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1826 self._fill_surface(comp)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1827 comp.blit(surf, (3, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1828 special_flags=getattr(pygame, blend))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1829 surf.blit(surf, (3, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1830 special_flags=getattr(pygame, blend))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1831 self._assert_same(surf, comp)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1832
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1833 def test_blend_rgba(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1834 bitsizes = [16, 32]
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1835 blends = ['BLEND_RGBA_ADD',
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1836 'BLEND_RGBA_SUB',
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1837 'BLEND_RGBA_MULT',
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1838 'BLEND_RGBA_MIN',
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1839 'BLEND_RGBA_MAX']
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1840 for bitsize in bitsizes:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1841 surf = self._make_surface(bitsize, srcalpha=True)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1842 comp = self._make_surface(bitsize, srcalpha=True)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1843 for blend in blends:
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1844 self._fill_surface(surf)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1845 self._fill_surface(comp)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1846 comp.blit(surf, (3, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1847 special_flags=getattr(pygame, blend))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1848 surf.blit(surf, (3, 0),
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1849 special_flags=getattr(pygame, blend))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1850 self._assert_same(surf, comp)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1851
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1852 def test_subsurface(self):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1853 # Blitting a surface to its subsurface is allowed.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1854 surf = self._make_surface(32, srcalpha=True)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1855 comp = surf.copy()
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1856 comp.blit(surf, (3, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1857 sub = surf.subsurface((3, 0, 6, 6))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1858 sub.blit(surf, (0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1859 del sub
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1860 self._assert_same(surf, comp)
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1861 # Blitting a subsurface to its owner is forbidden because of
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1862 # lock conficts. This limitation allows the overlap check
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1863 # in PySurface_Blit of alphablit.c to be simplified.
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1864 def do_blit(d, s):
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1865 d.blit(s, (0, 0))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1866 sub = surf.subsurface((1, 1, 2, 2))
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1867 self.failUnlessRaises(pygame.error, do_blit, surf, sub)
3122
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1868
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1869
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1870 class SurfaceFillTest(unittest.TestCase):
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1871 def test_fill(self):
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1872 pygame.init()
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1873 try:
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1874 screen = pygame.display.set_mode((640, 480))
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1875
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1876 # Green and blue test pattern
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1877 screen.fill((0, 255, 0), (0, 0, 320, 240))
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1878 screen.fill((0, 255, 0), (320, 240, 320, 240))
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1879 screen.fill((0, 0, 255), (320, 0, 320, 240))
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1880 screen.fill((0, 0, 255), (0, 240, 320, 240))
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1881
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1882 # Now apply a clip rect, such that only the left side of the
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1883 # screen should be effected by blit opperations.
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1884 screen.set_clip((0, 0, 320, 480))
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1885
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1886 # Test fills with each special flag, and additionaly without any.
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1887 screen.fill((255, 0, 0, 127), (160, 0, 320, 30), 0)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1888 screen.fill((255, 0, 0, 127), (160, 30, 320, 30), pygame.BLEND_ADD)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1889 screen.fill((0, 127, 127, 127), (160, 60, 320, 30), pygame.BLEND_SUB)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1890 screen.fill((0, 63, 63, 127), (160, 90, 320, 30), pygame.BLEND_MULT)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1891 screen.fill((0, 127, 127, 127), (160, 120, 320, 30), pygame.BLEND_MIN)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1892 screen.fill((127, 0, 0, 127), (160, 150, 320, 30), pygame.BLEND_MAX)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1893 screen.fill((255, 0, 0, 127), (160, 180, 320, 30), pygame.BLEND_RGBA_ADD)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1894 screen.fill((0, 127, 127, 127), (160, 210, 320, 30), pygame.BLEND_RGBA_SUB)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1895 screen.fill((0, 63, 63, 127), (160, 240, 320, 30), pygame.BLEND_RGBA_MULT)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1896 screen.fill((0, 127, 127, 127), (160, 270, 320, 30), pygame.BLEND_RGBA_MIN)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1897 screen.fill((127, 0, 0, 127), (160, 300, 320, 30), pygame.BLEND_RGBA_MAX)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1898 screen.fill((255, 0, 0, 127), (160, 330, 320, 30), pygame.BLEND_RGB_ADD)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1899 screen.fill((0, 127, 127, 127), (160, 360, 320, 30), pygame.BLEND_RGB_SUB)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1900 screen.fill((0, 63, 63, 127), (160, 390, 320, 30), pygame.BLEND_RGB_MULT)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1901 screen.fill((0, 127, 127, 127), (160, 420, 320, 30), pygame.BLEND_RGB_MIN)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1902 screen.fill((255, 0, 0, 127), (160, 450, 320, 30), pygame.BLEND_RGB_MAX)
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1903
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1904 # Update the display so we can see the results
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1905 pygame.display.flip()
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1906
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1907 # Compare colors on both sides of window
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1908 y = 5
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1909 while y < 480:
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1910 self.assertEquals(screen.get_at((10, y)),
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1911 screen.get_at((330, 480 - y)))
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1912 y += 10
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1913
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1914 finally:
55d7ab7a344f Surface.fill() respects clipping rect or surface bounds with special flags.
Rene Dudfield <renesd@gmail.com>
parents: 3120
diff changeset
1915 pygame.quit()
2078
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1916
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1917 if __name__ == '__main__':
2d7ce556083b set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents: 1900
diff changeset
1918 unittest.main()