Change log for Graphics::Framebuffer

6.95   April 04, 2026

       Implemented a searchable manual in GitHub markdown format.  I suggest
	   simply reading it online on GitHub, or you can view it with:
	   
	       pandoc MANUAL.md | lynx -stdin

6.94   April 01, 2026

       So many opportunities for a joke here.  However, these are real.

       Fixed bug in "examples/vector-usa.txt".

       "examples/primitives.pl" Coded to check for the Virtualbox framebuffer
	   ID and it turns on forced flushing if found.  This seems to mostly
	   overcome the new VirtualBox weirdness.

	   Added sanity checks to Makefile.PL

6.93   March 29, 2026

       New images and installation assistance.

6.92   March 25, 2026

       Added a more helpful install process.

6.91   March 17, 2026

       The latest VirtualBox version (7.2.6) has totally messed up its
	   framebuffer driver.  Improved "_flush_screen" handling to improve
	   response to VirtualBox weirdness.

	   Added "--flush" option to the "primitive.pl" script for lessening
	   VirtualBox weirdness.

6.90   March 17, 2026

       Documentation improvements

6.89   March 12, 2026

       Fixed bugs in the Debian install script.
	   Code cleanup in the module.
	   Edited all README files.

6.88   February 14, 2026

       Removed the Q to escape for play_animation
	   Improved the examples/vector.pl

6.87   February 14, 2026

       Added forced buffer flushing.
	   Splash coloring for Perl and Acceleration modes changed.

6.86   January 26, 2026

       Bugs corrected in the C code by snakpak.
	   Also, speed increased.

6.85   January 19, 2026

       Minor blitting bugs fixed, thanks to snakpak.
	   Documentation updated for Linux specificity.

6.84   January 17, 2026

       Github user "snakpak" made changes to the C code for better
       compatability.  I have merged the code and sent it to pause for
       indexing.

6.83   January 09, 2026

       Corrected the DESTROY bug.
       Fixed "examples/dump.pl" to disregard "START_SCREEN" hash key.

6.82   January 04, 2026

       Modify tests
       Change how splash acts.

6.81   December 25, 2025

       Minor documentation changes.
       Changes to testing.

6.80   December 13, 2025

       More optimizations

6.79   December 04, 2025

       "pixel_size" removed.  Other optimizations.
       Added accelerated flood fill.  Works great.

6.78   November 28, 2025

       Added a manual index

6.77   November 26, 2025

       Optimized much of Framebuffer.c

6.76   October 11, 2025

       Added more code for FreeBSD (not yet working)

6.75   September 25, 2025

       Minor changes to POD documentation.
       Minor changes to Perl code.

6.74   September 14, 2025

       Added more code for FreeBSD compatibility.  It will still likely not
       work, but it's getting there.  I am no FreeBSD user and FreeBSD is
       what would happen if Ikea made an operating system.

       Changed the "Changes" file format to most recent first.

6.73   September 10, 2025

       Added further warnings about attempting to install on FreeBSD.

6.72   September 9, 2025

       Made changes to help with building on FreeBSD.

6.71   August 29, 2025

       Changed how the build process works and how the files in "src/" are
       used.

       Made some additions to the C code to eventually make way for 8 bit
       (monochrome VGA) mode.  Oddly enough, the C code will be ready before
       the Perl code.

6.70   August 29, 2025

       Overhaul of the "examples/primitives" script.

       Lots of optimizations in the module.  Things run a bit faster.

       Got rid of "Math::Trig".  I declare my own constant of "pi" now.

       Reorganized the flow of "Makefile.PL" to make CPAN testers happy.
       Frankly, I agree with them.

6.69   August 28, 2025

       Some CPAN testers complain about fatal on Makefile.PL, so I removed it.

6.68   August 27, 2025

       Added various markdown documentation changes to many files.

       Cleaned up some unneeded extra files.

6.67   August 27, 2025

       Simplified test script.

       Added screen restore feature if RESET is off.

6.66   August 26, 2025

       Improved the speed of flood fill.  Various documentation changes.
       Improved the help options of various examples scripts.  Added 'raw'
       option to color replacement routines.

6.65   August 25, 2025

       Improved the documentation options for examples/primitives

       Added a new script to the "examples" directory called "shapes.pl"

6.64   August 19, 2025

       Added Moire to primitives.pl

6.63   July 16, 2025

       Improvements to "examples/primitives.pl".  Converted README file to
       GitHub markup.

       Improvements to "Makefile.PL", hopefully to catch missing prerequisites
       much better.

       Test script improved.

6.62   June 19, 2025

       Minor changes to threaded Perl detection in Makefile.PL

       Diagnostic script "dump.pl" bugs fixed.

6.61   July 10, 2024

       While the ignore X-Windows check option was already coded into the
       module, the tests still did not give the option to ignore the check.

       Now "make test" will pay attention to any environment variables that
       act as options.  A list of these variables is in the text file
       t/Environment_Variables.txt

       As a reminder, the option "IGNORE_X_WINDOWS" => 1 is available for
       when creating a GFB object.

6.60   June 10, 2024

       More aliased commands added to cater to taste.

       Documentation updated and improved, typos corrected.

6.59   January 18, 2024

       Minor changes to font handling

       Added missing font documentation

6.58   November 16, 2023

       Improved the Makefile.PL script

       Tests completely revamped

6.57   October 29, 2023

       Added preliminary checks for a framebuffer device in the Makefile.PL
       stage.
          
       Added a better explanation of the 'make test' process and the caveats
       of perl versus C accelerated operation.

6.56   October 08, 2023

       Loading very small videos is supported, IF ffmpeg is installed.  The
       voodoo is to convert to an animated GIF file via ffmpeg, then load
       that file, and then show it.  Yes, there is a time penalty, but it
       does work.  There is NO SOUND, but you see the video.  FPS is hard
       set to 15 FPS.

       When viewing a video, it creates the file "/tmp/output.gif", loads
       that file, then deletes that file once loaded.

       It loads the video in its entirety, as an animated GIF.  Therefore,
       load only small videos.

       Example scripts full-screen logic has been reversed.  Full screen is
       now the default.

       Splash screen is off by default on the example scripts.  You still
       need to set "SPLASH" to zero for disabling it in your code.

       Included animated GIF example changed to a much smaller one.

       "dump.pl" improved to be even more helpful for diagnostics.

       Versioning added to the example scripts.

       "slideshow.pl" and "viewpic.pl" added the option "--small" to make it
       easy to diagnose bus errors.  It sets an artificial 320x200 screen.
       It's a shortcut for "--x=320 --y=200".

6.55   September 11, 2023

       Eliminated META.* files in the MANIFEST to avoid versioning issues.

       Made additions and corrections to all external text files and
       documentation.

6.54   August 29, 2023

       Update to "Makefile.PL" for easier to read output.  Also improved
       pre-processing.

6.52   July 12, 2023

       Terminfo method has changed and tput call needed to be changed for
       turning the cursor on and off.

       Examples given extra option to ignore the X-Windows check
       " --ignore-x-windows "

