pyglet-1.1.4/ 0002700 0134641 0134642 00000000000 11505734504 011212 5 ustar yoh yoh pyglet-1.1.4/PKG-INFO 0000600 0134641 0134642 00000002017 11317255174 012311 0 ustar yoh yoh Metadata-Version: 1.0 Name: pyglet Version: 1.1.4 Summary: Cross-platform windowing and multimedia library Home-page: http://www.pyglet.org/ Author: Alex Holkner Author-email: Alex.Holkner@gmail.com License: BSD Download-URL: http://www.pyglet.org/download.html Description: pyglet provides an object-oriented programming interface for developing games and other visually-rich applications for Windows, Mac OS X and Linux. Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: MacOS X Classifier: Environment :: Win32 (MS Windows) Classifier: Environment :: X11 Applications Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Topic :: Games/Entertainment Classifier: Topic :: Software Development :: Libraries :: Python Modules pyglet-1.1.4/tests/ 0002700 0134641 0134642 00000000000 11505734504 012354 5 ustar yoh yoh pyglet-1.1.4/tests/text/ 0002700 0134641 0134642 00000000000 11317255174 013342 5 ustar yoh yoh pyglet-1.1.4/tests/text/CONTENT_VALIGN_BOTTOM.py 0000600 0134641 0134642 00000012011 11266427715 017152 0 ustar yoh yoh #!/usr/bin/env python '''Test content_valign = 'bottom' property of IncrementalTextLayout. Examine and type over the text in the window that appears. The window contents can be scrolled with the mouse wheel. When the content height is less than the window height, the content should be aligned to the bottom of the window. Press ESC to exit the test. ''' __docformat__ = 'restructuredtext' __version__ = '$Id: STYLE.py 1754 2008-02-10 13:26:52Z Alex.Holkner $' import unittest from pyglet import app from pyglet import gl from pyglet import graphics from pyglet import text from pyglet.text import caret from pyglet.text import layout from pyglet import window from pyglet.window import key, mouse doctext = '''CONTENT_VALIGN_BOTTOM.py test document. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas aliquet quam sit amet enim. Donec iaculis, magna vitae imperdiet convallis, lectus sem ultricies nulla, non fringilla quam felis tempus velit. Etiam et velit. Integer euismod. Aliquam a diam. Donec sed ante. Mauris enim pede, dapibus sed, dapibus vitae, consectetuer in, est. Donec aliquam risus eu ipsum. Integer et tortor. Ut accumsan risus sed ante. Aliquam dignissim, massa a imperdiet fermentum, orci dolor facilisis ante, ut vulputate nisi nunc sed massa. Morbi sodales hendrerit tortor. Nunc id tortor ut lacus mollis malesuada. Sed nibh tellus, rhoncus et, egestas eu, laoreet eu, urna. Vestibulum massa leo, convallis et, pharetra vitae, iaculis at, ante. Pellentesque volutpat porta enim. Morbi ac nunc eget mi pretium viverra. Pellentesque felis risus, lobortis vitae, malesuada vitae, bibendum eu, tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus dapibus tortor ac neque. Curabitur pulvinar bibendum lectus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tellus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla turpis leo, rhoncus vel, euismod non, consequat sed, massa. Quisque ultricies. Aliquam fringilla faucibus est. Proin nec felis eget felis suscipit vehicula. Etiam quam. Aliquam at ligula. Aenean quis dolor. Suspendisse potenti. Sed lacinia leo eu est. Nam pede ligula, molestie nec, tincidunt vel, posuere in, tellus. Donec fringilla dictum dolor. Aenean tellus orci, viverra id, vehicula eget, tempor a, dui. Morbi eu dolor nec lacus fringilla dapibus. Nulla facilisi. Nulla posuere. Nunc interdum. Donec convallis libero vitae odio. Aenean metus lectus, faucibus in, malesuada at, fringilla nec, risus. Integer enim. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin bibendum felis vel neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec ipsum dui, euismod at, dictum eu, congue tincidunt, urna. Sed quis odio. Integer aliquam pretium augue. Vivamus nonummy, dolor vel viverra rutrum, lacus dui congue pede, vel sodales dui diam nec libero. Morbi et leo sit amet quam sollicitudin laoreet. Vivamus suscipit. Duis arcu eros, iaculis ut, vehicula in, elementum a, sapien. Phasellus ut tellus. Integer feugiat nunc eget odio. Morbi accumsan nonummy ipsum. Donec condimentum, tortor non faucibus luctus, neque mi mollis magna, nec gravida risus elit nec ipsum. Donec nec sem. Maecenas varius libero quis diam. Curabitur pulvinar. Morbi at sem eget mauris tempor vulputate. Aenean eget turpis. ''' class TestWindow(window.Window): def __init__(self, *args, **kwargs): super(TestWindow, self).__init__(*args, **kwargs) self.batch = graphics.Batch() self.document = text.decode_text(doctext) self.margin = 2 self.layout = layout.IncrementalTextLayout(self.document, self.width - self.margin * 2, self.height - self.margin * 2, multiline=True, batch=self.batch) self.layout.content_valign = 'bottom' self.caret = caret.Caret(self.layout) self.push_handlers(self.caret) self.set_mouse_cursor(self.get_system_mouse_cursor('text')) def on_resize(self, width, height): super(TestWindow, self).on_resize(width, height) self.layout.begin_update() self.layout.x = self.margin self.layout.y = self.margin self.layout.width = width - self.margin * 2 self.layout.height = height - self.margin * 2 self.layout.end_update() def on_mouse_scroll(self, x, y, scroll_x, scroll_y): self.layout.view_x -= scroll_x self.layout.view_y += scroll_y * 16 def on_draw(self): gl.glClearColor(1, 1, 1, 1) self.clear() self.batch.draw() def on_key_press(self, symbol, modifiers): super(TestWindow, self).on_key_press(symbol, modifiers) if symbol == key.TAB: self.caret.on_text('\t') class TestCase(unittest.TestCase): def test(self): self.window = TestWindow(resizable=True, visible=False) self.window.set_visible() app.run() if __name__ == '__main__': unittest.main() pyglet-1.1.4/tests/text/PLAIN.py 0000600 0134641 0134642 00000011477 11266427715 014576 0 ustar yoh yoh #!/usr/bin/env python '''Test an unformatted document is editable. Examine and type over the text in the window that appears. The window contents can be scrolled with the mouse wheel. Press ESC to exit the test. ''' __docformat__ = 'restructuredtext' __version__ = '$Id: STYLE.py 1754 2008-02-10 13:26:52Z Alex.Holkner $' import unittest from pyglet import app from pyglet import gl from pyglet import graphics from pyglet import text from pyglet.text import caret from pyglet.text import layout from pyglet import window from pyglet.window import key, mouse doctext = '''PLAIN.py test document. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas aliquet quam sit amet enim. Donec iaculis, magna vitae imperdiet convallis, lectus sem ultricies nulla, non fringilla quam felis tempus velit. Etiam et velit. Integer euismod. Aliquam a diam. Donec sed ante. Mauris enim pede, dapibus sed, dapibus vitae, consectetuer in, est. Donec aliquam risus eu ipsum. Integer et tortor. Ut accumsan risus sed ante. Aliquam dignissim, massa a imperdiet fermentum, orci dolor facilisis ante, ut vulputate nisi nunc sed massa. Morbi sodales hendrerit tortor. Nunc id tortor ut lacus mollis malesuada. Sed nibh tellus, rhoncus et, egestas eu, laoreet eu, urna. Vestibulum massa leo, convallis et, pharetra vitae, iaculis at, ante. Pellentesque volutpat porta enim. Morbi ac nunc eget mi pretium viverra. Pellentesque felis risus, lobortis vitae, malesuada vitae, bibendum eu, tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus dapibus tortor ac neque. Curabitur pulvinar bibendum lectus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tellus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla turpis leo, rhoncus vel, euismod non, consequat sed, massa. Quisque ultricies. Aliquam fringilla faucibus est. Proin nec felis eget felis suscipit vehicula. Etiam quam. Aliquam at ligula. Aenean quis dolor. Suspendisse potenti. Sed lacinia leo eu est. Nam pede ligula, molestie nec, tincidunt vel, posuere in, tellus. Donec fringilla dictum dolor. Aenean tellus orci, viverra id, vehicula eget, tempor a, dui. Morbi eu dolor nec lacus fringilla dapibus. Nulla facilisi. Nulla posuere. Nunc interdum. Donec convallis libero vitae odio. Aenean metus lectus, faucibus in, malesuada at, fringilla nec, risus. Integer enim. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin bibendum felis vel neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec ipsum dui, euismod at, dictum eu, congue tincidunt, urna. Sed quis odio. Integer aliquam pretium augue. Vivamus nonummy, dolor vel viverra rutrum, lacus dui congue pede, vel sodales dui diam nec libero. Morbi et leo sit amet quam sollicitudin laoreet. Vivamus suscipit. Duis arcu eros, iaculis ut, vehicula in, elementum a, sapien. Phasellus ut tellus. Integer feugiat nunc eget odio. Morbi accumsan nonummy ipsum. Donec condimentum, tortor non faucibus luctus, neque mi mollis magna, nec gravida risus elit nec ipsum. Donec nec sem. Maecenas varius libero quis diam. Curabitur pulvinar. Morbi at sem eget mauris tempor vulputate. Aenean eget turpis. ''' class TestWindow(window.Window): def __init__(self, *args, **kwargs): super(TestWindow, self).__init__(*args, **kwargs) self.batch = graphics.Batch() self.document = text.decode_text(doctext) self.margin = 2 self.layout = layout.IncrementalTextLayout(self.document, self.width - self.margin * 2, self.height - self.margin * 2, multiline=True, batch=self.batch) self.caret = caret.Caret(self.layout) self.push_handlers(self.caret) self.set_mouse_cursor(self.get_system_mouse_cursor('text')) def on_resize(self, width, height): super(TestWindow, self).on_resize(width, height) self.layout.begin_update() self.layout.x = self.margin self.layout.y = self.margin self.layout.width = width - self.margin * 2 self.layout.height = height - self.margin * 2 self.layout.end_update() def on_mouse_scroll(self, x, y, scroll_x, scroll_y): self.layout.view_x -= scroll_x self.layout.view_y += scroll_y * 16 def on_draw(self): gl.glClearColor(1, 1, 1, 1) self.clear() self.batch.draw() def on_key_press(self, symbol, modifiers): super(TestWindow, self).on_key_press(symbol, modifiers) if symbol == key.TAB: self.caret.on_text('\t') class TestCase(unittest.TestCase): def test(self): self.window = TestWindow(resizable=True, visible=False) self.window.set_visible() app.run() if __name__ == '__main__': unittest.main() pyglet-1.1.4/tests/text/__init__.py 0000600 0134641 0134642 00000000000 11266427715 015446 0 ustar yoh yoh pyglet-1.1.4/tests/text/EMPTY.py 0000600 0134641 0134642 00000002456 11266427715 014626 0 ustar yoh yoh #!/usr/bin/env python '''Test that an empty document doesn't break. Press ESC to exit the test. ''' __docformat__ = 'restructuredtext' __version__ = '$Id: STYLE.py 1754 2008-02-10 13:26:52Z Alex.Holkner $' __noninteractive = True import unittest from pyglet import app from pyglet import gl from pyglet import graphics from pyglet.text import caret from pyglet.text import document from pyglet.text import layout from pyglet import window from pyglet.window import key, mouse class TestWindow(window.Window): def __init__(self, doctype, *args, **kwargs): super(TestWindow, self).__init__(*args, **kwargs) self.batch = graphics.Batch() self.document = doctype() self.layout = layout.IncrementalTextLayout(self.document, self.width, self.height, batch=self.batch) def on_draw(self): gl.glClearColor(1, 1, 1, 1) self.clear() self.batch.draw() class TestCase(unittest.TestCase): def testUnformatted(self): self.window = TestWindow(document.UnformattedDocument) self.window.dispatch_events() self.window.close() def testFormatted(self): self.window = TestWindow(document.FormattedDocument) self.window.dispatch_events() self.window.close() if __name__ == '__main__': unittest.main() pyglet-1.1.4/tests/text/ELEMENT.py 0000600 0134641 0134642 00000015213 11266427715 015014 0 ustar yoh yoh #!/usr/bin/env python '''Test that inline elements are positioned correctly and are repositioned within an incremental layout. Examine and type over the text in the window that appears. There are several elements drawn with grey boxes. These should maintain their sizes and relative document positions as the text is scrolled and edited. Press ESC to exit the test. ''' __docformat__ = 'restructuredtext' __version__ = '$Id: ELEMENT.py 1898 2008-03-08 04:44:17Z Alex.Holkner $' import unittest import pyglet from pyglet.text import caret, document, layout doctext = '''ELEMENT.py test document. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce venenatis pharetra libero. Phasellus lacinia nisi feugiat felis. Sed id magna in nisl cursus consectetuer. Aliquam aliquam lectus eu magna. Praesent sit amet ipsum vitae nisl mattis commodo. Aenean pulvinar facilisis lectus. Phasellus sodales risus sit amet lectus. Suspendisse in turpis. Vestibulum ac mi accumsan eros commodo tincidunt. Nullam velit. In pulvinar, dui sit amet ullamcorper dictum, dui risus ultricies nisl, a dignissim sapien enim sit amet tortor. Pellentesque fringilla, massa sit amet bibendum blandit, pede leo commodo mi, eleifend feugiat neque tortor dapibus mauris. Morbi nunc arcu, tincidunt vel, blandit non, iaculis vel, libero. Vestibulum sed metus vel velit scelerisque varius. Vivamus a tellus. Proin nec orci vel elit molestie venenatis. Aenean fringilla, lorem vel fringilla bibendum, nibh mi varius mi, eget semper ipsum ligula ut urna. Nullam tempor convallis augue. Sed at dui. Nunc faucibus pretium ipsum. Sed ultricies ligula a arcu. Pellentesque vel urna in augue euismod hendrerit. Donec consequat. Morbi convallis nulla at ante bibendum auctor. In augue mi, tincidunt a, porta ac, tempor sit amet, sapien. In sollicitudin risus. Vivamus leo turpis, elementum sed, accumsan eu, scelerisque at, augue. Ut eu tortor non sem vulputate bibendum. Fusce ultricies ultrices lorem. In hac habitasse platea dictumst. Morbi ac ipsum. Nam tellus sem, congue in, fermentum a, ullamcorper vel, mauris. Etiam erat tortor, facilisis ut, blandit id, placerat sed, orci. Donec quam eros, bibendum eu, ultricies id, mattis eu, tellus. Ut hendrerit erat vel ligula. Sed tellus. Quisque imperdiet ornare diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed neque quam, pretium et, malesuada sed, porttitor eu, leo. Sed varius ornare augue. Maecenas pede dui, nonummy eu, ullamcorper sed, lobortis id, sem. In sed leo. Nulla ornare. Curabitur dui. Cras ipsum. Cras massa augue, sodales nec, ultricies at, fermentum in, turpis. Aenean lorem lectus, fermentum et, lacinia quis, ullamcorper ac, purus. Pellentesque pharetra diam at elit. Donec dolor. Aenean turpis orci, aliquam vitae, fermentum et, consectetuer sed, lacus. Maecenas pulvinar, nisi sit amet lobortis rhoncus, est ipsum ullamcorper mauris, nec cursus felis neque et dolor. Nulla venenatis sapien vitae lectus. Praesent in risus. In imperdiet adipiscing nisi. Quisque volutpat, ante sed vehicula sodales, nisi quam bibendum turpis, id bibendum pede enim porttitor tellus. Aliquam velit. Pellentesque at mauris quis libero fermentum cursus. Integer bibendum scelerisque elit. Curabitur justo tellus, vehicula luctus, consequat vitae, convallis quis, nunc. Fusce libero nulla, convallis eu, dignissim sit amet, sagittis ac, odio. Morbi dictum tincidunt nisi. Curabitur hendrerit. Aliquam eleifend sodales leo. Donec interdum. Nam vulputate, purus in euismod bibendum, pede mi pellentesque dolor, at viverra quam tellus eget pede. Suspendisse varius mi id felis. Aenean in velit eu nisi suscipit mollis. Suspendisse vitae augue et diam volutpat luctus. Mauris et lorem. In mauris. Morbi commodo rutrum nibh. Pellentesque lobortis. Sed eget urna ut massa venenatis luctus. Morbi egestas purus eget ante pulvinar vulputate. Suspendisse sollicitudin. Cras tortor erat, semper vehicula, suscipit non, facilisis ut, est. Aenean quis libero varius nisl fringilla mollis. Donec viverra. Phasellus mi tortor, pulvinar id, pulvinar in, lacinia nec, massa. Curabitur lectus erat, volutpat at, volutpat at, pharetra nec, turpis. Donec ornare nonummy leo. Donec consectetuer posuere metus. Quisque tincidunt risus facilisis dui. Ut suscipit turpis in massa. Aliquam erat volutpat. ''' class TestElement(document.InlineElement): vertex_list = None def place(self, layout, x, y): self.vertex_list = layout.batch.add(4, pyglet.gl.GL_QUADS, layout.top_group, 'v2i', ('c4B', [200, 200, 200, 255] * 4)) y += self.descent w = self.advance h = self.ascent - self.descent self.vertex_list.vertices[:] = (x, y, x + w, y, x + w, y + h, x, y + h) def remove(self, layout): self.vertex_list.delete() del self.vertex_list class TestWindow(pyglet.window.Window): def __init__(self, *args, **kwargs): super(TestWindow, self).__init__(*args, **kwargs) self.batch = pyglet.graphics.Batch() self.document = pyglet.text.decode_attributed(doctext) for i in range(0, len(doctext), 300): self.document.insert_element(i, TestElement(60, -10, 70)) self.margin = 2 self.layout = layout.IncrementalTextLayout(self.document, self.width - self.margin * 2, self.height - self.margin * 2, multiline=True, batch=self.batch) self.caret = caret.Caret(self.layout) self.push_handlers(self.caret) self.set_mouse_cursor(self.get_system_mouse_cursor('text')) def on_resize(self, width, height): super(TestWindow, self).on_resize(width, height) self.layout.begin_update() self.layout.x = self.margin self.layout.y = self.margin self.layout.width = width - self.margin * 2 self.layout.height = height - self.margin * 2 self.layout.end_update() def on_mouse_scroll(self, x, y, scroll_x, scroll_y): self.layout.view_x -= scroll_x self.layout.view_y += scroll_y * 16 def on_draw(self): pyglet.gl.glClearColor(1, 1, 1, 1) self.clear() self.batch.draw() def on_key_press(self, symbol, modifiers): super(TestWindow, self).on_key_press(symbol, modifiers) if symbol == pyglet.window.key.TAB: self.caret.on_text('\t') class TestCase(unittest.TestCase): def test(self): self.window = TestWindow(resizable=True, visible=False) self.window.set_visible() pyglet.app.run() if __name__ == '__main__': unittest.main() pyglet-1.1.4/tests/text/CONTENT_VALIGN_CENTER.py 0000600 0134641 0134642 00000012011 11266427715 017126 0 ustar yoh yoh #!/usr/bin/env python '''Test content_valign = 'center' property of IncrementalTextLayout. Examine and type over the text in the window that appears. The window contents can be scrolled with the mouse wheel. When the content height is less than the window height, the content should be aligned to the center of the window. Press ESC to exit the test. ''' __docformat__ = 'restructuredtext' __version__ = '$Id: STYLE.py 1754 2008-02-10 13:26:52Z Alex.Holkner $' import unittest from pyglet import app from pyglet import gl from pyglet import graphics from pyglet import text from pyglet.text import caret from pyglet.text import layout from pyglet import window from pyglet.window import key, mouse doctext = '''CONTENT_VALIGN_CENTER.py test document. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas aliquet quam sit amet enim. Donec iaculis, magna vitae imperdiet convallis, lectus sem ultricies nulla, non fringilla quam felis tempus velit. Etiam et velit. Integer euismod. Aliquam a diam. Donec sed ante. Mauris enim pede, dapibus sed, dapibus vitae, consectetuer in, est. Donec aliquam risus eu ipsum. Integer et tortor. Ut accumsan risus sed ante. Aliquam dignissim, massa a imperdiet fermentum, orci dolor facilisis ante, ut vulputate nisi nunc sed massa. Morbi sodales hendrerit tortor. Nunc id tortor ut lacus mollis malesuada. Sed nibh tellus, rhoncus et, egestas eu, laoreet eu, urna. Vestibulum massa leo, convallis et, pharetra vitae, iaculis at, ante. Pellentesque volutpat porta enim. Morbi ac nunc eget mi pretium viverra. Pellentesque felis risus, lobortis vitae, malesuada vitae, bibendum eu, tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus dapibus tortor ac neque. Curabitur pulvinar bibendum lectus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tellus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla turpis leo, rhoncus vel, euismod non, consequat sed, massa. Quisque ultricies. Aliquam fringilla faucibus est. Proin nec felis eget felis suscipit vehicula. Etiam quam. Aliquam at ligula. Aenean quis dolor. Suspendisse potenti. Sed lacinia leo eu est. Nam pede ligula, molestie nec, tincidunt vel, posuere in, tellus. Donec fringilla dictum dolor. Aenean tellus orci, viverra id, vehicula eget, tempor a, dui. Morbi eu dolor nec lacus fringilla dapibus. Nulla facilisi. Nulla posuere. Nunc interdum. Donec convallis libero vitae odio. Aenean metus lectus, faucibus in, malesuada at, fringilla nec, risus. Integer enim. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin bibendum felis vel neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec ipsum dui, euismod at, dictum eu, congue tincidunt, urna. Sed quis odio. Integer aliquam pretium augue. Vivamus nonummy, dolor vel viverra rutrum, lacus dui congue pede, vel sodales dui diam nec libero. Morbi et leo sit amet quam sollicitudin laoreet. Vivamus suscipit. Duis arcu eros, iaculis ut, vehicula in, elementum a, sapien. Phasellus ut tellus. Integer feugiat nunc eget odio. Morbi accumsan nonummy ipsum. Donec condimentum, tortor non faucibus luctus, neque mi mollis magna, nec gravida risus elit nec ipsum. Donec nec sem. Maecenas varius libero quis diam. Curabitur pulvinar. Morbi at sem eget mauris tempor vulputate. Aenean eget turpis. ''' class TestWindow(window.Window): def __init__(self, *args, **kwargs): super(TestWindow, self).__init__(*args, **kwargs) self.batch = graphics.Batch() self.document = text.decode_text(doctext) self.margin = 2 self.layout = layout.IncrementalTextLayout(self.document, self.width - self.margin * 2, self.height - self.margin * 2, multiline=True, batch=self.batch) self.layout.content_valign = 'center' self.caret = caret.Caret(self.layout) self.push_handlers(self.caret) self.set_mouse_cursor(self.get_system_mouse_cursor('text')) def on_resize(self, width, height): super(TestWindow, self).on_resize(width, height) self.layout.begin_update() self.layout.x = self.margin self.layout.y = self.margin self.layout.width = width - self.margin * 2 self.layout.height = height - self.margin * 2 self.layout.end_update() def on_mouse_scroll(self, x, y, scroll_x, scroll_y): self.layout.view_x -= scroll_x self.layout.view_y += scroll_y * 16 def on_draw(self): gl.glClearColor(1, 1, 1, 1) self.clear() self.batch.draw() def on_key_press(self, symbol, modifiers): super(TestWindow, self).on_key_press(symbol, modifiers) if symbol == key.TAB: self.caret.on_text('\t') class TestCase(unittest.TestCase): def test(self): self.window = TestWindow(resizable=True, visible=False) self.window.set_visible() app.run() if __name__ == '__main__': unittest.main() pyglet-1.1.4/tests/text/RUNLIST.py 0000700 0134641 0134642 00000021420 11266427715 015061 0 ustar yoh yoh #!/usr/bin/python # $Id:$ from pyglet.text import runlist import unittest __noninteractive = True class TestStyleRuns(unittest.TestCase): def check_value(self, runs, value): for i, style in enumerate(value): self.assertTrue(runs[i] == style, repr(runs.runs)) self.check_optimal(runs) self.check_continuous(runs) self.check_iter(runs, value) self.check_iter_range(runs, value) def check_optimal(self, runs): last_style = None for _, _, style in runs: self.assertTrue(style != last_style) last_style = style def check_continuous(self, runs): next_start = 0 for start, end, _ in runs: self.assertTrue(start == next_start) next_start = end def check_iter(self, runs, value): for start, end, style in runs: for v in value[start:end]: self.assertTrue(v == style) def check_iter_range(self, runs, value): for interval in range(1, len(value)): it = runs.get_run_iterator() for start in range(0, len(value), interval): end = min(start + interval, len(value)) for s, e, style in it.ranges(start, end): for v in value[s:e]: self.assertTrue(v == style, (start, end, s, e, style)) def check_empty(self, runs, value): start, end, style = iter(runs).next() self.assertTrue(start == 0) self.assertTrue(end == 0) self.assertTrue(style == value) def test_zero(self): runs = runlist.RunList(0, 'x') it = iter(runs) start, end, s = it.next() self.assertTrue(start == 0) self.assertTrue(end == 0) self.assertTrue(s == 'x') self.assertRaises(StopIteration, it.next) self.check_optimal(runs) def test_initial(self): runs = runlist.RunList(10, 'x') it = iter(runs) start, end, s = it.next() self.assertTrue(start == 0) self.assertTrue(end == 10) self.assertTrue(s == 'x') self.assertRaises(StopIteration, it.next) self.check_value(runs, 'x' * 10) def test_set1(self): runs = runlist.RunList(10, 'a') runs.set_run(2, 8, 'b') self.check_value(runs, 'aabbbbbbaa') def test_set1_start(self): runs = runlist.RunList(10, 'a') runs.set_run(0, 5, 'b') self.check_value(runs, 'bbbbbaaaaa') def test_set1_end(self): runs = runlist.RunList(10, 'a') runs.set_run(5, 10, 'b') self.check_value(runs, 'aaaaabbbbb') def test_set1_all(self): runs = runlist.RunList(10, 'a') runs.set_run(0, 10, 'b') self.check_value(runs, 'bbbbbbbbbb') def test_set1_1(self): runs = runlist.RunList(10, 'a') runs.set_run(1, 2, 'b') self.check_value(runs, 'abaaaaaaaa') def test_set_overlapped(self): runs = runlist.RunList(10, 'a') runs.set_run(0, 5, 'b') self.check_value(runs, 'bbbbbaaaaa') runs.set_run(5, 10, 'c') self.check_value(runs, 'bbbbbccccc') runs.set_run(3, 7, 'd') self.check_value(runs, 'bbbddddccc') runs.set_run(4, 6, 'e') self.check_value(runs, 'bbbdeedccc') runs.set_run(5, 9, 'f') self.check_value(runs, 'bbbdeffffc') runs.set_run(2, 3, 'g') self.check_value(runs, 'bbgdeffffc') runs.set_run(1, 3, 'h') self.check_value(runs, 'bhhdeffffc') runs.set_run(1, 9, 'i') self.check_value(runs, 'biiiiiiiic') runs.set_run(0, 10, 'j') self.check_value(runs, 'jjjjjjjjjj') def test_insert_empty(self): runs = runlist.RunList(0, 'a') runs.insert(0, 10) self.check_value(runs, 'aaaaaaaaaa') def test_insert_beginning(self): runs = runlist.RunList(5, 'a') runs.set_run(1, 4, 'b') self.check_value(runs, 'abbba') runs.insert(0, 3) self.check_value(runs, 'aaaabbba') def test_insert_beginning_1(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.insert(0, 1) runs.set_run(0, 1, 'a') self.check_value(runs, 'aaaaaa') runs.insert(0, 1) runs.set_run(0, 1, 'a') self.check_value(runs, 'aaaaaaa') runs.insert(0, 1) runs.set_run(0, 1, 'a') self.check_value(runs, 'aaaaaaaa') def test_insert_beginning_2(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.insert(0, 1) runs.set_run(0, 1, 'b') self.check_value(runs, 'baaaaa') runs.insert(0, 1) runs.set_run(0, 1, 'c') self.check_value(runs, 'cbaaaaa') runs.insert(0, 1) runs.set_run(0, 1, 'c') self.check_value(runs, 'ccbaaaaa') def test_insert_1(self): runs = runlist.RunList(5, 'a') runs.set_run(1, 4, 'b') self.check_value(runs, 'abbba') runs.insert(1, 3) self.check_value(runs, 'aaaabbba') def test_insert_2(self): runs = runlist.RunList(5, 'a') runs.set_run(1, 2, 'b') self.check_value(runs, 'abaaa') runs.insert(2, 3) self.check_value(runs, 'abbbbaaa') def test_insert_end(self): runs = runlist.RunList(5, 'a') runs.set_run(4, 5, 'b') self.check_value(runs, 'aaaab') runs.insert(5, 3) self.check_value(runs, 'aaaabbbb') def test_insert_almost_end(self): runs = runlist.RunList(5, 'a') runs.set_run(0, 3, 'b') runs.set_run(4, 5, 'c') self.check_value(runs, 'bbbac') runs.insert(4, 3) self.check_value(runs, 'bbbaaaac') def test_delete_1_beginning(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.delete(0, 3) self.check_value(runs, 'aa') def test_delete_1_middle(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.delete(1, 4) self.check_value(runs, 'aa') def test_delete_1_end(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.delete(2, 5) self.check_value(runs, 'aa') def test_delete_1_all(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.delete(0, 5) self.check_value(runs, '') self.check_empty(runs, 'a') def create_runs1(self): runs = runlist.RunList(10, 'a') runs.set_run(1, 10, 'b') runs.set_run(2, 10, 'c') runs.set_run(3, 10, 'd') runs.set_run(4, 10, 'e') runs.set_run(5, 10, 'f') runs.set_run(6, 10, 'g') runs.set_run(7, 10, 'h') runs.set_run(8, 10, 'i') runs.set_run(9, 10, 'j') self.check_value(runs, 'abcdefghij') return runs def create_runs2(self): runs = runlist.RunList(10, 'a') runs.set_run(4, 7, 'b') runs.set_run(7, 10, 'c') self.check_value(runs, 'aaaabbbccc') return runs def test_delete2(self): runs = self.create_runs1() runs.delete(0, 5) self.check_value(runs, 'fghij') def test_delete3(self): runs = self.create_runs1() runs.delete(2, 8) self.check_value(runs, 'abij') def test_delete4(self): runs = self.create_runs2() runs.delete(0, 5) self.check_value(runs, 'bbccc') def test_delete5(self): runs = self.create_runs2() runs.delete(5, 10) self.check_value(runs, 'aaaab') def test_delete6(self): runs = self.create_runs2() runs.delete(0, 8) self.check_value(runs, 'cc') def test_delete7(self): runs = self.create_runs2() runs.delete(2, 10) self.check_value(runs, 'aa') def test_delete8(self): runs = self.create_runs2() runs.delete(3, 8) self.check_value(runs, 'aaacc') def test_delete9(self): runs = self.create_runs2() runs.delete(7, 8) self.check_value(runs, 'aaaabbbcc') def test_delete10(self): runs = self.create_runs2() runs.delete(8, 9) self.check_value(runs, 'aaaabbbcc') def test_delete11(self): runs = self.create_runs2() runs.delete(9, 10) self.check_value(runs, 'aaaabbbcc') def test_delete12(self): runs = self.create_runs2() runs.delete(4, 5) self.check_value(runs, 'aaaabbccc') def test_delete13(self): runs = self.create_runs2() runs.delete(5, 6) self.check_value(runs, 'aaaabbccc') def test_delete14(self): runs = self.create_runs2() runs.delete(6, 7) self.check_value(runs, 'aaaabbccc') if __name__ == '__main__': unittest.main() pyglet-1.1.4/tests/text/STYLE.py 0000600 0134641 0134642 00000025327 11266427715 014632 0 ustar yoh yoh #!/usr/bin/env python '''Test that character and paragraph-level style is adhered to correctly in incremental layout. Examine and type over the text in the window that appears. The window contents can be scrolled with the mouse wheel. There are no formatting commands, however formatting should be preserved as expected when entering or replacing text and resizing the window. Press ESC to exit the test. ''' __docformat__ = 'restructuredtext' __version__ = '$Id: STYLE.py 2091 2008-05-29 13:45:22Z Alex.Holkner $' import unittest from pyglet import app from pyglet import gl from pyglet import graphics from pyglet import text from pyglet.text import caret from pyglet.text import layout from pyglet import window from pyglet.window import key, mouse doctext = '''STYLE.py test document. {font_size 24}This is 24pt text.{font_size 12} This is 12pt text (as is everything that follows). This text has some {bold True}bold character style{bold False}, some {italic True}italic character style{italic False}, some {underline [0, 0, 0, 255]}underlined text{underline None}, {underline [255, 0, 0, 255]}underline in red{underline None}, a {color [255, 0, 0, 255]}change {color [0, 255, 0, 255]}in {color [0, 0, 255, 255]}color{color None}, and in {background_color [255, 255, 0, 255]}background {background_color [0, 255, 255, 255]}color{background_color None}. {kerning '2pt'}This sentence has 2pt kerning.{kerning 0} {kerning '-1pt'}This sentence has negative 1pt kerning.{kerning 0} Superscript is emulated by setting a positive baseline offset and reducing the font size, as in a{font_size 9}{baseline '4pt'}2{font_size None}{baseline 0} + b{font_size 9}{baseline '4pt'}2{font_size None}{baseline 0} = c{font_size 9}{baseline '4pt'}2{font_size None}{baseline 0}. Subscript is similarly emulated with a negative baseline offset, as in H{font_size 9}{baseline '-3pt'}2{font_size None}{baseline 0}O. This paragraph uses {font_name 'Courier New'}Courier New{font_name None} and {font_name 'Times New Roman'}Times New Roman{font_name None} fonts. {.leading '5pt'}This paragraph has 5pts leading. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. {.leading None}{.line_spacing '12pt'}This paragraph has constant line spacing of 12pt. When an {font_size 18}18pt font is used{font_size None}, the text overlaps and the baselines stay equally spaced. Lorem ipsum dolor sit amet, consectetur adipisicing elit, {font_size 18}sed do eiusmod tempor incididunt ut labore et dolore{font_size None} magna aliqua. {.line_spacing None}{.indent '20pt'}This paragraph has a 20pt indent. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. {.indent None}{.tab_stops [300, 500]}Tablated data:{#x09}Player{#x09}Score{} {#x09}Alice{#x09}30,000{} {#x09}Bob{#x09}20,000{} {#x09}Candice{#x09}10,000{} {#x09}David{#x09}500 {.indent None}{.align 'right'}This paragraph is right aligned. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. {.align 'center'}This paragraph is centered. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. {.align 'left'}{.margin_left 50}This paragraph has a 50 pixel left margin. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. {.margin_left 0}{.margin_right '50px'}This paragraph has a 50 pixel right margin. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. {.margin_left 200}{.margin_right 200}This paragraph has 200 pixel left and right margins. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. {.align 'right'}{.margin_left 100}{.margin_right 100}This paragraph is right-aligned, and has 100 pixel left and right margins. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. {.align 'center'}{.margin_left 100}{.margin_right 100}This paragraph is centered, and has 100 pixel left and right margins. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. {.align 'left'}{.margin_left 0}{.margin_right 0}{.wrap False}This paragraph does not word-wrap. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. {.wrap True}{.margin_bottom 15}This and the following two paragraphs have a 15 pixel vertical margin separating them. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.{} Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.{} Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.{} {.margin_bottom 0}{.margin_top 30}This and the following two paragraphs have a 30 pixel vertical margin (this time, the top margin is used instead of the bottom margin). There is a 45 pixel margin between this paragraph and the previous one.{} Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.{} Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.{} ''' class TestWindow(window.Window): def __init__(self, *args, **kwargs): super(TestWindow, self).__init__(*args, **kwargs) self.batch = graphics.Batch() self.document = text.decode_attributed(doctext) self.margin = 2 self.layout = layout.IncrementalTextLayout(self.document, self.width - self.margin * 2, self.height - self.margin * 2, multiline=True, batch=self.batch) self.caret = caret.Caret(self.layout) self.push_handlers(self.caret) self.set_mouse_cursor(self.get_system_mouse_cursor('text')) def on_resize(self, width, height): super(TestWindow, self).on_resize(width, height) self.layout.begin_update() self.layout.x = self.margin self.layout.y = self.margin self.layout.width = width - self.margin * 2 self.layout.height = height - self.margin * 2 self.layout.end_update() def on_mouse_scroll(self, x, y, scroll_x, scroll_y): self.layout.view_x -= scroll_x self.layout.view_y += scroll_y * 16 def on_draw(self): gl.glClearColor(1, 1, 1, 1) self.clear() self.batch.draw() def on_key_press(self, symbol, modifiers): super(TestWindow, self).on_key_press(symbol, modifiers) if symbol == key.TAB: self.caret.on_text('\t') class TestCase(unittest.TestCase): def test(self): self.window = TestWindow(resizable=True, visible=False) self.window.set_visible() app.run() if __name__ == '__main__': unittest.main() pyglet-1.1.4/tests/text/HTML.py 0000600 0134641 0134642 00000017420 11266427715 014471 0 ustar yoh yoh #!/usr/bin/env python '''Test that HTML data is decoded into a formatted document. Press ESC to exit the test. ''' __docformat__ = 'restructuredtext' __version__ = '$Id: ELEMENT.py 1764 2008-02-16 05:24:46Z Alex.Holkner $' import unittest import pyglet from pyglet.text import caret, document, layout doctext = '''
(metadata including title is not displayed.)Several paragraphs of HTML formatted text follow. Ensure they are formatted as they are described. Here is a copyright symbol: © and again, using hexadecimal ref: ©.
This paragraph has some bold and italic and bold italic text.
This paragraph has some emphasis and strong and emphatic strong text.
This paragraph demonstrates superscript: a2 + b2 = c2; and subscript: H2O.
This paragraph uses the <font> element: Courier New, size 1, size 2, size 3, size 4, size 5, size 6, size 7.
This paragraph uses relative sizes: size 5size 3
Font color changes to red, green and pastel blue using a hexidecimal number.
This text is underlined. This text is underlined and green.
Centered paragraph.
Right-aligned paragraph.
This text is preformatted. Hard line breaks Indentation. Inline formatting is still ok.
This paragraph
has a
line break
after every
two words.
This paragraph is blockquote. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Here is a quotation. The previous paragraph mentioned,Nested blockquote. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, ....