Changes and
improvements in OpenAmulet
This page shows what changes have been done to OpenAmulet.
Note that not all changes are included in the sources you can
download as they might not be included in the actual release. In
this case, this list gives a good overview for what's coming in
the next release. If we do release a new version of OpenAmulet a
header will be included so you can see which changes are included
in what release.
Contacts:
The following table list the people contributing to OpenAmulet
and their e-mail addresses.
04-October-1999 RMM
- Integrated patches from RO, which fix the GCC warning for
operator char*(), some minor quirks.
03-October-1999 PS
- Win32: now DllMain is used for DLL, and WinMain for
static build, never both.
29-September-1999 RMM
- Added Checkpoint value to Am_Initializer constructor, for
better tracking down memory-leaks with SmartHeap.
27-September-1999 RMM
- Fixed bug in Map_Iterator class in univ_oa_map.hpp code,
that could cause wrong iterator settings. Iterators were
initialized once but didn't get updated when the content
changed. Now the iterators are always queried from the
std::map.
23-September-1999 RMM
- Fixed bug in univ_oa_map.hpp code that caused a shift of
Inspector tags by 1.
23-September-1999 PS
- Windows color handling changed: gem/win32/gemW_styles.cpp:ACV():
this used to thresholdize color values. Deactivated.
- widgets/widgets.cpp:make_converted_styles(): now use
separate set of brightness adjustment coefficients for
Windows (hardcoded, i.e. defined at compile-time).
- New styles added: Am_Light_Grey (0.75,0.75,0.75), Am_Grey
(0.5,0.5,0.5), Am_Dark_Grey (0.25,0.25,0.25),
Am_Light_Grey is now default for Win32.
- Widget box now looks exactly as Windows native, widgets/border_misc.cpp:Am_Draw_Windows_Box()
22-September-1999 RMM
- Removed two obsolte files from library build, with the
result that no longer 'double definition' warnings are
issued by the linker, thanks PS.
- Coded a general Table (bi-directional look-up map) class
(see univ_map_oa.hpp) which uses STL maps. Changed
registry implementation to use this new table class.
- Initializer now logs the priority of initializing &
cleanup functions to std::cout; fixed a small bug to
handle zero function-pointers correctly.
- Added Registry cleanup-function to initializer sequence
to get rid of some termination memory-leaks.
21-September-1999 RMM & RO
- Integrated some patches from Rodolphe for Unix builds
20-September-1999 RMM
- Changed all <iostream.h> related things to
<iostream> and used new C++ standard library
convention std::XYZ.
- Initializer now logs the order of initialization of
global objects to std::cout in debugging mode.
- Fixed some programs in OpenAmulet/test/... so that they
work with the new C++ streams.
06-September-1999 RMM & JRVZ
- Integrated
keyboard changes, further text-functions submitted by
JRVZ.
01-September-1999 RMM
- Optimised
the Symbol-Table implementation to support faster two-way
lookups. This radically improves start-up time for debug
builds.
30-August-1999 RMM
- Integrated
some fixes and changes from RO.
- Fixed
the header inclusion path problem for the library sources.
Users of the library now only need to add
openamulet/header/
to their include search path,
all other files are referencing using the fully qualified
names.
27-August-1999 RMM
- Moved
the implicit definition for macro DLL from dl_import.h to
am_config.h To use the DLL uncomment the macro or define
it on the command-line.
- Moved
DEFAULT_AMULET_DIR macro to am_config.h
- Changed
example testselectionwidget.cpp to use
correct image path.
24-August-1999 PS
- Used
_OA_DL_MEMBERIMPORT to mark in-class DLL exports. This is
required to workaround gcc 2.95 bug, when it sometimes
doesn't export
const methods of class.
- More
symbols marked as exported.
23-August-1999 RMM
- Fixed
bug in T::Key() function which missed to return a zero
value if not found.
- Added
Dump() function to STL map implementation in DEBUG mode,
which can be used to dump the contents of the map.
Objects in the map need to have an operator <<
defined.
- Defined
operator << for those classes which uses the OA map
implementation to enable dumping.
- Changed
char* keys/entries to const char*
for OA map typedefs.
- Fixed
bug for typedef Map_Str2Int to use lex_less
comparator functoid.
- Changed
symbol_table.h to use OA map implementation.
20-August-1999 PS
- GEM/Win32:
Win32s thunks cleaned
- GEM/Win32:
Routine to draw generalized dashed lines converted to gas
syntax and moved to 'linedda.s'.
- GEM/Win32:
Rectangles are now drawn as polygons if they use dashed
line style
- GEM/Win32:
Polygons, arcs, roundtangles: implemented transparent
stipple fills with Am_DRAW_COPY function
- GEM/Win32:
For arcs and roundtangles, where generalized dashes are
not supported, they are attempted to be emulated with
existing GDI
functionality. However, this emulation is non-robust.
- GEM/Win32:
All graphic primitives made being the right size both in
bordered and borderless fashion. Only exception is
polygons: IMHO, they are drawn one pixel larger as
bordered and one pixel smaller as borderless. Should
check with other implementations, mathematical sense and
Amulet designers' intention, though.
- GEM/Win32:
See source/gem/win32/gem_win32.note for status of
implemented features
17-August-1999 RO
- Fixed
bug in load / save system function std::less in
am_load_save.cpp.
16-August-1999 PS
- GEM/Win32:
Am_Image_Array(filename) supposed to be !Valid() if
filename could not be loaded, but it was not. Fixed.
- New
GEM function Am_Line_Solid_Flag Am_Style::Get_Line_Flag
(); , for consistency. Added to all GEM implementations!
28-July-1999 PS
- More
headers split
- Many
sources are made to use split headers, resulting in
faster compilation and object sizes in some cases
- Minor
bug fixes
- Introduced
configuration file, 'am_config,h', where all tuning
definitions supposed to be
- Added
new configuration define, WIN_KEYBINDINGS, for more
Windows-compatible key bindings
- Win32
DLL build is supported, with workarounds for gcc 2.95 pre-release
- Am_Cleanup()
called on DLL finalization, so OA properly terminates
upon unexpected application termination
28-July-1999 RMM
- The
platform dependent sources in the GEM directory were
moved to platform directories like Win32, Mac, GGI etc.,
the headers from the GEM directory where moved to the
header/amulet/
directory and the sources were
updated to reflect the changes.
02-June-1999 RMM / RO
- The
X windows GEM implementation files were changed to use
STL datatypes where appropriate. This includes region
management, the Am_Point_Array datatype. Mostly vectors,
stacks and algorithms were used.
- The
clipping region code was inlined and is now contained in
the include file gemX.h
- Experimental
support for Linux GGI has been added to the source/gem/ggi
directory, a new header file gemG.h is included in header/amulet/...
31-Mai-1999 RMM
- Splitted
the source-files in source/widgets into more independent
files. This work was done by PS.
- Moved
the Win32 GEM implementation files gemW*.*
into new directory sources/gem/win32
- Moved
the Win32 GEM header files from sources/gem/win32
directory to header/amulet directory.
- Moved
the Mac GEM implementation files gemM*.* into
new directory sources/gem/mac.
- Moved
the X GEM implementation files gemX*.* into
new directory sources/gem/x.
27-April-1999 RMM
- Moved
the code for the Am_Wrapper, Am_Registered_Type classes
into own header-files.
- Moved
all typedefs into one central file typedefs.hpp.
22-April-1999 RMM
- Splitted
the source-files in source/opal into more independent
files, this will make it easier to work on the different
parts of OPAL. Source files which directly implement OPAL
objects are moved into folder source/opal/objects. This
work was done by PS.
- Add
the two missing member-functions Narrow() & Println()
to Am_Object in file source/object/object.cpp. (Thanks DE)
OpenAmulet
Release V 4.2
15-March-1999 RMM
- Fixed
problem with 0 width/height windows on X-Systems (DE)
12-March-1999 RMM
- Applied
small fix in 'connection.cpp/sockets_have_input'.
Directly referencing the internal fields of an `fd_set'
structure is frowned upon because different Unixes define
the structure in different ways. Instead, there are
standard macros which should be used. (Thanks DE)
- The
animator bug has been fixed, everything now works as
expected (DE).
- Changed
some 'const' parameter things as a result of STL
portability. This now works and should compile but has to
be looked at for the next release.
- Workaround
for the 100% CPU utilization problem on X-System included
(DE).
- Added
stub functions in 'registry.cpp' for non-debug version (PS).
- Made
code compileable under MingWin32 (PS).
04-March-1999 RMM
- Applied
two changes to the sources to make it MingWin32
compatible
- Changed
am_map_oa.hpp that it will now compile with the VC++ STL
version
- Added
some #pragmas to surpress stupid/useless VC++ warnings
01-March-1999 RMM
- Changed
the DEFAULT_AMULET_DIR macro in file 'misc.cpp' to be '..\\..\\data'
for Win32 platform. This assumes, that all data-files
which are used by samples, test programs are stored in
the directory 'OpenAmulet\data'.
- Applied
a bug fix from Rodolphe, by adding the '== const'
operator to Am_Inter_Location_Data.
- Applied
a further bug-fix by Rodolphe in function
Am_Destroy_Menu_Bar, where we now test if the returned
part is valid and destroy it only if this is the case.
26-Februar-1999 RMM
- Removed
the header file 'amulet2_conversion.h' from the source-tree.
This one is no longer needed.
23-Februar-1999 DE
- Made
changes so that statically-linked applications don't have
to link to parts of OpenAmulet which they are not using:
o
moved each graphical object into its own source file
o
moved the Am_Inter_Location code out of inter_move_grow.cpp and
into its own file
o
changed Am_Standard_Opal_Handlers::Input_Event_Notify()'s call to
Interactor_Input_Func() to do it through a pointer which only
gets initialized if the application is using interactors.
- Made
changes so that DEBUG-only strings do not take up space
in release-mode applications:
o
#ifdef'ed all of the `cerr' error messages in the macros in types.h
so that they are only present when DEBUG is on
o
created a DSTR() macro which emits its string argument if DEBUG
is on, and emits (char *)0 if DEBUG is off. You should use this
macro around any strings which only get used by DEBUG code (e.g.
object names).
o
Am_Object, Am_Formula, Am_Initializer, ID tag, and ID class names
are all only used by DEBUG code, so I enclosed them all into DSTR()
macros.
- Made
all of the Am_Initializers, and the init and cleanup
routines that they call, static so that they do not
pollute the global namespace and take up room in the DSO/DLL
symbol table.
- Fixed
Am_Region_Impl::Push(Am_Region *) in gemX_regions.cpp so
that it preserves the existing region's shape rather than
always turning it back into a rectangle.
- Fixed
Am_Drawonable_Impl::Draw_Image() in gemX_image.cpp so
that transparent GIFs work correctly.
- Fixed
Animation_Constraint::~Animation_Constraint() so that it
removes the constraint and dependency properly when there
is only a single constrained key.
- Fixed
Animation_Constraint::~Animation_Constraint() so that it
resets the interpolator's Am_ANIM_CONSTRAINT slot to 0.
- Changed
Am_Set_Animated_Slots() to handle the situation where
only a single value was specified for a list of animated
slots, without crashing.
- Added
a Set(Am_Point_List) method to both the Am_Region class
and the Am_Region_Impl class for X-Windows. This allows
the creation of non-rectangular regions. The code is
current inactive, being #ifdef'ed out on the symbol
POLYGONAL_REGIONS until support is available on the other
platforms. I can probably do the MS-Windows version
myself, but someone else will have to tackle the Mac.
23-Februar-1999 RMM
- Applied
bug-fix from DE so that transparent GIF images are
handled correctly under X-Windows. See changes above.
- Added
the changes from DE to handle non-rectangular regions on
X-Window systems. NOTE: This is not portable nor is this
change smothly integrated into OpenAmulet yet. Use on
your own risk. See changes above.
19-Februar-1999 RMM
- Fixed
the remaining bug in the load & save system which
caused references to fail. Everything should work fine
now.
17-Februar-1999 RMM
- Fixed
bug in load & save system, where 'const char*' were
compared by address instead lexicoraphical when using STL
maps. There is still a problem with saved references.
- Added
Am_Style 'Am_Default_Color', which can be changed in to
your needs in opal.cpp/am_opal_initialize().
'Am_Default_Color' is now used by all widgets instead of
the fixed Am_Amulet_Purple color (which looked strange on
some systems).
21-Januar-1999 RMM
- Fixed
small bug in dynarray.h (blk_count wasn't declared in
debug mode)
- Removed
'inline' property of functions in 'object.cpp' because
they are used in 'object_data.cpp' as extern
- Uncommented
the definition of function hypot in 'gest_features.cpp'
and removed the trailing _ from references to this
function (as trailing _ should only be used for library
functions).
- Moved
'impl.h' from directory 'source/object' to 'header/amulet'
and removed the reference to the include file in 'object.cpp'.
16-December-1998 RMM
- Renamded
files univ_lst/map.tpl into univ_lst/map.hpp, changed
am_inc.h to reflect the changes
- Moved
the Am_Value stuff into seperate files (Am_Value.hpp
& Am_Value.cpp), see header/amulet/... & source/utils/...
directory, changed am_inc.h to reflect the changes. There
exists a new define to reference the include AM_VALUE__H
08-December-1998 RMM
- Made
the definition of Am_No_Value const, so it can't be used
as l-value (thanks to Rick)
- Prefixed
most old stream stuff with the global scope resolution
opertor :: to get it compiled with Intel's C++ compiler (the
problem went away somehow but I have left the changes, as
they doesn't heart, if someone is having problems with
this please report them).
- Made
some parameters const
- Moved
the Am_Object_Data stuff from object.cpp / impl.h to
object_data.hpp & object_data.cpp
- Added
bool return type to most == operators
- Added
'operator==(const) const' signature to most classes and
included this signature into the macro Am_WRAPPER_DECL /
Am_WRAPPER_IMPL to get it consistent (see types.h)
- ATTENTION:
in file gemW_draw.cpp there is a line 'int res = main(argc,
argv)' which the Intel C++ compiler complains about it,
as it doesn't allow to call main(). If you are using the
Intel C++ compiler just compile this file with the VC++
compiler and than create the library from the object
files.
28-November-1998 RMM
- Fixed
bug in Dyn_Memory_Manager dtor
17-November-1998 PS
- Hygienic
changes to compile under mingw32 target (win32)
- _WIN32
define consistently used for testing for Win32
- MS-specific
obsolete _fstr* functions changed to str*
- Minor
changes to support contemporary C++
- GCC
has bug with anonymous structures/unions, worked around
- Dynamic_Memory_Manager
class cleanup, implementation separated from declaration
OpenAmulet
Release V 4.1
November 1998 RMM
- Fixed
some 'memory-leaks' by including more global objects into
Am_CleanUp (see: opal.cpp)
- Added
#define OA_VERSION (see: amulet.h) to be used in source-code
(defined by default)
- Replaced
Am_Map macros with own implementation (see: univ_map_oa.hpp),
uses STL
- Changed
sources so that they compile with EGCS 1.1b on Linux
Mai 1998 RMM
- Initializer
concept rewritten to use STL lists
- SmartHeap
support added for Dyn_Memory_Manager
- AddPart
function extended to take a position parameter