Copyright (C) 2013 Julian Marchant <onpon4@lavabit.com>

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.  This file is offered as-is,
without any warranty.

========================================================================

Implementation-Specific Information
===================================

License
-------

SGE Pygame is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

SGE Pygame is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with SGE Pygame.  If not, see <http://www.gnu.org/licenses/>.

Dependencies
------------

- Python 3.0 or later <http://www.python.org>
- Pygame 1.9 or later <http://pygame.org>

Formats Support
---------------

`Sprite` supports the following image formats:
- PNG
- JPEG
- Non-animated GIF
- BMP
- PCX
- Uncompressed Truevision TGA
- TIFF
- ILBM
- Netpbm
- X Pixmap

`Sound` supports the following audio formats:
- Uncompressed WAV
- Ogg Vorbis

`Music` supports the following audio formats:
- Ogg Vorbis
- MP3 (support limited; use not recommended)
- MOD
- XM
- MIDI

For starting position in MOD files, the pattern order number is used
instead of the number of milliseconds.

If Pygame is built without full image support, `Sprite` will only
support uncompressed BMP images.  In addition, the pygame.mixer module,
which is used for audio playback, is optional and depends on SDL_mixer;
if pygame.mixer is unavailable, sounds and music will not play.  If you
encounter problems with loading images or playing sounds, check your
build of Pygame.

On some systems, the game will crash if `Music` attempts to load an
unsupported format.  Since MP3's support is limited, it is best to avoid
using it; consider using Ogg instead.

Missing Optional Features
-------------------------

`Sprite.draw_line` and `Room.project_line` support anti-aliasing for
lines with a thickness of 1 only.  `Sprite.draw_text` and
`Room.project_text` support anti-aliasing in all cases.  No other
drawing or projecting methods support anti-aliasing.

Speed Improvements
------------------

This implementation supports hardware rendering, which can improve
performance in some cases.  It is not enabled by default.  To enable it,
set ``sge.hardware_rendering`` to True.  The benefit of hardware
acceleration is usually negligible, which is why it is disabled by
default.

Projection is highly inefficient, so it should be avoided if speed is
important; use the sprite draw methods instead.

Other Notes
-----------

Changing the ``width`` and ``height`` attributes of `Sprite` objects is
a destructive transformation in this implementation, so each time one of
these variables changes, pixel information can be lost.  For example,
scaling a 128x128 pixel image down to 16x16 and then back up to 128x128
will not yield the same image, but rather either a pixelated version or
a blurry version, depending on the value of ``sge.game.scale_smooth``.
This is because of the way the drawing methods of `Sprite` are
implemented.  Because of this, you should avoid changing this value as
much as possible.  For best results, set it only when the sprite is
created and then leave it alone; do any other routine transformations
with the ``image_xscale`` and ``image_yscale`` attributes of
`StellarClass` objects.