6.51   April 11, 2023

       Fixed a clipping width/height bug in clip_reset

       Added new parameter to ignore X-Windows check
       ( IGNORE_X_WINDOWS => TRUE )

       Fixed YouTube link and description in documentation

6.49   June 04, 2021

       Documentation modified to bring up-to-date.

       Bugs in Perl specific ARC routines fixed to match the degree start point
       as the C accelerated routines.

       Sped up the Splash screen for Perl only drawing.

6.48   April 14, 2020

       Pause was whining about the Makefile.PL script.  So it has been fixed
       to accommodate the whining.

6.47   April 13, 2020

       Slight change to the example scripts.  Added a new "screensaver.pl"
       example script.

6.46   December 10, 2019

       Fixed the prerequisite installation scripts.

6.45   December 9, 2019

       More documentation updates and improved the installation instructions.

6.43   December 3, 2019

       Made some documentation updates and fixed some examples

6.42   December 1, 2019

       Apparently the CentOS/Redhat issue was not quite fixed.  This update
       addresses that.

6.41   November 30, 2019

       CentOS/Redhat 8 has an empty fonts bug.  This fix accounts for it.

       The "examples/multiprocessing/threaded-primitives.pl" had a CPU hog bug,
       it's now fixed.

       Thank you Mario Roy for the heads-up on these issues.

6.40   November 4, 2019

       Fixed some installation documentation related to installing.

6.39   November 3, 2019

       Fixed a bug in anti-aliased lines introduced in 6.38

6.38   November 2, 2019

       Added the "GARBAGE" parameter to the "new" method.  It forces it to
       include extra garbage information in the object that typically just
       takes up memory and isn't normally used.

       Changed some hidden internal variables.  If you were naughty and used
       them instead of the proper method call, then your code may break.

       Changed how Splash and Mouse are exported.

6.37   October 22, 2019

       Because $VERSION is no longer exported by default, the example scripts
       got hosed.  They have been fixed.  Note, the MCE examples have been
       given the same fix, if needed.

       "pixel" and "get_pixel" return an additional "hex" field for hexadecimal
       color values.

       Removed a lot of "garbage" from the object that is created.

6.36   October 7, 2019

       $VERSION is no longer exported.  This caused issues with other modules.
      
       Multiprocesssing examples now have been moved to their own directory in
       examples.

6.35   Sept 9, 2019

       Yet another adventure in File::Map.  Now using the ":map" tag to import.

6.34   Sept 9, 2019

       Issues with different versions of File::Map and exporting unmap.  The
       above changes incorporated, but an alternate method of unmap used.

6.33   Sept 9, 2019

       RECALLED
       Fixed an issue with File::Map (thank you Mario Roy).

       Some documentation fixes.

       README.md and README updated.

6.32   August 25, 2019

       Adjusted the version numbers of the modules.

6.31   August 24, 2019

       Added "text_mode" and "graphics_mode" methods to make sure text does not
       interfere with display.

       Edited all examples scripts to behave better.

       Added a "threaded_template.pl" for those wanting to use threaded
       graphics.

       The Makefile.PL script has been improved, and now exits where there are
       missing prerequisites.

6.30   August 11, 2019

       Many changes to the example scripts and documentation.

6.29   July 17, 2019

       Fixed the threaded slideshow example script, as well as enabled the
       ability to show the filename.

6.28   May 1, 2019

       Fixed an error in get_pixel and pixel methods.  "replace_color" was
       having issues and this was the cause.

6.27   April 27, 2019

       Moved get_pixel and pixel to a more logical location for documentation

6.26   March 15, 2019

       Made some improvements to the slideshow example scripts.  These scripts
       now use the current path as the default, if none is passed to them.

       Also made attempts at making the "_console" methods workable... they're
       flakey still.

6.25   March 14, 2019

       Made improvements to the "examples/threaded_slideshow.pl" script.  It
       now waits on the splash screen correctly.  It also loads images while
       waiting to display the current one.

       Added alternate spelling for CENTER constants to allow for CENTRE as
       well (to keep the British and Canadian folks smiling).

       Updated the "examples/template.pl" script.

       Fixed the unable to exit bug for some of the "examples/" scripts.  I
       have no idea why they weren't exiting, but I force an exit with signal
       handlers that fix the problem (square peg, round role).

       Other bug fixes and improvements to the "examples/" scripts.

       Added rudimentary mouse handling routines.  This handler uses the
       "alarm" call of Perl to do mouse polling and drawing.  If you know how
       to do threads, then I suggest using your own thread that loops and
       updates shared variables based on the mouse status, rather than these
       routines.  However, these are here if you need them.

       Added a new "examples/mouse.pl" script to demonstrate the mouse.  Like I
       said, it is rudimentary.

6.24   March 13, 2019

       Some minor changes to the C routines to make stack operations more
       efficient.  Also fixed the order of the functions to prevent warning
       messages in compilation.

       Re-instantiated the previously depreciated active console identification
       methods.  Unlike the previous ways they were implemented, by being
       built into the module, they are now left to the user to exploit.

       The Makefile.PL was updated.

6.23   February 28, 2019

       Numerous bug fixes and optimizations for 16 bit color mode.

       Fills are now handled properly in 16 bit mode.

       Example scripts have been adapted to handle the fixes in 16 bit mode.
       Previously broken 16 bit code was bypassed, but now it works just like
       the 24/32 bit routines.

6.22   February 20, 2019

       Added new method "ttf_paragraph".  It enables more conventional printing
       a TrueType display, and even word wraps the text.

       Fixed the cancel issue in the "examples/primitives.pl" script, as well as
       added the "ttf_paragraph" test to it.

       Updated some documentation.

       Some issues still with 16 bit mode on texture or patterned filled
       objects.  Temporarily turning off C acceleration for those may minimize
       some of the issues.

6.21   February 20, 2019

       Fixed MakeMaker issues "Kwalitee" brought up.

       Fixed license labeling format in POD.

       Adjusted "_flush_screen" for updating the STDERR buffer as well.
 
       Made some tweaks to the "examples" scripts, especially the
       "threaded_slideshow.pl" script.

       Fixed greyscale image loading conversion.  No more weird yellow images.

       Fixes to the Imager based rotate routines.

       Fixes to compensate for the incorrect Imager compass coordinates for
       pies.  Imager was skewing them by 90 degrees for some reason.

6.20   February 10, 2019

       Fixed a code typo and updated the module's POD.

6.19   February 09, 2019

       Consolidated and improved some internal code.

       Fixed up the examples scripts.

       Added the new mode method shortcuts.

       This release is mostly an optimizing and clean up release.

       Downgraded the testing requirements a bit.

6.18   January 30, 2019

       Holy smokes!  The META files weren't updating.  No wonder some people
       were having prerequisite issues.

