Copyright (C) 2013, 2014 Julian Marchant <onpon4@riseup.net>

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.

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

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

Specification additions:
+ sge.View.wport
+ sge.View.hport
+ sge.mouse.set_x
+ sge.mouse.set_y

Specification misc changes:
* sge.game.mouse is not used for as many jobs as it was previously.
* Mouse position attributes are -1 if the mouse is in relative mode.


0.11
------------------------------------------------------------------------

Specification additions:
+ sge.Color

Specification misc changes:
* Colors are specified by objects of the new sge.Color class rather than
  arbitrary kinds of values.
* sge.StellarClass renamed to sge.Object.
* Name changed from "Stellar Game Engine" to "SGE Game Engine".


0.10
------------------------------------------------------------------------

Specification additions:
+ sge.Game.set_alarm
+ sge.Game.get_alarm
+ sge.Game.event_alarm
+ sge.Room.set_alarm
+ sge.Room.get_alarm
+ sge.Room.event_alarm
+ sge.Sprite.draw_erase
+ sge.StellarClass.checks_collisions
+ sge.StellarClass.tangible
+ sge.Game.collision_events_enabled
+ sge.keyboard.get_pressed
+ sge.keyboard.get_modifier
+ sge.keyboard.get_focused
+ sge.keyboard.set_repeat
+ sge.keyboard.get_repeat_enabled
+ sge.keyboard.get_repeat_interval
+ sge.keyboard.get_repeat_delay
+ sge.mouse.get_pressed
+ sge.joystick.get_axis
+ sge.joystick.get_hat_x
+ sge.joystick.get_hat_y
+ sge.joystick.get_pressed
+ sge.joystick.get_joysticks
+ sge.joystick.get_name
+ sge.joystick.get_id
+ sge.joystick.get_axes
+ sge.joystick.get_hats
+ sge.joystick.get_trackballs
+ sge.joystick.get_buttons
+ sge.mouse.get_x
+ sge.mouse.get_y
+ sge.Game.input_events
+ sge.Game.pump_input
+ sge.Game.regulate_speed
+ sge.Game.refresh
+ sge.input.KeyPress
+ sge.input.KeyRelease
+ sge.input.MouseMove
+ sge.input.MouseButtonPress
+ sge.input.MouseButtonRelease
+ sge.input.JoystickAxisMove
+ sge.input.JoystickHatMove
+ sge.input.JoystickTrackballMove
+ sge.input.JoystickButtonPress
+ sge.input.JoystickButtonRelease
+ sge.input.KeyboardFocusGain
+ sge.input.KeyboardFocusLose
+ sge.input.MouseFocusGain
+ sge.input.MouseFocusLose
+ sge.input.QuitRequest
+ sge.Sprite.draw_lock
+ sge.Sprite.draw_unlock
+ sge.Font.get_width
+ sge.Font.get_height
+ sge.joystick.refresh

Specification removals:
- sge.StellarClass.detects_collisions
- sge.get_key_pressed
- sge.get_mouse_button_pressed
- sge.get_joystick_axis
- sge.get_joystick_hat
- sge.get_joystick_id
- sge.get_joystick_axes
- sge.get_joystick_hats
- sge.get_joystick_trackballs
- sge.get_joystick_buttons
- sge.Font.get_size
- sge.show_message
- sge.get_text_entry

Specification misc changes:
* sge.Room.event_room_resume no longer calls sge.Room.event_room_start by default.
* "name" and "ID" arguments for joystick events renamed to "js_name" and
  "js_id", respectively.
* IMPLEMENTATION set to "SGE Specification" instead of "SGE Template".


0.9
------------------------------------------------------------------------

Specification additions:
+ sge.collision.rectangles_collide
+ sge.collision.masks_collide
+ sge.StellarClass.regulate_origin
+ sge.StellarClass.image_origin_x
+ sge.StellarClass.image_origin_y
+ sge.StellarClass.mask
+ sge.StellarClass.mask_x
+ sge.StellarClass.mask_y
+ sge.StellarClass.collision
+ sge.collision.rectangle
+ sge.collision.ellipse
+ sge.collision.circle
+ sge.collision.line
+ sge.StellarClass.event_update_position

Specification removals:
- sge.StellarClass.collides

Specification misc changes:
* Rotation and scaling are no longer relative to the origin unless the
  new regulate_origin attribute is True.
* New attributes added to sge.StellarClass.__init__'s arguments.
* transparent argument moved in front of origin_x argument in sge.Sprite.__init__.
* Step events now have a "delta_mult" argument.


0.8
------------------------------------------------------------------------

Specification additions:
+ sge.Sprite.frames
+ sge.Sprite.append_frame
+ sge.Sprite.insert_frame
+ sge.Sprite.delete_frame
+ sge.Sprite.from_tileset
+ sge.Sprite.destroy
+ sge.BackgroundLayer.destroy
+ sge.Background.destroy
+ sge.Sound.destroy
+ sge.Music.destroy
+ sge.Room.destroy
+ sge.Room.move
+ sge.Game.project_dot
+ sge.Game.project_line
+ sge.Game.project_rectangle
+ sge.Game.project_ellipse
+ sge.Game.project_circle
+ sge.Game.project_sprite
+ sge.Game.project_text

Specification misc changes:
* room_number argument added to sge.Room.__init__


0.7
------------------------------------------------------------------------

Specification additions:
+ sge.get_joystick_name
+ sge.get_joystick_id
+ sge.get_joystick_trackballs
+ sge.Game.register_class
+ sge.Game.registered_classes
+ sge.Room.objects_by_class
+ sge.StellarClass.event_begin_step
+ sge.StellarClass.event_end_step
+ sge.StellarClass.event_inactive_end_step
+ sge.Sprite.speed
+ sge.StellarClass.image_speed

