This file has been dedicated to the public domain, to the extent
possible under applicable law, via CC0. See
http://creativecommons.org/publicdomain/zero/1.0/ for more
information. This file is offered as-is, without any warranty.

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

1.5
------------------------------------------------------------------------

Pygame SGE misc changes:
* Changed the way lines are automatically split, using the uniseg
  module, so that it is done properly.

Pygame SGE bugfixes:
- Failure to support screen blending with objects


1.4.4
------------------------------------------------------------------------

Pygame SGE misc changes:
* Added some optimizations when certain SGE features are not being used.

Pygame SGE bugfixes:
- Crash when attempting to use gfx.TileGrid.render
- Loss of frames when changing frame rate and image index sequentially
- Incorrect error when passing a non-color as a color


1.4.3
------------------------------------------------------------------------

Pygame SGE misc changes:
* Added support for using pygame_sdl2 if pygame is unavailable.
* Changed the way specific scaling amounts in fullscreen are handled.
* Use the "current" (as of the game start) screen resolution for auto-
  scaling. This avoids problems with using higher resolutions in some
  systems.

Pygame SGE bugfixes:
- Some incompatibilities with pygame-cffi


1.4.2
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Broken collision_line function
- Scale2x only working with exact multiples of 2


1.4.1
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Bad warning that caused the program to crash


1.4
------------------------------------------------------------------------

Pygame SGE misc changes:
* Removed the default "paused" image; simple text is used by default
  instead.
* When the game attempts to load an unsupported music format, this is
  caught and ignored with a warning printed.

Pygame SGE bugfixes:
- Two of the same color not being treated as equal


1.3
------------------------------------------------------------------------

Pygame SGE misc changes:
* Changed the way the channel used when none are free is decided.

Pygame SGE bugfixes:
- Collision functions detecting collisions with intangible objects
- Failure to remove objects as collision checkers properly


1.2
------------------------------------------------------------------------

Pygame SGE misc changes:
* Tweaked the method of adjusting alpha.

Pygame SGE bugfixes:
- Collision functions not working with floats
- Incorrect sizes reported for text of sprite fonts
- Warning message that showed up when switching rooms


1.1.1
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Some gratuitous incompatibilities with Pygame-cffi
- Cruft in __all__ left over from previous SGE versions


1.1
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Crash caused by attempting to use Scale2x


1.0.2
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Crash caused by failing to convert two values to integers


1.0.1
------------------------------------------------------------------------

Pygame SGE misc changes:
* The amount of time things like images are cached has been reduced from
  30 seconds to 15 seconds.

Pygame SGE bugfixes:
- Text projections not using the cache properly, wasting RAM
- Cache causing a delay of garbage collection for unused sprites


1.0
------------------------------------------------------------------------

Pygame SGE additions:
+ Support for the Scale2x algorithm

Pygame SGE bugfixes:
- More cases of background layers being positioned wrongly
- Text drawing not supporting alpha transparency
- Some joystick axis values being able to go outside the allowed range
- Failure to cap joystick values in some cases


0.24
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Background layers sometimes being positioned a pixel off
- Transparency of some image formats being incorrectly accounted for


0.22
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Incorrect assumption made by sge.Sprite.from_text
- Switching sge.game.current_room immediately causing problems
- "z" argument of sge.Game.project_text not having an effect
- Incorrectly taking origin into account in Sprite.from_tileset


0.21
------------------------------------------------------------------------

Pygame SGE misc changes:
* Removed code that converted sge.Sprite.__init__'s ``directory``
  argument to an absolute path. Absolute paths can exacerbate a problem
  Pygame has dealing with non-ASCII directories.


0.20
------------------------------------------------------------------------

Pygame SGE additions:
+ Support for screen blending (slow)

Pygame SGE bugfixes:
- Incorrect radius being calculated for iris transitions
- Outdated code which would have caused a crash if it was reached
- Choice of area in Object.collision ignoring x and y arguments
- Animation end event not working with reversed animation


0.19
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Minor visual defect of transitions
- Deletion of objects in the create event causing unpredictable failures


0.18.2.1
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Referencing a non-existent variable


0.18.2
------------------------------------------------------------------------

Pygame SGE misc changes:
* Improved optimization.

Pygame SGE bugfixes:
- Remaining minor case of eternal caches


