GraphLCD base package Revision History
--------------------------------------

2021-02-08: Version 2.0.3
- Remove usage of FcFini() to prevent race conditions with other users of
  fontconfig

2021-01-07: Version 2.0.2
- Remove non-standard "uint" file type which does not exist in some
  environments. Thanks to Conrad Kostecki!
- Fixed remaining compiler warnings

2021-01-04: Version 2.0.1
- Replace libvncserver-config with pkg-config to make vncserver driver work
  with later libvncserver versions. Thanks to Conrad Kostecki!

2020-08-14: Version 2.0.0
- If a required font file is neither in "FontPath" nor in the "fonts"
  subdirectory of "SkinPath", then (if available) fontconfig is used to search
  all common system font paths for the wanted font file

2018-11-10: Version 1.0.2
- Improved "trim" function which doesn't cause negative size_type values

2018-05-10: Version 1.0.1
- Fixed building against freetype 2.9.1

2018-04-08: Version 1.0.0
- New driver "st7565r-reel"
- New driver "usbserlcd". With this driver it is possible to diy an USB LCD.
  See also: https://github.com/M-Reimer/usbserlcd/
- branch "touchcol" merged back to "master"
- Tag name is now always passed if "GetToken" is called.
  This makes it possible to use graphlcd-base without bothering about token id's
- "alphacool" and "sdcmegtron" are now predefined entries in graphlcd.conf
- Makefile optimized for packaging

2011-05-01: branch touchcol, first commit
- glcddrivers changes / enhancements:
  - support for colour bitmap data
  - support for colours either by using pre-defined colour names or 0xRRGGBB / 0xAARRGGBB (though no alpha channel is supported yet)
  - adapted/added methods SetScreen(), SetPixel()-methods in base-class and driver-classes for new colour enabled bitmap data
  - added support for events (supported for now: simple touch events)
  - added support for requesting and setting driver features
  - added GetBackgroundColor(), GetForegroundColor() -> gets default back/foreground colour
  - fixed compiler warnings (missing parameters in printf(), ...)
  - dm140glnk: bugfix: changed type for vendor and product to 'signed'
  - serdisp:
    - added support for touch events
    - cut support for serdisplib version < 1.95 (-> simplifies code)
    - added basic support for GPIs (eg. enable/disable touchpad)
    - rotate only when graphlcd-setup says so
  - UTF8 should work fine but is not tested very well yet
  - vdr 1.3.x should be supported as well but support for it is deprecated and will be removed (-> cleaner code)
- glcdskin changes / enhancements:
  - improved update policies (update only display regions that require update) - w/o this displays like l4m320t would be unusable w/ graphlcd.
  - new objects / attributes / features for skins:
    - increased skin version to 1.1, version info is now verified before loading a skin
    - objects can now trigger actions (eg. when touching an object it may trigger a VDR 'Key'-event)
    - 'scrolltext' is deprecated and is now an aliases for 'text'
    - new object 'button'
    - new attribute 'valign': vertical alignment
    - attribute 'bgcolor': sets background colour for object (whereas 'color' sets foreground colour)
    - new attributes 'alttext' and 'altcondition' for object 'text' (if 'altcondition' is true, 'alttext' is evaluated and used)
    - scrolling/looping attributes for 'text': 'loop', 'scrollmode', 'scrollspeed', 'scrolltime'
    - new attribute 'default' for variables:
      shortcut for <variable id="name" value="value1" condition="somecondition"/> <variable id="name" value="value2"/>:
      <variable id="name" value="value1" condition="somecondition" default="value2"/>
      this will actually be stored in two variable entries (exactly as in the first version)
    - new entity 'condblock': combines variables that use the same condition
      <variable id="id1" condition="condition1" value="val1"/>
      <variable id="id1" value="valdefault1"/>
      <variable id="id2" condition="condition1" value="val2"/>
      <variable id="id2" value="valdefault2"/>
      can now be simplified to
      <condblock condition="condition1">
        <variable id="id1" value="val1" default="valdefault1"/>
        <variable id="id2" value="val2" default="valdefault2"/>
      </condblock>
      attention: variable-definitions in a condblock must not contain condition-attributes.
  - XML parser:
    - parser method XmlParse() optionally may pass an error string
    - text-objects may now contain combinations of tokens, constants, and variables
    - evaluation of variables in text-objects is now delayed from parsing time to runtime
  - attention: 'condblock' and attributes 'alttext', 'altcondition' are case studies for now and may be removed
- all changes/modifications/improvements that i've missed in this list

2011-02-13: version 0.1.9
- fixed compile error. http://www.vdrportal.de/board/thread.php?postid=959952#post959952
- changed graphlcd.conf back to original: http://projects.vdr-developer.org/issues/524
- removed unneeded LDFLAGS: http://projects.vdr-developer.org/issues/530

