113 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /**
 | |
|   ******************************************************************************
 | |
|   * This file is part of the TouchGFX 4.16.1 distribution.
 | |
|   *
 | |
|   * <h2><center>© Copyright (c) 2021 STMicroelectronics.
 | |
|   * All rights reserved.</center></h2>
 | |
|   *
 | |
|   * This software component is licensed by ST under Ultimate Liberty license
 | |
|   * SLA0044, the "License"; You may not use this file except in compliance with
 | |
|   * the License. You may obtain a copy of the License at:
 | |
|   *                             www.st.com/SLA0044
 | |
|   *
 | |
|   ******************************************************************************
 | |
|   */
 | |
| 
 | |
| /**
 | |
|  * @file common/TouchGFXInit.hpp
 | |
|  *
 | |
|  * Declares the touch graphics generic initialization function.
 | |
|  */
 | |
| #ifndef TOUCHGFXINIT_HPP
 | |
| #define TOUCHGFXINIT_HPP
 | |
| 
 | |
| #include <platform/driver/touch/TouchController.hpp>
 | |
| #include <touchgfx/hal/DMA.hpp>
 | |
| #include <touchgfx/hal/HAL.hpp>
 | |
| 
 | |
| #include <BitmapDatabase.hpp>
 | |
| #include <fonts/ApplicationFontProvider.hpp>
 | |
| #include <texts/TypedTextDatabase.hpp>
 | |
| #include <gui/common/FrontendHeap.hpp>
 | |
| 
 | |
| static ApplicationFontProvider fontProvider; ///< The font provider
 | |
| 
 | |
| /**
 | |
|  * The global touchgfx namespace. All TouchGFX framework classes and global functions are placed in this namespace.
 | |
|  */
 | |
| namespace touchgfx
 | |
| {
 | |
| /// @cond
 | |
| 
 | |
| static Texts texts; ///< The texts
 | |
| 
 | |
| template <class T>
 | |
| HAL& getHAL(DMA_Interface& dma, LCD& display, TouchController& tc, int16_t width, int16_t height)
 | |
| {
 | |
|     static T hal(dma, display, tc, width, height);
 | |
|     return hal;
 | |
| }
 | |
| /// @endcond
 | |
| 
 | |
| /**
 | |
|  * @globalfn
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * TouchGFX generic initialize.
 | |
|  *
 | |
|  * @tparam HALType The class type of the HAL subclass used for this port.
 | |
|  * @param [in] dma                    Reference to the DMA implementation object to use. Can be of
 | |
|  *                                    type NoDMA to disable the use of DMA for rendering.
 | |
|  * @param [in] display                Reference to the LCD renderer implementation (subclass of
 | |
|  *                                    LCD). Could be either LCD16bpp for RGB565 UIs, or
 | |
|  *                                    LCD1bpp for monochrome UIs or LCD24bpp for 24bit
 | |
|  *                                    displays using RGB888 UIs.
 | |
|  * @param [in] tc                     Reference to the touch controller driver (or
 | |
|  *                                    NoTouchController to disable touch input).
 | |
|  * @param      width                  The \a native display width of the actual display, in pixels.
 | |
|  *                                    This value is irrespective of whether the concrete UI
 | |
|  *                                    should be portrait or landscape mode. It must match
 | |
|  *                                    what the display itself is configured as.
 | |
|  * @param      height                 The \a native display height of the actual display, in
 | |
|  *                                    pixels. This value is irrespective of whether the
 | |
|  *                                    concrete UI should be portrait or landscape mode. It
 | |
|  *                                    must match what the display itself is configured as.
 | |
|  * @param [in] bitmapCache            Optional pointer to starting address of a memory region in
 | |
|  *                                    which to place the bitmap cache. Usually in external
 | |
|  *                                    RAM. Pass 0 if bitmap caching is not used.
 | |
|  * @param      bitmapCacheSize        Size of bitmap cache in bytes. Pass 0 if bitmap cache is not
 | |
|  *                                    used.
 | |
|  * @param      numberOfDynamicBitmaps (Optional) Number of dynamic bitmaps.
 | |
|  *
 | |
|  * @return A reference to the allocated (and initialized) HAL object.
 | |
|  */
 | |
| template <class HALType>
 | |
| HAL& touchgfx_generic_init(DMA_Interface& dma, LCD& display, TouchController& tc, int16_t width, int16_t height,
 | |
|                            uint16_t* bitmapCache, uint32_t bitmapCacheSize, uint32_t numberOfDynamicBitmaps = 0)
 | |
| {
 | |
|     HAL& hal = getHAL<HALType>(dma, display, tc, width, height);
 | |
|     hal.initialize();
 | |
| 
 | |
|     Bitmap::registerBitmapDatabase(BitmapDatabase::getInstance(),
 | |
|                                    BitmapDatabase::getInstanceSize(),
 | |
|                                    bitmapCache,
 | |
|                                    bitmapCacheSize,
 | |
|                                    numberOfDynamicBitmaps);
 | |
| 
 | |
|     TypedText::registerTexts(&texts);
 | |
|     Texts::setLanguage(0);
 | |
| 
 | |
|     FontManager::setFontProvider(&fontProvider);
 | |
| 
 | |
|     FrontendHeap::getInstance(); // We need to initialize the frontend heap.
 | |
| 
 | |
|     hal.registerEventListener(*(Application::getInstance()));
 | |
| 
 | |
|     return hal;
 | |
| }
 | |
| 
 | |
| } // namespace touchgfx
 | |
| 
 | |
| #endif // TOUCHGFXINIT_HPP
 |