18
UTFT_GHL User Guide © 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 1 TABLE OF CONTENTS 1.0 Introduction Page 2 1.1 Background Page 2 1.2 New Development Page 2 2.1 Capabilities provided by UTFT_GHL Page 3 3.1 Configuration and setup for UTFT_GHL Page 4 4.1 Using UTFT_GHL Page 5 5.1 Windows Supporting Applications Page 6 5.2 Configuration of Arduino Flash_MultiFunction Page 6 5.3 Using Win_FontICManager Page 7 5.3.1 Using Win_FontICManager – add an image Page 8 5.3.2 Using Win_FontICManager – add an image continued Page 9 5.3.3 Using Win_FontICManager – add a font Page 10 5.3.4 Using Win_FontICManager – Restore Font IC default contents Page 11 5.3.5 Using Win_FontICManager – first time usage Page 12 5.3.6 Using Win_FontICManager – first time usage – additional machine Page 13 5.3.7 Using Win_FontICManager – first time usage – additional machine continued Page 14 5.4 Using Win_FontICManger2 (FontIC<->Folder) – Extract Page 14 5.5 Using Win_FontICManger2 (FontIC<->Folder) – Extract continued Page 15 5.6 Using Win_FontICManger2 (FontIC<->Folder) – Rebuild Page 16 5.6.1 Using Win_FontICManger2 (FontIC<->Folder) – Rebuild continued Page 17 6.1 Support Page 17 6.2 Contents of this package Page 17 6.3 Acknowledgements Page 17 6.4 Closing note from the author Page 18 7.1 Sales Page 18

UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

Embed Size (px)

Citation preview

Page 1: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 1

TABLE OF CONTENTS 1.0 Introduction Page 2 1.1 Background Page 2 1.2 New Development Page 2 2.1 Capabilities provided by UTFT_GHL Page 3 3.1 Configuration and setup for UTFT_GHL Page 4 4.1 Using UTFT_GHL Page 5 5.1 Windows Supporting Applications Page 6 5.2 Configuration of Arduino Flash_MultiFunction Page 6 5.3 Using Win_FontICManager Page 7 5.3.1 Using Win_FontICManager – add an image Page 8 5.3.2 Using Win_FontICManager – add an image continued Page 9 5.3.3 Using Win_FontICManager – add a font Page 10 5.3.4 Using Win_FontICManager – Restore Font IC default contents Page 11 5.3.5 Using Win_FontICManager – first time usage Page 12 5.3.6 Using Win_FontICManager – first time usage – additional machine Page 13 5.3.7 Using Win_FontICManager – first time usage – additional machine continued Page 14 5.4 Using Win_FontICManger2 (FontIC<->Folder) – Extract Page 14 5.5 Using Win_FontICManger2 (FontIC<->Folder) – Extract continued Page 15 5.6 Using Win_FontICManger2 (FontIC<->Folder) – Rebuild Page 16 5.6.1 Using Win_FontICManger2 (FontIC<->Folder) – Rebuild continued Page 17 6.1 Support Page 17 6.2 Contents of this package Page 17 6.3 Acknowledgements Page 17 6.4 Closing note from the author Page 18 7.1 Sales Page 18

Page 2: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 2

1.0 Introduction Congratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with a Font IC, which contains an assortment of Icons and Fonts facilitating a variety of impressive display features from your Arduino and backed with unparalleled assistance the likes of Sainsmart cannot provide! The Font IC is supported by an advanced library and supporting Windows applications written by me, Graham Lawrence (GHLawrence2000 on the Arduino Forum). Thank you for choosing ColdTears Electronics products!