6.17   January 30, 2019

       Completely removed the double buffer feature.  The 16 bit drawing is
       sufficiently speedy now with the C acceleration code.  Besides, it was
       more trouble than it was worth.

       Color mapping optimized and corrected for some modes.

       'blit_flip' now does nothing, and was only for the double buffering.

       The splash screen has been corrected.  Now the "coin" displays correctly.
       The same screen is displayed for all resolutions.  If your screen is too
       small to read the splash screen, then just disable it.

       All sample scripts have been modified to accommodate the new changes,
       including the template script.

6.16   January 30, 2019

       Improvements to image animation in the module and in the examples
       scripts.  Some errors were accounted for.

6.15   January 20, 2019

       Minor changes to the Splash module.  Turned off alpha output for
       Nouveau framebuffer devices, and alpha appears to be slow for anything
       but one way writing.  This allows the logo to show much more quickly on
       Nouveau devices.

       Minor changes to the double buffer setup of the test scripts.

6.14   January 15, 2019

       Stopped using "Sys::Mmap" and switched to the more stable "File::Map"
       which is very thread friendly.  No need to allocate a separate object for
       each thread now.  One will do it for all just fine as the
       "threaded_slideshow.pl" example script shows.

       Which brings us to a new example script "threaded_slideshow.pl".  It is
       similar in how you run it as the single threaded "slideshow.pl", but it
       has the unique ability to divide the screen up by how many threads you
       request and dedicate a thread to that region and have a slide show
       managed by as many threads as requested.  Quite interesting to watch.
       It doesn't have the "--full" switch as it doesn't apply for how it works.

       "Makefile.PL" has undergone an overhaul.  It has a friendlier output and
       no longer throws a weird licensing error.

       The test scripts have been culled of all but the necessary, and the main
       test script given double buffering for 16 bit displays.  This doesn't
       affect 32 bit displays.

6.13   January 10, 2019

       Changes to the splash screen.

       Changes to the C plotting routines to make way for 1 bit graphics (not
       yet implemented).

6.12   January 08, 2019

       Ok, the last version was a fiasco.  Far too many changes, and they broke
       everything.  I'll proceed a bit more carefully from now on.  The codebase
       is restored back to the 6.10 state.

       Actual changes are the example scripts.  While finding the issues with
       6.11, I noticed that the example scripts did not support double-buffering.
       They do now, and should better run on Raspberry Pi machines if still in
       16 bit color mode.

6.11   December 23, 2018

       *** DO NOT USE THIS VERSION.  IT'S BROKEN ***

       I consolidated a lot of Perl and C code to make things more efficient
       and to make more sense (in the source code).  Blitting and converting
       for example.

       Modified the code to recognize pixel bit size instead of byte size.  I
       did this to make ready for adding single bit pixel sizes (for monochrome
       screens).  Someone asked if the module was capable of working in
       single bit monochrome, and currently it does not, but will be soon!

6.10   May 14, 2018

       Removed the C version of the circle fill routine.  It had bugs, and the
       Perl version was just as quick.  Go figure.
       
       Improvements made to the examples scripts.

       The 32 bit alpha routines have been optimized, and by optimized, I mean
       REALLY optimized.  They are considerably faster than they were before.

6.09   April 6, 2018

       Installation instructions update.

6.08   March 31, 2018

       Added some code to gather more information about the framebuffer and GPU.

       Fixes to the example scripts.

6.07   March 31, 2018

       Whoops, 6.06 was broken outside of the install environment.
       
       Had to add some clever code to the Makefile.PL script to still be able
       to have the C code separate.  For me it is easier to have it as a separate
       file while developing, instead of part of Framebuffer.pm as before.  What
       happens now is it joins the two files back into one when Makefile.PL is
       called.  I'm happy, because I can develop easier; and you're happy,
       because it works again.

       Also fixed "slideshow.pl" as that seemed to be broken.  It no longer uses
       threads.  It didn't need them.

6.06   March 31, 2018

       Moved C routines out of the Perl code and into its own file

       Further improved compatibility with all framebuffer GPUs.  The  "fbset"
       utility should no longer be needed as a backup.  Now C makes this call
       instead of Perl.  However, for those not able to compile the C routines,
       the older Perl logic is still there for compatibility.

       Moved text around a bit for Makefile.PL for easier following on small
       screens.

6.05   March 30, 2018

       Fixed crashes for Intel GPUs (and perhaps others)
       
       Updated documentation to help with troubleshooting.

6.04   March 10, 2018

       Cleaned up some documentation

       Removed code to check for current active console.  That's up to you
       now.

       Modified some of the examples scripts to work with switches.

6.03   December 21, 2016

       Added runtime diagnostics to more easily diagnose failures.

       It outputs all errors to STDERR.

       Runtime diagnostics ALWAYS are shown if there are catastrophic
       failures.

6.02   October 25, 2016

       Added the ability to include the alpha channel in gradients.  This
       means you can generate varying degrees of alpha as well as color.

       Splash screen modified somewhat to reflect the above.

       Lowered the Inline pre-requisite version requirement to 0.53.

       Caught a few bugs relating to gradients in circle and rounded boxes.

6.01   October 15, 2016

       Fixed some bugs in screen format conversions

       Added "vsync" method for systems with supported drivers that allow for
       waiting on vertical blank.  Note, Raspberry PIs do not support this,
       although calling it should not be an issue, as Raspberry PI's driver
       just make this a dummy call.

       Improved documentation on constants and fixed some examples to use
       constants instead of the onject variables.

       Added documentation for some screen format conversion methods.

       Changed the splash screen to better demonstrate most capabilities. 

6.00   October 10, 2016

       Version jump because of major build change.

       Inline::C is now a requirement.  It pre-compiles at module build like
       an XS module.

       FILE_MODE has been completely removed.

5.96   September 29, 2016

       Fixed the DOUBLE_BUFFER method, which was previously broken (hence why
       the release was pulled).

       Completely removed threads.  This breaks the "which_console" method.
       It just returns 1 always now, and other "_console" methods always think
       it's console 1.  In other words, these methods don't work anymore, but
       won't break your code.

       Detecting the current console is up to you now.  I suggest "fgconsole".

5.95   September 29, 2016

       Added automatice double buffer creation when "DOUBLE_BUFFER => 1" is
       passed during object creation.  If this is set to 1, it returns 2
       framebuffer objects in an array context.  The first is the physical
       framebuffer and the second is a 32 bit virtual framebuffer.

       Now all you need to do is draw to the virtual framebuffer and use
       "blit_flip" to send it to the physical framebuffer.  Double buffering
       is only needed for 16 bit displays.

       Also added the parameter "NO_THREADS" to disable the background thread
       that keeps "which_console" updated.  Some older Perls or very slow
       systems may benefit from this.

       THIS RELEASE WAS PULLED

5.94   September 20, 2016

       Added "RESET" parameter for initialization.  As part of this, it
       automatically sets up signal handlers to fix up the screen on
       CTRL-C exits (and normal exits).  The "RESET" parameter can disable
       this behavior.

       Improved the "dump.pl" script in the "examples" directory to better
       diagnose acceleration issues.

       Some improvements to documentation as well.

