2019-08-27 ----------- mGRX 1.1.2 released
2019-08-25 Solved an old bug showing in 16 color modes. The defaut red mouse
           allocated a cell with a red color not in the ega color table, so if
           GrAllocEgaColors() is called after mouse initialization the last ega 
           color (white) can't be alloced. Solution: setting the default mouse
           color to black & white and allocate black & white colors first in
           GrAllocEgaColors() to prevent no cells for the two basic colors.
2019-08-24 GREV_EXPOSE event populates "count" in the "kbstat" field. If count is
           zero, no more Expose events follow. The X11 man pages say: Simple
           applications that do not want to optimize redisplay can just ignore all
           Expose events with nonzero counts and perform full redisplays on events
           with zero counts.
2019-08-22 Decorate demomgrx background.
2019-08-19 Added "life_db" test program, double buffer version of life, much faster
           than the normal version in X11 and Win32, a bit slower in Linux-fb
           and djgpp.
2019-08-18 Don't recode ASCII keys (include controls) when reading keyboard, it can
           hide the control keys in MSDOS and Win32.
2019-08-17 Solved a bug in libgrx.h getting BYTE_ORDED showed in win32 after remove
           of assembler code in memfill.h.
2019-08-14 Removed assembler code from src/include/memfill.h, tested all platforms.
2019-08-13 Moved sttcopy and sttzero to libgrx.h using string.h routines. Deleted
           includes memcopy.h and memfill.h for files that do not need them now.
2019-08-13 Restaured "CCOPT += -DLFB_BY_NEAR_POINTER" in src/makefile.lnx because
           the framebuffer is in user space.  we can now remove lfb--.o files
           from the linuxfb build.
2019-08-12 Checking the 32 bit build in linux I had unespected segment violation
           with the fb friver, the cause was the i386 assembler code used by sttcopy
           function. Because I don't know how to debug assembler, and it is not used
           in the 64 bit build, and have not found speed difference with and without
           the assembler code in other 32 bit plattforms (like DJGPP) I deleted
           the i386 assembler code in src/include/memcopy.h. As far as the DJGPP
           and Win32 versions will continue to run I will try to eliminate more
           assembler code in future.
2019-08-10 Updated the programmer manual explaining how to use the portable color
           tables defined in mgrxcolr.h
2019-08-03 Changed the obsolete termio by termios in the linux framebuffer input driver,
           this solve problems with control keys.
2019-08-02 Added support for the imps2 mouse protocol in the linux framebuffer input
           driver, now we have wheel events.
2019-06-20 Added color tables (new concept) for easy use of colors by names, there are
           two tables defined: EGA (16 colors) and WEB (138 colors). The definitions are
           in the new main include file include/mgrxcolr.h and the necesary code in
           src/setup/colortbl.c. Added the clrtable.c program to test color tables.
2019-06-11 ----------- mGRX 1.1.1 released
2019-06-10 Solved a very old problem in Customized and Patterned line drawings
           funtions. The intersect code (in src/wideline/drwcpoly.c) gave bad results
           for solid and pattern filed wide lines, changed to a simple algorithm that
           works very well, except for circles and dashed lines, so we use part of the
           original code for these cases.
           Added the cusptest.c program to test Customized and Patterned line drawings.
2017-10-01 New functions:
           reverse recode from font encoding to chrtype
             long GrFontCharReverseRecode(const GrFont *font,unsigned int chr,int chrtype);
           get a string for the numerical fontencoding
             char *GrStrFontEncoding(int fontencoding);
           these functions enqueue an event the first in the queue
             int GrEventEnqueueFirst(GrEvent * ev);
             int GrEventParEnqueueFirst(int type, long p1, long p2, long p3, long p4);
2017-10-01 New funtion to enqueue a event by its parameters
             int GrEventParEnqueue(int type, long p1, long p2, long p3, long p4);
           Changed wait input if no events to delay(1) instead dpmi_yield in the
           djgpp version, so now demommgrx runs smoothly like other versions.
2017-09-09 ----------- mGRX 1.1.0 released
2017-09-08 Fix a proglem in jpeg read with new version 9 of libjpeg, they have 
           changed the default for cinfo.scale_denom and cinfo.scale_num.
           Fix warnings with DJGPP 2.05 in src/include/vesa.h.