Specification misc changes:
* Joystick handling functions now accept joystick names for "joystick" argument.
* Joystick events' "joystick" argument renamed to "ID".
* Joystick events now have a "name" argument indicating the joystick name.
* sge.Room.objects changed from a tuple to a list.
* xprevious and yprevious of StellarClass now indicate the x and y
  values of the previous frame rather than the last x and y values
  different from the current ones.
* Changing sge.Sprite.width and sge.Sprite.height is now officially destructive.


0.6
------------------------------------------------------------------------

Specification additions:
+ sge.Font.from_sprite
+ sge.Room.event_room_resume

Specification misc changes:
* sge.Sprite.draw_sprite and sge.Room.project_sprite now support blend modes.
* sge.Sound.play and sge.Music.play "loops" argument tweaked.

Specification bugfixes:
- Argument for Font.__init__ being the old "id_" rather than "ID"
- Small problems with the documentation


0.5
------------------------------------------------------------------------

Specification additions:
+ sge.Game.event_gain_keyboard_focus
+ sge.Game.event_lose_keyboard_focus
+ sge.Game.event_gain_mouse_focus
+ sge.Game.event_lose_mouse_focus
+ sge.Game.event_paused_gain_keyboard_focus
+ sge.Game.event_paused_lose_keyboard_focus
+ sge.Game.event_paused_gain_mouse_focus
+ sge.Game.event_paused_lose_mouse_focus
+ sge.Room.event_gain_keyboard_focus
+ sge.Room.event_lose_keyboard_focus
+ sge.Room.event_gain_mouse_focus
+ sge.Room.event_lose_mouse_focus
+ sge.Room.event_paused_gain_keyboard_focus
+ sge.Room.event_paused_lose_keyboard_focus
+ sge.Room.event_paused_gain_mouse_focus
+ sge.Room.event_paused_lose_mouse_focus

Specification misc changes:
* Documentation reformatted.
* "id"/"id_" argument in many constructor methods changed to "ID".


0.4
------------------------------------------------------------------------

Specification additions:
+ sge.Sprite.from_screenshot
+ sge.Sprite.save
+ sge.show_message
+ sge.get_text_entry
+ sge.Room.background_x
+ sge.Room.background_y
+ sge.Sprite.id
+ sge.BackgroundLayer.id
+ sge.Font.id
+ sge.Sound.id
+ sge.Music.id

Specification removals:
- sge.Music.stop_all (replaced by sge.Music.stop, now a static method)
- sge.Music.balance (nonsensical; should be controlled by the music file)
- sge.Sound.balance (replaced by a balance argument when the sound is played)
- sge.Background.x (replaced by sge.Room.background_x)
- sge.Background.y (replaced by sge.Room.background_y)

Specification misc changes:
* bbox_x and bbox_y of sge.Sprite now default to the top-left of the image.
* sge.Music.stop is now a static method.
* sge.Music.pause is now a static method.
* sge.Music.unpause is now a static method.
* Key press events now have a third argument, char.
* sge.Sound.play now has a balance argument.
* Docstrings reformatted to reStructuredText.
* sge.Sprite.__init__ now has an id attribute.
* sge.BackgroundLayer.__init__ now has an id attribute.
* sge.Font.__init__ now has an id attribute.
* Sprites can be referenced by id rather than by name now.
* Background layers can be referenced by id rather than by sprite name now.
* Fonts can be referenced by id rather than by name now.

Specification misc changes:
* Released to the public domain via CC0.


0.3
------------------------------------------------------------------------

Specification additions:
+ sge.Room.project_dot
+ sge.Room.project_line
+ sge.Room.project_rectangle
+ sge.Room.project_ellipse
+ sge.Room.project_circle
+ sge.Room.project_sprite
+ sge.Room.project_text
+ sge.Background.x
+ sge.Background.y
+ Trackball support
+ sge.StellarClass.active

Specification misc changes:
* Trying to load invalid sound files now raises an exception.
* The file name for sounds and music can now be set to None for null sounds.
* Mouse buttons are now identified by strings instead of constants.


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

Specification misc changes:
* sge.Game.window_icon is now a file name instead of a sprite.
* The default room size is now the game window size.


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

Specification additions:
+ sge.Sprite.draw_dot
+ sge.Sprite.draw_line
+ sge.Sprite.draw_rectangle
+ sge.Sprite.draw_ellipse
+ sge.Sprite.draw_circle
+ sge.Sprite.draw_text
+ sge.Sprite.draw_clear
+ sge.Game.grab_input
+ sge.Sprite.draw_sprite
+ sge.Music.clear_queue
+ sge.Music.stop_all
+ sge.Sound.stop_all
+ sge.StellarClass.create
+ sge.Game.window_text
+ sge.Game.window_icon

Specification removals:
- sge.Game.draw_dot (replaced by sge.Sprite.draw_dot)
- sge.Game.draw_line (replaced by sge.Sprite.draw_line)
- sge.Game.draw_rectangle (replaced by sge.Sprite.draw_rectangle)
- sge.Game.draw_ellipse (replaced by sge.Sprite.draw_ellipse)
- sge.Game.draw_circle (replaced by sge.Sprite.draw_circle)
- sge.Game.sound_stop_all (replaced by sge.sound_stop_all)

Specification misc changes:
* A list or tuple of possible font choices can now be specified.
* Sprites now use a transparent image by default, not a black image.
* Added arguments to sge.Room.end.
* Implementations no longer required to support Ogg Vorbis and WAV.
* Removed unnecessary arguments from sge.Font.get_size.
* Split SGE in to multiple files.


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

First release