2010-11-02: version 0.1.7
- added futuba MDM166A driver from andreas brachold: http://projects.vdr-developer.org/issues/351
- fixed compiler warnings: http://projects.vdr-developer.org/issues/352
- added new attribute 'valign' (vertical alignment) for text objects.
- text-object: fix to avoid stumbling scrolling
- text-object: added support for alternative text / alternative condition
- glcdskin: bugfixing and improvements

2010-04-23: version 0.1.6_1
- added additional wiring for GU256x64-372 driver (thanks to mentox, http://www.vdr-portal.de/board/thread.php?postid=895721#post895721)

2010-03-01: Version 0.1.6
- added LDFLAGS_diff in Makefiles for better combat
- added gcc43-compat patch (include cstring.h/csdtlib.h)
- added support for Futaba DM140 vfd
- added support for option BRIGHTNESS (for graphlcd-dimming support); added correct intialisation for self-emitting displays (eg. OLEDs); added missing check for ancient serdisplib-version (mrwastl)

2007-02-25: Version 0.1.5
- added missing include path definition (thanks to Wolfgang Astleitner)
- replaced unsigned long long with uint64_t
- added missing includes
- increased VER_MAJOR for glcdgraphics library as interface changed in an incompatible way (thanks to Tobias Grimm)
- changed type of fbp (framebuffer pointer) to void*. Compare fbp against MAP_FAILED to test for success of mmap. This should fix a x86_64 compile error.
- ks0108: clear data lines after display refresh to fix problems with display contrast that occur under some conditions.


2007-02-04: Version 0.1.4
- added missing include of stdint.h in several files
- added -fPIC compiler option to library Makefiles
- graphlcd.conf: added missing "Driver=serdisp" in serdisp section (thanks to Jörn Hermann)
- graphlcd.conf: changed default value for sleep method to gettimeofday
- glcdgraphics library changes:
  - Added cBitmap::DrawSlope function that draws a slope of the given type
  - added class for loading and saving PBM (portable bitmap) files
  - made loading of GLCD files platform independent (hopefully)
  - added copy constructor to cBitmap class
  - removed the friend class stuff from cImage, instead added some functions to set members
  - new class cImageFile that acts as a base class for image format load/save classes like cGLCDFile or cPBMFile
  - removed const qualifier from cImage::GetBitmap
  - added added Invert method to cBitmap
  - added methods to set font parameter (height, ascent, ...) to cFont class
  - made loading of FNT files platform independent (hopefully)
  - return false in cGLCDFile::Open and ::Save when opening of file failed
  - added trim function to cut leading and trailing spaces from strings
  - added WrapText method to cFont class
  - fixed missing last line in cFont::WrapText
  - fixed WrapText when Height is zero
  - fixed font loading bug for graphlcd's FNT format
  - fixed missing addition of spaceBetween in cFont::WrapText that caused too long lines with some fonts
  - fixed loading of GLCD animations (thanks to Malte Schröder)
- glcddrivers library changes:
  - only config.h, driver.h and drivers.h are needed for applications
  - added driver for g15daemon (thanks to Mike)
  - added driver for noritake gu126x64D-K610A4 display (thanks to Alexander Rieger)
  - gu140x32: fix seqfault if fonts.conf missed (thanks to Andreas Brachold)
  - t6963c: added support for Serial wiring using an industry version with a serial to parallel converter (thanks to Torsten Lang)
  - avrctl: adapted to changed commands PC -> AVR
  - avrctl: implemented SetBrightness method
  - avrctl: changed type of some parameters to SetColData to uint16_t
  - avrctl: allow sizes below 256x128. Buffer sent to controller is still 256x128.
  - framebuffer: fixed compiler error on 64bit systems (thanks to Malte Schröder)
	- serdisp: updated serdisplib driver (thanks to Wolfgang Astleitner)
  - added simple network driver (not complete) that sends the current display content as and hey string to connected clients
	- link against libpthread
	- fixed some default values to be consistent with comments in graphlcd.conf
- tools changes:
  - convpic: adapted to changes related to new base class cImageFile
  - convpic: use classes from glcdgraphics lib for glcd file conversion
  - convpic: added pbm support
  - crtfont: use cFont class methods to save in FNT format
  - genfont: use cFont class methods to load freetype2 supported fonts
  - genfont: use cFont class methods to save in FNT format
  - showpic: call SetBrightness method
  - showpic: changed setting of brightness to use value from config structure
  - new tool lcdtestpattern to display a test pattern on a LCD (thanks to Alexander Rieger)


2006-01-15: Version 0.1.3
- Added a major.minor.micro version to the libraries starting with 1.0.0
- Moved usage of DESTDIR from serveral Makefiles to Make.config (thanks to
  Lucian Muresan).
- Moved Freetype2 dependency from Make.config to Makefile of libglcdgraphics
  (thanks to Tobias Grimm).
- Creating an additional symlink for the library files to be found during
  making the tools that need them (thanks to Tobias Grimm).
- Updated serdisplib driver (thanks to Wolfgang Astleitner).
- KS0108 driver: Added an alternative way of setting the display control lines
  (same as in old versions). It is selectable through graphlcd configfile
  parameter "Control".
- Using default values for width and height in case they are zero, too
  (thanks to Tobias Grimm).
- Added cSerialPort class.
- Added driver for my AVR controlled display.


2005-09-17: Version 0.1.2
- split off drivers from graphlcd plugin to GraphLCD driver library
  (libglcddrivers)
- split off graphics and font handling from graphlcd plugin to GraphLCD
  graphics library (libglcdgraphics)
- split off tools from graphlcd plugin to GraphLCD base package
- almost completely rewritten graphics and font handling
- added configuration file to hold the driver-specific options
- changed driver interface
- adopted the tools' code to use the new driver and graphics API
- glcddrivers: new driver noritake800 for Noritake 800(A) series
  displays (thanks to Lucian Muresan)
- glcdgraphics: fixed a NULL-pointer exception in cBitmap::DrawCharacter
  when skipPixels is equal to width of the character and SubBitmap
  returns NULL, which was not tested for (thanks to Malte Schröder for
  reporting this one)
- glcdgraphics: fixed a wrong return value in cBitmap::DrawCharacter in
  case skipPixels > 0 which prevented scrolling from working right.
- now compiles with gcc 2.95 and gcc 3.x
- added missing #includes
- new tool showtext: allows showing a text on the LCD, see
  README.showtext for details.
- glcddrivers: fixed a too early port release in sed1330 driver (thanks
  to Matthias Huber)
- glcddrivers: sed1330: added missing horizontal scrolling
  initialization. Now, there should be no displaced display any longer.
  (thanks to Wolfgang Astleitner)
- glcddrivers: Now serdisplib is loaded dynamically using libdl. So, no
  INCLUDE_SERDISPLIB define is needed any longer (thanks to Wolfgang
  Astleitner)
- glcddrivers: fixed gu256x64-3900 driver: Now sizes other than 256x64
  should work. (thanks to Detlef Ruge and Ralf Müller)
- glcdgraphics: fixed a bug in cBitmap::DrawText that prevented scrolling
  from working.
- glcdgraphics: fixed a bug in cBitmap::SubBitmap.
- glcdgraphics: changed the interface of DrawText and DrawCharacter of
  cBitmap class.
- glcdgraphics: extended font attributes to better support converted true
  type fonts. Also changed font file format to support this attributes.
- glcdgraphics: the lastChange attribute of cImage now is 64 bits wide.
- crtfont: extended it to support the new font attributes
- crtfont: changed file format of description files. Now the font
  attributes are given by its names, p. e. lineheight:20. Look in
  README.crtfont for details.
- new tool genfont: allows converting of true type fonts to GraphLCD
  fonts using freetype2 library. You have to uncomment HAVE_FREETYPE2 in
  Make.config to use it.
- added new fonts verdana and verdana bold in sizes 9 to 29 converted by
  genfont.
- glcdgraphics: Added additional type casts to std::min calls to make it
  compile on x86-64 (thanks to Stefan Bergler).
- glcddrivers: fixed a bug in serdisp.c. When using direct IO the port
  string was truncated (thanks to Stefan Bergler).
- glcddrivers: Added method cConfig::GetConfigIndex for getting a
  configuration by its name (thanks to Lucian Muresan).
- Added some $(DESTDIR) all over the Makefiles (thanks to Lucian Muresan).
- glcddrivers: sed1330: Added setting of CS line in 6800 mode (thanks to
  Wolfgang Astleitner).
- glcdgraphics: Added FreeType2 support based on patch by Lucian Muresan.
  - You have to set HAVE_FREETYPE2 in Make.config to enable this
  - Added some helper functions to GLCD::cFont class
- glcddrivers: ks0108: Improved timings: Made setting of display control
  lines like defined in the controller's data sheet. This fixes problems
  with some display types. Thanks to Matthias Breitbach for providing a
  LCD of that type.
- glcddrivers: gu256x64-3900:
  - Corrected calculation of m_nTimingAdjustCmd.
  - Added a test for RefreshDisplay config value to prevent a floating
    point exception to occur when it is set to zero.