5.93   July 21, 2016

       Fixed a bug in GPU identification, and added "Virtual Framebuffer"
       for emulation mode.

       Added "GPU" internal variable for the name of the detected GPU.

       Modified "examples/primitives.pl" to update the screen using alarm
       event for 16 bit displays.  It auto-adjusts for slow Raspberry PIs.

5.92   July 18, 2016

       Made some changes to the examples.

5.91   July 16, 2016

       Removed the path info from the CPAN test script, as it was causing
       unnecessary troubles (causing C compilation to fail).
       
       Theoretically, running (even installing) via a SSH session is possible,
       but I make no guarantees as to its success, as what is allowed is
       mostly dependent on the SSH server's permissions granted to the
       user's session etc.  If you log in directly on the console, and
       everything works, then there is nothing wrong with this module, and
       your SSH specific troubleshooting will have to be your own.  However,
       with that said, make sure the user with which you are using SSH belongs
       to the "video" group and has read/write permissions to the
       "/dev/fb[0-31]" devices, specifically the fb device you need to operate
       on.  You also need to make sure that X-Windows is not active on the
       display, even if the display you are using the module with isn't mapped
       to X-Windows.

       When installing the module, you can bypass the test portion, if it is
       giving you troubles.  In all likelihood, the module will work if the
       installation criteria are met.  This means use:

           force install Graphics::Framebuffer

       if you are installing using CPAN.

5.90   July 09, 2016

       There have been numerous issues with 16 bit mode and color mapping.
       They mainly are a result of Imager not being able to work in a
       RGB565 color mode.  All operations have had to convert from RGB565
       to RGB888 and visa versa for each and every Imager operation.  This
       causes errors and artifacts, among other things.  They compound
       themselves the more operations done.  So... here's what I did:

       If you have a 16 bit display, you need to use double buffering.  How
       do you do that you may say?  Well, it's actually quite easy, and does
       not involve modifying legacy code to any great deal.  You need to
       have TWO instances of Graphics::Framebuffer instantiated.  One for the
       "real" actual 16 bit framebuffer, and another in virtual framebuffer
       mode with 32 bit (or 24) color mode (I think you see where I am going).
       You do ALL of your drawing, loading, etc on the virtual framebuffer
       object, and then "flip" it with the real framebuffer object by means of
       the new "blit_flip" method (examples in the documentation).

       What this does is do a single one-way 32 (or 24) bit to 16 bit
       conversion then blits it to the 16 bit screen for the entire screen.
       This is called "double-buffering".  Yes, generally things can be a
       little slower, but this is a fast compiled C routine, and is pretty
       darn fast even on a Raspberry PI2.  If you only call "blit_flip" for
       when a complete screen is drawn and not after each draw operation, then
       you can speed things up more.
       
       The "examples/primitives" script has been modified to exhibit this
       behavior for 16 bit displays.  I have not modified the threading
       example, as it's methods really do not need double-buffering.

       You do not have to do double-buffering.  All primitives, etc operate
       as they did before in 16 bit mode, but if you are working with fonts
       and images, then I highly recommend it.  Just remember, if you do use
       double-buffering, then do not draw to the 16 bit screen directly, as
       "blit_flip" copies from the virtual object, which only has screen
       data that has been drawn to it.  So do all operations (drawing,
       loading, blitting, etc) on the virtual display.

5.89   July 05, 2016

       NOT RELEASED

5.88   July 04, 2016

       Fixed a bug in the C code "c_filled_circle" routine causing failure
       to compile on some systems.

5.87   July 02, 2016

       Fixed the fill issues with all filled primitives.  It was basically
       anything that called the internal "_polygon_fill" routine that had
       troubles.

5.86   July 01, 2016

       Optimized some of the Perl code further.  Arc drawing uses math
       caching to give an extra speed boost.

       Added a "Diagnostic" mode for loading images.

       Also when loading images, if the module is running in accelerated
       mode, animated GIF transparency per frame is preserved.  This is to
       allow you to play it back in "mask mode" as it is intended to play
       GIFs anyway.

       The "examples" scripts have also been tweaked.

5.85   June 24, 2016

       It seems there are issues with the POSIX module not having the
       "lround" or "round" method for some installations.  So... I coded
       the rounding in Perl.  This affects the antialiasing.

       The 'examples/primitives.pl" script has been streamlined a bit.

5.84   June 22, 2016

       Fixed "ttf_print" font positioning.  Corrected splash generation
       to compensate.  Centering fixed too.
       
       NOTE:  Older code will have to be adjusted

5.83   June 19, 2016

       Added the "blit_move" method

       Optimized the C routines for even faster speed.  "blit_write" is
       most affected by this.

       Modified "primitives.pl" sample script to reflect the changes.

5.82   June 17, 2016

       Corrected the threaded perl checks.

       Tests reports failures much more clearly,

5.81   June 15, 2016

       Fixed the auto-detection for Inline-C compiling ability

5.80   June 04, 2016

       More detatchment from the Inline requirement (no longer required now,
       but highly swuggested).  I found some bugs where C code was still
       called and Perl code was missing (image flip for example).

       Install documentation improved.

5.79   June 03, 2016

       Inline has been made optional and not a prerequisite, as I considered
       there may be systems without compilers.  If Inline::C is available,
       then the C acceleration routines will be compiled at first runtime.

       Texture flood fill on some systems had issues, ignoring borders.  This
       should be fixed.

5.78   May 9, 2016

       MAJOR speed updates!

       The module Inline::C has been added to the list of prerequisites.
       Many of the time consuming methods have been accelerated via simple
       C language routines.  These C language boosts only function in the
       MMap mode.  File handle mode only uses Perl and Imager routines.
       Eventually file handle mode will be obsoleted, but not for a while.

       16 bit to 24/32 bit and 24/32 bit to 16 bit image conversion is
       accelerated and now no longer an issue for those with 16 bit
       graphics displays.  All blit_transform methods are full speed.
       TrueType font printing and image loading is faster as a result as well.

       MASK, UNMASK, and ALPHA drawing modes are now accelerated, and
       lightning fast, even for Raspberry PIs!

       Acceleration is a work in progress.  Not all methods are accelerated.
       My priority has been to accelerate the slowest methods and then work
       to the others.

       Because of the need for the Inline module, you WILL require a
       compiler and linker to be installed.  Basically the Linux development
       tools.  When installing the Inline module, its installer will tell you
       what you need, if you are missing anything.

5.77   April 27, 2016

       Some improvements to the build scripts.  Version checking was still
       too stringent.  I have loosened the requirements a bit.

5.76   April 26, 2016

       Build.PL and Makefile.PL was detecting the wrong versions (it was
       changed in the previous version in my heated attempt it getting
       past bogus testing).