1.1 Background ColdTears Electronics (CTE) is a Hong Kong based supplier of high quality TFT displays and Arduino shields. CTE’s eBay store is at ColdTears official eBay store. CTE supplies a variety of different sized displays based on various display controllers, some of which are supplied with an onboard SPI Flash Memory IC. This memory IC, also known as a “Font IC” usually contains an assortment of open source icons and ten sizes of a font called Bitstream Vera Sans or BVS. Using this Font IC to store fonts and images saves Arduino program memory and allows the images and fonts to be loaded faster on the display. A series of libraries prefaced with UTFT were developed by Henning Karlsen which allow the user to display simple text, lines, boxes, and other geometric patterns on the TFT displays for various suppliers but were limited or did not use the installed CTE Font IC. CTE did offer a library called UTFT_CTE to work with the installed Font IC but this library was not actively maintained as the Arduino IDE advanced. It was limited to the 10 sizes of BVS, only worked in LANDSCAPE mode, and did not provide user-friendly inventory of what images and fonts were loaded onto the Font IC.

1.2 New Development I began in June 2014 with a 5” CPLD display (without Font IC) and a 3.2” SSD1289 based display (without Font IC), so I wanted to populate my CTE TFT LCD/SD shield for Arduino DUE such that the contents of the Font IC would be available for ANY display I might decide to use. Fairly early on in the development process I was approached for help by the owner of a 3.5” R61581 based display (MASK0017 user id on the Arduino forums). Subsequently I was allowed to borrow it to modify my library to support his display also. Thank you Graeme! Through research, discovery, learning, and knowledge exchange on the Arduino forum, I developed this UTFT_GHL library, which provides many capabilities never before made available for Font ICs. UTFT_GHL supports CTE32, CTE35IPS, CTE50, CTE70, CPLD 4.3”, 5” & 7” using both Arduino DUE and Arduino MEGA.

Page 3: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 3

2.1 Capabilities provided by UTFT_GHL

- Improved Font/Image management o New structure for storage of fonts and images in memory on the Font IC resulting in

732,834 bytes of space saved from the original Font IC previously supplied by CTE o Windows GUI tools for adding new fonts and images to the Font IC memory and

visualizing which fonts and images are currently loaded on the Font IC o Bulk loading capabilities that reduces repetitive actions and supports maintenance of

multiple custom memory images that can be easily swapped to Font IC memory for a given device or application configuration

o New Fonts such as Arial, Chiller, Curlz, Mistral and many others besides BVS can be added or removed from the Font IC

- Improved Font/Image Presentation o Fonts/Images can be used in LANDSCAPE or PORTRAIT mode. o Fonts/Images can be drawn with or without transparent background. o Fonts/Images can be drawn rotated. o Fonts can be drawn LEFT, CENTER, or RIGHT justified. o Images can be drawn centred in both axes. o Width of text strings can be ‘measured’ allowing accurate placement of text.

- Backwards compatibility and Technically Efficient Drop-in replacement for UTFT_CTE, existing sketches will run un-altered*. Hardware writing to the TFT (MUST be CTE Mega or DUE TFT Shield). Hardware DMA reading of Font IC improved for DUE.

*UTFT_CTE Image numbers 275, 277, 279, 281, 283, 285 are now mapped to 238, 239, 240, 241, 242, 243 and will require the new UTFT_GHL library loading instead of UTFT_CTE.

Page 4: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 4

3.1 Configuration and setup for UTFT_GHL Install the UTFT_GHL library to Arduino\libraries folder following these instructions. If you have not already installed the UTFT library, you can download it from here. If you require touch functions, you should also download UTouch and UTFT_Buttons. DO NOT download UTFT_SPIflash. It is incompatible with your Font IC!

Page 5: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 5

4.1 Using UTFT_GHL Re/start the Arduino IDE. Go to File->Examples->UTFT_GHL->(ARM/AVR)->UTFT_GHL_Demo_Fonts Upload the sketch to Arduino, open Serial Monitor @115200 baud. You will see something like this :- Copy this to your UTFT_GHL.h file  #define BVS_13                244 #define BVS_15                245 #define BVS_19                246 #define BVS_22                247 #define BVS_28                248 #define BVS_34                249 #define BVS_43                250 #define BVS_56                251 #define BVS_74                252 #define BVS_112               253  Select the block of #define information using your mouse, then press CTRL C to copy it. In your Arduino/libraries/UTFT_GHL folder you will see UTFT_GHL.h. Open that file in your favourite text editor and replace the existing block of #defines by highlighting them and right mouse click and paste. Save the file. Now looking at the sketch, you will see a block of predefined display types :- //UTFT myGLCD(CTE32, 25, 26, 27, 28); //UTFT myGLCD(CTE35IPS, 25, 26, 27, 28); UTFT myGLCD(CTE50, 25, 26, 27, 28); //UTFT myGLCD(CPLD, 25, 26, 27, 28);  Uncomment your particular display. If your display is NOT listed, this library does not support it. However, CTE50 can be replaced with CTE70 as they are the same command set. Upload the sketch again and you should see a demonstration of some of the text functions now available to you. Now go ahead and run the remaining demos included with UTFT_GHL, enjoy!