2017-09-07 Changed __attribute__((packed)) by #pragma pack in fdv_win.h, to
           workarround a bug in mingw gcc.
           Fix a problem with GR_UNDERLINE_TEXT and C_OPER.
           Workarround to SetDIBColorTable fail seems on W7 with the 256 color
           driver, probably a race condition.
           Added some usual modes to the windows video driver.
           No restart test/demomgrx.c in X11 an WIN32 after running a demo.
           Some improvements to test/fontdemo.c.
2017-09-02 Setting the encoding field to the fonts provided with MGRX.
           Updated the programmer's manual.
2017-08-31 New function to save a font in own MGRX font format
             void GrDumpGrxFont(const GrFont *font,char *fileName);
2017-08-09 Corrected a very old bug in GrClearContextC and GrFloodSpillC and
           GrFloodSpillC2. They didn't restore the original context.
           Updated test/fontdemo.c
           Fixed an error in test/keys.c
2017-08-05 Fixed a warning en src/input/grev_x11.c, XKeycodeToKeysym is deprecated
           replaced by XkbKeycodeToKeysym.
2017-07-22 New function to get the real strlen of a text string of type chrtype
             int GrStrLen(const void *text, int chrtype);
           Now GrDrawString (and friends) calculates the text length (using GrStrLen)
           if the length parameter is equal to zero.
           Begining update of the programmer manual.
2017-07-16 Now the xwin driver generates GREV_EXPOSE and stop using backingstore if
           requested by the user.
           Modified the test/life.c to request GREV_EXPOSE events (and handle them). It
           is now much faster under the xwin driver.
2017-07-13 Preparation for the new GREV_EXPOSE event, added p4 to the GrEvent struct, new
           function "void GrEventGenExpose(int when)", when can be GR_GEN_EXPOSE_NO (the
           default) or GR_GEN_EXPOSE_YES.
           Updated the readme file.
2017-07-11 Replaced the GrDefaultFont define by two functions GrGetDefaultFont() and
           GrSetDefaultFont, now you can set the default font you want (set to 
           built-in GrFont_PC8x14 by default).
           New GrNextUTF8Char function.
           Added recode capacity for GR_FONTENC_MGRX512.
           Expanded test/demointl.c to test the new capacities.