5.75   April 26, 2016

       The test scripts have been rewritten to account for bad CPAN testers.
       Here's how you find out if tests were successful.  Did you see the GFB
       splash screen during the testing phase?  Congratulations, it works.
       If you didn't then makes sure your system meets the requirements for
       this module, and that is configured correctly.  The tests will
       almost always report success, but your own eyes are your means of
       determining success or failure.  If you need help, then you can
       contact me via my CPAN contact address.  I will be happy to help you.

5.74   April 26, 2016

       Added new methods "active_console" and "wait_for_console" to make
       semaphore style blocking easier.  This allows you to stop drawing
       until the proper console becomes active.
       
       If the install script detects a threaded Perl, then the module is
       configured to run a thread that monitors the current active console.
       This allows for blocking.  Blocking is enabled by default if the
       Perl is threaded AND the script 'fgconsole' is found.  Otherwise,
       console blocking is disabled, and all methods related to detecting
       the current console will always report console 1.
       
       NOTE:  The module does NOT require threaded Perl, but uses it, if
              it's being run from it.

       Corrected a spelling error in test script 'primitives.pl'.

5.73   April 24, 2016

       The Perl 'rotate' algorithm in the method 'blit_transform' has been
       corrected, optimized, and now no longer clips the output.  Rotations
       that are a multiple of 90 degrees use an optimized routine instead of
       the standard rotation algorithm.  Note, this routine only is used
       in 16 bit mode or when 'acceleration(0)' has been set.

       Image loading has been modified to automatically scale images larger
       than the output device (without clipping set).  This overrides any
       scaling values larger than the screen resolution.

       Most of the blitting issues with textures fixed.  Especially the
       mirroring issue with ellipses.

       Drawing mode "alpha" now works properly.

       'center' added to the method 'blit_transform' for easy centering of
       images.

       Greatly modified and improved the scripts in the 'examples' directory.
       In 'primitives.pl', most of the images are preloaded into memory.
       This reduces or eliminates waiting between stages.  Images used for
       textures, etc. are randomly chosen for most examples.

       New method "play_animation" plays animated GIFs loaded via the
       'load_image' method.

5.72   April 15, 2006

       New method "acceleration" added to toggle Imager assistance and get
       its status.  The unused method "acceleration_disable" has been
       removed.

       The method "screen_dimensions" now returns more information if called
       in a scalar context.

       The method "get_font_list" now returns an array reference of hashes
       matching the face name, if more than one match for the name is found.

       The "blit_transform" method now allows for 16 bit use, but it WILL
       BE SLOWER.  Why?  GFB has to convert your 16 bit bitmap data into
       24 bit before it can get Imager to work with it.  It then has to
       convert it back into 16 bit when Imager is done.  This is not a
       Road Runner friendly operation, especially with a slow CPU.  Rotate
       and flip use their own Perl native algorithms.  So they will be
       speedier for 16 bit (relatively speaking).  If you have the ability,
       use 32 bit color mode.  Things are so much faster.

       "flood_fill" acceleration x,y clipping offset fixed.  Although there
       seems to be another issue with this.  You may have to turn off
       acceleration for this method for the time being, if your system
       renders it funny.

       Demo image files in the "examples/images" directory optimized for
       space, so the tarball is smaller.  Also two images missing from
       the manifest added.

       More speed optimizations.  It seems "foreach my $var (0 .. 100)" is
       considerably faster than "for (my $var;$var <= 100;$var++)".  Where
       possible, this change was made, and a noticeable change it was.

5.71   April 15, 2016

       Oops, accidentally left a "use Carp" in there.  It's gone now.

5.70   April 15, 2016

       Significant upgrade!  Texture fills and hatch fills have been added.

       Documentation updated to reflect the new features.

       Fills for primitives has been optimized further.  It's a bit faster.
       This has the side effect of also decreasing the TrueType rendering
       time.

       Polygon fills are fixed, and so are the filled pies.

       "replace_color" has been significantly optimized.  It's faster in
       memory mapped mode and file handle mode.

       TrueType Font rendering now has the ability to rotate the text on
       an arbitray angle.  Box calculation isn't perfect.  Trying padding
       with spaces, should you have issues.

       Example scripts changed to demonstrate new features.

       Imager is preloaded "Imager->preload" for more thread friendly use.
       It didn't have issues before, but this is safer, and according to
       its documentation, it should be done.

5.63   April 11, 2016

       Some speed optimizations.  Nothing major.

       Removed the "sys/ioctl.ph" require.  It just was too flakey.

5.62   April 02, 2016

       Fixed the perl rotation code for 16 bit, but also added a switch to use
       it in other color depths via "perl_only".

5.61   March 31, 2016

       Split splash code off to "Graphics::Framebuffer::Splash"

5.60   March 20, 2016

       Added "sys/ioctl.ph" require.  Changed "screen_dump" to allow for JPEG
       etc.

5.59   March 18, 2016

       Forgot to document the updates

5.58   March 18, 2016

       Added method "which_console".  This method returns the current active
       console and the console when started.

5.57   January 28, 2016

       The method "screen_dimensions" was incorrectly returning the virtual
       resolution instead of the actual.

5.56   October 05, 2015

       Added antialiased line drawing.  'drawto', 'line', 'angle_line' and
       'polygon' is affected.  Antialiased drawing is slower, so it is an
       extra parameter to turn it on or off.
       
       Updated 'examples/primitives.pl' to demonstrate antialiased lines.

       Fixed a bug in 'blit_transform' for 'monochrome'.  It just wasn't
       working, although the method 'monochrome' was.

       Revamped the documentation.  Hopefully I got all the formatting
       errors and outdated parameters on some methods.

       The method 'ttf_print' now has a 'wscale' parameter for scaling the
       width of the text.

5.55   October 03, 2015

       Renamed a few color conversion methods.  Anything mentioning "RGB",
       "RGBA", or "16" are now "RGB888", "RGBA8888", and "RGB565"
       respectively.

       Improved 16 bit conversions.  Monochrome should be fixed for 16 bit
       now.  I still emphasize that you avoid 16 bit if possible.

       Some documentation additions.  System variables are listed.

5.54   October 02, 2015

       Added the ability to merge a smaller graphic on top of a larger one
       in "blit_transform" -> "merge".  It now takes into consideration the
       X and Y values for the top graphic.

       "examples/primitives.pl" has been updated to better demonstrate
       MASK, UNMASK modes and the faster alternative "blit_transform" with
       "merge".

5.53   September 30, 2015

       Made 16 bit monochrome work a bit better.  It's not perfect and
       yields a violet hue, but it's not as ugly as before.

       "primitives.pl" in the "examples" directory adapts for Raspberry PIs
       to prevent tests that take too long.

5.52   September 27, 2015

       Fixed RGB_to_16 routine.  It was affecting truetype rendering in
       16 bit mode, mapping the wrong colors.

       Improved the splash screen.  It adjusts to each resolution better.

       Added the YouTube channel to the README and POD manual.

5.51   September 25, 2015

       Fixed manifying POD weirdness for TODO

