================================================
Version 11.2 - Alpha (Mar 6 - 2019)
================================================
[ADDED] New functions button.SetImage and button.GetImage
[ADDED] LoveFrames Demo
[ADDED] New Default skin with subskins

[FIXED] Colors as numbers

[CHANGED] Massive internal update and cleaning by ingsoc451 (https://love2d.org/forums/memberlist.php?mode=viewprofile&u=137519)
[CHANGED] Require system
[CHANGED] loveframes.util and loveframes.templates functions moved to loveframes
[CHANGED] utf8 moved to third-party

================================================
Version 11.0 - Alpha (Apr 15 - 2018)
================================================
[FIXED] updated to LÖVE 11.0

================================================
Version 0.10.1 - Alpha (Nov 13 - 2016)
================================================
[ADDED] a new property: image.stretch (boolean)
[ADDED] a new property: button.image (image) -- left aligned image
[ADDED] new properties: button.groupIndex (int) and button.checked (boolean)
[ADDED] new properties: imagebutton.groupIndex (int) and imagebutton.checked (boolean)
[ADDED] a new property: checkbox.groupIndex
[ADDED] a new function: wheelmoved

[FIXED] textinput - Unicode support
[FIXED] Update for LÖVE 0.10.1
[FIXED] Update stencil calls

================================================
Version 0.10 - Alpha (Release Date TBD)
================================================
[ADDED] a new object: tree
[ADDED] a new object: radiobutton
[ADDED] a new button method: GetDown()
[ADDED] support for relative object sizing
[ADDED] a new columnlist method: GetCellText(rowid, columnid)
[ADDED] a new button method: SetToggleable(bool)
[ADDED] a new button method: GetToggleable()
[ADDED] toggle functionality to the button object
[ADDED] resizing functinality to the columnlistheader object
[ADDED] horizontal scrolling to the columnlist object
[ADDED] a new columnlistarea method: GetVerticalScrollBody()
[ADDED] a new columnlistarea method: GetHorizontalScrollBody()
[ADDED] a new columnlist method: GetTotalColumnWidth()
[ADDED] a new columnlist method: SetColumnWidth(id, width)
[ADDED] a new columnlist method: GetColumnWidth(id)
[ADDED] a new columnlist method: ResizeColumns()
[ADDED] a new columnlist method: SetDefaultColumnWidth(width)
[ADDED] a new columnlist method: GetDefaultColumnWidth()
[ADDED] a new columnlist method: SetColumnResizeEnabled(bool)
[ADDED] a new columnlist method: GetColumnResizeEnabled()
[ADDED] a new columnlist method: SizeColumnToData()
[ADDED] a new columnlist method: SetColumnOrder(curid, newid)
[ADDED] a new columnlistheader method: SetName(name)
[ADDED] a new scrollbody method: GetScrollBar()
[ADDED] a new scrollbar method: ScrollTo(percent)
[ADDED] a new frame method: SetMaxSize(width, height)
[ADDED] a new frame method: GetMaxSize()
[ADDED] a new frame method: SetMinSize(width, height)
[ADDED] a new frame method: GetMinSize()
[ADDED] a new textinput method: ClearLine(line)
[ADDED] a new textinput method: SetTrackingEnabled(bool)
[ADDED] a new textinput method: GetTrackingEnabled()
[ADDED] a new list method: GetAutoScroll()

[FIXED] bug that would cause tabbuttons to be positioned incorrectly when scrolling with the mouse wheel
[FIXED] collision detection issue caused by list child objects not being updated when outside of their parent's bounding box
[FIXED] checkbox text becoming invisible when calling checkbox:SetText after switching to a custom state
[FIXED] an error caused by calling base:MoveToTop on an object parented to a panel object
[FIXED] nested list positioning issues
[FIXED] textinput.alltextselected being set to true when calling the SelectAll method on an empty single-line textinput
[FIXED] a bug that allowed frames to be resized when they where not being hovered
[FIXED] text:GetLines always returning nil
[FIXED] creating a newline in a multiline textinput with the return key would not reset the object's xoffset
[FIXED] the last character of a long line in a multiline textinput not being shown due to a text offset calculation issue
[FIXED] scrollbody now resizes to parent
[FIXED] textinput indicator now always visible
[FIXED] columnlist rows can have non-drawable extra info ("Blue" skin doesn't crash on it)

[CHANGED] columnlist row colors are now adjusted when a row is removed from the list
[CHANGED] columnlistarea.rowcolorindex now resets to 1 when the list is cleared
[CHANGED] columnlist:SetRowColumnText to columnlist:SetCellText
[CHANGED] columnlist:AdjustColumns to columnlist:PositionColumns
[CHANGED] license to zlib/libpng
[CHANGED] the loveframes table is now returned by init.lua
[CHANGED] template files are now expected to return a template table instead of calling loveframes.templates.Register
[CHANGED] textinput tries to scroll horizontally only if alt is pressed
[CHANGED] project-wide utf8 support
[CHANGED] the textinput's indicator is now always visible when being moved

================================================
Version 0.9.8.1 - Alpha (May 17 - 2014)
================================================
[ADDED] ability to specify a custom skin directory in a skin's lua file

[FIXED] frame:MakeTop not returning self in certain situations
[FIXED] ability to insert tabs into a textinput when all of the object's text was selected
[FIXED] ability to cause a single-line textinput to enter all text selected mode when no text had been entered
 
[CHANGED] returning false in a frame.OnClose event callback will prevent the frame from being removed
[CHANGED] tabs:AddTab now returns the tabbutton object associated with the new tab

================================================
Version 0.9.8 - Alpha (April 3 - 2014)
================================================
[ADDED] support for method chaining
[ADDED] a new tooltip method: GetPadding()
[ADDED] a new frame method: SetAlwaysOnTop(bool)
[ADDED] a new frame method: GetAlwaysOnTop()

[FIXED] text object link detection issues
[FIXED] loveframes.util.GetDirectoryContents returning incorrect require paths

[CHANGED] the text object will now detect newlines that are not separated by spaces

[REMOVED] support for LOVE 0.8.0

================================================
Version 0.9.7.2 - Alpha (January 29 - 2014)
================================================
[ADDED] a new closebutton method: SetAutoPosition(bool)
[ADDED] a new closebutton method: GetAutoPosition()
[ADDED] checkbox skin directives

[FIXED] ability to use the tab button in numberbox textinputs
[FIXED] text width being calculated incorrectly when max width was set to 0
[FIXED] base menus can no longer extend beyond the boundaries of the application window

[CHANGED] minor performance improvements for the following objects: list, columnlistarea, tabs
[CHANGED] closebuttons are now automatically positioned by default
[CHANGED] optimized loveframes.util.TableHasKey (thanks CyaNox)

================================================
Version 0.9.7.1 - Alpha (January 15 - 2014)
================================================
[ADDED] a new tooltip method: GetOffsetX()
[ADDED] a new tooltip method: GetOffsetY()
[ADDED] a new tooltip method: GetOffsets()
[ADDED] a new tooltip method: GetFollowCursor()
[ADDED] a new tooltip method: GetObject()
[ADDED] a new tooltip method: GetFont()
[ADDED] a new tooltip method: GetFollowObject()

[CHANGED] Moved library files to /libraries
[CHANGED] Upgraded to middleclass 3.0.1

================================================
Version 0.9.7 - Alpha (January 12 - 2014)
================================================
[ADDED] a new base method: textinput(text)
[ADDED] a new frame method: SetResizable(bool)
[ADDED] a new frame method: GetResizable()
[ADDED] a new frame method: SetMinWidth(width)
[ADDED] a new frame method: GetMinWidth()
[ADDED] a new frame method: SetMaxWidth(width)
[ADDED] a new frame method: GetMaxWidth()
[ADDED] a new frame method: SetMinHeight(height)
[ADDED] a new frame method: GetMinHeight()
[ADDED] a new frame method: SetMaxHeight(height)
[ADDED] a new frame method: GetMaxHeight()
[ADDED] a new progressbar method: SetText(text)
[ADDED] a new progressbar method: GetText()
[ADDED] a new tabs method: SetButtonAreaX(x)
[ADDED] a new tabs method: GetButtonAreaX()
[ADDED] a new tabs method: SetButtonAreaWidth(width)
[ADDED] a new tabs method: GetButtonAreaWidth()
[ADDED] a new tabs method: SetAutoButtonAreaWidth(bool)
[ADDED] a new tabs method: GetAutoButtonAreaWidth()
[ADDED] a new text method: SetLinksEnabled(enabled)
[ADDED] a new text method: GetLinksEnabled()
[ADDED] a new text method: SetDetectLinks(detect)
[ADDED] a new text method: GetDetectLinks()
[ADDED] a new textinput method: Copy()
[ADDED] a new textinput method: Paste()
[ADDED] a new textinput method: SelectAll()
[ADDED] a new textinput method: DeselectAll()
[ADDED] a new textinput method: SetMasked(masked)
[ADDED] a new textinput method: GetMasked()
[ADDED] a new textinput method: SetMaskChar(char)
[ADDED] a new textinput method: GetMaskChar()
[ADDED] a new textinput method: SetPlaceholderText(text)
[ADDED] a new textinput method: GetPlaceholderText()
[ADDED] a new tooltip method: SetOffsetX(xoffset)
[ADDED] a new tooltip method: SetOffsetY(yoffset)
[ADDED] a new tooltip method: GetText()
[ADDED] a new text event callback: OnClickLink(object, text)
[ADDED] a new frame event callback: OnResize(object, width, height)
[ADDED] a new util library function: TableHasValue(table, value)
[ADDED] a new util library function: GetHoverObject()
[ADDED] a new callback: textinput(text)
[ADDED] a new object: form
[ADDED] a new object: menu
[ADDED] a new skin drawing function: DrawOverTabPanel(object)
[ADDED] basic clipboard support for the textinput object (0.9.0 only)
[ADDED] custom cursor support for the textinput object
[ADDED] support for love.filesystem changes to loveframes.util.GetDirectoryContents (0.9.0 only)
[ADDED] support for text object link processing
[ADDED] loveframes.downobject
[ADDED] skin directives for the text object
[ADDED] functionality for resizing frames

[FIXED] error when pressing a function key while a textinput was focused
[FIXED] the tooltip object not setting the state of its text object
[FIXED] the text object not being set to the correct width in certain situations
[FIXED] textinput:GetText appending an extra newline to then end of the text string
[FIXED] text processing issues with the textinput object (0.9.0 only)
[FIXED] text positioning issues when moving the textinput's indicator with the left and right arrow keys
[FIXED] textinput character limit blocking user input when all text was selected

[CHANGED] cleaned up the tooltip object
[CHANGED] upgraded to middleclass 3.0
[CHANGED] loveframes.hoverobject is now used to store the currently hovered object
[CHANGED] textinput:SetText now repositions the object's indicator
[CHANGED] reworked the collision detection system for MAJOR performance improvements
[CHANGED] text object formatting options are now specified in a single table rathar than as individual arguments
[CHANGED] text can now be specified as a link via text formatting options
[CHANGED] text formatting options now support link colors

[REMOVED] base:IsTopCollision

================================================
Version 0.9.6.3 - Alpha (August 15 - 2013)
================================================
[CHANGED] the collapsible category icons used in the stock skins

[REMOVED] loveframes.info

================================================
Version 0.9.6.2 - Alpha (August 14 - 2013)
================================================
[FIXED] collapsiblecategory:GetOpen() returning a nil value

[CHANGED] loveframes.util.RemoveAll() now resets loveframes.hoverobject, loveframes.modalobject, loveframes.inputobject and loveframes.hover
[CHANGED] the frame topbar image of both stock skins back to the gradients used before the 0.9.6 update
[CHANGED] the stock skins now draw a gradient for the body of the frame object instead of a solid color
[CHANGED] slight color/drawing adjustments to the blue stock skin
[CHANGED] the collapsiblecategory object now checks its child object's visibility while closed to make sure it hasn't been marked as visible (mainly to prevent collision issues)

[REMOVED] examples menu from the debug library
[REMOVED] skin selector menu from the debug library
[REMOVED] many skin controls from the orange stock skin that are no longer needed

================================================
Version 0.9.6.1 - Alpha (August 12 - 2013)
================================================
[FIXED] blue stock skin setting an invalid image directory in its skin file

================================================
Version 0.9.6 - Alpha (August 12 - 2013)
================================================
[ADDED] a new base method: GetSkinName()
[ADDED] a new frame method: SetDockable(dockable)
[ADDED] a new frame method: GetDockable()
[ADDED] a new frame method: SetDockZoneSize(size)
[ADDED] a new frame method: GetDockZoneSize()
[ADDED] a new columnlist method: RemoveColumn(id)
[ADDED] a new columnlist method: SetColumnName(id, name)
[ADDED] a new columnlist method: RemoveRow(id)
[ADDED] a new columnlist method: SetRowColumnText(text, rowid, columnid)
[ADDED] a new columnlist method: SetRowColumnData(rowid, columndata)
[ADDED] a new columnlist method: SizeToChildren(max)
[ADDED] a new frame event callback: OnDock(object, dockobject)
[ADDED] a new tabs method: SetTabObject(id, object)
[ADDED] a new util library function: RectangleCollisionCheck(rect1, rect2)
[ADDED] a new util library function: DeepCopy(orig)
[ADDED] a new skins library function: Get(name)
[ADDED] a new skins library function: SetControl(name, control, value)
[ADDED] a new skins library function: SetImage(name, image, value)
[ADDED] a new skins library function: SetImageDirectory(name, dir)
[ADDED] a new skins library function: ReloadImages(name)
[ADDED] docking functionality for frame objects
[ADDED] skins can now define a separate skin to use as a base via skin.base
[ADDED] skins can now load images from external directories via the skin.imagedir setting (defaults to loveframes/skins/skin_name/images)
[ADDED] compatibility for LOVE 0.9.0

[CHANGED] scroll buttons for the tabs object are no longer removed and re-created everytime a new tab is added
[CHANGED] base:GetSkin() now returns the skin's table instead of the skin's name
[CHANGED] the frame topbar image of both stock skins to a different gradient

[FIXED] columnlist:GetSelectedRows() returning a nil value
[FIXED] syntax typo in textinput:RemoveFromText() (was textinput:RemoveFromeText())
[FIXED] object creation via datatables
[FIXED] multichoice:SelectChoice(choice) causing an error if called when a multichoice list was not open
[FIXED] multichoice object value not being reset when calling multichoice:Clear()
[FIXED] an error that would occurred when attempting to scroll a tabs object with the scroll wheel when the object had no tabs
[FIXED] colunlist:AddRow not working correctly with LuaJIT versions of LOVE

[REMOVED] drawing code from the orange stock skin (now inherits from the blue stock skin)

================================================
Version 0.9.5.14 - Alpha (June 25 - 2013)
================================================
[FIXED] columnlistheaders and columnlistrows not being clickable when the columnlist object was using a custom state

================================================
Version 0.9.5.13 - Alpha (June 24 - 2013)
================================================
[FIXED] tabbuttons not being clickable when the tabs object was using a custom state

================================================
Version 0.9.5.12 - Alpha (June 10 - 2013)
================================================
[ADDED] a new columnlist method: SelectRow(row, ctrl)
[ADDED] a new columnlist method: DeselectRow(row)
[ADDED] a new columnlist method: GetSelectedRows()
[ADDED] a new columnlist method: SetSelectionEnabled(bool)
[ADDED] a new columnlist method: GetSelectionEnabled()
[ADDED] a new columnlist method: SetMultiselectEnabled(bool)
[ADDED] a new columnlist method: GetMultiselectEnabled()
[ADDED] a new columnlistrow method: SetSelected(bool)
[ADDED] a new columnlistrow method: GetSelected()
[ADDED] a new columnlistrow method: SetColumnData(data)
[ADDED] a new columnlist event callback: OnRowRightClicked(parent, row, data)
[ADDED] a new columnlist event callback: OnRowSelected(parent, row, data)
[ADDED] a new util library function: GetCollisionCount()
[ADDED] a new util library function: GetHover()

[CHANGED] the default mousewheel scroll-amount value for the list object
[CHANGED] the list object no longer uses delta time for scrolling by default
[CHANGED] some of the columnlistrow object's colors in the default skins

================================================
Version 0.9.5.11 - Alpha (May 15 - 2013)
================================================
[ADDED] ability to use multiple fonts with the text object
[ADDED] a new checkbox method: SetEnabled(bool)
[ADDED] a new checkbox method: GetEnabled()
[ADDED] a new multichoice method: SetEnabled(bool)
[ADDED] a new multichoice method: GetEnabled()

[FIXED] being able to check a checkbox object while it was not down
[FIXED] collisions being detected on objects outside of the active state

[CHANGED] the checkbox event callback "OnChanged" now returns both the object and a boolean value representing whether or not the object is checked

================================================
Version 0.9.5.10 - Alpha (May 12 - 2013)
================================================
[ADDED] a new slider method: GetDecimals()
[ADDED] a new numberbox method: SetDecimals(decimals)
[ADDED] a new numberbox method: GetDecimals()
[ADDED] a new textinput method: SetVisible(bool) (override of the base SetVisible method)

[FIXED] the textinput object's "keydown" property not reseting when the object was not visible

================================================
Version 0.9.5.9 - Alpha (May 8 - 2013)
================================================
[FIXED] the slider event callback "OnRelease" not being called when the sliderbutton was released while being dragged in a non-hover state

================================================
Version 0.9.5.8 - Alpha (May 5 - 2013)
================================================
[ADDED] a new textinput method: SetValue(value) (alias of SetText(text))
[ADDED] a new textinput method: GetValue() (alias of GetText())
[ADDED] a new object: grid
[ADDED] a new frame method: SetIcon(icon)
[ADDED] a new frame method: GetIcon()
[ADDED] a new callback for the slider object: OnRelease(object)
[ADDED] a new text method: SetDefaultColor(r, g, b, a)
[ADDED] a new text method: GetDefaultColor()

[FIXED] OnOpened and OnClosed callbacks for tabbuttons not being asigned properly
[FIXED] the image object not checking its hover state
[FIXED] tabbutton rendering issues with the default skins
[FIXED] some padding issues with multiline textinputs

[CHANGED] loveframes.config["DIRECTORY"] no longer needs to be set when installing Love Frames

================================================
Version 0.9.5.7 - Alpha (April 9 - 2013)
================================================
[FIXED] some issues with positioning the textinput object's text

================================================
Version 0.9.5.6 - Alpha (March 29 - 2013)
================================================
[FIXED] numberbox:SetValue not functioning correctly

================================================
Version 0.9.5.5 - Alpha (March 23 - 2013)
================================================
[ADDED] a new textinput method: SetRepeatDelay(delay)
[ADDED] a new textinput method: GetRepeatDelay()
[ADDED] a new textinput method: SetRepeatRate(rate)
[ADDED] a new textinput method: GetRepeatRate()

[FIXED] several typos in the numberbox object's code

[CHANGED] love frames now resets the active font to the font used before calling loveframes.draw()

[REMOVED] loveframes.util.CheckForUpdates()

================================================
Version 0.9.5.4 - Alpha (March 5 - 2013)
================================================
[ADDED] a new multichoice method: RemoveChoice(choice)
[ADDED] a new multichoice method: Clear()

[FIXED] a bug with list:RemoveItem that would cause an error when providing an argument that wasn't a number
[FIXED] the list object not resizing correctly when using list:RemoveItem and providing a number as an argument

================================================
Version 0.9.5.3 - Alpha (February 25 - 2013)
================================================
[FIXED] mousereleased never getting called on the collapsiblecategory's object

================================================
Version 0.9.5.2 - Alpha (February 24 - 2013)
================================================
[ADDED] a new slider method: SetEnabled(bool)
[ADDED] a new slider method: GetEnabled()

[FIXED] a resizing/layout issue with the columnlist object
[FIXED] base:GetChildren being declared twice and base:GetInternals never being declared

[CHANGED] major performance improvements for the default skins Blue and Orange

[REMOVED] the "Blue (basic)" skin
[REMOVED] the "Orange (basic)" skin

================================================
Version 0.9.5.1 - Alpha (February 17 - 2013)
================================================
[ADDED] a new slider method: SetScrollable(bool)
[ADDED] a new slider method: GetScrollable()
[ADDED] a new slider method: SetScrollIncrease(increase)
[ADDED] a new slider method: GetScrollIncrease()
[ADDED] a new slider method: SetScrollDecrease(decrease)
[ADDED] a new slider method: GetScrollDecrease()
[ADDED] a new multichoice method: Sort(func)
[ADDED] a new multichoice method: SetSortFunction(func)
[ADDED] a new multichoice method: GetSortFunction()
[ADDED] support for scrolling the slider object with the mouse wheel

[FIXED] the slider event callback "OnValueChanged" not passing the slider's new value in certain situations
[FIXED] some typos in the changelog

[CHANGED] the default mouse wheel scroll amounts of the scrollable objects (list, columnlist, tabs, multichoice)
[CHANGED] minor modifications to the default skins
[CHANGED] objects can now be centered when using the base methods SetPos, SetX, and SetY (ex: object:SetPos(x, y, true) would center the object at the position specified by x and y)

================================================
Version 0.9.5 - Alpha (February 11 - 2013)
================================================
[ADDED] state system
[ADDED] a new base method: SetState(name)
[ADDED] a new base method: GetState()
[ADDED] a new list method: EnableHorizontalStacking(bool)
[ADDED] a new list method: GetHorizontalStacking()
[ADDED] a new list method: SetDTScrolling(bool)
[ADDED] a new list method: GetDTScrolling()
[ADDED] a new image method: GetImageSize()
[ADDED] a new image method: GetImageWidth()
[ADDED] a new image method: GetImageHeight()
[ADDED] a new imagebutton method: GetImageSize()
[ADDED] a new imagebutton method: GetImageWidth()
[ADDED] a new imagebutton method: GetImageHeight()
[ADDED] a new tabs method: RemoveTab(id)
[ADDED] a new tabs method: SetButtonScrollAmount(amount)
[ADDED] a new tabs method: GetButtonScrollAmount()
[ADDED] a new tabs method: SetMouseWheelScrollAmount(amount)
[ADDED] a new tabs method: GetMouseWheelScrollAmount()
[ADDED] a new tabs method: SetDTScrolling(bool)
[ADDED] a new tabs method: GetDTScrolling()
[ADDED] a new columlist method: SetDTScrolling(bool)
[ADDED] a new columlist method: GetDTScrolling()
[ADDED] a new multichoice method: SetDTScrolling(bool)
[ADDED] a new multichoice method: GetDTScrolling()
[ADDED] a new base library function: loveframes.SetState(name)
[ADDED] a new base library function: loveframes.GetState()
[ADDED] a new object: numberbox
[ADDED] support for horizontal stacking of list object items when the list object's display mode is set to vertical

[FIXED] an error that would occur when providing a number as the text argument for textinput:SetText(text)
[FIXED] default skin images becoming distorted at certain positions on the screen
[FIXED] being able to clear a textinput's text by pressing an unusable key while all of the object's text was selected
[FIXED] several typos in the changelog

[CHANGED] the SetColor method for the image object now checks for four arguments (r, g, b, a) instead of one (table)
[CHANGED] major code cleanup for the default skins
[CHANGED] list:RemoveItem now accepts either an object or a number as an argument
[CHANGED] miscellaneous changes/improvements to various sections of code
[CHANGED] the images of the default skins

================================================
Version 0.9.4.15 - Alpha (January 5 - 2013)
================================================
[ADDED] a new base method: GetInternals()
[ADDED] a new tooltip method: SetFollowObject(bool)

================================================
Version 0.9.4.14 - Alpha (January 4 - 2013)
================================================
[ADDED] a new util library function: loveframes.util.CheckForUpdates() (note: this function is meant to be used by the developer and is never called internally by Love Frames)
[ADDED] a new callback for the tabbutton object: OnOpened(object)
[ADDED] a new callback for the tabbutton object: OnClosed(object)

[CHANGED] tabs:AddTab(name, object, tip, image) now accepts two new optional arguments for tabbutton callbacks (ex: tabs:AddTab(name, object, tip, image, onopened, onclosed))

================================================
Version 0.9.4.13 - Alpha (January 4 - 2013)
================================================
[ADDED] a new base method: IsInList()

[FIXED] not being able to add the boolean "false" to a template as a property with loveframes.templates.AddProperty(templatename, object, property, value)

[CHANGED] small code cleanup
[CHANGED] improved performance of the text object while parented within a list object

================================================
Version 0.9.4.12 - Alpha (December 30 - 2012)
================================================
[CHANGED] newlines created on the text object with \n now display properly
[CHANGED] Love Frames now resets the current drawing color to the last color used before calling loveframes.draw() after it has finished all drawing operations

================================================
Version 0.9.4.11 - Alpha (December 28 - 2012)
================================================
[ADDED] a new textinput method: SetAutoScroll(bool)
[ADDED] a new textinput method: GetAutoScroll()

[FIXED] a couple of typos in the changelog
[FIXED] a sliderbutton calculation error that caused the sliderbutton object to flash while moving the cursor out of it's bounding box while it was down

[CHANGED] cleaned up a lot of code
[CHANGED] the text object's shadow color now defaults to black

================================================
Version 0.9.4.10 - Alpha (December 26 - 2012)
================================================
[FIXED] registration errors for the new default skins

================================================
Version 0.9.4.9 - Alpha (December 26 - 2012)
================================================
[ADDED] a new default skin: Blue (basic)
[ADDED] a new default skin: Orange (basic)
[ADDED] a new skins library function: loveframes.skins.GetAvailable()

[CHANGED] the license from CC BY-SA 3.0 to CC BY 3.0
[CHANGED] made minor improvements to the default skins

================================================
Version 0.9.4.8 - Alpha (December 24 - 2012)
================================================
[ADDED] a new text method: SetShadow(bool)
[ADDED] a new text method: GetShadow()
[ADDED] a new text method: SetShadowOffsets(offsetx, offsety)
[ADDED] a new text method: GetShadowOffsets()
[ADDED] a new text method: SetShadowColor(r, g, b, a)
[ADDED] a new text method: GetShadowColor()
[ADDED] a new columnlist method: SetColumnHeight(height)

[FIXED] templates not being applied to objects

[CHANGED] the columnlistarea object now has better sorting
[CHANGED] the frame object no longer sets the size of it's close button

================================================
Version 0.9.4.7 - Alpha (December 19 - 2012)
================================================
[FIXED] textinput:SetFocus(focus) not working properly

[CHANGED] the tooltip object is now positionable via the standard positioning methods when not set to follow the cursor

================================================
Version 0.9.4.6 - Alpha (December 10 - 2012)
================================================
[ADDED] a new textinput event callback: OnFocusGained(object)
[ADDED] a new textinput event callback: OnFocusLost(object)

[FIXED] the textinput object accepting input from the tab and delete keys when object.editable was set to false

[CHANGED] all "." are now replaced with "/" in loveframes.config["DIRECTORY"] after all inernal Love Frames libraries have been loaded (this is to prevent filesystem errors)

[REMOVED] loveframes.util.TrimString(string)

================================================
Version 0.9.4.5 - Alpha (November 28 - 2012)
================================================
[FIXED] text inputs not losing focus in certain situations

================================================
Version 0.9.4.4 - Alpha (November 24 - 2012)
================================================
[ADDED] a new text input method: SetButtonScrollAmount(amount)
[ADDED] a new text input method: GetButtonScrollAmount()
[ADDED] a new text input method: SetMouseWheelScrollAmount(amount)
[ADDED] a new text input method: GetMouseWheelScrollAmount()
[ADDED] a new multichoice method: SetButtonScrollAmount(amount)
[ADDED] a new multichoice method: GetButtonScrollAmount()
[ADDED] a new multichoice method: SetMouseWheelScrollAmount(amount)
[ADDED] a new multichoice method: GetMouseWheelScrollAmount()
[ADDED] a new column list method: SetButtonScrollAmount(amount)
[ADDED] a new column list method: GetButtonScrollAmount()
[ADDED] a new column list method: SetMouseWheelScrollAmount(amount)
[ADDED] a new column list method: GetMouseWheelScrollAmount()
[ADDED] a new frame method: SetParentLocked(bool)
[ADDED] a new frame method: GetParentLocked()
[ADDED] a new base method: CenterWithinArea(x, y, width, height)
[ADDED] a new library function: loveframes.NewObject(id, name, inherit_from_base)

[FIXED] an error that would occur when clicking a scroll button on a multiline text input or a multichoice list
[FIXED] a button calculation error that caused the button object to flash while moving the cursor out of it's bounding box while it was down
[FIXED] several errors that could occur when a collapsible category did not have an object
[FIXED] the value of the slider object becoming -0 in certain situations

[CHANGED] the close button object is no longer positioned internally by the frame object and should now be positioned by it's skin drawing function
[CHANGED] all Love Frames objects are now stored within loveframes.objects
[CHANGED] frames are now draggable when parented to any object
[CHANGED] the look of the debug overlay

================================================
Version 0.9.4.3 - Alpha (November 20 - 2012)
================================================
[ADDED] a new base method: SetProperty(name, value)
[ADDED] a new base method: GetProperty(name)
[ADDED] a new list method: SetButtonScrollAmount(amount)
[ADDED] a new list method: GetButtonScrollAmount()
[ADDED] a new list method: SetMouseWheelScrollAmount(amount)
[ADDED] a new list method: GetMouseWheelScrollAmount()

[FIXED] a typo in the changelog
[FIXED] image:SetScale(scalex, scaley) not working correctly

[CHANGED] loveframes.util.GetDirContents(dir, t) to loveframes.util.GetDirectoryContents(dir, t)
[CHANGED] arguments passed to require() to use "." instead of "/" which should fix file loading issues on certain systems

================================================
Version 0.9.4.2 - Alpha (November 5 - 2012)
================================================
[ADDED] a new text object method: SetIgnoreNewlines(bool)
[ADDED] a new text object method: GetIgnoreNewlines()
[ADDED] a new image method: SetOrientation(orientation)
[ADDED] a new image method: GetOrientation()
[ADDED] a new image method: SetScaleX(scalex)
[ADDED] a new image method: GetScaleX()
[ADDED] a new image method: SetScaleY(scaley)
[ADDED] a new image method: GetScaleY()
[ADDED] a new image method: SetScale(scalex, scaley)
[ADDED] a new image method: GetScale()
[ADDED] a new image method: SetOffsetX(x)
[ADDED] a new image method: GetOffsetX()
[ADDED] a new image method: SetOffsetY(y)
[ADDED] a new image method: GetOffsetY()
[ADDED] a new image method: SetOffset(x, y)
[ADDED] a new image method: GetOffset()
[ADDED] a new image method: SetShearX(x)
[ADDED] a new image method: GetShearX()
[ADDED] a new image method: SetShearY(y)
[ADDED] a new image method: GetShearY()
[ADDED] a new image method: SetShear(x, y)
[ADDED] a new image method: GetShear()

[FIXED] an error that occurred after pressing enter on a multiline text input while all of it's text was selected
[FIXED] text in a single line text input always being cleared when the enter key was pressed
[FIXED] a syntax error in both default skin files that caused imaged to draw incorrect when they had a custom color
[FIXED] an error that would occur when a tab button was being drawn while no font had been set
[FIXED] textinput.OnTextChanged being called too early when using the backspace key or the delete key

[CHANGED] tab buttons no longer calculate their width from within their internal drawing function and should be sized externally from now on
[CHANGED] the text object now calculates what characters should be drawn while in a list object to improve performance with list objects that contain large amounts of text

================================================
Version 0.9.4.1 - Alpha (October 25 - 2012)
================================================
[ADDED] support for using the delete key in text input objects

[FIXED] textinupt:GetText() only returning the first line of a multiline text input
[FIXED] an error that occurred when clicking a multiline text input object after setting the object's text to an empty string with textinput:SetText("")
[FIXED] incorrect positioning of the text input object's indicator when using the left or right arrow keys to move the object's indicator to a different line
[FIXED] the text input object not creating a new line correctly in certain situations

[CHANGED] textinput:GetText() now returns the object's text with line breaks

================================================
Version 0.9.4 - Alpha (October 22 - 2012)
================================================
[ADDED] a new base method: SetDrawOrder()
[ADDED] a new base method: GetDrawOrder()
[ADDED] a new text method: GetFormattedText()
[ADDED] a new text input method: SetEditable(bool)
[ADDED] a new text input method: GetEditable()
[ADDED] a new text input method: GetUsable()
[ADDED] a new text input method: GetUnusable()
[ADDED] a new system for creating and applying templates to objects

[FIXED] a few incorrect entries in the changelog and added a few entries that were meant to be in the last upadte's changelog
[FIXED] an error that occurred when clicking on a frame that was parented to another frame
[FIXED] frames not being positioned properly if they were parented to another object
[FIXED] modal background object not drawing over umodaled objects in certain situations
[FIXED] an error that would occur when a multichoice list object would become scrollable
[FIXED] an error that would occur when a the column list object had no columns
[FIXED] multichoice object not positioning itself properly if it's parent was the base object

[CHANGED] text:GetText() now returns a string of the object's text
[CHANGED] parented frames can no longer be modaled

================================================
Version 0.9.3.2 - Alpha (Spetember 29 - 2012)
================================================
[ADDED] a new base method: SetDrawOrder()
[ADDED] a new text input method: SetMultiline(bool)
[ADDED] a new text input method: GetVerticalScrollBody()
[ADDED] a new text input method: GetHorizontalScrollBody()
[ADDED] a new text input method: SetText(text)
[ADDED] a new text input method: HasVerticalScrollBar()
[ADDED] a new text input method: HasHorizontalScrollBar()
[ADDED] a new text input method: GetFont()
[ADDED] a new text input method: GetLineNumbersPanel()
[ADDED] a new text input method: GetMultiline()
[ADDED] a new text input method: GetTextX()
[ADDED] a new text input method: GetTextY()
[ADDED] a new text input method: IsAllTextSelected()
[ADDED] a new text input method: GetLines()
[ADDED] a new text input method: GetOffsetX()
[ADDED] a new text input method: GetOffsetY()
[ADDED] a new text input method: GetIndicatorX()
[ADDED] a new text input method: GetIndicatorY()
[ADDED] a new text input method: SetLineNumbersEnabled(enabled)
[ADDED] a new text input method: GetLineNumbersEnabled()
[ADDED] a new text input method: GetItemWidth()
[ADDED] a new text input method: GetItemHeight()
[ADDED] a new text input method: SetTabReplacement(tabreplacement)
[ADDED] a new text input method: GetTabReplacement()
[ADDED] a new scroll area method: GetBarType()
[ADDED] a new scroll bar method: IsDragging()
[ADDED] a new scroll bar method: GetBarType()
[ADDED] a new scroll button method: GetScrollType()
[ADDED] a new tab button method: GetText()
[ADDED] a new tab button method: GetImage()
[ADDED] a new tab button method: GetTabNumber()
[ADDED] a new column list header method: GetName()
[ADDED] a new column list row method: GetColumnData()
[ADDED] a new multichoice method: SetText(text)
[ADDED] a new multichoice method: GetText()
[ADDED] a new multichoice row method: GetText()
[ADDED] a new progressbar method: GetBarWidth()
[ADDED] a new internal object: linenumberspanel
[ADDED] multiline support for the text input object
[ADDED] ability to select all text within a text input

[FIXED] progressbar object not positioning itself properly if it's parent was the base object
[FIXED] a typo in the syntax of loveframes.util.SplitString (was "SplitSring", changed to "SplitString")
[FIXED] the tooltip object not disappearing if it was visible when it's object's visibility was changed to false
[FIXED] the text input object's x offset not being adjusted initially when the width of it's text would would become wider than it's drawing area

[CHANGED] massive code cleanup for optimization and 
[CHANGED] frames can now be parent to other objects
[CHANGED] textinput:RunBlink() to textinput:UpdateIndicator()
[CHANGED] textinput:GetBlinkerVisisbility() to textinput:GetIndicatorVisisbility()
[CHANGED] textinput:MoveBlinker(num, exact) to textinput:MoveIndicator(num, exact)
[CHANGED] scrollbars now only autoscroll when their list's item width/height is greater than their previous list's previous item width/height
[CHANGED] cleaned up the code for the default skins
[CHANGED] the text input object's text is no longer drawn internally by the object and should now be draw within the object's skin drawing function
[CHANGED] the column list row object's text is no longer drawn internally by the object and should now be draw within the object's skin drawing function

[REMOVED] textinput:SetTextColor(color)
[REMOVED] columnlistrow:SetTextColor()

================================================
Version 0.9.3.1 - Alpha (Spetember 2 - 2012)
================================================
[ADDED] numpad enter key support for textinput.OnEnter

[FIXED] duplicate progressbar:GetCompleted() in progressbar.lua

[CHANGED] textinput.OnTextEnterd to textinput.OnTextChanged
[CHANGED] textinput.OnTextChanged is now also called when the backspace key is pressed

================================================
Version 0.9.3 - Alpha (Spetember 1 - 2012)
================================================
[ADDED] a new base method: GetParents()
[ADDED] a new base method: IsTopInternal()
[ADDED] a new base method: IsInternal()
[ADDED] a new base method: GetType()
[ADDED] a new checkbox method: GetFont()
[ADDED] a new checkbox method: GetBoxSize()
[ADDED] a new checkbox method: GetBoxWidth()
[ADDED] a new checkbox method: GetBoxHeight()
[ADDED] a new image method: GetImage()
[ADDED] a new image method: GetColor()
[ADDED] a new progressbar method: GetCompleted()
[ADDED] a new tabs method: GetTabNumber()
[ADDED] a new text method: GetLines()
[ADDED] a new text input method: SetLimit(limit)
[ADDED] a new text input method: SetUsable(usable)
[ADDED] a new text input method: SetUnusable(unusable)
[ADDED] a new text input method: Clear()
[ADDED] a new text input method: GetText()
[ADDED] support for line breaks in the text object (please refer to the wiki on how to format your text with line breaks)
[ADDED] more information to the debug overlay

[FIXED] tooltips and multichoice lists not functioning properly when a frame was modaled
[FIXED] the text object not moving it's base parent to the top when clicked if it's base parent was a frame
[FIXED] the list object not scrolling via the mouse wheel due to certain collision detection issues
[FIXED] tooltips flickering when in a hover state
[FIXED] slider calculation errors
[FIXED] skin.DrawRepeatingImage creating a new image every frame
[FIXED] checkbox text not scrolling properly when in a list
[FIXED] the collapsible category's object not scrolling properly when in a list
[FIXED] skins not assuming the drawing functions of the default skins if drawing functions in the active skin were missing
[FIXED] some objects not being removed
[FIXED] sliders not scrolling properly when in a list 

[CHANGED] various code for a small cleanup
[CHANGED] tooltips from being children of the base object to internals of the base object
[CHANGED] tooltips from never being removed to being removed when their assigned object is removed
[CHANGED] tooltips are now not able to be assigned to the base object (this would cause an error due to the way the tooltip currently functions)
[CHANGED] the text object now positions it's text when SetText is called instead of positioning it's text every frame
[CHANGED] slider:SetMax(max), slider:SetMin(min) and slider:SetMinMax(min, max) now adjust the slider's value if the slider's value is out of the range specified
[CHANGED] loveframes.Create(data, parent) now activates an error screen if the object specified is invalid

================================================
Version 0.9.2.5 - Alpha (June 1 - 2012)
================================================
[FIXED] the text object not drawing numbers in certain situations
[FIXED] a typo in the changelog

================================================
Version 0.9.2.4 - Alpha (May 29 - 2012)
================================================
[FIXED] the SetSkin(skin) method causing a stack overflow

================================================
Version 0.9.2.3 - Alpha (May 27 - 2012)
================================================
[FIXED] imagebutton.OnClick not working
[FIXED] text being added into the text input object at incorrect positions when the value of textinput.blinknum was 0
[FIXED] a bug that would cause an error when running SetVisible on a frame object when the value of frame.showclose was true

================================================
Version 0.9.2.2 - Alpha (May 23 - 2012)
================================================
[FIXED] vertical slider value direction (top is now max value and bottom is 0)
[FIXED] text flashing in the text input object when moving the text blinker to the right
[FIXED] text blinker in the text input object not appearing in certain situations

================================================
Version 0.9.2 - Alpha (May 22 - 2012)
================================================
[ADDED] a new slider method: SetButtonSize(width, height)
[ADDED] a new slider method: GetButtonSize()
[ADDED] a new slider method: SetSlideType(slidetype)
[ADDED] a new slider button method: MoveToY(y)

[REMOVED] slider method: SetButtonYCenter(y)
[REMOVED] slider method: GetButtonYCenter()

[FIXED] the column list row object not setting it's text's font to it's font
[FIXED] a small gradient error in the default skins
[FIXED] an error that caused tab buttons to be over-scrolled with the middle mouse button
[FIXED] the scroll area object not moving it's base parent to the top when clicked (only in situations where it's base parent was a frame)

[CHANGED] sliders no longer use ycenter for button positioning
[CHANGED] slider functionality, sliders can now be horizontal or vertical (use slider:SetSlideType("horizontal" or "vertical"))
[CHANGED] lots of code for optimization and general cleanliness
[CHANGED] a few minor things in the default skins
[CHANGED] scrollbar hover behavior when being moved via it's scroll area being clicked (will no longer auto hover when it reaches the mouse position)

================================================
Version 0.9.1.6 - Alpha (May 17 - 2012)
================================================
[ADDED] a new column list method: Clear()
[ADDED] a new column list method: SetAutoScroll(bool)
[ADDED] "autoscroll" property for the column list object
[ADDED] a new column list area method: Clear()
[ADDED] a new skin function: DrawOverTextInput()

[FIXED] not being able to move the column list object's scrollbar by clicking on it's scroll area
[FIXED] column list rows color indexes becoming disordered when the list was sorted via a column list header

[CHANGED] a few minor things in the default skins

================================================
Version 0.9.1.5 - Alpha (May 16 - 2012)
================================================
[FIXED] a bug that caused scrollbars to always autoscroll

================================================
Version 0.9.1.4 - Alpha (May 16 - 2012)
================================================
[FIXED] list:SetAutoScroll() not working

================================================
Version 0.9.1.3 - Alpha (May 14 - 2012)
================================================
[ADDED] modal system for frames
[ADDED] a new frame method: SetModal(bool)
[ADDED] a new frame method: GetModal()
[ADDED] a new frame method: SetVisible(bool) - this override is part of a frame bug fix
[ADDED] "showclose" property for the frame object
[ADDED] a new internal object: modal background
[ADDED] a new base method: IsActive()
[ADDED] a new base method: CenterX()
[ADDED] a new base method: CenterY()
[ADDED] a new skin function: DrawOverColumList()

[FIXED] a bug that made the frame's close button become visible when the frame was made visible and show close button was set to false

================================================
Version 0.9.1.2 - Alpha (May 12 - 2012)
================================================
[ADDED] a system for preventing objects from being hovered over when another object is being pressed or is "down"
[ADDED] "down" property for the checkbox object
[ADDED] "down" property for the collapsible category object
[ADDED] a new method for the tabs object: SetToolTipFont(font)

[FIXED] list:GetScrollBar() crashing when the list had no scroll bar
[FIXED] not being able to move the text input blinker to the front or end of the it's text by clicking on it's whitespace
[FIXED] the multichoice row object being "down" when mouse buttons other than the left mouse button were pressed

[CHANGED] collapsible category opening and closing system (will now only open or close when "down")

================================================
Version 0.9.1 - Alpha (May 8 - 2012)
================================================
[ADDED] a new object: image button
[ADDED] a new skin: Orange
[ADDED] a new column list row method: SetTextPos(x, y)
[ADDED] a new column list row method: SetFont(font)
[ADDED] a new column list row method: GetFont()
[ADDED] a new column list row method: GetColorIndex()
[ADDED] a new column list row method: SetTextColor(color)
[ADDED] a new debug function: SkinSelector()
[ADDED] license.txt
[ADDED] changelog.txt

[CHANGED] the name of the default skin to Blue
[CHANGED] the drawing system of the image object, the image object will now draw it's image from it's skin function instead of it's internal drawing function
[CHANGED] argument type for adding an image to a tab in tabs:AddTab(), the image argument can now be either an image object or a string containg the path to an image
[CHANGED] the look of the debug overlay
[CHANGED] some of the code within the default skins to improve performance (as suggested by kikito)

[REMOVED] license.html
[REMOVED] loveframes.graphics and graphics.lua

================================================
Version 0.9 - Alpha (May 5 - 2012)
================================================
Initial commit
