kora-bot/Source/BWEM/EasyBMP_1.06/EasyBMP_ChangeLog.txt

821 lines
31 KiB
Plaintext

EasyBMP Cross-Platform Windows Bitmap Library: Change Log
Library Author(s): Paul Macklin
Library License: BSD (revised). See the BSD_(revised)_license.txt
file for further information.
Copyright: 2005-6 by the EasyBMP Project
Email: macklin01@users.sourceforge.net
Support: http://easybmp.sourceforge.net
All changes by Paul Macklin unless otherwise noted.
*--------------------------------------------------------------------*
Version: 0.50
Date: 1-31-2005
None! (first release)
*--------------------------------------------------------------------*
Version: 0.51
Date: 2-14-2005
Added full 32-bit BMP file support
Took out annoying "colors: " message from BMP8 initialization
from scratch
Added more license and copyright info to each file
Added change log to library
To do next:
Should update the error messages for the initializations
Should simplify the reading and writing code
*--------------------------------------------------------------------*
Version: 0.52
Date: 2-19-2005
Fixed a minor bug in the MakeGreyscalePalette function where the
0 color turned out to be (255,255,255), rather than (0,0,0)
Updated standard colors for 4-bit, 8-bit, and 24-bit
*--------------------------------------------------------------------*
Version: 0.53
Date: 2-27-2005
Fixed unsigned / signed problem that VS.net shows
Tried fix of line 186 in EasyBMP_BMP4.h file. If it works,
I'll apply it consistently. I think that VS.net wants us
to clear char* blah, then char = new blah [size], just
like the old days for g++.
Removed EasyBMP_StandardColors.h from standard package
*--------------------------------------------------------------------*
Version: 0.54
Date: 2-27-2005
The fix of line 186 in EasyBMP_BMP4.h file appears to have
worked. I applied it through the remainder of the code.
Hopefully, this should ensure Visual Studio.Net compati-
bility.
Fixed some typos in the comment lines
*--------------------------------------------------------------------*
Version: 0.55
Date: 5-2-2005
Introduced RGBApixel struct.
Introduced BMFH, BMIH, and BMP classes.
Deprecated all old code to *_legacy.h.
Rewrote EasyBMP_VariousBMPutilities.h to use the new
BMP class.
*--------------------------------------------------------------------*
Version: 0.56
Date: 5-4-2005
Made Width, Height, and BitDepth private members and added
functions for accessing them.
Made a new function, SetBitDepth, as the only means to
change the bit depth. It will create/resize a palette as
necessary. This simplifies the WriteToFile code, as well as
any palette altering algorithms. (All algorithms can now
assume that a properly-sized palette exists.) This will
help improve code stability greatly.
Made a new function, SetSize, as the only way to change the
width and height of the image.
Eliminated useless HasPalette and NumberOfColors members,
and added TellNumberOfColors() function.
Updated EasyBMP_VariousBMPutilities.h to respect privacy
of data members.
*--------------------------------------------------------------------*
Version: 0.57
Date: 5-8-2005
Removed fclose(fp) lines from EasyBMP_BMP.h and
EasyBMP_VariousBMPutilities.h whenever ( !fp ) occurs,
to avoid a crash when trying to close a non-existant file.
Added a line to set bmfh.bfType = 0; to getBMFH() routine
in the case where ( !fp ) occurs, so that a nonexistant file
doesn't falsely show up as a bitmap file.
Made error messages in BMP::ReadFromFile(char*) more meaningful,
since Argh! doesn't help much. :-)
Made ReadFromFile operations safer: can deal more effectively
with corrupted and/or truncated files by adding the new
SafeFread() wrapper function.
Moved all change-log entries to the change log to make the source
file tidier.
Removed all references to Palettes; renamed them to ColorTables.
*--------------------------------------------------------------------*
Version: 0.58
Date: 5-13-2005
Rewrote ReadFromFile() to fix program crashes on reading 4-bit
files. (*grumble* I can't believe there was such a bug in such
a late version! */grumble*)
Added support to ReadFromFile() for reading 1-bit files.
Rewrote ReadFromFile() to avoid trying to read bitmap files of
depths other than 1, 4, 8, 24, and 32 bits.
Tested reading 4-bit files of width 0,1,2, and 3 (modulo 4),
and 1-bit files of width 0,1,2,3,4,5,6, and 7 (modulo 8)
*--------------------------------------------------------------------*
Version: 0.59
Date: 5-15-2005
Made ReadFromFile() more robust. Evidently, reading to the
same temp variable all the time made it unstable when reading
many files. I would never have guessed. I instead declare BMIH
and BMFH objects and read directly to their members. This appears
to be more stable when dealing with many ReadFromFile() calls.
On a related note, made sure to not call SetSize( Width,Height),
which is a bit recursive, as well as SetBitDepth( BitDepth ).
This appears to help stability, since these two functions were
create precisely for the purpose of setting those variables
values safely.
Made use of the boolean return value in SafeFread() to detect
when files are obviously corrupted. Used this to have an early
catch in ReadFromFile() and set it to a 1x1 1-bit image and
exit.
Made ReadFromFile() stricter, in that it only reads recognized
bit depths (1,4,8,24,32). Any other bit depth will prompt the
routine to terminate and set it to a 1x1 1-bit file.
Added write support for 1-bit files.
Rewrote WriteToFile() for 4,8-bit files to match methods used
for reading them.
Revised CreateStandardColorTable() and
CreateGreyscaleColorTable() to add support for 1-bit files.
Rewrote WriteToFile() to be stricter in only writing known bit
depths (1,4,8,24,32) and ignoring all others.
*--------------------------------------------------------------------*
Version: 0.60
Date: 5-21-2005
Deprecated *_legacy.h files.
Tested library extensivey in linux with good results.
Made CreateGreyscaleColorTable() stricter, in that it exits
if supplied a bit depth other than 1, 4, or 8.
Made cosmetic changes in EasyBMP_DataStructures.h to
improve readability.
Made SetBitDepth() stricter, in that it will never allow a bitmap
to be set to an unsupported bit depth. Only bit depths of 1, 4,
8, 24, or 32 are accepted.
Made SetSize() stricter, in that it will not allow negative
widths or heights.
Made cosmetic changes in EasyBMP_BMP.h to improve readability.
Added a check in ReadFromFile() to see if the requested width or
height is negative, a good sign of file corruption. In such a
case, the file is set to a blank 1x1 1-bit file.
Added code to ReadFromFile() to set size to 1x1 and bit depth to
1-bit if the file was not found.
*--------------------------------------------------------------------*
Version: 0.61
Date: 5-22-2005
Fixed awIndex typo in WriteToFile().
Replaced double BestDistance comparisons in WriteToFile()
with int BestDistances (so as to do integer operations,
rather than double operations). This gave a roughly 100%
speedup in 8-bit, 4-bit, and 1-bit write operations on
unoptimized (no compiler flags) code and a 30% speedup
on optimized code.
Removed checks like if( BestDistance < 1 ){ k=256; } .. from
WriteToFile(), as they give more overhead than savings in my
testing. For 8-bit files, there was a slight gain by putting
it back in with another method:
while( k < 256 && BestDistance > 0 ).
Redefined StepSize in CreateGreyscaleColorTable() to give a
better range of greys in 4-bit mode. As it was, white was not
in the color table. (Colors were spaced by 256/16 = 16). Now,
colors are spaced by (255-1)/(16-1) = 17, which gives the full
range.
*--------------------------------------------------------------------*
Version: 0.62
Date: 5-25-2005
Added endianess check function IsBigEndian() to
EasyBMP_DataStructures.h file.
Added functions to swap bytes in WORD and DWORD multibyte
variables to EasyBMP_DataStructures.h file for future big-endian
support.
Added functions to switch endianess to BMFH and BMIH objects
to EasyBMP_DataStructures.h file.
Added endianess checks to ReadFromFile() and WriteToFile()
functions in EasyBMP_BMP.h file, along with endianess conversions
where necessary.
Added endianess checks and conversions to GetBMFH() and GetBMIH()
functions in EasyBMP_VariousBMPutilities.h file.
Rewrote GetBitmapInfo() function to use GetBMFH() and GetBMIH()
functions instead. (In EasyBMP_VariousBMPutilities.h.) This
cuts down on the redundancy in the code.
Renamed GetBitmapInfo() to DisplayBitmapInfo() in the
EasyBMP_VariousBMPutilities.h file.
With these changes, big-endian architectures should be supported,
including IBM PowerPC, Sun Sparc, Motorola 86k, etc., and
including Mac OSX.
*--------------------------------------------------------------------*
Version: 0.63
Date: 7-20-2005
Added IntPow(int,int) function to help compiling with std
namespace. Besides, integer operations are faster and more
accurate.
Moved Square(double), IntSquare(int), and IntPow(int,int) to
EasyBMP_DataStructures.h
Simplified and cleaned up code in
Create4bitColorTable( RGBApixel**).
Changed safety check in BMP.ReadFromFile(char*) to set size to
1 x 1 if width or height is non-positive, rather than simply
negative.
Added bounds checking to BMP.operator()(int,int) to automatically
truncate requested pixel if out of bounds. Also added a warning
to cue the user in. :-)
Made error messages more consistent in format.
Simplified and cleaned up code in
Create4bitColorTable( RGBApixel**).
Added #include <iostream.h> to EasyBMP.h, since EasyBMP uses
cout, etc.
Simplified and cleaned up code in
Create1bitColorTable( RGBApixel**).
Changed BMP.SetSize(int,int) to disallow non-positive widths and
heights, rather than simply negative widths and heights. Such
function calls are now ignored.
*--------------------------------------------------------------------*
Version: 0.64
Date: 8-2-2005
Changed "include <iostream.h>" to "include <iostream>" for
ANSI-C++ compliance, as well as for better compatibility with the
std namespace and VC++. (Thanks, Tommy Li!)
Added some #ifndef pragmas to each header so that it should be
fine to incluce EasyBMP.h in multiple files in larger projects.
Added "using namespace std" inside any function that used C++
math or I/O operations. I avoided putting "using namespace std"
anywhere with global scope for maximum compatibility with C++
software in the wild.
Added includes for <cmath> and <cstdio> to EasyBMP.h
Removed unused temporary variables (TempWORD and TempDWORD) from
EasyBMP_BMP.h for cleaner compiling. If I see any more such
unused variables, I'll remove them, too.
*--------------------------------------------------------------------*
Version: 0.65
Date: 8-13-2005
Moved implementations of BMP::BMP(), BMP::~BMP(), and
BMP::operator()(int,int) outside of the class. This should help
for eventually moving everything into a separate cpp file.
Made RGBApixel** Pixels a private data member of the class
BMP.
Added function void BMP::SetColor(int,RGBApixel) to BMP class
to allow safe method of changing a color in the color table.
Added function RGBApixel BMP::GetColor(int) to BMP class
to allow safe method of retrieving a color in the color
table.
Cleaned up error messages in EasyBMP_BMP.h
Cleaned up error messages in EasyBMP_VariousBMPutilities.h
*--------------------------------------------------------------------*
Version: 0.66
Date: 8-18-2005
EasyBMP_StandardColorTables.h was removed from the library.
CreateStandardColorTable(RGBApixel**,int) was changed to
CreateStandardColorTable() and made a member function of BMP.
All other CreateStandardColorTable functions are now unnecessary
and have been removed.
CreateGreyscaleColorTable(RGBApixel**,int) was changed to
CreateStandardColorTable( BMP& ) and moved to
EasyBMP_VariousBMPutilities.h.
RGBApixel* Colors was made a private data member of the BMP
class.
CreateGreyscaleColorTable( BMP& ) was renamed to
CreateGrayscaleColorTable( BMP& ).
*--------------------------------------------------------------------*
Version: 0.67
Date: 9-14-2005
Made the EasyBMP custom math functions in
EasyBMP_DataStructures.h inline. (Square,IntSquare,IntPow).
This should make those function calls faster while improving
compatibility with compiling DLL's.
Separated the code from SafeFread() in EasyBMP_BMP.h to
improve compatibility with compiling DLL's.
Removed #define _WINGDI_H from EasyBMP_DataStructures.h to
improve compatibility with win32 applications. Instead,
there's an extra #ifndef _SELF_DEFINED_BMP_DATA_TYPES
conditional added.
_SELF_DEFINED_BMP_DATA_TYPES renamed to _SELF_DEFINED_WINGDI
in EasyBMP_DataStructures.h.
All bit-flipping functions (IsBigEndian, FlipWORD,
FlipDWORD) in EasyBMP_DataStructures.h were made inline
to improve execution speed and improve compatibility with
compiling DLL's.
All code was separated from function declarations in
EasyBMP_VariousBMPutilities.h to improve compatibility
with compiling DLL's.
Updated and cleaned up layout of EasyBMP_ChangeLog.txt.
Updated contact and support information in library files.
Corrected the LGPL license version.
*--------------------------------------------------------------------*
Version: 0.68
Date: 10-9-2005
Changed references to FILE to std::FILE in the SafeFread function
in EasyBMP_BMP.h to improve compatibility with Borland's compiler.
Removed a few assignments in EasyBMP_BMP.h that weren't used to
improve efficiency and reduce Borland warnings.
Changed calls like NotCorrupted = SafeFread() to
NotCorrupted &= SafeFread() in BMP::ReadFromFile() in EasyBMP_BMP.h
to improve robustness. Now, if the NotCorrupted bit is ever set
to false, it stays false, meaning that the function won't "forget"
that it encountered file corruption.
*--------------------------------------------------------------------*
Version: 0.69
Date: 10-19-2005
Changed BMP::WriteToFile( char* ) to BMP::WriteToFile(const char*)
in EasyBMP_BMP.h to respond to a feature request.
Changed BMP::ReadFromFile( char* ) to BMP::ReadToFile(const char*)
in EasyBMP_BMP.h to respond to a feature request.
Made BMP::ReadFromFile() and BMP::WriteToFile() in EasyBMP_BMP.h
return true/false to indicate success/failure in the operations.
These functions previously returned void.
Made BMP::SetSize() and BMP::SetBitDepth() in EasyBMP_BMP.h
return true/false to indicate success/failure in the operations.
These functions previously returned void.
Made BMP::SetColor() and BMP::CreateStandardColorTable() in
EasyBMP_BMP.h return true/false to indicate success/failure in the
operations. These functions previously returned void.
Made CreateGrayscaleColorTable() in EasyBMP_VariousBMPutilities.h
return true/false to indicate success/failure in the operations.
This function previously returned void.
Changed the char* argument GetBMFH( char* ), GetBMIH( char* ),
DisplayBitmapInfo( char* ), and GetBitmapColorDepth( char* ) in
EasyBMP_VariousBMPutilities.h to const char* for cleaner, safer
programming.
*--------------------------------------------------------------------*
Version: 0.70
Date: 10-19-2005
Found and fixed error in BMP::ReadFromFile() in the check for only
reading support bit depths.
Changed license from LGPL to BSD (revised/modified) to simplify
licensing issues and resolve any lingering licensing questions.
Fixed compiler error when using MSVC++.
Improved fix to allow compiling with Borland without breaking
Borland support.
Added a few lines to EasyBMP.h to make it easier to tailor code
to specific compilers. (For future use as needed.)
Added a few lines to EasyBMP_BMP.h (in BMP::ReadFromFile(),
BMP::WriteToFile(), and BMP::SetBitDepth()) to eventually add
support for 16-bit files.
*--------------------------------------------------------------------*
Version: 0.71
Date: 11-01-2005
Cleaned up comments in BMP::ReadFromFile() in EasyBMP_BMP.h
Added endian-safe read support for 16-bit files that are in the
standard 5-5-5 format (not specified in bit fields)
Added endian-safe read support for 16-bit files that use bit
fields, including 5-6-5 files.
Added endian-safe write support for 16-bit files. Uses the 5-6-5
encoding scheme to maximize the utility of the bits used.
Added a check for compression in BMP::ReadFromFile(). Because
file compression is beyond the scope of EasyBMP, such files are
not supported, and EasyBMP now properly detects these situations
and exits with an error.
Added a check for files that attempt to use bit fields but are not
16-bit files to BMP::ReadFromFile(). Such files are not supported.
Added a check to BMP::ReadFromFile() for files that use unknown
values of bmih.biCompression, such as old OS2 bitmaps. Such files
are not supported.
Removed "switching endianness" messages from EasyBMP_BMP.h
Added support for indexed (1, 4, and 8-bit) files that don't
specify all the colors.
Added support for reading files that include extra meta data before
the pixels. This data is skipped.
Added enclosing #ifndef EasyBMP ... lines to EasyBMP.h as a
further safeguard when EasyBMP is included in multiple cpp
files.
*--------------------------------------------------------------------*
Version: 1.00
Date: 02-06-2006
First Production/Stable release.
Corrected typographical errors in the comment sections of all
files.
Updated copyright on all files.
Removed extraneous comment in BMIH::BMIH() function in
EasyBMP_DataStructures.h file.
Replaced instances of \n with the more modern endl in
EasyBMP_DataStructures.h, EasyBMP_BMP.h, and
EasyBMP_VariousBMPutilities.h.
Added placeholder MetaData1 and MetaData2 data members to the
BMP class for potential future use.
Removed extraneous comments from EasyBMP_BMP.h.
Removed warning messages for switching endianness from
EasyBMP_VariousBMPutilities.h.
Updated copyright in EasyBMP_ChangeLog.txt file.
Fixed formatting issues in EasyBMP_ChangeLog.txt file.
Added DefaultXpelsPerMeter and DefaultYpelsPerMeter in
EasyBMP.h. These will default to 96 dpi.
Changed BMP::WriteToFile() to use DefaultXpelsPerMeter and
DefaultYpelsPerMeter when writing the BMIH structure.
Added XpelsPerMeter and YpelsPerMeter data members to BMP
class so that horizontal and vertical resolution are handled
properly. Currently, upon reading a file, the stated resolutions
are preserved, and upon writing, if no resolutions are given,
the defaults (of 96 DPI) are used.
Added function void BMP::SetDPI(int,int) to set the horizontal
and vertical resolutions.
Removed some unnecessary code from GetBitmapColorDepth() in
EasyBMP_VariousBMPutilities.h.
Fixed a bug in RangedPixelToPixelCopyTransparent() and
RangedPixelToPixelCopy() in EasyBMP_VariousBMPutilities.h which
caused copies to be truncated by an extra row or column in
certain circumstances.
Fixed a bug in RangedPixelToPixelCopyTransparent() and
RangedPixelToPixelCopy() in EasyBMP_VariousBMPutilities.h which
checked the wrong variable (FromT instead of FromB) to see if
it was out of range.
Added extra checks to RangedPixelToPixelCopyTransparent() and
RangedPixelToPixelCopy() in EasyBMP_VariousBMPutilities.h to
prevent attempted access of out-of-range pixels.
*--------------------------------------------------------------------*
Version: 1.01
Date: 03-31-2006
Made only the short functions Square, IntSquare, IsBigEndian,
FlipWORD, and FlipDWORD inline functions in
EasyBMP_DataStructures.h.
Moved all code (other than inline functions) to EasyBMP.cpp.
Changed DefaultXPelsPerMeter and DefaultYPelsPerMeter to #define
lines in EasyBMP.h to make the library compatible with
with the header-code split.
Removed memory hole in ~BMP() where "delete Colors;" was used
instead of "delete [] Colors;". Likewise with MetaData1 and
MetaData2.
Fixed memory leak in BMP::SetBitDepth() by changing to
delete [] Colors;
Removed potential memory leak in BMP::WriteToFile() in 24- and
32-bit writing where szTemp wasn't delete at the end of a row.
Fixed bug where XPelsPerMeter and YPelsPerMeter weren't
properly initialized in the BMP::BMP() constructor, leading
to strange horizontal and vertical resolutions.
Fixed memory leak in BMP::ReadFromFile() where TempSkipBYTE
wasn't deleted.
Fixed memory leak in BMP::ReadFromFile() where szTemp wasn't
deleted.
Added BMP::TellVerticalDPI() and BMP::TellHorizontalDPI()
functions to give this information. If those values have
not yet been set, then they are first set to the EasyBMP
defaults of 96 dpi.
Set uninitialized RGBApixel values to white (255,255,255,0)
in a few functions for the BMP class.
Added a sample cpp application and makefile.
*--------------------------------------------------------------------*
Version: 1.02
Date: 05-29-2006
Inserted a line into EasyBMP.h to suppress the Visual Studio
warnings. We'll keep using the C++ standard fopen for now
until fopen_s becomes a real standard.
Moved the code sample and makefile to a subdirectory, so that
unzipping EasyBMP#_##.zip into a project directory doesn't
overwrite any crucial makefiles.
Improved SafeFread() to check if the proper amount of data
could be read.
Dramatically cleaned up ReadFromFile() code for 1 and 4
bpp files.
Fixed a typo (draw.o) in the sample makefile.
Modified ReadFromFile() to use buffering when reading the pixel
data. This should substantially improve disk access performance.
Only 16 bpp files are read in the old, slower way.
Changed DWORD from unsigned long to unsigned int. This should
fix the issue where 64-bit machines see DWORD as an 8-byte
data type, rather than 4 bytes. (Thank you to Bas Wegh!)
Renamed BYTE, WORD, and DWORD data types to ebmpBYTE, ebmpWORD,
and ebmpDWORD to eliminate the possibility of conflict with
windows applications, particularly with 64-bit windows, which
likely uses 8 byte DWORDS.
Modified WriteToFile() to use buffering when reading the pixel
data. This should substantially improve disk access performance.
Only 16 bpp files are read in the old, slower way.
Added new function, EasyBMPcheckDataSize(), to check that
the ebmpBYTE, ebmpWORD, and ebmpDWORD types have the correct
type.
Added some new macros of the EasyBMP version number for easier
version checking. New versions include _EasyBMP_Version_
(a double), _EasyBMP_Version_String_ (a char* version), and
_EasyBMP_Version_Integer_ (an integer version, e.g., 102).
*--------------------------------------------------------------------*
Version: 1.03
Date: 06-20-2006
Inserted a line into EasyBMP.h to suppress the Visual Studio
Added a check to BMP.SetColor() to ensure that the color table
is defined before attempting to set a color entry.
Added a check to BMP.GetColor() to ensure that the color table
is defined before attempting to retrieve a color entry.
Simplified the conditional in BMP.WriteToFile() from
if( BitDepth == 1 || BitDepth == 4 || ... ) to the simpler
if( BitDepth != 16 ).
Removed the old, unused code for writing 1- and 4-bit files
from BMP.WriteToFile().
Removed the line Colors = new RGBApixel [NumberOfColors]; in
BMP.ReadFromFile(). This operation is already covered by the
earlier SetBitDepth() call, and may contribute to a memory
leak. Furthermore, for files that had fewer than expected
number of colors (e.g., an 8-bit file with 236 colors), it
lead to memory access errors in BMP.GetColor() and BMP.SetColor().
(In fact, this is the main motivation for release 1.03.)
Added a warning when BMP.ReadFromFile() encounters an under-
specified color table, and code to pad the table with white
entries.
Added screen output on EasyBMP version and project website to
the code sample.
*--------------------------------------------------------------------*
Version: 1.04
Date: 07-22-2006
Removed the assignment to the integer i in IntPow() to eliminate a
Borland compiler warning.
Removed the assignment to the integer i in the Read##bitRow()
functions to eliminate Borland compiler warnings.
Removed the assignment to ZeroWORD in line 478 of EasyBMP.cpp in
BMP::WriteToFile() to eliminate Borland compiler warnings.
Removed the assignment to ZeroWORD in line 825 of EasyBMP.cpp in
BMP::ReadFromFile() to eliminate Borland compiler warnings.
The Borland warnings about conditions always being false are
incorrect. (Lines 1587, 1594, and 1601.) Likewise, the Borland
warnings about unreachable code (lines 1589, 1596, and 1603) are
incorrect. This code serves as a protection on unexpected hardware
where the data types may not be of the correct size, and helps to
future-proof EasyBMP. The first time this type of error was
encountered was on 64-bit CPUs, where the size of the DWORD was
larger than assumed when writing EasyBMP. Therefore, we will not
"correct" these "errors" detected by Borland. If they bother you,
compile with the -w-8008 and -w-8066 options.
Borland issues warnings about argc and argv being unused in the
sample project. These are silly warnings and will be ignored. If
this warning bothers you, compile with the -w-8057 option.
Modified the sample makefile so that EasyBMP.o depends upon
EasyBMP.cpp and EasyBMP*.h in the current working directory, rather
than the parent directory.
Added a global EasyBMPwarnings boolean variable, and functions
SetEasyBMPwarningsOn() and SetEasyBMPwarningsOff() to enable and
disable EasyBMP warnings and errors. Note that this will not
disable error checking or any other EasyBMP behavior, other than
cout output of the warning and error messages.
Added the function GetEasyBMPwarningState() to query the EasyBMP
warning state. (Either warnings are enabled or disabled.)
Removed old commented code (Write1bitRow()) from EasyBMP.cpp.
Replaced the 24-bit EasyBMPbackground.bmp image in the code sample
with a dithered 8-bit version to reduce the download size of the
core library.
*--------------------------------------------------------------------*
Version: 1.05
Date: 11-01-2006
Renamed BytesRead to ItemsRead in the SafeFread() function in
EasyBMP.cpp for greater clarity.
Added a copy constructor to the BMP class. However, note that
passing by value is not recommended practice. (Passing by refer-
ence is much faster, and consumes less memory.)
Added a new function:
bool Rescale( BMP& InputImage, char mode, int NewDimension );
to resize an image. The mode variables are as follows:
'P': resizes the image to a new percentage of the old size,
e.g., 42%, 13%, etc.
example: Rescale( SomeImage, 'p', 42 );
'W': resizes the image such that the new width is as specified.
example: Rescale( SomeImage, 'W', 100 );
'H': resizes the image such that the new height is as specified.
example: Rescale( SomeImage, 'H', 100 );
'F': resizes the image to fit in a square of specified size.
example: Rescale( SomeImage, 'F', 100 ); // fits in 100x100
// box
All rescaling is done with bilinear interpolation.
*--------------------------------------------------------------------*
Version: 1.06
Date: 12-01-2006
Added includes for <cctype> and <cstring> to EasyBMP.h. These are
used and should have been included all along. This should help
with Intel icc compiling.
Fixed the && bug in the copy constructor. (Thank you to user
fcnature!)
Added image scaling to the supplied code sample.
Added GetPixle() and SetPixel() functions for future use. These
will be added to enable more careful use of the const keyword.
*--------------------------------------------------------------------*