MCUXpresso_LPC55S69/boards/lpcxpresso55s69/ew_gui_examples/ew_gui_animated_list/ewconfig.h

384 lines
21 KiB
C

/*******************************************************************************
*
* 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 is delivered "as is" and shows the usage of other software
* components. It is provided as an example software which is intended to be
* modified and extended according to particular requirements.
*
* TARA Systems hereby disclaims all warranties and conditions with regard to the
* software, including all implied warranties and conditions of merchantability
* and non-infringement of any third party IPR or other rights which may result
* from the use or the inability to use the software.
*
********************************************************************************
*
* DESCRIPTION:
* This file contains general configuration settings for the target system,
* like memory ranges and display parameter and configuration settings for
* the Embedded Wizard Graphics Engine and Runtime Environment.
*
*******************************************************************************/
#include "ewdef.h"
#ifndef EWCONFIG_H
#define EWCONFIG_H
/* ******************************************************************************
Following macros configure the application.
PLATFORM_STRING - This macro contains the name of the development platform.
EW_USE_TERMINAL_INPUT - Flag to switch on/off the support of keyboard events
received from a connected serial terminal.
EW_CPU_LOAD_MEASURING - Flag to switch on/off the measuring of the CPU load
caused by the GUI application and all graphics operations. The CPU load can
be read by using the function EwBspClockGetCpuLoad().
RTC_MINIMUM_TIME, RTC_DEFAULT_TIME - Macros to define the initialization value
of the realtime clock. The value RTC_DEFAULT_TIME is used as start value for
the RTC in case that it is not already initialized with a value higher than
RTC_MINIMUM_TIME.
**************************************************************************** */
#define PLATFORM_STRING "LPCXpresso55S69"
#define EW_USE_TERMINAL_INPUT 0
#define EW_CPU_LOAD_MEASURING 1
#define RTC_MINIMUM_TIME 978307200 /* 2001-01-01 0:00 */
#define RTC_DEFAULT_TIME 1605193200 /* 2020-11-12 15:00 */
/* ******************************************************************************
Following macros configure the display integration, the framebuffer access and
the usage of the graphics accelerator.
For details about different framebuffer concepts please have a look to
https://doc.embedded-wizard.de/framebuffer-concepts
EW_USE_SCRATCHPAD_BUFFER - Flag to switch on/off the usage of a small
scratch-pad buffer used for the graphics composition instead of a framebuffer.
As a result the screen of the display is updated in partial mode.
This mode is used to reduce the memory footprint to a minimum, but it may cause
some tearing or flickering effects. This mode is useful in combination with
displays containing its own graphics memory (GRAM).
Please note, that this option is not supported for each display integration.
EW_USE_DOUBLE_BUFFER - Flag to switch on/off the usage of an additional
framebuffer, so that the screen is operated in double-buffering mode.
If double-buffering is activated, the exchange between front-buffer and
back-buffer has to be done at V-sync. This has to be implemented in the
function EwBspDsipalyCommitBuffer().
In case of a single buffered configuration, the graphics composition is done
directly into the framebuffer. This makes only sense, if you are using an LCD
with its own pixelbuffer (e.g. some MIPI-DSI displays). Otherwise, the
composition of the framebuffer content has to be synchronized with the
LCD update in order to avoid flickering.
EW_USE_OFFSCREEN_BUFFER - Flag to switch on/off the usage of an additional
off-screen buffer. This is an internal buffer, allocated by the Graphics Engine
and used to prepare the graphical content (composition buffer).
The usage of an separate off-screen buffer might be advantageous on systems
where the read access from the physical framebuffer is very slow. In this
case, the off-screen buffer is used for composition (read and write access)
and the final graphics is then copied into the framebuffer (write access).
Please note, that this option is not supported for each display integration.
DISPLAY_WIDTH and DISPLAY_HEIGHT - This macros define the physical size of the
display in pixel. Typically this size corresponds to the attribute ScreenSize
defined within the profile of the GUI application.
SCRATCHPAD_WIDTH and SCRATCHPAD_HEIGHT - This macros define the default size
of the scratch-pad buffer in pixel. Depending on the available memory, the
size of the scratch-pad should be 1/10 to 1/2 of the display size.
EW_USE_GRAPHICS_ACCELERATOR - Flag to switch on/off the usage of the graphics
accelerator within the target (if available).
Please note: Changing this macro requires the complete source code of the
Graphics Engine to be recompiled with the new setting. As such it works only
for customers who have licensed the 'Professional' edition.
**************************************************************************** */
#define EW_USE_SCRATCHPAD_BUFFER 1
#define EW_USE_DOUBLE_BUFFER 0
#define DISPLAY_WIDTH 320
#define DISPLAY_HEIGHT 240
#define SCRATCHPAD_WIDTH 320
#define SCRATCHPAD_HEIGHT 48
#define EW_USE_GRAPHICS_ACCELERATOR 0
/* ******************************************************************************
Following macros configure the memory area used for the Embedded Wizard heap
manager. Optionally, an additional extra memory pool can be defined.
EW_MEMORY_POOL_SECTION - This macro has to be defined if the memory pool shall
be declared as an array. Optionally a linker section name can be assigned to
this macro to define where this array shall be located by the linker.
Alternatively, a fixed memory address can be defined by setting the macro
EW_MEMORY_POOL_ADDR.
EW_MEMORY_POOL_ADDR - This macro defines the start address of the memory pool
to a fixed address. Take care that the memory area is not used by the linker.
Do not use this define in combination with EW_MEMORY_POOL_SECTION.
EW_MEMORY_POOL_SIZE - This macro defines the size of the memory pool in bytes
used for the Embedded Wizard heap manager.
EW_EXTRA_POOL_SECTION, EW_EXTRA_POOL_ADDR and EW_EXTRA_POOL_SIZE - These
macros are used to define a second (additional) memory pool.
**************************************************************************** */
#define EW_MEMORY_POOL_SECTION EW_MEM_SECTION( .bss )
#define EW_MEMORY_POOL_SIZE ( 175 * 1024 )
#define EW_EXTRA_POOL_ADDR 0
#define EW_EXTRA_POOL_SIZE 0
/* ******************************************************************************
Following macros configure advance aspects of an Embedded Wizard application
used for profiling, tracing or optimization purpose. In order to enable the
functionality uncomment the respective macro definition below.
EW_PRINT_MEMORY_USAGE - If this macro is defined, a statistic information is
printed reporting the amount of memory allocated by Chora objects, strings and
resources. Additionally, the current total memory allocation and the maximum
peak value is printed.
EW_DUMP_HEAP - If this macro is defined, the contents of all memory pools are
evaluated and the associated information as well as the existing blocks are
reported.
IMPORTANT : activating the following macros requires the complete source code
of the Graphics Engine to be recompiled with the new setting. As such it works
for customers who have licensed the 'Professional' edition only. For customers
using the 'Small Business' edition or users working with the Free edition, the
macros will not have any effect!
EW_SUPPORT_GFX_TASK_TRACING - If this macro is defined, the functions of the
Graphics Engine are enhanced by code to track and protocol all drawing tasks
executed at the runtime. Once the functionality is available, you control the
outputs of the traced drawing operations by using the EwEnableGfxTaskTracing()
function.
EW_PRINT_GFX_TASKS - Defining this macro activates the above described tracing
of drawing tasks as if the macro EW_SUPPORT_GFX_TASK_TRACING were defined and
the function EwEnableGfxTaskTracing() to enable the trace outputs were called.
This is a convenience macro to simply activate the tracing without needing to
modify your application code by additional function calls.
EW_PRINT_PERF_COUNTERS - If this macro is defined, all essential functions of
the Graphics Engine and Runtime Environment are enhanced by additional code to
to track and measure their runtime. To display this collected information you
use the function EwPrintPerfCounters().
EW_USE_IMMEDIATE_GARBAGE_COLLECTION - If this macro is defined, the process of
detection and disposal of unused Chora objects is allowed to run at any time,
even when this would interfere with the actually executed Chora code. If this
macro is not defined, the Garbage Collection is limited to run when no Chora
code is executed only. Using this feature expects, that your application uses
the function EwSetStackBaseAddress() to inform the Garbage Collector about the
memory area occupied by the CPU stack.
**************************************************************************** */
// #define EW_PRINT_MEMORY_USAGE
// #define EW_DUMP_HEAP
// #define EW_SUPPORT_GFX_TASK_TRACING
// #define EW_PRINT_GFX_TASKS
// #define EW_PRINT_PERF_COUNTERS
// #define EW_USE_IMMEDIATE_GARBAGE_COLLECTION
/* ******************************************************************************
Following macros configure the size of diverse caches and buffers. Generally,
the larger a cache or buffer, the better the performance of the application.
On the other hand, large caches and buffers will occupy more RAM. Configure
the macros prudently according to the available RAM and expected performance.
EW_MAX_STRING_CACHE_SIZE - This macro specifies the threshold value for the
capacity of the string cache. The string cache stores frequently used string
constants preventing them from being reloaded repeatedly. Embedded Wizard
tracks the amount of memory occupied by all string constants and as soon as
this size exceeds the value specified in the macro, discards oldest unused
strings from the cache automatically. The value for this macro is expressed
in bytes as an integer number lying between 0 and 0x800000.
EW_MAX_SURFACE_CACHE_SIZE - This macro specifies the threshold value for the
capacity of the surface cache. This cache stores often used bitmap resources
and off-screen image buffers preventing them from being reloaded or recreated
repeatedly. Embedded Wizard tracks the amount of memory occupied by all cached
surfaces and as soon as this size exceeds the value specified in the macro,
discards oldest unused surfaces from the cache automatically. The value for
this macro is expressed in bytes as an integer number lying between 0 and
0x20000000.
EW_MAX_GLYPH_SURFACE_WIDTH, EW_MAX_GLYPH_SURFACE_HEIGHT - These macros specify
the dimension of the glyph cache surface. This surface stores all glyphs used
during text drawing operations. The larger the surface the more glyphs can be
reused without needing to decompress or rasterize them again. The values for
the macros are expressed in pixel as integer numbers lying between 64 and the
maximum surface size supported on the graphics hardware. You should ensure,
that the glyph surface is at least as large as the biggest glyph you want to
display at the runtime. The following quotation can be used to calculate the
approximated RAM usage resulting from the configuration of the macros:
( EW_MAX_GLYPH_SURFACE_WIDTH * EW_MAX_GLYPH_SURFACE_HEIGHT ) * 1 Byte.
EW_MAX_ISSUE_TASKS - This macro specifies the capacity of instruction buffers
used to store drawing operations. Larger buffers improve the optimization and
elimination of superfluous drawing operations. In turn, small buffers cause
the drawing process to be often interrupted to flush the prepared operations.
The value for this macro is expressed in 'tasks' as an integer number lying
between 1 and 8192. You should ensure that the issue buffer is at least as
large as the most complex drawing operation performed in your application.
The following quotation can be used to calculate the approximated RAM usage
resulting from the configuration of the macro:
(( EW_MAX_ISSUE_TASKS * 64 ) + 512 ) * 1 Byte.
**************************************************************************** */
#define EW_MAX_STRING_CACHE_SIZE 0
#define EW_MAX_SURFACE_CACHE_SIZE 0
#define EW_MAX_GLYPH_SURFACE_WIDTH 128
#define EW_MAX_GLYPH_SURFACE_HEIGHT 128
#define EW_MAX_ISSUE_TASKS 60
/* ******************************************************************************
Following macros configure the behavior of the surface cache and treatment
of bitmap resources when these are generated with in the 'compressed' mode.
Depending on the configuration, the application will require more or less RAM,
which affects accordingly the resulting performance.
EW_LAZY_LOAD_BITMAPS - This macro controls the loading behavior of compressed
bitmap resources. If this macro is defined with the value 0, the resources are
loaded immediately and completely into RAM as soon as the application accesses
them. Thereupon the bitmaps remain in the surface cache (see above). If this
macro is defined with the value 1, the loading of bitmaps is delayed until the
application is about to display one frame of the bitmap. In such case this and
only this frame is loaded into RAM.
EW_LAZY_LOAD_BITMAPS_IF_ANIMATED_ONLY - This macro, if defined with the value
1, does limit the effect of the above described macro EW_LAZY_LOAD_BITMAPS to
resources containing animated bitmaps only. All other bitmaps (single or multi
frame but not animated) are loaded immediately regardless of the actual value
for the EW_LAZY_LOAD_BITMAPS macro. If this macro is 0, EW_LAZY_LOAD_BITMAPS
affects all kinds of bitmap resources.
EW_DISCARD_BITMAPS - This macro controls the lifetime of bitmaps stored in the
surface cache (see above). If this macro is configured with the value 1, the
system is allowed to discard bitmap resources even if these are still in use.
As soon as the surface cache has exceeded the threshold value specified in the
macro EW_MAX_SURFACE_CACHE_SIZE and there is no other unused surfaces ready to
discard from the cache, the system discards the lazy loaded bitmap resources.
Due to this 'swapping' the application can work with significantly less RAM.
If this macro is 0, the discarding affects only such surfaces which are really
not in use anymore.
EW_DISCARD_BITMAPS_IF_ANIMATED_ONLY - This macro, if defined with the value 1,
limits the effect of the above described macro EW_DISCARD_BITMAPS to surfaces
containing animated bitmap resources only. All other bitmaps (single or multi
frame but not animated) are treated as if the macro EW_DISCARD_BITMAPS were 0.
If EW_DISCARD_BITMAPS_IF_ANIMATED_ONLY is 0, EW_DISCARD_BITMAPS affects all
kinds of bitmap in similar manner.
EW_DISCARD_BITMAPS_IF_NOT_USED_IN_CURRENT_UPDATE - This macro, if defined with
the value 1, limits the effect of the above described macro EW_DISCARD_BITMAPS
to surfaces, which have not been used in actual screen update. This prevents
the system from reloading one the same bitmap resource multiple times during
the running screen update. If this macro is 0, EW_DISCARD_BITMAPS affects all
bitmap resources in similar manner.
EW_DISCARD_BITMAPS_IF_NOT_USED_IN_RECENT_UPDATES - This macro, if defined with
the value 1, limits the effect of the above described macro EW_DISCARD_BITMAPS
to surfaces, which have not been used in actual and the immediately preceding
screen updates. This prevents the system from reloading one the same bitmap
resource multiple times during running animations. If this macro is 0, the
macro EW_DISCARD_BITMAPS affects all bitmap resources in similar manner.
EW_CACHE_OFFSCREEN_SURFACES - This macro controls how to manage surfaces used
to buffer off-screen contents (e.g. used by a buffered GUI component). If this
macro is defined with the value 1, the off-screen surfaces are retained in the
surface cache (see above). Accordingly, frequently used off-screen surfaces
can be reused faster without needing to create them again. Defining the macro
with the value 0 disables this function causing the off-screen surfaces to be
released immediately if not needed anymore.
**************************************************************************** */
#define EW_LAZY_LOAD_BITMAPS 1
#define EW_LAZY_LOAD_BITMAPS_IF_ANIMATED_ONLY 1
#define EW_DISCARD_BITMAPS 1
#define EW_DISCARD_BITMAPS_IF_ANIMATED_ONLY 1
#define EW_DISCARD_BITMAPS_IF_NOT_USED_IN_CURRENT_UPDATE 0
#define EW_DISCARD_BITMAPS_IF_NOT_USED_IN_RECENT_UPDATES 0
#define EW_CACHE_OFFSCREEN_SURFACES 0
/* ******************************************************************************
Following macro removes functionality dedicated to verify the correct function
of the application. Removing this functionality makes sense only if you have
finalized the development and ensured that your application works correctly.
In order to remove the functionality uncomment the respective macro definition
below.
EW_DONT_CHECK_INDEX - If this macro is defined, the code generated by Embedded
Wizard (your application code) does not perform any bounds checking when array
items are addressed. If this macro is not defined, addressing items outside of
an array will result in an adequate error message. Performing bounds checking
may affect the performance if the applications uses arrays extensively.
**************************************************************************** */
// #define EW_DONT_CHECK_INDEX
/* ******************************************************************************
Following macros removes function blocks from the Graphics Engine reducing so
the code size of the resulting binary. Removing functionality makes sense only
if you are sure that it is not needed by your application. If the application
nevertheless uses the functionality, a runtime error is reported. In order to
remove a function block just uncomment the respective macro definition below.
IMPORTANT : activating the following macros requires the complete source code
of the Graphics Engine to be recompiled with the new setting. As such it works
for customers who have licensed the 'Professional' edition only. For customers
using the 'Small Business' edition or users working with the Free edition, the
macros will not have any effect!
EW_DONT_USE_WARP_FUNCTIONS - If this macro is defined, all functions needed to
calculate and display transformed image contents are removed from the binary.
In particular, it disables the possibility to scale and rotate images as well
as their perspective projection resulting in 3D visual effects.
EW_DONT_USE_PATH_FUNCTIONS - If this macro is defined, all functions needed to
calculate and raster vector graphic (to display polygons and paths) is removed
from the binary.
EW_DONT_USE_BIDI_FUNCTIONS - If this macro is defined, all functions needed to
process bidirectional text, as it is usually required to display right-to-left
Arabic or Hebrew scripts, are removed.
EW_DONT_USE_INDEX8_SURFACES - If this macro is defined, the support for INDEX8
bitmap format is removed. Thereupon creation, loading and displaying of images
stored in INDEX8 format is not possible anymore.
EW_DONT_USE_RGB565_SURFACES - If this macro is defined, the support for RGB565
bitmap format is removed. Thereupon creation, loading and displaying of images
stored in RGB565 format is not possible anymore.
**************************************************************************** */
// #define EW_DONT_USE_WARP_FUNCTIONS
// #define EW_DONT_USE_PATH_FUNCTIONS
// #define EW_DONT_USE_BIDI_FUNCTIONS
// #define EW_DONT_USE_INDEX8_SURFACES
// #define EW_DONT_USE_RGB565_SURFACES
#endif /* EWCONFIG_H */
/* pba, mli, msy */