0.18.1
------------------------------------------------------------------------

Pygame SGE misc changes:
* Improved debug information for a certain error.

Pygame SGE bugfixes:
- Crash caused by a mere warning
- Collision areas being voided by a bad check, and causing said warning


0.18
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Create events being called twice
- Some problems with collision lists


0.17
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Memory leeching problem caused by permanent caching


0.16
------------------------------------------------------------------------

Pagame SGE bugfixes:
- Room background_x and background_y not shifting the background uniformly
- Incorrect sprite font size implementation (caused a crash)
- Failure to set bounding box to the sprite bounding box when set to None
- Phantom objects left in collision check lists when starting a new room
- Room projections only being shown in the first view
- Joystick axis values above 1 and below -1 being allowed


0.15
------------------------------------------------------------------------

Pygame SGE misc changes:
* Pixelate transition now spends most of its time pixelating.

Pygame SGE bugfixes:
- Current room's event_room_end not being called when the game ends
- Sprites loaded from tilesets not being given enough frames, and having
  many frames pasted onto early frames as a result
- Valid images being blocked by files that weren't valid images
- sge.Object.visible attribute being ignored
- Transitions obscured by projections created in or after the step event


0.14
------------------------------------------------------------------------

Pygame SGE misc changes:
* Improved error messages when failing to load images or sounds.
* Made Six an external dependency.

Pygame SGE bugfixes:
- Redundantly checking for collision with the same object multiple times
- sge.Music.length not working
- Background position in rooms not being reset


0.13
------------------------------------------------------------------------

Pygame SGE removals:
- Unused and unmaintained "_reset" method in sge.Object

Pygame SGE misc changes:
* Slightly adjusted how text height is calculated.
* Made some optimizations to some properties.
* Refactored some code to make it easier to read
* Removed unnecessary use of weak references
* Made it compatible with both Python 2 and Python 3

Pygame SGE bugfixes:
- Some values not being rounded, resulting in crashes
- Typo of "radians" instead of "math.radians" which of course failed
- Mistake in calculation of move_direction when in quadrant II
- sge.Object.move_direction rotating backwards
- Create events of objects created during create events being skipped
- Valid usages of sge.Object.collision causing errors
- Collision detection of objects marked as intangible not being cleaned
  up properly
- Possibility of floats being used where ints expected with background layers
- Sprite fonts being completely broken
- Sound "file not found" error not being raised correctly
- Sound volume attribute not being taken into account
- Music volume attribute not being taken into account in one case
- Incomplete resetting when calling sge.Game.start or sge.Room.start a second time
- Joystick hat values being vertically inverted
- Low-color images with the smoothscale option causing the game to crash
- Colorkey transparency not taking effect in Sprite.draw_sprite
- Paused state being preserved when starting a new room
- Sounds and music continuing to play when restarting the game
- Collisions still being detected by destroyed objects
- Alarms still running when restarting the room or game
- Multiple gamepads with the same name causing rejection of all but the last


0.12
------------------------------------------------------------------------

Pygame SGE misc changes:
* The whole display system has been rewritten.  The resulting system is
  noticeably less efficient than the old system, but much easier to
  debug and extend.  This was done mostly so that zoom support could be
  implemented without a lot of needless headaches.
* Hardware acceleration is now enabled by default, since Pygame's
  software rendering optimizations aren't used anymore.

Pygame SGE bugfixes:
- sge.mouse.get_x and sge.mouse.get_y not taking scaling into account


0.10.1
------------------------------------------------------------------------

Pygame SGE bugfixes:
- sge.Game.project_text alignment not working properly


0.10.0
------------------------------------------------------------------------

Pygame SGE misc changes:
* If sge.game.scale is set, the window is now not resizable.
* Objects can now be destroyed multiple times safely.
* Pause screen improved.

Pygame SGE bugfixes:
- Window size being the monitor size when exiting fullscreen
- Alarms being broken
- Setting sprites to non-integer sizes causing a crash
- Text entry area in sge.get_text_entry being in the wrong place
- Mistakes in room and game resetting which could sometimes cause errors
- Destruction of objects causing problems with concurrent iteration
- Drawing partially transparent shapes not working as intended
- Font files not being loaded successfully when multiple choices given
- Backgrounds not displaying properly with view ports outside the window
- Game projections of sprites not taking suggested origin into account
- sge.Game.project_sprite not working with sprite IDs