Page 6: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 6

5.1 Windows Supporting Applications Supplied as part of this package, there is a Windows tool called ‘Win_FontIC_Manager.exe’. This is the main interface for adding new images and fonts to the Font IC and restoring the Font IC to its default state, for example, if the Font IC becomes full, or if you wish to start again with a different set of additional items. The Windows applications were written using Visual Studio 2013 in C++ and require the C++ runtime libraries from Microsoft, this package is included in the ‘Requirements’ folder. Simply run the ‘vcredist_x86.exe’ following the on-screen instructions. This package is applicable to x64 systems too. To make use of the Windows applications, the Arduino must be running the ‘Flash_MultiFunction’ sketch located in the ‘Arduino’ folder supplied with this software package. 5.2 Configuration of Arduino Flash_MultiFunction There is very little configuration involved, but you need to be aware of it to ensure successful operation of the Windows applications! Underneath the title panel, you will see this:- #define Serialport        SerialUSB       // <===== 'SerialUSB' for DUE native port  / 'Serial' for DUE programming port/AVR    #define Serialspeed       250000          // DO NOT change!! 250000 max for DUE Programming port and successful MEGA transfers. #define Flash_CS_Pin      52              // <===== CTE Shield Default for DUE 52    / CTE Shield Default for MEGA 45           

The only two items you need to change are ‘Serialport’ and ‘Flash_CS_Pin’. Serialspeed is no longer a user configurable item as the Windows applications are preconfigured to work at 250000.

- Serialport

If you are using a Mega, you will need to change this to ‘Serial’, which is also the case if using the Programming Port on the DUE. However, if you do have a DUE, I would highly recommend using the Native Port as it is so much faster. In this case ‘SerialUSB’ is the setting required. Some DUE models have problems with unreliable communication issues on the Native port. If you get an error saying ‘Arduino running Flash_MultiFunction cannot be found’, try pressing the reset button on the DUE and try again. If you still have the same error, unfortunately you will just need to use the Programming Port.

- Flash_CS_Pin

CTE supply two TFT/SD shields, one each for the Mega and DUE, the pin numbers on these two shields are different! The Mega shield uses pin 45 whereas the DUE shield uses pin 52. Set this accordingly.

Page 7: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 7

5.3 Using Win_FontICManager This is the main user interface to the Font IC Manager program.

The first thing you will need to do is select your display size, or the target size of the image you wish to use from the drop down box shown. Common sizes are included in Landscape and Portrait formats.

Page 8: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 8

5.3.1 Using Win_FontICManager – add an image Now you can click the ‘Open Image’ button to be presented with a standard File browser dialog showing common image types bmp, gif, jpg, jpeg, tif and png. Transparent images are not supported and you will receive a pop-up dialog informing you if your image contains transparency. Any size of image is allowed, as resizing to the size of selected display is possible as shown below.

Here we can see the original image size was 4608x3456 and that by pressing the ‘Resize to’ button, we now have a 640x480 image with correct aspect ratio for a target display of 800x480.

Now you just need to click the ‘Add to Font IC’ button for the image to be sent to the Font IC. The time this will take varies depending on size of picture and whether you are using Mega or DUE Native Port, for example 640x480 will take 35 seconds on Mega or 7 seconds on the DUE Native Port.

Page 9: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 9

5.3.2 Using Win_FontICManager – add an image continued When the image has finished uploading, the picture will disappear and you will be looking at this.

