Project History
This document list changes that have been made for the two most recent releases
(development release histories are combined with the nearest official release histories).
To see the older project histories, click
here (text file, 80 columns/line).
Version 0.6.7-1 (also from Development Version 0.6.6-5
and 0.6.6-3)
- Documentation improvements and/or changes :
- All non-API documentation HTML files were completely refactored.
- Almost all non-internal API should has been documented.
- Scripts improvements and/or changes :
- The configuration and build scripts were improved :
- The library should now configurable on system with X.org 7.x.x.
- A new build target, output to assembly code (%.s)
was added. Users can now compile to .s files instead
of object (.o/.lo) files.
- The rule "make bench" was renamed to
"make rbench".
- Now, by default, only the shared library will be built.
- [COULD BE INCOMPATIBLE CHANGES] Some of the
deprecated features have been removed, they are :
- The CStringList class which is no longer used by
any other part of the library.
- The EAAHint enumeration (address alignment hints)
which was used by the CImageBuilder class to transfer
its contents to the CImage,
CAnimatedImage, CTexture and
CAnimatedTexture classes (to allocate memory for those
image and texture classes).
- High level application classes changes and/or improvements :
- A new structure, TMouseSettings was added.
The structure is used for storing the global mouse settings (which button is for
"left click", which button is for "right click", double click delay, etc.).
- A new structure, TKeySettings was added. The
structure is used for storing the global key settings (key repeat start delay, key
repeat delay, etc.).
- Audio environment changes and/or improvements :
- [COULD BE INCOMPATIBLE CHANGES] The
CAudioEnv::QueryDeviceName() function was extended.
This change should not cause any incompatibility in older code if the coder uses
the high level initialization API.
- Video environment changes and/or improvements :
- Initial support for XIM was started.
- SetWindowIcon() can now accept :
- XPM file name (char*).
- Pointer to XPM data buffer (char*[]).
- New member functions were added in the CVideoEnv class :
- GetFontAscent()
- GetFontDescent()
- GetUtf8TextSize()
- GetUtf8TextGeometry()
- New dialog classes were added :
- CPanel
- CGLayout
- CHLayout
- CVLayout
- CHVLayoutCompound
- CVHLayoutCompound
- CDialogPage
- CDialogManager
- CButton dialog control :
- Ability to display XPM image instead of just plain text. The
InitControl() member function can now accept :
- Plain text (char*).
- Pointer to XPM data buffer (char*[]).
- CPanelBar dialog control :
- These functions were extended :
- GetXClient()
- GetYClient()
[INCOMPATIBLE CHANGES] Calling those two
functions with their default parameters (absolute = true)
will now return values which are 12 pixels less
(compared to all older releases of VortexGE). Well, it is actually a bug in all the
previous releases (sorry). See the topic
"Converting from Older Version of VortexGE"
for some help concerning this matter. However, it should be rare that one will
even use that two functions if one's application.
- These functions were added :
- GetWClient()
- GetHClient()
- GetClientGeometry()
- [COULD BE INCOMPATIBLE CHANGES] These member
functions of dialog controls :
- DrawControl()s
- UpdateValue()s
- DoEdit()s
are no longer requires the user to pass the CVideoEnv
instance. If you always use the dialog macros then there is no conversion needed
in your application, however if you call those functions directly, just remove the
first parameters of the function calls.
- [DEPRECATED] All
InitControl()s member functions of the dialog controls
are no longer accept pointer to CVideoEnv to be used
when drawing the control, instead, they now want reference to
CVideoEnv. For now, compatibility functions for are
provided (except for new controls). Those compatibility functions will be removed
in the future.
- [DEPRECATED] A lot of dialog macros have
become deprecated and may be removed in the future. Use the new
CDialogPage class for better (and easier) dialog
application development and its related macros. Most of the deprecated macros are
put in the file :
- "lib/VideoEnvironment/DialogMacrosDeprecated.h"
and the non deprecated macros are still put in their original file :
- "lib/VideoEnvironment/DialogMacros.h"
(both files are included from within "VMain" and
"VMain.h"). The demo application,
"demo/Dialog2.cc" is now using the new
CDialogPage and
CDialogApplication classes.
- 2D image manipulation changes and/or improvements :
- These member functions of the CImageBuilder class :
- BlurEffect()
- Resize()
- ResizeToFitBackground()
- ResizeToFitTexture()
now have additional optional parameters to specify if the resulting image should be
dithered or not (the default is not dithered).
- 3D environment changes and/or improvements :
- The fixed point constants used when rendering are now separately put in
"lib/3DEnvironment/FixedPointConsts.h".
- [COULD BE INCOMPATIBLE CHANGES] Textures with size
2, 4 and 8 pixels are no longer supported (they are too small to be of much useful
anyway). The recommended texture sizes to be used are 64, 128 and 256 pixels (although
textures with sizes of 16, 32 and 512 pixels are also supported).
- SIMD optimization and refactoring in the _C*CLineSeg
and CFog*CLineSeg classes.
- Changes/improvements in the utility applications :
- The utility application, "util/mcatedit*" was improved.
- Started the implementation of a new utility application,
"util/roomedit*".
- Other changes and/or improvements :
- New textures.
- Some new classes were added :
- CDialogApplication, can be used to simplify
application development that utilize VortexGE dialog classes.
- CPlane3D and
CPlane3DBuilder, these classes can be used for generating
planes, rooms, and terrains.
- CArchiveDataSource, this class can be used for
loading archived data files (without compression support).
- CRandomCoreUInt32, this is the core class for
generating controllable & save-able random numbers. This class is now used to
replace all calls to rand() in the library (except in the 3rd party code).
- CRandomFractional, this class use the above class
to generate non integral random numbers (float, double and long double).
- CBasicMedia_MP<TResourceID, MediaT>,
a convenience class to pass pooled-media as function parameter.
- CCanAbortOnDestruction, this class is used by
the CMediaPool class to make the application abort if
any of the media class instances owned by the CMediaPool
class is deleted manually.
- Improvements in the multi-threading support :
- A new virtual member function, ThreadCallback() was
added in the CThread class.
- Some new global functions related to TThreadData
were added :
- VTM_NOT_EXIT()
- VTM_SUSPENDED()
- VTM_INSTANCE()
- VTM_USER_DATA()
- Improvements in other classes :
- CMediaPool<T> was improved a lot.
- A new member function, GetLineBuffer() was added in
the CImageBuilder class
- Added new global functions :
- VAbortOnFatalError()
- VAssertPrint()
- clip_value<T>()
- safe_strcpy()
- Added a new macro :
- [DEPRECATED] These error codes are deprecated
and will be removed soon :
- VERR_FATAL_InvalidUsage
- VERR_MultipleInstance
- VERR_XGetWindowProperty
- VERR_MsgRcv
- VERR_InvalidEnvVar
- Lua 5.1.1 is now used as the scripting engine backend.
- [INCOMPATIBLE CHANGES] All classes' dtors
should now have the throw() specifiers. This is done to
comply with the C++ standard that dtors must not throw exceptions (and so the
application will abort if the any of the dtor throws, thus will make it easier to
fix the bug). See the topic
"Converting from Older Version of VortexGE"
for some help concerning this matter.
- [INCOMPATIBLE CHANGES] This function :
- const char *VCorrectFileExt(char *dstFileName, const string &srcFileName, const string &fileExt)
is now prototyped as :
- void VCorrectFileExt(string &dstFileName, const string &srcFileName, const string &fileExt)
(it is unlikely that one has ever used this function in one's application tough).
- The raw benchmarking application,
"rawBenchmark/bench4.cc" was removed.
- Some file refactoring, code compaction, optimizations and bug & typo fixes.
Version 0.6.6-1 (also from Development Version 0.6.5-6 and 0.6.5-3)
- Scripts improvements and/or changes :
- The configuration script was improved :
- PIC (Position Independent Code) build will now be used if the hardware platform
used for building the library is not an i386.
- If there is a dialog program usable in one's system, a more user friendly TUI
(Text User Interface) will be used instead of the usual line by line questions.
- The script also split to several files for easier improvement in the future.
- The rule "make all" will now also build the utility
applications.
- The rule "make fdep" was renamed to
"make depend>/".
- The renaming script ("util/rename" and
"util/rename.sed") was improved and put in separated
directory, "util/convert/". See the topic
"Converting from Older Version of VortexGE"
for some explanations of how to use the script.
- High level application classes changes and/or improvements :
- These new member functions were added in the
CEventHandlerBase class :
- virtual void EventKeyPress(EKeySymbol eKeySym, const char *str)
- virtual void EventKeyRelease(EKeySymbol eKeySym, const char *str)
Note that the old functions :
- virtual void EventKeyPress(EKeySymbol eKeySym)
- virtual void EventKeyRelease(EKeySymbol eKeySym)
are still usable but will be deprecated in the future.
- Video environment changes and/or improvements :
- Dialog controls :
- Changes in all InitControl()s functions :
- They all no longer accept "CVideoEnv*" in their
parameters, but now they want "CVideoEnv&" in their
parameters.
- They all no longer accept the "bDuplicateString"
in their parameters (the parameters were removed).
The old functions are still usable but will be deprecated in the future.
- Changes in all DrawControl()s functions (and also to
all functions that were take "CVideoEnv*" in their
parameters) :
- They all no longer accept "CVideoEnv*" in their
parameters but now want "CVideoEnv∓" in their
parameters.
The old functions are still usable but will be deprecated in the future.
- New controls were added :
- CStatusBar
- CSLTextBox
- CMLTextBox
- New dialog macros were added :
- VCE_TRAP_DOUBLE_CLICK()
- VCE_ONMOUSEUP_ACTION_COMMANDBUTTON_DEFAULT()v
- VCE_ONMOUSEUP_ACTION_SLTEXTBOX_BEGIN_EX()
- VCE_ONMOUSEUP_ACTION_SLTEXTBOX_DEFAULT_EX()
- VCE_ONMOUSEUP_ACTION_MLTEXTBOX_BEGIN_EX()
- VCE_ONMOUSEUP_ACTION_MLTEXTBOX_DEFAULT_EX()
- CVideoStorage class :
- The function :
- Initialize(CVideoEnv *pcsVideoEnv, uint8_t un8SlotCount = 4)
is now prototyped as :
- Initialize(CVideoEnv &vidEnv, uint8_t un8SlotCount)
The old functions are still usable but will be deprecated in the future.
- CVideoEnv class :
- Added dithering support for 8 bpp display mode.
- Optimization in the image conversion code (the code for converting from render
buffer pixel format to native display pixel format).
- The DrawUtf8Text() member function was improved,
it now can handle horizontal alignment specified in the
ETextAlignment enumeration.
- New member functions were added :
- SreeenBitDepth()
- SreeenWidth()
- ScreenHeight()
- GetDesktopGeometry()
- SetWindowCaption()
- SetTransientFor()
- UseDefaultUtf8BigFont()
- DefaultUtf8BigFont()
- DrawUtf8TextML()
- InputBox()
- This member function was extended :
- 3D environment changes and/or improvements :
- [INCOMPATIBLE CHANGES] These member functions
were converted from "normal" member function to static member function:
- C3DEnv::RDTSC()
- C3DEnv::GetTicks()
- C3DEnv::Ticks2mS()
- C3DEnv::CalcIntervalmS()
- C3DEnv::CalcAvgFPS()
Note that those above functions are subjet to be moved to other class (or even removed)
in the future release of VortexGE. See the topic
"Converting from Older Version of VortexGE"
for some help concerning this matter.
- Other changes and/or improvements :
- [INCOMPATIBLE CHANGES] Many symbols were
renamed. See the topic
"Converting from Older Version of VortexGE"
for some help concerning this matter.
- Changes in (file) I/O functions :
- [INCOMPATIBLE CHANGES] All (file) I/O
functions are no longer fix the file extensions. See the topic
"Converting from Older Version of VortexGE"
for some help concerning this matter.
- All I/O functions can now accept file name (via
"const char*" or
"const std::string&") or instance of
istream/ostream derived
classes.
- [INCOMPATIBLE CHANGES] The
"VGE_EXPORT" and "_sse" macros
are now considerer as semi-internal macros so that they will be unusable in one's
application. See the topic
"Converting from Older Version of VortexGE"
for some help concerning this matter (although it is unlikely that one will need to
use those macros in one's application).
- Add a new demo application, "demo/Dialog2.cc".
- Add a new utility application, "util/mcatedit*".
- Some new classes were added :
- Some new exception classes, used for expanding the exception categories.
- CClipboard, this class is used for clipboard
access.
- CUString, this class is used for storing string
in UTF-32 encoding.
- CMessageCatalog, this class is used for
internationalization of message texts.
- CMediaPool<T>, this class is used for easier
media resources (images, textures, audios, etc.) management.
- CArchiver and CDeArchiver,
these classes are used for archiving and de-archiving files (without compression).
- pistream, this class is implemented to make
any istream compatible classes support peeking more than
one bytes.
- Some new global functions were added :
- VGetFileInfo()
- VRemoveFile()
- VRenameFile()
- VCreateEmptyFile()
- VMakeTmpFD()
- VSetCWD()
- VCreateDir()
- VRemoveDir()
- VListDirectory()
- VEnableDebugPrint()
- VDebugPrint()
- Improvements in VortexLua :
- All part of VortexLua should have been implemented now (just need to do further
test and debugging).
- Lua 5.1.0 is now used as the scripting engine backend.
- UNUSED_PARAM() and
UNUSED_PARAMS_*() are now template functions (they were
macros).
- Removed features :
- Support for restricted memory allocation was removed since it is no longer
needed by VortexGE. It should not cause incompatibility in users' code since it
is unlikely that users have ever use this feature.
- Removed the project file for Kate,
"VortexGE.kateproject" since newer version of Kate is not
guaranteed to support it.
- Some bug fixes (VortexGE should now buildable on x86_64 architecture).
- Some documentation fixes and also more parts of the source code are now
documented.