5.50   September 25, 2015

       Added PODs to all examples scripts, and cleaned up excisting POD in
       the module itself.  TODO has been cnverted to a POD file.

       Redesigned "primitives.pl", but gives the same output.

       Added "blit_transform" -> "merge" examples as alternatives to
       "MASK" and "UNMASK" drawing modes in "primitives.pl".

       Some speed optimizations were made to the module.  Nothing dramatic,
       but a help, nevertheless.

       Minor changes to the splash screen.

5.49   September 23, 2015

       Some code optimization and documentation improvements

       Added a new "get_fonts_list" method.  It returns a hash of all of
       the system fonts.

       Build.PL was broken.  I'm surprised nobody notified me of this.  It
       is fixed now.

5.48   September 21, 2015

       Fixed rotate to work properly for 16 bit mode.  Imager doesn't do 16
       bit RGB565, so this rotate has to be coded in Perl for 16 bit mode
       instead.
       
       Added the transform "monochrome" to "blit_transform".  It does the
       same as the "monochrome" method.  It was placed in "blit_transform"
       for consistency.

       The example script "primitives.pl" has been better coded to know
       if it's in 16 mode and leave out tests that don't work in that mode.
       I have also shrunk down the "MASK" and "UNMASK" graphics sizes to
       save some time in their rendered output, as they can be SLOOOW,
       especially on a Raspberry PI.

5.47   September 19, 2015

       Added system variable $obj->{'FONTS'}, which contains all of the fonts
       found in the system.  It is a hash in the format:

            'facename' => {
               'path' => 'path to font',
               'font' => 'file name of font'
            }

       The module now assigns the default font from a list of possible fonts
       that should be installed, instead of just "FreeSans".  This should
       alieviate the fonts issue when testing.

       The method "get_font_face" has been fixed, as it wasn't working as
       documented.

5.46   September 19. 2015

       I left "use threads" in when it was no longer needed.  I had been
       experimenting with using threads internally, but neglected to remove
       those lines when I trashed the idea.

       Also "use Config" was removed as well.  It was used previously in "new"

5.45   September 18, 2015

       Added "convertalpha" parameter to "load_image".  This finds all
       occurances of the background color and gives it the alpha value in the
       global background that is set.  This makes for overlaying via
       "blit_transform" in "merge" mode much easier, and pretty much replaces
       MASK and UNMASK mode for blitting (they will stay for compatibility).
       Note, alpha only works for 32 bit mode.  This parameter does nothing
       in 24 and 16 bit screen modes.

5.44   September 18, 2015

       Fixed a majorly annoying and long-term clipping bug with blit_write.
       This was causing corruption and over drawing for horizontal gradients.

5.43   September 16, 2015

       Fixed circle bug with XOR draswing mode.

       Fixed MASK and UNMASK drawing modes.  They previously didn't even work.

       Removed some old legacy unused code.

       Overhauled the examples scripts, especially "primitives.pl".

       Gutted the old testing scripts.  They were just for show, and never
       really were testing anything.  Due to Perl's taint mode, which test
       uses, it was more trouble than it was worth.  Now, if you see the
       splash screen, it works and is properly tested, sufficiently for
       installing.

5.42   September 14, 2015

       Fixed incorrect color mapping for horizontal gradient fills in 16 bit
       mode.

       Added a color mapping test for "primitives.pl".

       Changed how images are loaded for very low resolution screens in
       "primitives.pl".

5.41   September 05, 2015

       Fixed the animated GIF rendering issue with transparency.  No more
       ugly black splotches.

       Changed example scripts. Added more images with different
       characteristics.

5.40   September 03, 2015

       Fixed the Perl 5.22+ hard error in load_image while checking for
       Imager based errors.  Instead of "defined(@Img)" I changed it to
       "defined($Img[0])".  Which is functionally equivalent to what I
       need to check, as the first element needs to be defined anyway.
       This should make new Perls happy.

5.39   September 03, 2015

       Fixed a time bug on primitives.pl that showed up on slow machines.

5.38   September 03, 2015

       Fixed load_image to actually work with center parameter.

       load_image now loads images with multiple frames (animated gifs).

       Added new method "blit_transform", which rotates, scales, flips, and
       merges blit images.

       Update the "examples" scripts to show off new methods.

5.37   August 31, 2015

       Fixed the 'angle_line' bug.  It just plain wasn't working right.  Now
       it is.

       Added the 'last_plot' method to return the current X,Y cursor position.

       Added an 'angle_line' call to the "primitives.pl" script.

5.36   August 29, 2015

       Changed the Build.PL and Makefile.PL scripts to be more informative
       and check for 'fbset' as well.

       Removed the test 01-environment.t script.  It was causing far too much
       trouble with automated CPAN tester bots (I hate getting CPAN Tester
       failure emails).

       The example script "mmapvsfile.pl" now actually makes a recommendation
       on which mode to use for your framebuffer device, as some SPI
       connected TFT devices actually work much faster in file handle mode
       instead of memory mapped mode (go figure).

5.35   August 28, 2015

       Improved cursor show/hide in clear_screen/cls.

       Added more tests to primitives.pl.  Made slideshow.pl show on all
       framebuffer devices on the system automatically.

5.34   August 26, 2015

       Horizontal gradients are now allowed (in addition to the vertical).  See
       the documentation for details.  Surprisingly, this draws faster on some
       primitives.  It's not perfect yet though.  Polygon fills seem to have
       some issues.

