********************************************************************************
*
* E M B E D D E D   W I Z A R D   P R O J E C T
*
*                                                Copyright (c) TARA Systems GmbH
*                                    written by Paul Banach and Manfred Schweyer
*
********************************************************************************
*
* This software and related documentation ("Software") are intellectual
* property owned by TARA Systems and are copyright of TARA Systems.
* Any modification, copying, reproduction or redistribution of the Software in
* whole or in part by any means not in accordance with the End-User License
* Agreement for Embedded Wizard is expressly prohibited. The removal of this
* preamble is expressly prohibited.
*
********************************************************************************
*
* DESCRIPTION:
*
*   Embedded Wizard NXP LPC Platform Package
*   * Graphics Engine (GFX)
*   * Runtime Environment (RTE)
*
*   This directory contains the source codes and/or libraries of the components
*   Graphics Engine (GFX) and Runtime Environment (RTE) used to run a GUI
*   application generated by Embedded Wizard on the NXP LPC target.
*
*   This file contains a description of additional platform specific details:
*   - Platform Specific Release Notes (Version History of GFX and RTE)
*   - Supported Platforms and Color Formats
*   - Test and Verification Notes
*
*******************************************************************************/

Getting started with Embedded Wizard Studio:
--------------------------------------------
  In order to get familiar with Embedded Wizard Studio and the UI development
  work-flow, we highly recommend to study our online documentation:

  https://doc.embedded-wizard.de

  Furthermore, we have collected many 'Questions and Answers' covering
  typical Embedded Wizard programming aspects. Please visit our community:

  https://ask.embedded-wizard.de

  Please use this platform to drop your questions, answers and ideas.


Platform Specific Release Notes (Version History of GFX and RTE):
-----------------------------------------------------------------
  Please read first the Embedded Wizard Release Notes, to be informed about all
  general improvements or changes:

  https://doc.embedded-wizard.de/release-notes

  The following section contains additonal platform specific changes, related to
  Graphics Engine (GFX) or Runtime Environment (RTE):

* Version 9.30
  - The Runtime Environment contains now an own optimized memory manager that
    is tailored for GUI applications on resource constraint embedded systems.
    The Embedded Wizard Heap Manager can now be used instead of TLSF.
  - The Runtime Environment supports now immediate garbage collection.
    By default this feature is disabled for compatibility reasons.
  - The Graphics Engine supports now lazy loading of bitmaps and discarding
    of bitmaps. These new features can be configured by using the new macros:
    - EW_LAZY_LOAD_BITMAPS
    - EW_LAZY_LOAD_BITMAPS_IF_ANIMATED_ONLY
    - EW_DISCARD_BITMAPS
    - EW_DISCARD_BITMAPS_IF_ANIMATED_ONLY
    - EW_DISCARD_BITMAPS_IF_NOT_USED_IN_RECENT_UPDATES
  - The meaning of the macro EW_MAX_SURFACE_CACHE_SIZE has changed due to lazy
    loading and discarding of bitmap resources. Now, EW_MAX_SURFACE_CACHE_SIZE
    defines the threshhold, when bitmaps are discarded from memory.
  - The Graphics Engine target specific files ewextgfx.c/h have been reworked:
    - Unified renaming (Gfx...)
    - The handshake with the display driver is redesigned and the new functions
      EwBspDisplayCommitBuffer() and EwBspDisplayWaitForCompletion() are used.
    - Destroying of surfaces will take care about current usage by hardware
      and flush outstanding operations.
  - The Runtime Environment target specific file ewextrte.c has been reworked:
    - The new Embedded Wizard Heap Manager is used to allocated/free memory.
    - EwGetTicks is now calling the function EwBspClockGetTicks().
  - Platform Package Libraries added for Keil MDK and IAR Workbench