The index number is what you will need to draw your image on the Arduino, using the following commands:-

CTE_LCD.Load_image(265); CTE_LCD.Load_image(x, y, 265); CTE_LCD.Load_image(x, y, 265, angle, centreofx, centreofy);  The first command will draw the image centred in both axes, the second command will draw the image at a specified coordinate and the third command will draw the image at a specified coordinate, rotated by the angle and centre of rotation specified.

Now would be a good time to mention that all items contained within the Font IC are numbered sequentially, starting at index 1 without gaps representing not only images, but also Font and Wide Font types.

Page 10: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 10

5.3.3 Using Win_FontICManager – add a font To add a font, click the ‘Open Font’ button. This will open a standard file browser dialog showing files of the type ‘bin’ and ‘bin16’. The font will then be displayed like this:-

As you can see, the Font name, size and number of characters is shown at the bottom of the display area. To upload to the Font IC, the technique and end result are the same as adding an image, the index number appears and the font will disappear from screen. Once new fonts are added, you will need to follow the same procedure outlined in Section ‘4.1 Using UTFT_GHL’ to copy your new definitions into the library header file. Font files are available for purchase directly from me at a cost as outlined in the ‘7.1 Sales’ section of this document. Fonts of type TTF and OTF can be converted to virtually any size, if you have a non-standard font you would like me to convert, you will need to supply the TTF/OTF file. 720 pixels tall is the most possible for Arial. There is a small point to make here, you can request any size you wish, but I cannot guarantee the font will be EXACTLY that size. The resulting font will always be less, never more and usually only by 1 – 3 pixels, for example, Imprisha13 is not possible, the resulting size is 11 and several 74 pixel tall fonts come out at 73 pixels etc. If you request a font set, the sizes will be as close as possible to the standard BVS sizes (13, 15, 19, 22, 28, 34, 43, 56, 74 and112). Special requests considered by negotiation.

Page 11: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 11

5.3.4 Using Win_FontICManager – Restore Font IC default contents The last remaining feature of this application, is the ‘Restore Font IC default contents’ button, it does exactly what it says, it will restore your Font IC contents to the condition you received it. Regardless of whether you are using Mega or DUE, this will be a slow process! If you have a 128mb Font IC and it is full, this could take as much as 6 minutes!

Page 12: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 12

5.3.5 Using Win_FontICManager – first time usage Since the original CTE Font IC was stolen and sold by disreputable suppliers such as Sainsmart, measures have been taken to protect this system from copying. This means the first time you upload an image or font to the Font IC; you will be prompted to enter your Name and Serial number as supplied to you by CTE.

This will register the Font IC to the computer you are using to run Win_FontICManger. From then on, you will not be asked for this information again, unless you try to use a different computer. As supplied by CTE, you have a single licence permitting use on a single computer. If you now try to use Win_FontICManager on a different computer, you will see this:-

You will now have the option to ‘Add Licences’, which are available directly from me at a cost as outlined in the ‘7.1 Sales’ section of this document.

Page 13: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 13

5.3.6 Using Win_FontICManager – first time usage – additional machine Once you have received your additional licence key, you can go ahead and click the ‘Add Licences’ button. You are presented with the following dialog:-

Once you have satisfactorily entered these details, the next time you click ‘Add to Font IC’ button, you will see this:-

Page 14: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 14

5.3.7 Using Win_FontICManager – first time usage – additional machine continued The previous shot shows that two additional licences were purchased, allowing use of this Font IC on three computers in total. Activation is the same for an additional machine as the first machine. If you fail to activate before the ‘Tries Remaining’ counter reaches zero, the machine you are trying to activate will be permanently blocked, ensure this does not happen, as it is irrecoverable! If you think all of this is an unnecessary annoyance, you can thank Sainsmart for stealing what did not belong to them, which is why this is necessary! Thank you for understanding.

5.4 Using Win_FontICManger2 (FontIC<->Folder) - Extract This is the second Font IC Windows support application in the series, available at a cost as outlined in the ‘7.1 Sales’ section of this document.