5.33   August 26, 2015

       Improved the IOCTL detection code further.  It just goes to fbset if it
       gets confused.  (#@$%@# C structures)

       Added further documentation on installation and troubleshooting.

       Added a disagnostics script call "dump.pl" in the "examples" directory.
       I may ask you to send me the output of this, if you contact me for help.

5.32   August 25, 2015

       Fixed some typos

5.31   August 25, 2015

       Re-wrote the algorithm that retrieves the framebuffer ioctl structures
       Different CPU types really throw this off, and attempting to use c2ph
       shows that c2ph is broken.  Hopefully this algorithm works.

       Included further install documentation, as it seems installing Imager
       from CPAN can result in a useless Imager if the necessary libraries aren't
       present ahead of time.

5.30   August 21, 2015

       'image_load' now allows you to define the type of scaling to use, if
       the image is to be scaled.

       A few minor changes to the example scripts.

5.29   August 20, 2015

       Documentation changes

       Improved a couple of the example scripts

5.28   August 20, 2015

       The polygon fill has been completely rewritten.  It has one minor
       requirement though, that all polygons need to be drawn with their
       points in a clockwise direction.  Keep that in mind and filled
       polygons will look great.

5.27   August 19, 2015

       Fixed POD errors

5.26   August 19, 2015

       Fixed image load routine.

5.25   August 18, 2015

       Added assign colorspace ability to emulation mode.  No longer is it
       just RGB.  You can define it yourself.

5.24   August 17, 2015

       Mostly documentation updates.

       'threadtest.pl' was no longer showing what each thread was doing.  It
       must have been related to the buffering fixes for the graphics.  Doing
       a flush on STDOUT seems to have fixed it.

5.23   August 16, 2015

       I fixed one last clipping bug in horizontal line drawing and the top
       of the screen.

5.22   August 14, 2015

       I somehow reintroduced some clipping errors I had previously fixed.
       Well, those are fixed once again.

5.21   August 14, 2015

       Modified clear_screen a bit.

       Made changes to the test and examples scripts.

5.20   August 14, 2015

       Fixed the color mapping for the TrueType font rendering.  This was
       most obvious in 16 bit modes.  However, because of the complexities
       in this process, text rendering for 16 bit modes is slower, as it
       has to convert the 24 bit output of Imager into a 16 bit image to
       then blit to the screen.  I will see if there are optimizations I can
       do for this in the future.  Meanwhile it works.

       Rounded box rendering has been fixed.  It was showing an error in the
       right side of the boxes mostly.  This is no longer an issue.

       Fixed the splash screen to show something coherrant on very low
       resolution displays, like adafruit displays for example (96x64x16).

       I have also forced buffer flushes on the screen filehandle.  It was
       buffering the drawing, which was leaving artifacts and driving me
       crazy.  Fortunately, this doesn't affect speed, as I don't tell it to
       flush the buffer until after the entire primitive is drawn.

5.19   August 13, 2015

       Replaced some for[each] loops with map for just that slight boost
       of speed.  Every optimization helps.

5.18   August 13, 2015

       Moved the images into their own directory

       Modified the scripts to work with the images.

5.17   August 13, 2015

       Removed MALI and LINE_PADDING parameters.
       
       Byte aligning helped figure out the driver paramenter structures.

5.16   August 13, 2015

       Fixed color mapping for ttf_print

5.15   August 12, 2015

       Added a real test pattern to image tests

5.14   August 12, 2015

       Hardened memory mapping.

       If mmap fails more than twice, it now just switches to file handle mode.
       Apparently when mmap fails, in some environments, the file handle
       disappears as well.  Attempts are also made to recover the file handle
       too.

       Tests now check to see if run in X-Windows.  Naughty naughty those of
       you not reading the instructions!  I don't like receiving CPAN reporter
       errors when the error is not reading the instructions (wink wink).

5.13   August 11, 2015

       More fixes to line drawing and blitting routines.

       Made test scripts completely resolution independent.  They should
       display sane graphics for even the smallest displays.

5.12   August 11, 2015

       Improved color replace.  It's a lot faster for clipped mode.

       Modified the test scripts to dynamically adjust to the resolution of
       the device.  This way the tests look fine on all devices, even tiny
       96x64 OLED devices.

       I was handling hardware acceleration incorrectly, which is why it
       didn't work (duh).  Right now it's just turned off.  It requires
       Inline C code, and I am not prepared for that yet.

5.11   August 10, 2015

       Fixed a POD error

5.10   August 09, 2015

       Fixed a bug in xoffset calculations.

5.09   August 09, 2015

       Updated the documentation.

       Updates to set_color and related methods

5.08   August 08, 2015

       Ugh, I left some debug code in one of the examples scripts.

5.07   August 08, 2015

       Fixed the 32/24/16 bit conversions for image loading.

5.06   August 08, 2015

       Documentation for 'load_image' was incorrect.  'load_image' returns
       a structure containing the image for display with 'blit_write'.

5.05   August 08, 2015

       Fixed load_image, and added color remapping as well.

5.04   August 06, 2015

       Optimized circles and boxes with rounded corners... by a lot.

5.03   August 05, 2015

       Improved the IOCTL handling.  A lot of work there.  Still can't figure
       out why Mali and Nouveau are not giving the needed information to
       properly draw.  The size of the framebuffer is improperly reported by
       the Mali driver, and the size of a line is improperly reported by the
       Nouveau driver.  It seems Nouveau requires an additional 192 bytes per
       line.,, weird.

       So, to compensate for weirdness, I added another option to the 'new'
       method, LINE_PADDING.  With this one and MALI, I hope I have the quirks
       covered.

       Optimized the rounded box algorithm for solid fills a bit more.

       Changed the splash screen a bit.

       Changed the examoples scripts to fall in line with the changes.

5.02   August 03, 2015

       Discontinued "cubic_bezier' and replaced it with 'bezier'.  It was so
       young, but this needed to be done.  It will still work, but I don't
       suggest continuing to use it.  It's now just an alias to 'bezier'.

       New 'bezier' method can create complex multi-point curves and shapes.
       If a closed shape, it can be filled too.

       Module prerequisites changed.

       Optimized rounded corner box drawing.

5.01   August 03, 2015

       Fixed colorspace handling.  Whether your video card is RGB or BGR (or
       anything else), the module handles it fine.  Also, 32, 24, and 16 bit
       color modes are fully supported now.  Note, 16 bit is a bit slower due
       to the need for bit shifting.  So I recommend 32 bit.

       Color replace (replace_color) is now fixed, and quite a bit faster.
       Super-fast if you do it without clipping (clip_reset).

       More code optimizations have been added for speed.

       cls/screen_clear have been changed a bit to be more effective when
       clipping is off.  You can also enable/disable the console cursor if
       you pass 'ON' or 'OFF' to them.

       Splash screen contains info on the video card, and if hardware
       acceleration is used.  It also indicates which color order RGB are
       (look at the 'GFB' in the upper left circle, they are colored
       according your video card's order).

5.00   July 31, 2015

       Major version update.

       So many things have been added and optimized, that it warrants a full
       version number upgrade.

       'replace_color' is VERY fast if clipping is reset (off)

       'pie_arc' has been changed.  It uses the same fill routine that the
       polygon fill uses.  Thus it draws a lot faster with no more gaps.
       Granularity is not as important.  The value of 0.01 for granularity
       should work for most uses (unless you have a 4K screen).

       'fill' Is a lot faster, and uses considerably less memory now.  I
       knew I'd get it down.

       New 'monochrome' method that takes any image data and makes it
       greyscale.  Using it with the blit methods should be handy.

       TrueType font rendering is improved.  It has a default font setting,
       which you can change when you instantiate the framebuffer.  It also
       takes a new parameter 'wscale' to scale the width of the text.  It
       takes decimal values between 1 (inclusive) to 0 (exclusive).  1
       is normal, and smaller values squeeze the text.

       Color conversions are a bit better for 16 bit framebuffers.

       Added 'cubic_bezier' curves!  Yes, you can be a spline master now.

       More friendlier named methods that are aliases to others.

       Due to the extra features, two more prerequisite modules are
       required.
       
       On that note, I removed the need for Switch.pm. It turns out it's
       flakey and starts to give bizarre errors, not to mention I realized
       it has a performance penalty. So yes, this module is a little bit
       faster now as a result.

       Boxes can have rounded corners in frame, filled, and gradient
       filled modes, if you desire.  Just add the parameter 'radius'
       to the method call.

       Polygons with rounded corners are not ready.  I am still having
       trouble with them, but they will be added eventually.

       This new version comes with a splash screen, which can be turned off.

       The scripts in the 'examples' directory have been updated to reflect
       the new additions.  They should be very helpful in getting you
       started.

       Please read the manual for info on the new additions.

4.24   July 23, 2015

       Vertical Gradents for boxes, ellipses, circles, and polygons
       added.  See the documentation for details.  See the "examples"
       directory for... well... examples.
       
       Polygon fills fixed.  No more gaps.  Go easy on the complex
       filled polygons though.  Sometimes you get better results by
       making a complex filled polygon out of smaller simple ones.

       Updated the examples with up-to-date tests.

       Added "UNMASK_MODE" to the documentation.  Sorry about not having it
       in there in the first place.  I also added the shortcut method
       "unmask_mode".

       Added "angle_line" method for drawing lines at specific angles.

4.23   July 21, 2015

       Modified the testing to stop failing too easy.  It's really not
       catestrophic if a test fails.  Testing kind of interferes with
       the output anyway.

       Consolided the tests into one single "primitives" test.

       ARM Mali GPUs now work.  I found the problem was the framebuffer
       driver was returning some bogus data, and was throwing off the
       calculations for drawing.  Which caused crazy numbers to be
       sent to the mmap call, and thus fail.  Now an override can be
       sent when initializing the module to fix this.  Yes, this means
       that this module now works on the Odroid XU3!

       The scripts in the "examples" directory can be put into MALI mode
       by simply passing "mali" on the command line.

       I added a boxfill for hardware accelerated cards.  It's automatic
       when called by box/rbox in the API.  It only works with filled
       boxes in normal and XOR mode.

       If hardware accelerated filled boxes aren't working, then you
       can disable them by setting (assume $fb is your object variable)
       $fb->{'accel_flags'} = 0

       Oh, and blitcopy is hardware accelerated in normal mode only as
       well, if your video card supports it.

4.22   July 21, 2015

       I added a new mode to the framebuffer engine.  Typically the module
       uses a memory mapped method to draw to the framebuffer.  It's fast,
       but on some systems, this may be unstable.  In such cases, you have
       the option of telling the drawing engine to use a file handle mode
       instead.  File handle mode is a little slower, so use this mode
       only if necessary.  See the manual for specifics.

4.21   July 16, 2015

       Ugh, I left "Data::Dumper::Simple" in the previous version.  Build
       was borking on machines without it.  Sorry folks.

       I try to leave out all debugging code to keep the module as fast as
       possible, but I missed this one.

4.20   July 16, 2015

       Removed the harmless leftover SCREEN2 code.  Since that variable no
       longer existed, the code skips by it.

4.19   July 16, 2015

       Fixed the POD errors on test.  I could swear I tested that.  Oh well.

4.18   July 14, 2015

       Added new arc drawing methods.  See the POD docs (man) for details.

4.17   July 14, 2015

       Fixed bugs as a result of some typos.  Sorry about that.
       This affected the draw_arc and ellipse routines.
       
       Made poly arcs draw with lines instead of single pixels.  That fills in
       the errors left by high granularity.
       
       Added the constants 'ARC', 'PIE', and 'POLY_ARC' to make drawing arcs
       easier to code.

4.16   July 14, 2015

       Bug fixes

       Fill is now fixed.  This sucker still uses stack memory like it's going
       out of style.  You have been warned.

       Filled polygons now, as long as they aren't overly complicated, and the
       borders do not cross.  It uses a history buffer when drawing and then
       uses it to draw a series of horizontal lines to "fill" the polygon. This
       fill is very fast as a result.

       'line' added for an alternate way of drawing a line.  It's essentially
       a combination of plot > drawto under the hood.

       Warnings have been completely turned off.  We don't want warnings to
       mess up your pretty graphics.  Crashable code is in an eval, so who
       cares?  Generally warnings begin happening when Perl has done a
       variable garbage collection, and the memory mapping to the framebuffer
       is borked.  Fortunately, the module now recovers from this and remaps
       it.

       Clipping is quicker and more robust.

       Documentation has been updated / fixed where appropriate.

4.15   July 07, 2015

       Optimizations!

       I have optimized the draw_arc routine, and in the process made it
       properly work with XOR mode as well.  It only draws what it hasn't
       drawn before.  Which makes it quite faster (although still not a speed
       demon).

4.14   July 07, 2015

       Fixed borked plot test.  Functionality of the module is fine.  The test
       was broken.

4.13   July 06, 2015

       Changed the tests to only test against a memory buffer.

       The tests get screwed up by the Test::Harness' output (which can't be
       squelched apparently).  So instead of testing on the real framebuffer,
       I force the tests on a pseudo memory buffer.

       I believe I have fixed the clipping issues, especially the ones with
       filled ellipses and circles.  It was related to blit_write.

       There are some minor optimizations, although likely not obvious.

4.12   July 05, 2015

       Minor POD fix

       There was a POD error that caused it to fail testing, although it would
       have worked fine if installed.

       No new functionality in this release, just that one issue fixed.

4.11   July 03, 2015

       Numerous changes.

       Changed ttf_print box_mode to return everything needed to call itself
       again.

       Added a 'COLOR_ORDER' setting to the "new" parameters.  1=RGB and 0=BGR.
       The default is BGR.

       Added more comments to the code

       Added 'reset' as an alias to 'attributes_reset'.  Just for people with
       different tastes.

       Hardened the code further against undefined values.

       Added more documentation

       Tested on Raspberry PI2, and works great!  Odroid XU3, not so much...

       Circle/ellipse clipping weirdness remains.  I should have that addressed
       in the next release.

4.10   May 10, 2015

       Added the ability to customize the framebuffer file path.
       Thanks Markus Maier.
       
       Added aliases to "set_mode"

       Some minor documentation fixes.

4.09   November 26, 2014

       Added more FBIOCTL flags to make ready for future hardware
       accellerated updates.  No promises here, but heck, this
       entire module was an exercise in "can it be done in Perl?"
       
       Also fixed a code comment that was mislabeled.

4.08   July 25, 2014

       Added additional information to the documentation for the new
       emulation mode.  No actual code changes made.

4.07   July 23, 2014

       Fixed calculation error in string size allocation for emulation
       mode.

       Fixed fill 'flood' typo.

       Fixed pixel class documentation.  It was incorrect.

       Added more tests for most used methods.

4.06   July 19, 2014

       Added better testing

       Added framebuffer emulation mode for test running on systems
       without a hardware framebuffer.  It draws to a 640x480x32
       virtual screen in memory.  You can dump this screen to a file.

4.05   April 14, 2014

       Documentation updates.  POD section revamped.

4.03   March 20, 2014

       Minor changes to the CPAN package

4.02   December 29, 2013

       Public CPAN release.  This is considerably more advanced
       than the one distributed as part of the media player.

1.00   2004

       First version, released privately only, as part of a Perl
       media player project called "SuperSparky".