* Version 9.20
  - The Graphics Engines for color format RGBA8888 and RGB565 have been enhanced
    to support the new bitmap resource formats RGB565 and Index8.
  - The support for the new bitmap resource format RGB565 can be excluded from
    the Graphics Engine code by using the new define EW_DONT_USE_RGB565_SURFACES.
  - The support for the new bitmap resource format Index8 can be excluded from
    the Graphics Engine code by using the new define EW_DONT_USE_INDEX_SURFACES.
  - The new define EW_DONT_USE_WARP_FUNCTIONS can be used to exclude the code
    of all scale, rotate and warp functions from the Graphics Engine in order
    to reduce the code size for simple projects.
  - The dependency to printf() function is removed: The function EwFormat()
    does not exist anymore and has been removed from ewextrte.c. The function
    EwPrint() is now part of the RTE itself and implements a subset of the
    printf() format escape sequences (%d, %u, %f, %s, %c, %x, %X).
  - The new function EwConsoleOutput() has been added to the extern RTE
    module ewextrte.c. The function is used to print the given message on
    the console. No additional formatting, etc. is needed.
  - The Garbage Collector within the Embedded Wizard RunTime Environment is
    completely redesigned and operates now iterative instead of recursive.
    As a result, the necessary stack size may be reduced and the performance
    of EwReclaimMemory() is improved.

* Version 9.10
  - Support of bidirectional text. The new operations to process bidi and shaping
    can be disabled by compiling the Graphics Engine with the defined macro
    EW_DONT_USE_BIDI_FUNCTIONS.
  - Size of Issue Buffer can be changed by setting the macro EW_MAX_ISSUE_BUFFER
    within the makefile or project. By default the value is 100.
    In order to save memory (1 issue allocates 64 bytes) the size can be reduced.
    For complex vector graphics with too much edges, the buffer size can be
    increased (1 issue stores 8 edges).
  - Support of double-buffered scratch-pad buffer. This mode makes it possible
    to prepare the content of one scratch-pad buffer, while the content of the
    other scratch-padd buffer is transferred to the display.

* Version 9.00
  - Support of vector graphics. The new operations to fill and stroke paths
    can be disabled by compiling the Graphics Engine with the defined macro
    EW_DONT_USE_PATH_FUNCTIONS.

* Version 8.30
  - The limitation for max. 256 pixel font height has been increased to 1024 pixel.
    To display such large fonts the glyph cache has to be large enough.
  - Text alignment algorithms (changed with V8.20) are reworked (bug-fix).

* Version 8.20
  - Support of synchronized single buffer update by using partial display update.
    This approach makes it possible to draw directly into the visible framebuffer
    without flicker or tearing effects (as long as drawing operation is fast
    enough).
  - Support of off-screen buffer is removed. Use new single buffer mode or
    double-buffering instead.
  - Usage of EW_FRAME_BUFFER_COLOR_FORMAT macros simplified.
  - Memory profiling feature is now always active - just add the function call
    EwPrintProfilierStatistics() within your main loop in case you want to get
    an overview of the current/maximum memory consumption.

* Version 8.10
  - The bring-up on a LPCXpresso54608 board is now described at
    https://doc.embedded-wizard.de/getting-started-lpcxpresso54608
  - Support for LPC54608.

* Version 8.00
  - Support for LPC4357.


Supported Platforms and Color Formats:
--------------------------------------
This Platform Package supports the following chipsets and color formats:

LPC          : LPCxxxx platforms
  + RGBA8888 : 32 bit color format with 8 bit red, 8 bit green, 8 bit blue
               and 8 bit alpha values.
  + RGB565   : 16 bit screen color format with 5 bit red, 6 bit green and 5 bit
               blue values.
  + Index8   : 8 bit index color format (global CLUT with up to 256 colors).
  + LumA44   : 8 bit color format with 4 bit luminance and 4 bit alpha values.


Test and Verification Notes:
----------------------------
This Platform Package Release was tested on the following environments:

Version          : 9.30
Platform Package : LPC - RGBA8888 / RGB565 / Index8 / LumA44
Chipset          : LPC54608
Hardware         : LPCXpresso54608
Operating System : FreeRTOS
Software Tree    : MCUXpresso SDK V2.6.0
Compiler/Toolset : GCC / IAR / Keil / MCUXpresso
Test Result      : o.k. - 13/11/19 - mli, msy

Version          : 9.30
Platform Package : LPC - RGBA8888 / RGB565 / Index8 / LumA44
Chipset          : LPC54628
Hardware         : LPCXpresso54628
Operating System : FreeRTOS
Software Tree    : MCUXpresso SDK V2.6.0
Compiler/Toolset : GCC / IAR / Keil / MCUXpresso
Test Result      : o.k. - 13/11/19 - mli, msy