2017-07-08 Setted the font encoding field to 1 in built-in pc fonts.
           New function to set the font encoding field:
             void GrFontSetEncoding(GrFont *font,int fontencoding);
           Deleted the GrProportionalTextWidth function because GrFontStringWidth works
           for both proportional and fixed fonts.
           GrFontStringWidth, GrFontStringHeight, GrCharWidth, GrCharHeight, GrCharSize,
           GrStringWidth, GrStringHeight, GrStringSize, GrDrawChar, GrDrawString (and friends)
           now recode form chrtype to font encoding if nedded (fon encoding != GR_FONTENC_UNKNOWN,
           chrtype != (GR_BYTE_TEXT || GR_WORD_TEXT) and font encoding not equivalent to chrtype.
           New function to get a chrtype equivalent to user encoding:
             char GrGetChrtypeForUserEncoding(void);
           Added maxlen parameter to GrUTF8StrToUCS2Str.
           Fixed a warning, really a bug, in src/setup/colors.c.
           GrDumpFont writes the font encoding field too.
           Changes in test/demointl and test/fontdemo to work properly.
           Added 16 new fonts "ter-mgrxNNS.psf" converted from terminus fonts, 512 glyps using
           the GR_FONTENC_MGRX512 encoding, NN can be 14, 16, 18, 20, 22, 24, 28, 32 and S b or n.
2017-07-04 Added encoding to GrFontHeader struct, it can be
             GR_FONTENC_UNKNOWN     0     /* unknow encoding (no recode) */
             GR_FONTENC_CP437       1     /* standard dos encoding */
             GR_FONTENC_CP850       2     /* standard dos encoding */
             GR_FONTENC_CP1252      3     /* standard Win encoding */
             GR_FONTENC_ISO_8859_1  4     /* standard latin encoding */
             GR_FONTENC_UNICODE     5     /* direct UNICODE encoding */
             GR_FONTENC_MGRX512     6     /* custom MGRX 512 char encoding */
             GR_FONTENC_LASTENC     6     /* last encoding, for checks */
           The new possible values of GrTextOption.txo_chrtype:
             GR_BYTE_TEXT            0   /* 1 byte per character, unknow encoding */
             GR_WORD_TEXT            1   /* 2 bytes per character, unknow encoding */
             GR_CP437_TEXT           2   /* 1 bpc standard DOS encoding */
             GR_CP850_TEXT           3   /* 1 bpc latin1 DOS encoding */
             GR_CP1252_TEXT          4   /* 1 bpc standard Win encoding */
             GR_ISO_8859_1_TEXT      5   /* 1 bpc latin1 standard in some Linux */
             GR_UTF8_TEXT            6   /* multibyte UTF-8 Unicode, restricted to 4 bytes */
             GR_UCS2_TEXT            7   /* 2 bpc restricted Unicode, only BMP range */
           New utility functions to deal with recode from GrTextOption.txo_chrtype to
           GrFontHeader.encoding:
             int  GrFontNeedRecode(const GrFont *font,int chrtype);
             unsigned int GrFontCharRecode(const GrFont *font,long chr,int chrtype);
             unsigned short *GrFontTextRecode(const GrFont *font,const void *text,int length,int chrtype);
           GrTextOption.fgcv and GrTextOption.bgcv are now GrColor values.
           Added two new fonts pc850-14.psf and pc850-16.psf, now test/demointl has a real
           CP850 coded font.
2017-07-03 Deleted the GR_ATTR_TEXT char type.
           Hided for now GrTextRegion and functions.
2017-07-02 Replaced GrGetKbEncoding and GrSetKbEncoding with
           GrGetUserEncoding and GrSetUserEncoding, these functions exists even
           if not input driver is ebabled (like with the memory driver). User
           enconding default to GRENC_UTF_8 in linux and X11, GRENC_PC437 in
           DJGPP and GRENC_PC1252 in WIn32, but the programmer can set it like
           he wants. Now key events are recoded to the user encoding.
           Changes in test/demointl and test/fontdemo to work properly.
           Small change in fd_xwin.c, accel a bit drawpixel.
           Added 32 bpp mode to vd_lnxfb.
2017-06-19 Make x86_64 the default in linux and X11.
           Fix a warning in newer versions of libPNG.
           Output format changes in test/speedtst.c.
2009-01-29 ----------- mGRX 1.0.0 released
2009-01-25 Simplified the WM_PAINT proccess to solve a race condition
           found in Vista running in multiple core cpu's.
2008-11-19 Fixed a bug in GrMouseWarp win32 version, the cursor was set to the
           screen, instead to the client area, by Richard Sanders.
2008-11-05 Added GrClearContextC function, by Richard Sanders.
2008-09-07 New MGRXBIGG environment variable, it lets the user to limit the
           dimensions of GR_biggest_graphics mode. MGRXBIGG="maxw maxh"
2008-09-06 Deleted some graphicsmodes not used anymore: GR_80_25_text,
           GR_width_height_text, GR_biggest_text, GR_width_height_color_text,
           GR_width_height_bpp_text and GR_biggest_noninterlaced_graphics
2008-09-02 vdrivers/vd_win32.c: Added Mario Zagar fix for the app termination bug.
2008-08-01 fdrivers/fd_xwin.c: Sanitized pixel cache code.
2008-08-01 fdrivers/fd_xwin.c: New faster and specific for X11 putscanline function,
           this change accelerates a lot displaying pnm, png and jpeg images.
2008-02-03 ----------- mGRX 0.9.9 released
2008-02-03 Changed defaults in makedefs.grx:
           HAVE_LIBJPEG=y  HAVE_LIBPNG=y  NEED_ZLIB=y
2008-02-03 Make the w32 driver generates button4 and button5 mouse events
           (the scroll whell).
2008-02-02 Planned intl support (and 8, finished by now)
           Updated the programmer manual with the intl and GR_UTF8_TEXT support,
2008-01-30 Make textpatt.c demo program works in real color modes.
2008-01-26 Planned intl support (7)
           The functions: GrDrawString, GrPatternDrawString, GrPatternDrawStringExt,
           GrUsrDrawString, GrFontStringWidth, GrFontStringHeight,
           GrProportionalTextWidth, GrStringWidth, GrStringHeight, GrStringSize
           support the new GR_UTF8_TEXT text type, "len" must be the UTF8len or less.
           The functions: GrCharWidth, GrCharHeight, GrCharSize, GrDrawChar,
           GrPatternDrawChar, GrUsrDrawChar
           support the new GR_UTF8_TEXT text type too. "chr" must be a unique char,
           utf-8 encoded, but packed in a long (an union: long and char[4]), like it
           is packed int the GREV_KEY event.
           Some utility functions for UTF-8 are provided:
           int GrUTF8StrLen(unsigned char *s)
           long GrUCS2ToUTF8(unsigned short ch)
           unsigned short GrUTF8ToUCS2(unsigned char *s)
           unsigned short *GrUTF8StrToUCS2Str(unsigned char *s, int *ulen)
2008-01-23 Warnings fixed in fonts/fdv_bgi.c
2008-01-21 Planned intl support (6)
           Added intl support to the dj2 input driver (input/grev_dj2.c). It try
           to use the MGRXKBSYSENCODING environment variable. If not it sets
           GRENC_CP437.
           Added intl support to the w32 input driver (input/grev_w32.c). It try
           to use the MGRXKBSYSENCODING environment variable. If not it sets
           GRENC_CP1252.
           Some warnings fixed.
2008-01-20 Planned intl support (5)
           If kbsysencoding == GRENC_UTF_8, sets initial kbencoding
           to GRENC_ISO_8859_1, because is easier to handle.
           New input/auxintl.c with auxiliary intl functions
           Added intl support to the lnx input driver (input/grev_lnx.c). If the
           LANG environment variable contain "UTF-8" sets the KbSysEncoding
           to GRENC_UTF_8. If not it try to use the MGRXKBSYSENCODING
           environment variable. If not it sets GRENC_ISO_8859_1.
2008-01-19 Planned intl support (4)
           New input/recode.c recode between supported encodings.
           Added intl support to grevent.c, it process GREV_PREKEY events and
           recode if necesary.
           New test/demointl test program.
2008-01-14 Planned intl support (3)
           Added intl support to the x11 input driver (input/grev_x11.c). It try
           to open a XIM (X input method) and create a XIC (X input context), if
           it has succes, it uses Xutf8LookupString and sets the KbSysEncoding
           to GRENC_UTF_8. If it can't, uses the XLookupString and sets
           KbSysEncoding to GRENC_ISO_8859_1, but this function can't compose
           accented chars.
2008-01-12 Planned intl support (2)
           Changes in input/ninput.h to declare "int _GrGetKbSysEncoding(void)",
           internal funtion to be provided in the input drivers and the
           GrRecode function to be written.
           Added GREV_PREKEY event to mgrx.h. Input drivers with intl support
           send this ivent instead GREV_KEY, so "grevent.c" can recode it.
           Added "GrGetKbSysEncoding", "GrGetKbEncoding" and "GrSetKbEncoding"
           to input/grevent.c, do void GREV_PREKEY preprocess (to be worked
           later).
2008-01-11 Planned intl support (1)
           Changes in mgrx.h and general plan:
           - Defined the initial supported input encodings:
             #define GRENC_PC437          0   /* standard DOS encoding */
             #define GRENC_PC850          1   /* latin1 DOS encoding */
             #define GRENC_PC1252         2   /* standard Win encoding */
             #define GRENC_ISO_8859_1     3   /* standard in some Linux */
             #define GRENC_UTF_8          4   /* multibyte unicode, standard in newest Linux */
             #define GRENC_UCS_2          5   /* restricted unicode, 2 bytes, only BMP range */
           - The input driver must guess the system encoding and set an internal
             var. If unsure, the input driver will use the MGRXKBSYSENCODING
             environment variable.
           - The function "int GrGetKbSysEncoding(void)" returns the system
             encoding.
           - By default the input driver uses the system encoding in returned
             GREV_KEY events. Because now char con be a word (2 bytes) for
             UCS-2 encoding, or multibyte (limited to 4 in MGRX) for UTF-8,we
             need differ chars from special keycodes. So p2 is used to mark
             a special key with GRKEY_KEYCODE or to notify the number of bytes
             used in p1 for a char (1 to 4). The new cp1 char[4] menber event
             is a union with p1 to facilitate the use of UTF-8 returned chars.
           - The programmer can ask the input driver to recode the char to other
             of the supported encodings, before the event is returned with the
             new function "int GrSetKbEncoding(int enc)", so portable programs
             can be made for the four supported plattforms. It returns "1" if
             ok, or "0" else.
           - The function "int GrGetKbEncoding(void)" returns the actual encoding
             in use for the input driver.
           - A new character type "GR_UTF8_TEXT" is defined for use in the text
             drawing functions, but is to the programmer to use a font wiht the
             same encoding that the text to be drawn (by example a ISO-8859-1
             font is ok for UTF-8 text).
2008-01-10 Changes in test/fontdemo.c to add some info
2008-01-04 Optimizations to png2ctx.c, by Josu Onaindia.
2008-01-03 Some changes in test/keys.c to work in graphic mode
2008-01-02 Added button4 and button5 mouse events (the scroll whell), only
           the x11 version works by now.
2008-01-02 Moved the 1msec delay in GrEventRead to x11 and lnx versions of
           _GrReadInputs, because dj2 and w32 doesn't need it.
2008-01-02 Some changes in test/polytest.c to show a bug (to be worked).
2007-12-27 ----------- mGRX 0.9.8 released
2007-12-27 Added GrFloodSpill functions, by richard at dogcreek.ca
2007-12-01 vd_xwin: go to fullscreen if w,h == X resolution,
           GR_biggest_graphics is honored.
2007-12-01 vd_xwin: modes higher than X resolution are made no-present.
2007-12-01 Added videomodes for wide monitors in x11 and w32 drivers.
2007-12-01 Introduction of GR_PtrInt (integer of same length as a pointer)
           to suppress warnings (in fact errors) when compiling with
           x86_64 platforms. Backport from GRX 2.4.7 (M.Lombardi).
2007-11-07 Simplify the include/arith.h code.
2007-06-09 ----------- mGRX 0.9.7 released
2007-06-03 The djgpp delay function doesn't work on WinXP and W2000. It is
           corrected in the djgpp CVS version. We included the source for the
           new delay in src/misc. When a new djgpp version will be released
           this source code will be removed.
2007-06-01 The X11 driver now uses a pixmap for backin store and responds to
           Expose events. But it is a bit slowly. If you want a faster driver
           edit src/include/libxwin.h and set USE_PIXMAP_FOR_BS to 0.
2007-06-01 GrEventRead now waits 1 msec if no event is ready, so now MGRX
           programs doesn't load the cpu 100%.
2007-06-01 GrSleep calls XFlush in the X11 platform, to flush the graphics
           queue before wait.
2007-05-13 new version of test/speedtst.c more accurate
2007-04-30 ----------- mGRX 0.9.6 released
2007-04-30 After a security update in xorg 7.2, bitblt ram to video doesn't
           work in the x11 driver. We had a bug in the framedriver.
2007-04-24 ----------- mGRX 0.9.5 released
2007-04-21 Renamed sincos by gr_sincos in genellip.c, it's an internal function
           in gcc.4.1.2
2007-04-21 Changed CLK_TCK by sysconf(_SC_CLK_TCK), it's obsolete in gcc 4.1.2,
           reported by Bjorn Gustafsson
2006-05-15 Bug fixed in GrEventAddHook
2006-02-17 ----------- mGRX 0.9.4 released
2006-02-10 Better understanding of x86_64. Now by default an i386
           library is built even on x86_64 platforms. If you set
           BUILD_X86_64 to 'y' in makdefs.grx a x86_64 library is
           built, and the install target go to the lib64 subdir
2006-02-09 Some clean-up in mgrx.h, libgrx.h, etc
2006-02-05 ----------- mGRX 0.9.3 released
2006-01-30 Updated the programmer's manual from the GRX user's manual
2005-01-20 Changed GRX20DRV to MGRXDRV and GRXFONT to MGRXFONT
2005-01-20 Changed main include file from grxkeys.h to mgrxkeys.h
2005-01-20 Removed old Dos video drivers (herc, ati, etc)
2004-12-25 New input interface in place
2004-10-04 Removed far and near keywords
2004-10-04 Changed main include file from grx20.h to mgrx.h
2004-09-24 Added x86_64 support
2004-09-24 Removed addons (bmp, tiff and printing code)
2004-09-24 Removed svgalib support
2004-09-24 Removed LEFTSIDE CAST constructions
2004-09-24 Removed configure script
2004-09-24 Removed WATCOM support
2004-09-24 Removed Borland-C support
2004-09-24 Removed Pascal support
2004-09-24 Removed BCCBGI code
2004-09-24 Derived mGRX from GRX 2.4.7 p1