NOTE! – Run as Administrator, otherwise you will get Access Denied errors. I am especially happy with this, as it makes life so much easier in two respects; not only does it allow you to see exactly what is held in your Font IC at any given moment, but it also allows you to ‘bulk add’ items too.

When you click the Extract to folder ‘Go’ button, you will get a standard folder browser dialog allowing you to choose any destination drive and folder of your choice. This is a slow process on the Mega; times are shown above for 128mb Font IC, correspondingly, six minutes for 64mb or three minutes for 32mb variants.

Once this process has completed, you will have a folder containing full size images and non-viewable but functional versions of your fonts as shown below.

Page 15: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 15

5.5 Using Win_FontICManger2 (FontIC<->Folder) – Extract continued

This image does not show the entire folder contents, but the actual folder does contain the entire Font IC, giving you ‘at a glance’ representation of exactly what is currently on the Font IC with all images being viewable and full size. The key point to note here is the folder in the top left corner called ‘Add new items here’. This is an understated bonus, as you can drop into it as many images (space permitting) as you wish. Multiple ‘.bin’ and ‘.bin16’ font files can also be dragged to this folder for inclusion in the next ‘Rebuild from folder’ operation. There is one very important point to mention; which is, if the images you drag into this folder have not already been appropriately resized, they will automatically be resized to fit an 800x480 display, anything smaller than 800x480 will be stored ‘as is’.

IMPORTANT! While it is possible and useful to delete items from the folder, you must NOT delete any of the original items 0001-0253! This WILL lead to problems and is irrecoverable.

Page 16: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 16

5.6 Using Win_FontICManger2 (FontIC<->Folder) – Rebuild When you have added the items you want included in your Font IC, simply click the Rebuild from folder ‘Go’ button, where you will get a standard Folder Browser dialog to select the Folder you wish to rebuild. The information panel will show the progress of the process like this:-

Page 17: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 17

5.6.1 Using Win_FontICManger2 (FontIC<->Folder) – Rebuild continued Once you see ‘Finished’, you can close FontIC<->Folder and you should run the Arduino Demo_Fonts sketch to update your font list in UTFT_GHL.h if necessary.

6.1 Support Please refer to my Demo sketches and UTFT_GHL.h for UTFT_GHL syntax when using the calls in your sketches. Any problems/suggestions/comments feel free to contact me on the Arduino thread related to the development of this library.. Further details, usage instructions and command summary are in the Technical Reference document. –As yet unwritten…

6.2 Contents of this package Software-Distribution\Arduino\Flash_Multifunction Software-Distribution\PC\Requirements\vcredistx86.exe Software-Distribution\PC\Win_FontICManager.exe Software-Distribution\PC\Readme.txt Software-Distribution\UTFT_GHL Software-Distribution\ReadMe!!.Doc

6.3 Acknowledgements A big THANK YOU to Jim(jnshadow) for all of his efforts testing the Library and utilities and with his wonderful efforts formatting this ReadMe.doc. A big THANK YOU to Graeme(Mask0017) for the loan of his CTE35IPS display in the early stages of the development of this Library. Thank you to ColdTears Electronics for the original UTFT_CTE from which all of this has grown.

Page 18: UTFT GHL User Guide - coldtears- · PDF fileCongratulations on your purchase of this ColdTears Electronics TFT product! Your product is fitted with ... UTFT_GHL User Guide 4.1 Using

UTFT_GHL User Guide

© 2016 UK/Worldwide All Rights Reserved Graham H Lawrence 18

6.4 Closing note from the author During the course of the development of this library and associated utilities, I believe I have addressed all of the shortcomings of the original UTFT_CTE library and added some nice additional features along the way. If however you think of anything else you would like to see included, I would be very happy to hear from you! Initially I started out making the enhancements to the UTFT_CTE library to relieve my own frustrations over the annoying lack of functionality it offered, but as UTFT_GHL has now reached such a level of maturity, I offer it to the wider Arduino audience. The time taken to develop this Library and its supporting utilities runs into many hours. Your support will ensure further development. Thank you for using my library! Graham Lawrence (GHLawrence2000) 31st March 2016

7.1 Sales See my website for details.