0.9.2
------------------------------------------------------------------------

Pygame SGE bugfixes:
- 2-frame delay between a music ending and the queued music starting
- Small chance of a crash happening
- Passing sprite IDs to Room.project_sprite not working


0.9.1
------------------------------------------------------------------------

Pygame SGE bugfixes:
- sge.Game.project_rectangle, sge.Game.project_ellipse,
  sge.Room.project_rectangle, and sge.Room.project_ellipse being broken
- Projection methods with outlines not projecting the shapes correctly


0.9.0
------------------------------------------------------------------------

Pygame SGE bugfixes:
- sge.Sound.playing never decreasing.
- Music not being controlled when paused or when a dialog was up.


0.8.0
------------------------------------------------------------------------

Pygame SGE misc changes:
* Room.project_* methods made much more efficient.
* Collision detection divided into sections within rooms, making it more efficient.

Pygame SGE bugfixes:
- Room.draw_sprite destroying the sprite that is projected
- Multiple views not working properly with scaling
- Changing from windowed to fullscreen mode resulting in the wrong resolution
- Rotated precise collision detection not working


0.7.0
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Axis checking taking trackballs into account (outdated behavior)
- Joystick checks returning None if non-existant components were checked
- Objects list not being reset when it is supposed to be
- Directional collision detection being faulty
- Mouse being invisible while a modal dialog box was shown
- Collision detection of multiple objects (e.g. of the same class) not working
- Custom mouse sprites sometimes appearing behind other objects
- Mouse not working with split-screen
- Custom mouse sprites not working when the game was paused


0.6.0
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Changing a font's size causing bold, underline, and italic to be reset
- sge.Music.play "loops" argument not conforming to the spec
- Objects and views getting reset wrongly when the room was (re)started


0.5.1
------------------------------------------------------------------------

Pygame SGE bugfixes:
- Certain valid image names not being accepted for the loading of sprites
- Python 3 version being completely broken


0.5.0
------------------------------------------------------------------------

Pygame SGE misc changes:
* Now called "the Pygame SGE" rather than "SGE Pygame".
* Appearance of modal dialog boxes changed.

Pygame SGE bugfixes:
- sge.BackgroundLayer not being able to accept sprite IDs
- Sprites being rotated about the center instead of the origin
- Projections being broken (arguments in a method call were messed up)
- Text wrapping wrongly
- Mouse being moved to the top-left corner of the window on room start
  if it started outside the window
- sge.Room.project_text not working with font IDs


0.4.0
------------------------------------------------------------------------

SGE Pygame misc changes:
* Collision detection changed to be more efficient.
* Now called "SGE Pygame" instead of "Stellar Game Engine - Pygame 1.9".

SGE Pygame bugfixes:
- Projected objects flickering when delta timing was enabled
- sge.StellarClass.image_fps not being used if a sprite was available
- Background layers being offset when scaling the window
- Rectangles replacing the area they drew on rather than blending
- sge.Sprite.draw_sprite not accepting sprite names


0.3.0
------------------------------------------------------------------------

Pygame implementation additions:
+ DEBUG constant (causes more verbose information to be printed if True)

Pygame implementation bugfixes:
- IOError being raised if Pygame's mixer module was unavailable


0.2.1
------------------------------------------------------------------------

Pygame implementation bugfixes:
- Views being allowed outside the room
- Crash when changing an object's sprite
- image_xscale and image_yscale not being factored into objects' origins
- Image being offset if an object's xscale or yscale was negative


0.2.0
------------------------------------------------------------------------

Pygame implementation additions:
+ sge.hardware_rendering
+ Automatic font substitution (e.g. Liberation Sans for Arial)
+ sge.real_trackballs

Pygame implementation bugfixes:
- Problems with scaling
- Problems with partial screen updates
- Wrong correction of views being outside the room
- Object disappearing bug
- Background disappearing bug
- Split-screen problem
- Background change not showing up when changing rooms
- Bug with partial view of dynamic objects
- Background update bug


0.1.0
------------------------------------------------------------------------

First release

Note: many features were unimplemented in this version. They were all
later implemented in version 0.2.0.
