-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
282 lines (274 loc) · 14.8 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
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
Legend
------
+ Addition
- Removal
* Alteration/other
! Alteration/Removal/other that breaks backwards compatibility
DEVELOPMENT (alpha/beta)
* Made GameLib work with the official libsndfile 1.0.12
* Made GLTexture2D restore the previous bound texture ID at the end of
Load()
+ Added IOH.KbHit, which returns true if console input is waiting
+ Ported the three C libraries to *nix (well, Linux at least)
* Tweaked many of the files in order to work around bugs in the Mono
compiler (mcs) -- now it all compiles under mcs except for one line
* Merged my changes to libsndfile into the latest version (1.0.11)
* Changed the GameLib.Forms.Checkbox's check color so it looks okay with
very dark color schemes
+ Added the GameLib.Forms.RectOffset class
* Various minor drawing optimations for the windowing controls
- Removed the LayoutBounds concept from the Windowing system
+ Added the concept of a content box and a padding area to the Windowing
system (Control.Content* and Control.Padding* properties)
- Removed HorizontalPadding and VerticalPadding from MenuItem (it's been
superceded by Control.Padding)
! Simplified the layout system somewhat (lots of changes here)
! Removed BoundsType because it's no longer needed with the simpler layout
system
+ Added ScrollableControl (a control that supports built-in scrollbars)
+ Added basic list controls (ListBox and ComboBox, though ComboBox isn't
perfect yet)
* Fixed an awful bug that caused bits of Controls to disappear if they had
a backing surface and contained certain types of child controls
* Various other windowing changes
* Altered the Windowing sample to reflect the changes
* Moved a lot more documentation into documentation.xml so the source code
would be less cluttered with repetitive text
! Changed Surface.PutPixelRaw to Surface.PutPixel
+ Added some new overloads for Font.WordWrap that accept a Size instead of
a Rectangle
* Cleaned up the MessageBox code
* Made windowing controls look greyed out when they're disabled
* Fixed a thread synchronization bug in the audio code that could cause the
application to become deadlocked on shutdown
* Fixed a bug in the audio filter code that was due to an array not being
cleared before use
! Redesigned the audio filtering code, adding support for simple filter
graphs
+ Added support for floating point sample data in the audio mixer
+ Added a tone generator audio source (sine, saw, triangle, and square)
+ Added some built-in audio filters (Biquad, Equalizer [supporting lowpass,
highpass, bandpass, bandpass with gain, allpass, notch, peaking, low shelf,
and high shelf], and a configurable graphic equalizer)
* Fixed a bug that caused the area behind a control not to be redrawn when
the control was marked as invisible
! Reworked the networking code significantly. Added the ability to use the
NetLink class in the same thread as both a client and server, and improved
the NetLink interface by removing the need for handshaking. Added some
protection against race conditions.
* Updated the networking sample to use the new networking features
! Renamed INetSerializeable to INetSerializable
! In MessageConverter, renamed ToObject and FromObject to Deserialize and
Serialize, respectively.
! Renamed for the Network.Server class, renamed Open() and Close() to
Initialize() and Deinitialize(), respectively
+ Added documentation for the networking code
+ Added overridable On*() methods for the NetLink, Server, and Client classes,
so that they can be customized via derivation in addition to hooking events.
+ Added support for formatted binary reading.
+ Added a Connected event and OnConnected override for the network Client.
* Cleaned up and optimized the binary reading/writing code somewhat.
+ Added quaternion and matrix classes to the Mathematics namespace
! Renamed LinkedList.Node.PrevNode and .NextNode to .Previous and .Next
2004.06.28 (alpha/beta)
-------------------
Release notes:
There aren't many changes this time, since I've been busy with work, school,
and other stuff. But I figured I should at least release these.
+ Added PriorityQueue.Dequeue, which does the same thing as
PriorityQueue.DequeueMaximum
* Fixed a bug in Fixed64*Fixed64 or Fixed64*double multiplication
with negative numbers, and also improved its speed
* Fixed a bug in the windowing code that caused the list of updated window
rectangles to be cleared when the array was grown
* Fixed a similar bug in the audio code that caused the channels array to
be cleared when the array was resized
+ Added dead zones and saturation zones to the joystick code (with the
ability to set them on a per-axis basis).
* Altered the Input sample to use dead zones and saturation zones to
eliminate jitter. Also added more joystick output to the input sample
(it might not fit in the window anymore if you have lots of joysticks)
* Lowered the default audio buffer size (latency) from 100 to 50 milliseconds
* Fixed a bug in RedBlackTree that caused the Count property to be wrong
after Clear() was called
+ Made Map, BinaryTree, and PriorityQueue serializable
2004.05.02 (alpha/beta)
-----------------------
Release stats (only counts code written by me):
Code: 20484 lines, 833493 bytes (60.81%), avg. 41 BPL
Docs: 7359 lines, 537105 bytes (39.19%), avg. 73 BPL
Total: 27843 lines, 1370598 bytes, avg. 49 BPL
Release notes:
This release has a lot more interface changes than I'd have liked, but the
process of documenting the source code reveals problems with the design that
may not have been evident at earlier stages.
* Made Asteroids example use the CD drive better
* Fixed a bug in which OnControlRemoved/OnControlAdded could be fired before
the control was actually removed from its parent's control array. This was
almost never a real problem, but it could cause an exception if multiple
modal windows were opened simultaneously.
* Added the Control.DrawSurface property
* The audio quality in the Audio example was set to low. Made it use the
default instead.
+ Added a property to FormBase that gets which button was clicked on a form
+ Started a simple color picker dialog
* Made Button control only depress when clicked with the left mouse button
+ Added a property to the ButtonBase control that controlled whether or not
it would automatically update the Pressed property
+ Added a property to the Button control that controlled whether or not it
can draw pressed even when the mouse was not over the button
+ Added BorderColor properties to the FormBase and LabelBase controls
+ Added low-level support for OpenGL 1.2 and 1.3
! Removed some overloads of low-level OpenGL functions that are not likely
to be used
+ Added some more overloads for OpenGL 1.1 functions
* Fixed some bugs in OpenGL.TexImage2D
! Changed some of the overloads for OpenGL.TexImage2D
(eg, removed the 'target' parameter)
+ Started on a wrapper for a 2D OpenGL texture
+ Added a 2D Rectangle class
* Fixed some bugs in the Polygon class, added some basic intersection code
+ Added 32 and 64 bit fixed-point math classes
* Improved some samples (used GLTexture2D in OpenGL and added better
exception handling to Asteroids)
* Improved the Vector classes (you can now normalize to a given length)
* Changed the hash code functions for Point and Vector
* Added a ToPoint() method to the Vector classes
! Swapped the first two parameters to Unsafe.Copy
* Fixed Polygon.GetBounds()
* Made sure Line.Intersection(Rectangle) wouldn't loop infinitely (due to
floating point inaccuracy/imprecision)
* Fixed a bug in the rectangle union code
* Fixed the line-polygon intersection code
- Removed the code to clip a line to the section outside of a polygon
(for now)
* Used the Surface.ClipRect property to optimize the Windowing drawing code
* Fixed a bug with the way the Checkbox control draws itself
* Made the Input example flip the video surface only when there was nothing
else to do (using an IdleProcedure)
+ Added a Format property to the VideoInfo class which returns the pixel
format of the "best" video mode.
* A null PixelFormat can now be passed to Video.GetModes
! Changed Video.GetModes to return an array of Size, rather than Rectangle
! Added an index parameter to Video.UpdateRects(Rectangle[], int)
! Removed the PaletteType parameter from the GetPalette calls
! Removed the Video.GetPalette call
! Made the Video.SetPalette call always set the physical palette
! Removed the current usage of IBlittable
! Changed the name SurfaceFlag.AnyFormat to SurfaceFlag.NoEmulation
+ Added a Surface(Bitmap, SurfaceFlag) constructor
! Removed the Surface constructor that took all the masks inline
! Renamed Surface.HasHWPalette to Surface.HasPhysicalPalette
! Removed the AlphaLevel class (no longer needed now that you've got real
documentation!)
! Removed Surface.Flip
! Greatly simplified the color key and surface alpha interface/implementation
+ Added code to convert seconds to CD frames and to return the number of
frames per second
+ Added code to allow playing CDs with real time offsets rather than just
frames
! Removed the ID property of the Drive (cd-rom drive) class
* Made GameLib and the example programs use the Type property of the event
class instead of checking the type dynamically.
! Made the type field of the Event class private (it was never supposed to
be public)
+ Added joystick support to the Input example
+ Added an Offset property to the JoyBallEvent class
* Fixed a bug that can occur when deinitializing joysticks
! The SubType property of the WindowEvent class is now read-only
! Made several WindowEvent-derived classes internal (they shouldn't be
used in user code)
! Removed the Events.UpdateQueue method and the Events.SyncRoot property.
They were basically unnecessary.
+ Added a Size property to the ResizeEvent class
! Changed the ExceptionEvent class (new constructor, field name change, ...)
! Changed Events.QueueSize to Events.Count
* Made Events make proper use of multicast delegates for EventProcedure and
IdleProcedure
! Removed the Font.CenterOff methods
+ Reworked BitmapFont so it can handle variable-width fonts too
! Renamed NonFixedFont to StyledFont, which is a much better name for it
+ Added a method (PixelFormat.IsCompatible) to check whether a pixel format
is compatible with another (which means that no conversion would be
necessary between them), and another, related method (Surface.IsCompatible)
+ Added more flexibility to the fonts regarding background color
! Renamed TrueTypeFont.CacheSize to TrueTypeFont.MaxCacheSize
* Improved the implementation of shaded fonts with regards to color
! Made BitmapFont take vertical spacing instead of line skip
! Removed the Keyboard.Press and Keyboard.Release methods
! Made Joystick.Ball report absolute coordinates rather than relative ones
* Fixed bug where joysticks wouldn't query their initial state
* Doubled speed of Unsafe.Copy and Unsafe.Fill using unmanaged code
+ Added Unsafe.SafeCopy
! Renamed Primitives.PutPixel to Primitives.Pixel for consistency
+ Added versions of Primitives.Pixel that take a Point
! Removed Primitives.* methods that accepted uint colors
+ Added versions of Primitives.Polygon and Primitives.Bezier that take a
number of points to read from the array
* Fixed a bug in IOH.Skip that caused an exception to not be thrown if the
end of the stream was reached with large (>512 bytes) skip values.
* Changed IOH.Skip so it takes an argument of type long instead of int
* Removed the restriction that when using StreamStream with unseekable
underlying streams, the underlying stream's Position must equal the start
of the range given to the constructor
* Removed the restriction that a StreamStream cannot be increased in length
using StreamStream.SetLength. Now, the length can be increased or reduced
as long as it wouldn't require seeking an unseekable underlying stream.
* Fixed a bug in StreamStream.Read and StreamStream.ReadByte that allowed
them to read past the end of the underlying stream
* Fixed a bug in StreamStream.Seek that allow it to seek past the end of the
underlying stream in one circumstance
+ Added versions of IOH.Read that do not throw an exception when not all data
could be read
! Reimplemented the PriorityQueue using a heap instead of a binary search
tree, and made the interface more standard for a priority queue
* Fixed bug in RedBlackTree that caused Maximum() and Minimum() to fail when
there was only one item in the tree
! Split RedBlackTree into Map and BinaryTree classes. Map replaces the old
RedBlackTree class, and BinaryTree is a more standard binary search tree
! Renamed PSDCodec.ReadNextLayer to PSDCodec.ReadLayer and
PSDCodec.ReadRemainingLayers to PSDCodec.ReadLayers
+ Added PSDCodec.SkipLayers which is analogous to PSDCodec.ReadLayers
* Fixed a bug in PSDCodec.IsPSD(Stream) that caused it to not reset the
position of the stream if the file was a PSD file using a version of the
PSD format that greater than the highest version understood by the codec
* Made the Map and BinaryTree classes iterate in sorted order (infix) rather
than prefix order
+ Added a Timing.Reset method to allow the timer to be reset
! Moved static math functions for the fixed point classes into GLMath so
that Abs, Ceiling, etc could be properties instead of methods and for
greater consistency with how it's done for the .NET standard library
* Fixed a bug in the ToDouble method of the fixed-point classes
* Fixed some fixed-point mathematical constants (whoops!)
* Further optimized many fixed-point math functions
! Changed math classes to use double instead of float
+ Added TrueTypeFont.CopyAlpha, which causes the font to store alpha
information instead of blending
! Removed vector/vector multiplication and division. These operations are not
generally useful and may be confusing
* Optimized BitmapFont for the case that the charset is contiguous
+ Added Line.LineIntersection
! Removed Line.FromPoints(Point, Point), since there's already a constructor
to do that
! Renamed Polygon.SplitIntoConvexPolygons to Polygon.Split
! Moved Polygon.ConvexIntersects to Line.ConvexSegmentIntersects and
Rectangle.ConvexIntersects (and fixed a bug there)
+ Added Rectangle.GetPoint
! Removed the Vector.Rotate(xa, ya, za) form and replaced it with something
much more useful -- Vector.Rotate(Vector, angle) [rotation around an
arbitrary vector]
+ Added .Equals(object obj, double epsilon) to most math objects
+ Added Point.ToPointF
+ Added a LOT more documentation (for CD.cs, Config.cs, Events.cs,
Exceptions.cs, Fonts.cs, GraphicsPrimitives.cs, Input.cs, Interop.cs,
IO.cs, LinkedList.cs, Math.cs, OpenGL.cs, OpenGLInterop.cs,
PriorityQueue.cs, PSD.cs, RedBlackTree.cs, Surface.cs, and Video.cs).
* A couple bugfixes and additions I forgot to add to the changelog
2004.02.07 (alpha/beta)
-----------------------
Release stats (only counts code written by me):
Code: 18456 lines, 756053 bytes (88.84%), avg. 41 BPL
Docs: 1247 lines, 94974 bytes (11.16%), avg. 76 BPL
Total: 19703 lines, 851027 bytes, avg. 43 BPL
Release notes:
* First public release