-
-
Notifications
You must be signed in to change notification settings - Fork 23
/
ChangeLog
266 lines (255 loc) · 13.1 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
Version 1.1.0
=============
* SDLImage::convertToDisplayFormat now throws an exception if conversion fails.
* Fixed text drawn outside of a TextField.
* Fixed focus issues when having a TextField inside a Tab.
* Fixed selecting with arrow keys when DropDown is open skipping items
* Fixed DropDown inside a TabbedArea looking odd when dropped down.
* BasicContainer and Widget has been merged making every Widget
a possible container. The merge makes it a lot easier to
implement container widgets. With the merge there is no need
for container widgets to explicitly call drawChildren and
logicChildren as that is now handled automatically by Widget.
* Rectangle has been enhanced with methods for adding rectangles,
getting the intersection between rectangles and checking if
a rectangle contains another rectangle.
* Rectangle::isPointInRect has been renamed to Rectangle::isContaining.
* A new helper class has been added called Text for manipulating
text in widgets. It's utilised by both TextBox and TextField which
has reduced the complexity of those widgets significantly.
* BasicContainer and Container now hos the ability to resize themselves
to fit their content with BasicContainer::resizeToContent and
Container::resizeToContent.
* TabbedArea::isOpaque and TabbedArea::setOpaque have been added to
control if a tabbed area should draw its background or not.
* ScrollArea::isOpaque and ScrollArea::setOpaque have been added to
control if a scroll area should draw its background or not.
* Widget::showPart has been added to be used when a specific
part of a widget should be visible. An example is when a text
area wants a specific text part to be visible in a scroll area.
This function uses BasicContainer::showWidgetPart.
* Rectangle::intersect has been renamed to Rectangle::isIntersecting.
* Widget::hasModalFocus has been renamed to Widget::isModalFocused.
* Widget::hasModalMouseInputFocus has been renamed to Widget::isModalMouseInputFocused.
* Widget::generateAction has been renamed to Widget::distributeActionEvent.
* All enum constants have been renamed to avoid clashes with defines
present in other libraries (read windows.h). Enum constants are now named
the same ways as classes are. For example, the Key constant LEFT_SHIFT is
now named LeftShift.
Version 1.0.0
=============
* Large number of fixes to widgets/drawing/sdl2 support
* New widget InputBox
* Memory leak fixes in MessageBox example
* Python 3 fixes
* Stability fixes
Version 0.9.0
=============
* Guisan forked from Guisan
* Move codebase to SDL2.0
* Drop allegro support
* Move to scons build system
* Clean up code, reorganize
Version 0.6.1
=============
* The functions add, remove and clear have been removed from Widget.
They now reside protected in basic container.
* Inclusion of OpenGL headers has been fixed on Mac.
Version 0.6.0
=============
* A lot of function definitions from BasicContainer have been moved down to
Widget, but Widget doesn't provide any useful implementations of these
functions. Useful implementations still reside in BasicContainer.
For container widget implementations inheriting from BasicContainer, as before,
should work just fine. The reason for the move of definitions is to be able to
consider a widget a container for the sake of simplicity when it comes to
distribution of input.
* The functions Widget::lostFocus andWidget::gotFocus have been renamed to
Widget::focusLost and Widget::focusGained.
* DeathListener is a new interface which can be used to listen for a widget's
death. Because of the presence of death listeners the function
BasicContainer::_announceDeath has been removed.
* MouseListener now has the function mouseDragged which is called if a widget
is dragged.
* All distribution of input is now handled by the Gui class. Because of this
all functions regarding input have been removed from the classes Widget
and BasicContainer.
* All functions of KeyListener and MouseListener have been renamed. The reason
for this is that the functions now bear the names of the well known Java
listeners which will hopefully be more intuitive for most people.
* All input events can now be consumed making it easier to implement hot key
bindings.
* Mouse input (now called mouse events) are now distributed bottom up starting
from the widget directly under the mouse.
* Widgets can now ask for modal mouse input focus. A widget with modal mouse input
focus will be the only widget recieving mouse input, no matter where the mouse
input occurs. This can be very useful for some widgets, like a drop down which
acquires modal mouse input focus when folded down to be able to fold back up as
soon as the mouse is pressed outside of the drop down.
* Events are now present in Guichan. All listener classes now take event classes
as parameters which is a very big API change. The presence of events has propagated
changes to all input classes to better reflect the new usage of events.
* DropDown now acts on mouse wheel up and mouse wheel down when having focus.
* ListBox now acts on mouse wheel up and mouse wheel down when having focus.
* Widgets will no longer acquire focus if a mouse wheel up or a mouse wheel down
occurs over a widget.
* The header exception.hpp is now included properly in openglsdlimageloader.hpp.
* Many small fixes.
Version 0.5.0
=============
* Slider now acts on the mouse wheel moving the slider to the left on
mouse wheel down and to the right on mouse wheen up.
* ListBox now has the ability to wrap keyboard selection. Wrapping means
that if the key up is pressed and the first item is selected, then
the last item will get selected. If the key down is pressed and the last
item is selected, then the first item will get selected.
* Redesign of the Image class. Image now has different subclasses for
different Graphics objects. The static method load in the Image class
loads the appropiate type of image if an ImageLoader is set.
* The function action in ActionListener now takes a pointer to the
Widget who called the function, it makes handling of action events,
hopefully, cleaner.
* ScrollArea now scrolls if the open space around the markers is clicked.
* ScrollArea now has functions to set the amount to scroll when ScrollArea's
buttons are pushed, each button can have it's own amount.
* Changed the function name of Widget::hasFocus and FocusHandler::hasFocus
to isFocused.
* Moved a lot of common container functionality into BasicContainer.
This made the code and API a lot cleaner. Affected classes are:
BasicContainer - now holds a lot of common functionality for containers.
Container - implementation is now a lot smaller.
Window - window now inherits from Container and can have several child
widgets.
ScrollArea - smaller, nicer code.
TextBox & ListBox - Takes advantage of the new Container API to get rid
of a dynamic cast.
* Added drawBackground to ScrollArea to simplify overloading.
* Added functions for global KeyListeners in Gui. Global KeyListeners
can be just about any object inheriting from KeyListener.
* Fixed an offset by one error in AllegroGraphics::_beginDraw.
The initial clip area is now correct.
* Added alpha blending with SDL for 16bpp and 24 bpp mode.
Version 0.4.0
=============
* The GCN_EXCEPTION macro is now capable of determine the function in
which the exception was thrown. Also, you can get the function name
from the Exception class.
* Added a fix to make both versions of drawImage in
AllegroGraphics, OpenGLGraphics and SDLGraphics visible
and usable.
* Optimized fillRect in SDLGraphics slightly when using alpha
blending. However, SDLGraphics still needs a lot of optimizing
in other parts.
* Removed the filename from the Image class, as it wasn't really
used for anything.
* Updated ImageFont with support for font images with several rows
of glyphs.
* Added modal focus to widgets. Widgets can now request modal focus
stealing all input from other widgets. Can be useful when making
dialog windows.
* Many small fixes.
Version 0.3.0
=============
* Every Guichan library now contains a C function which can be
used with autotools check, for instance the Guichan SDL library
contains the function gcnSDL wich can be used when struggling
with autoconf. Other functions are gcnAllegro in Guichan Allegro,
gcnOpenGL in Guichan OpenGL and gcnGuichanVersion in the Guichan
core.
* Slider now stores only the current selected value and calculates
everything from that value. It should take care of some resizing
problems. Also, slider has now an orientation, which means you can
create a slider which has a vertical or horizontal orientation.
The previous slider had only a horizontal orientation.
* Fixed alpha problem with images loaded and displayed with SDL.
* Added a new widget, the window widget.
* SDL.h is now included the proper way meaning you can install
SDL anywhere and Guichan will include the right headers as long
as sdl-config knows where the headers are.
* Added ability to disable widgets.
* Changed slightly how focus works. Focus is now applied after the
input is processed. This resolved some problems when widgets
fight over focus.
* Changed the behaviour of the mouse handling. Widgets will get
mouse input if the mouse is dragged outside of the widget,
even if they don't have focus.
* Many small fixes.
Version 0.2.0
=============
* Added isPressed() method to the Button.
* Doubleclicking now works with SDL
* Added --enable-force argument for Allegro, SDL, SDL Image and OpenGL
to the configure script which forces Guichan to compile with the
forced support.
* Updated platform.hpp to be able to handle compilation with MinGW.
* Splited DECLSPEC define into GCN_CORE_DECLSPEC and
GCN_EXTENSION_DECLSPEC.
* Fixed bugs in ScrollArea and DropDown involving focus and mouse input,
* Changed the look when CheckBox is marked.
* Changed the look when CheckBox and RadioButton are focused.
They now draw a rectangle around their captions (common behaivour in Guis).
* Removed unaccesary logic functions (which didn't do anything) in
widget RadioButton and CheckBox.
* Added a new widget called Slider, and it is a... slider!
* Removed getWidth for glyphs in Font.
* Removed function drawGlyph in Font and in addon SDLTrueTypeFont.
Added drawGlyph function in ImageFont and DefaultFont.
drawGlyph in Font is easy to missunderstand and could lead to
strange implementations of Font.
* Added getCurrentClipArea function in Graphics.
* All functions in container are now virtual (thanks to Garo pointing this out).
* Added function setSize in Widget.
* Added an "addons" directory in the distrobution. It will contain
usefull classes with Guichan that are not compiled into the library.
They are not compiled because they need dependencies other then
Guichans or are to specific. For now, "addons" only contain one
class, SDLTrueTypeFont giving True Type Font abilities to Guichan
through the SDL_ttf library and hence will only work with SDLGraphics.
SDLTrueTypeFont was contributed by Walluce Pinkham (and edited by us).
Thank you Walluce!
* Added getColor function in Graphics. Implemented in SDLGraphics,
AllegroGraphics and OpenGLGraphics.
* Fixed a problem with the DropDown widget. When the widget was focused
with a mouse press, you couldn't select elements with up and down keys.
* Merged drawText, drawTextCenter and drawTextRight into one function
drawText which takes an alignment parameter (thanks Ted!).
Widgets taking advantage of this are Button and Label.
* As a result of the added border support, almost every widget have
been changed for the better, e.g removal of offsets.
* Added support for borders. This is a major API change introducing
some new functions to Widget.
* Lots of small bugfixes
Version 0.1.0
=============
* Guichan_allegro MSVC 6 compatibility fix.
* TextBox doesn't draw its caret if its not editable.
* Better exception with more information in ImageFont,
added row spacing and glyph spacing functions.
* Fixed problem in ImageFont when loading a corrupt file.
It will now throw an exception (thanks Terin!).
* Implemented _getRawData() in AllegroImageLoader.
* Fixed Image. It is now overloadable.
* DropDown sets the colors for its internal widgets if they are
not custom widgets (not given to the DropDown by the user).
* Now all default widgets respect the alpha channel in the colors.
* Non focusable widgets will now not recieve key input ever.
In previous version, focused widgets would still remain focused
after setting them to not be focusable.
* Moved tab handling from Gui to the FocusHandler.
* Splitted setTabable to setTabInEnabled and setTabOutEnabled.
Widgets can now have different behaviours on tab in and tab out.
The old setTabable is equivalent to setTabInEnabled.
* isVisisble now checks if parent is visible
* Added alpha channel support in AllegroGraphics for
drawing primitives
* Added experimental alpha channel support in SDLGraphics
for 32 bpp
* Added full alpha channel support in OpenGLGraphics
* Fixed OpenGL graphics to disable GL_LIGHTING before draw
* Fixed container problem. Nonvisible widgets no longer
recieves mouse input.
* Fixed mouse out problem with SDLInput
* Fixed alpha problem with the SDLImageLoader
Version 0.0.1
=============
* Initial release