Initial commit
This commit is contained in:
56
ide-touchgfx-gen/TouchGFX/App/app_touchgfx.c
Normal file
56
ide-touchgfx-gen/TouchGFX/App/app_touchgfx.c
Normal file
@ -0,0 +1,56 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : app_touchgfx.c
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "app_touchgfx.h"
|
||||
|
||||
void touchgfx_init(void);
|
||||
void touchgfx_taskEntry(void);
|
||||
|
||||
/**
|
||||
* Initialize TouchGFX application
|
||||
*/
|
||||
void MX_TouchGFX_Init(void)
|
||||
{
|
||||
#if defined(TOUCHGFX_ENABLED) && (TOUCHGFX_ENABLED != 0)
|
||||
// Calling forward to touchgfx_init in C++ domain
|
||||
touchgfx_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* TouchGFX application entry function
|
||||
*/
|
||||
void MX_TouchGFX_Process(void)
|
||||
{
|
||||
#if defined(TOUCHGFX_ENABLED) && (TOUCHGFX_ENABLED != 0)
|
||||
// Calling farward to touchgfx_init in C++ domain
|
||||
touchgfx_taskEntry();
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* TouchGFX application thread
|
||||
*/
|
||||
void TouchGFX_Task(void *argument)
|
||||
{
|
||||
#if defined(TOUCHGFX_ENABLED) && (TOUCHGFX_ENABLED != 0)
|
||||
// Calling farward to touchgfx_init in C++ domain
|
||||
touchgfx_taskEntry();
|
||||
#endif
|
||||
}
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
23
ide-touchgfx-gen/TouchGFX/App/app_touchgfx.h
Normal file
23
ide-touchgfx-gen/TouchGFX/App/app_touchgfx.h
Normal file
@ -0,0 +1,23 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : app_touchgfx.h
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "config/touchgfx-config.h"
|
||||
|
||||
void MX_TouchGFX_Init(void);
|
||||
void MX_TouchGFX_Process(void);
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
21
ide-touchgfx-gen/TouchGFX/ApplicationTemplate.touchgfx.part
Normal file
21
ide-touchgfx-gen/TouchGFX/ApplicationTemplate.touchgfx.part
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
{
|
||||
"Application": {
|
||||
"Name": "STM32F746G_DISCO",
|
||||
"TouchGfxPath": "../Middlewares/ST/touchgfx",
|
||||
"AvailableColorDepths": [ 16 ],
|
||||
"AvailableLCDs":
|
||||
{
|
||||
"16": "LCD16bpp"
|
||||
},
|
||||
"AvailableResolutions" : [
|
||||
{
|
||||
"Width": 480,
|
||||
"Height": 272
|
||||
}
|
||||
],
|
||||
"PostGenerateTargetCommand" : "touchgfx update_project --project-file=../STM32F746G_DISCO.ioc --platform=m7",
|
||||
"Family" : "STM32F7"
|
||||
},
|
||||
"Version": "4.16.0"
|
||||
}
|
20
ide-touchgfx-gen/TouchGFX/application.config
Normal file
20
ide-touchgfx-gen/TouchGFX/application.config
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"image_configuration": {
|
||||
"images": {},
|
||||
"dither_algorithm": "2",
|
||||
"alpha_dither": "yes",
|
||||
"layout_rotation": "0",
|
||||
"opaque_image_format": "RGB565",
|
||||
"nonopaque_image_format": "ARGB8888",
|
||||
"section": "ExtFlashSection",
|
||||
"extra_section": "ExtFlashSection"
|
||||
},
|
||||
"text_configuration": {
|
||||
"remap": "yes",
|
||||
"a4": "yes",
|
||||
"binary_translations": "no",
|
||||
"binary_fonts": "no",
|
||||
"framebuffer_bpp": "16",
|
||||
"font_format": "0"
|
||||
}
|
||||
}
|
BIN
ide-touchgfx-gen/TouchGFX/assets/fonts/verdana.ttf
Normal file
BIN
ide-touchgfx-gen/TouchGFX/assets/fonts/verdana.ttf
Normal file
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
After Width: | Height: | Size: 881 B |
BIN
ide-touchgfx-gen/TouchGFX/assets/texts/texts.xlsx
Normal file
BIN
ide-touchgfx-gen/TouchGFX/assets/texts/texts.xlsx
Normal file
Binary file not shown.
8
ide-touchgfx-gen/TouchGFX/config/gcc/app.mk
Normal file
8
ide-touchgfx-gen/TouchGFX/config/gcc/app.mk
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
# Relative location of the TouchGFX framework from root of application
|
||||
touchgfx_path := ../Middlewares/ST/touchgfx
|
||||
|
||||
# Location of the TouchGFX Environment
|
||||
touchgfx_env := C:/devel/TouchGFX-4.16.1/env
|
||||
# Optional additional compiler flags
|
||||
user_cflags := -DUSE_BPP=16
|
26
ide-touchgfx-gen/TouchGFX/config/msvs/Application.props
Normal file
26
ide-touchgfx-gen/TouchGFX/config/msvs/Application.props
Normal file
@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<ImportGroup Label="PropertySheets"/>
|
||||
<PropertyGroup Label="UserMacros">
|
||||
<UseBPP>16</UseBPP>
|
||||
<TouchGFXReleasePath>..\..\..\Middlewares\ST\touchgfx</TouchGFXReleasePath>
|
||||
<TouchGFXEnvPath>C:\devel\TouchGFX-4.16.1\env</TouchGFXEnvPath>
|
||||
<ApplicationRoot>..\..</ApplicationRoot>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup/>
|
||||
<ItemDefinitionGroup/>
|
||||
<ItemGroup>
|
||||
<BuildMacro Include="UseBPP">
|
||||
<Value>$(UseBPP)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="TouchGFXReleasePath">
|
||||
<Value>$(TouchGFXReleasePath)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="TouchGFXEnvPath">
|
||||
<Value>$(TouchGFXEnvPath)</Value>
|
||||
</BuildMacro>
|
||||
<BuildMacro Include="ApplicationRoot">
|
||||
<Value>$(ApplicationRoot)</Value>
|
||||
</BuildMacro>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,68 @@
|
||||
32
|
||||
43
|
||||
45
|
||||
46
|
||||
47
|
||||
48
|
||||
49
|
||||
50
|
||||
51
|
||||
52
|
||||
53
|
||||
54
|
||||
55
|
||||
56
|
||||
57
|
||||
63
|
||||
65
|
||||
66
|
||||
67
|
||||
68
|
||||
69
|
||||
70
|
||||
71
|
||||
72
|
||||
73
|
||||
74
|
||||
75
|
||||
76
|
||||
77
|
||||
78
|
||||
79
|
||||
80
|
||||
81
|
||||
82
|
||||
83
|
||||
84
|
||||
85
|
||||
86
|
||||
87
|
||||
88
|
||||
89
|
||||
90
|
||||
97
|
||||
98
|
||||
99
|
||||
100
|
||||
101
|
||||
102
|
||||
103
|
||||
104
|
||||
105
|
||||
106
|
||||
107
|
||||
108
|
||||
109
|
||||
110
|
||||
111
|
||||
112
|
||||
113
|
||||
114
|
||||
115
|
||||
116
|
||||
117
|
||||
118
|
||||
119
|
||||
120
|
||||
121
|
||||
122
|
@ -0,0 +1 @@
|
||||
63
|
@ -0,0 +1 @@
|
||||
63
|
1
ide-touchgfx-gen/TouchGFX/generated/fonts/cache/ApplicationFontProvider.cache
vendored
Normal file
1
ide-touchgfx-gen/TouchGFX/generated/fonts/cache/ApplicationFontProvider.cache
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"typographies":[["Default","verdana.ttf",20,4],["Large","verdana.ttf",40,4],["Small","verdana.ttf",10,4]],"generate_font_format":"0"}
|
1
ide-touchgfx-gen/TouchGFX/generated/fonts/cache/ApplicationFontProviderHpp.cache
vendored
Normal file
1
ide-touchgfx-gen/TouchGFX/generated/fonts/cache/ApplicationFontProviderHpp.cache
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"typographies":[["Default","verdana.ttf",20,4],["Large","verdana.ttf",40,4],["Small","verdana.ttf",10,4]],"generate_font_format":"0"}
|
70
ide-touchgfx-gen/TouchGFX/generated/fonts/cache/Font_verdana_10_4bppCpp.cache
vendored
Normal file
70
ide-touchgfx-gen/TouchGFX/generated/fonts/cache/Font_verdana_10_4bppCpp.cache
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
BA
|
||||
F0
|
||||
32
|
||||
43
|
||||
45
|
||||
46
|
||||
47
|
||||
48
|
||||
49
|
||||
50
|
||||
51
|
||||
52
|
||||
53
|
||||
54
|
||||
55
|
||||
56
|
||||
57
|
||||
63
|
||||
65
|
||||
66
|
||||
67
|
||||
68
|
||||
69
|
||||
70
|
||||
71
|
||||
72
|
||||
73
|
||||
74
|
||||
75
|
||||
76
|
||||
77
|
||||
78
|
||||
79
|
||||
80
|
||||
81
|
||||
82
|
||||
83
|
||||
84
|
||||
85
|
||||
86
|
||||
87
|
||||
88
|
||||
89
|
||||
90
|
||||
97
|
||||
98
|
||||
99
|
||||
100
|
||||
101
|
||||
102
|
||||
103
|
||||
104
|
||||
105
|
||||
106
|
||||
107
|
||||
108
|
||||
109
|
||||
110
|
||||
111
|
||||
112
|
||||
113
|
||||
114
|
||||
115
|
||||
116
|
||||
117
|
||||
118
|
||||
119
|
||||
120
|
||||
121
|
||||
122
|
3
ide-touchgfx-gen/TouchGFX/generated/fonts/cache/Font_verdana_20_4bppCpp.cache
vendored
Normal file
3
ide-touchgfx-gen/TouchGFX/generated/fonts/cache/Font_verdana_20_4bppCpp.cache
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
BA
|
||||
F0
|
||||
63
|
3
ide-touchgfx-gen/TouchGFX/generated/fonts/cache/Font_verdana_40_4bppCpp.cache
vendored
Normal file
3
ide-touchgfx-gen/TouchGFX/generated/fonts/cache/Font_verdana_40_4bppCpp.cache
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
BA
|
||||
F0
|
||||
63
|
@ -0,0 +1,38 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#ifndef APPLICATIONFONTPROVIDER_HPP
|
||||
#define APPLICATIONFONTPROVIDER_HPP
|
||||
|
||||
#include <touchgfx/FontManager.hpp>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
class FlashDataReader;
|
||||
}
|
||||
|
||||
struct Typography
|
||||
{
|
||||
static const touchgfx::FontId DEFAULT = 0;
|
||||
static const touchgfx::FontId LARGE = 1;
|
||||
static const touchgfx::FontId SMALL = 2;
|
||||
};
|
||||
|
||||
struct TypographyFontIndex
|
||||
{
|
||||
static const touchgfx::FontId DEFAULT = 0; // verdana_20_4bpp
|
||||
static const touchgfx::FontId LARGE = 1; // verdana_40_4bpp
|
||||
static const touchgfx::FontId SMALL = 2; // verdana_10_4bpp
|
||||
static const uint16_t NUMBER_OF_FONTS = 3;
|
||||
};
|
||||
|
||||
class ApplicationFontProvider : public touchgfx::FontProvider
|
||||
{
|
||||
public:
|
||||
virtual touchgfx::Font* getFont(touchgfx::FontId typography);
|
||||
|
||||
static void setFlashReader(touchgfx::FlashDataReader* /* flashReader */) { }
|
||||
static touchgfx::FlashDataReader* getFlashReader() { return 0; }
|
||||
};
|
||||
|
||||
#endif // APPLICATIONFONTPROVIDER_HPP
|
@ -0,0 +1,71 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#ifndef CACHEDFONT_HPP
|
||||
#define CACHEDFONT_HPP
|
||||
|
||||
#include <fonts/GeneratedFont.hpp>
|
||||
#include <fonts/FontCache.hpp>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
class CachedFont : public GeneratedFont
|
||||
{
|
||||
public:
|
||||
CachedFont(const struct touchgfx::BinaryFontData* data, FontId id, FontCache* _cache, const GeneratedFont* _flashFont)
|
||||
: GeneratedFont(0, //GlyphNode*
|
||||
data->numberOfGlyphs,
|
||||
data->height,
|
||||
data->pixBelowBase,
|
||||
data->bitsPerPixel,
|
||||
data->byteAlignRow,
|
||||
data->maxLeft,
|
||||
data->maxRight,
|
||||
0, //glyphDataPointer
|
||||
0, //Kerning table not used for cached font
|
||||
data->fallbackChar,
|
||||
data->ellipsisChar,
|
||||
0), //gsubTablePointer
|
||||
fontId(id),
|
||||
cache(_cache),
|
||||
flashFont(_flashFont)
|
||||
{}
|
||||
|
||||
CachedFont() : GeneratedFont() {}
|
||||
|
||||
using GeneratedFont::getGlyph;
|
||||
|
||||
virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const;
|
||||
|
||||
virtual const uint8_t* getPixelData(const GlyphNode* glyph) const;
|
||||
|
||||
virtual int8_t getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const;
|
||||
|
||||
void setFontCache(FontCache& cache);
|
||||
FontId getFontId() const
|
||||
{
|
||||
return fontId;
|
||||
}
|
||||
|
||||
virtual const uint16_t* getGSUBTable() const
|
||||
{
|
||||
if (gsubTable != 0)
|
||||
{
|
||||
return gsubTable;
|
||||
}
|
||||
return flashFont->getGSUBTable();
|
||||
}
|
||||
|
||||
virtual void setGSUBTable(const uint16_t* table)
|
||||
{
|
||||
gsubTable = table;
|
||||
}
|
||||
|
||||
private:
|
||||
FontId fontId;
|
||||
FontCache* cache;
|
||||
const GeneratedFont* flashFont;
|
||||
};
|
||||
} // namespace touchgfx
|
||||
|
||||
#endif // CACHEDFONT_HPP
|
@ -0,0 +1,94 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#ifndef FONTCACHE_HPP
|
||||
#define FONTCACHE_HPP
|
||||
|
||||
#include <fonts/ApplicationFontProvider.hpp>
|
||||
#include <touchgfx/Font.hpp>
|
||||
#include <touchgfx/TypedText.hpp>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
class CachedFont;
|
||||
|
||||
class FontDataReader
|
||||
{
|
||||
public:
|
||||
virtual ~FontDataReader() { }
|
||||
virtual void open() = 0;
|
||||
virtual void close() = 0;
|
||||
virtual void setPosition(uint32_t position) = 0;
|
||||
virtual void readData(void* out, uint32_t numberOfBytes) = 0;
|
||||
};
|
||||
|
||||
class FontCache
|
||||
{
|
||||
public:
|
||||
FontCache();
|
||||
void setReader(FontDataReader* reader);
|
||||
void clear(bool keepGsubTable = false);
|
||||
void setMemory(uint8_t* memory, uint32_t size);
|
||||
void initializeCachedFont(TypedText t, CachedFont* font, bool loadGsubTable = false);
|
||||
bool cacheString(TypedText t, const Unicode::UnicodeChar* string);
|
||||
bool cacheLigatures(CachedFont* font, TypedText t, const Unicode::UnicodeChar* string);
|
||||
|
||||
const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, FontId font) const;
|
||||
uint32_t getMemoryUsage()
|
||||
{
|
||||
return memorySize - (gsubStart - top);
|
||||
}
|
||||
|
||||
void open();
|
||||
void close();
|
||||
|
||||
static inline const uint8_t* getPixelData(const GlyphNode* glyph)
|
||||
{
|
||||
return ((const uint8_t*)glyph) + SizeGlyphNode + 4;
|
||||
}
|
||||
static inline bool isCached(const GlyphNode* g)
|
||||
{
|
||||
return g->dataOffset == 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
private:
|
||||
static const uint32_t SizeGlyphNode = 16;
|
||||
|
||||
bool contains(Unicode::UnicodeChar unicode, FontId font) const;
|
||||
void insert(Unicode::UnicodeChar unicode, FontId font, uint32_t bpp, bool& outOfMemory);
|
||||
uint8_t* copyGlyph(uint8_t* top, Unicode::UnicodeChar unicode, FontId font, uint32_t bpp, bool& outOfMemory);
|
||||
|
||||
void cacheData(uint32_t bpp, GlyphNode* first);
|
||||
bool cacheSortedString(TypedText t);
|
||||
bool createSortedString(const Unicode::UnicodeChar* string);
|
||||
bool createSortedLigatures(CachedFont* font, TypedText t, const Unicode::UnicodeChar* string, ...);
|
||||
bool sortSortedString(int n);
|
||||
|
||||
void setPosition(uint32_t position);
|
||||
void readData(void* out, uint32_t numberOfBytes);
|
||||
|
||||
struct
|
||||
{
|
||||
uint8_t* first; //first glyphnode, glyph in cache;
|
||||
uint8_t* last; //first glyphnode, glyph in cache;
|
||||
} fontTable[MAX(TypographyFontIndex::NUMBER_OF_FONTS, 1)];
|
||||
|
||||
uint32_t memorySize;
|
||||
uint8_t* memory; //start of memory
|
||||
uint8_t* top; //first unused byte
|
||||
uint8_t* gsubStart; //first address of GSUB tables, allocated in the end of the cache
|
||||
|
||||
FontDataReader* reader;
|
||||
|
||||
Unicode::UnicodeChar* sortedString;
|
||||
//Must be bigger than BinaryFontData
|
||||
static const uint32_t MAX_BUFFER_SIZE = 64;
|
||||
char buffer[MAX_BUFFER_SIZE];
|
||||
uint32_t glyphDataOffset;
|
||||
uint16_t numGlyphs;
|
||||
uint16_t currentFileGlyphNumber;
|
||||
GlyphNode currentFileGlyphNode;
|
||||
};
|
||||
} // namespace touchgfx
|
||||
|
||||
#endif // FONTCACHE_HPP
|
@ -0,0 +1,133 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#ifndef GENERATEDFONT_HPP
|
||||
#define GENERATEDFONT_HPP
|
||||
|
||||
#include <touchgfx/ConstFont.hpp>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
/**
|
||||
* An GeneratedFont has both glyph table and glyph data placed in a flash which
|
||||
* supports random access read (i.e. not a NAND flash)
|
||||
*
|
||||
* @see ConstFont
|
||||
*/
|
||||
class GeneratedFont : public ConstFont
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Construct the GeneratedFont.
|
||||
*
|
||||
* @param list The array of glyphs known to this font.
|
||||
* @param size The number of glyphs in list.
|
||||
* @param height The height in pixels of the highest character in this font.
|
||||
* @param pixBelowBase The maximum number of pixels that can be drawn below the
|
||||
* baseline in this font.
|
||||
* @param bitsPerPixel The number of bits per pixel in this font.
|
||||
* @param byteAlignRow Are glyphs encoded using A4 format
|
||||
* @param maxLeft The maximum a character extends to the left.
|
||||
* @param maxRight The maximum a character extends to the right.
|
||||
* @param glyphDataInternalFlash Pointer to the glyph data for the font, placed in internal
|
||||
* flash.
|
||||
* @param kerningList pointer to the kerning data for the font, placed in internal
|
||||
* flash.
|
||||
* @param fallbackChar The fallback character for the typography in case no glyph is
|
||||
* available.
|
||||
* @param ellipsisChar The ellipsis character used for truncating long texts.
|
||||
* @param gsubTable Pointer to GSUB table.
|
||||
*/
|
||||
GeneratedFont(const GlyphNode* list, uint16_t size, uint16_t height, uint8_t pixBelowBase, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataInternalFlash, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData);
|
||||
|
||||
using ConstFont::getGlyph;
|
||||
|
||||
/**
|
||||
* Obtains a RAM-based pointer to the pixel data for the specified glyph.
|
||||
*
|
||||
* @param glyph The glyph to get the pixels data of.
|
||||
*
|
||||
* @return The pixel data of the glyph.
|
||||
*/
|
||||
virtual const uint8_t* getPixelData(const GlyphNode* glyph) const;
|
||||
|
||||
/**
|
||||
* Gets the kerning distance between two characters.
|
||||
*
|
||||
* @param prevChar The unicode value of the previous character.
|
||||
* @param glyph the glyph object for the current character.
|
||||
*
|
||||
* @return The kerning distance between prevChar and glyph char.
|
||||
*/
|
||||
virtual int8_t getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const;
|
||||
|
||||
/**
|
||||
* Gets GSUB table.
|
||||
*
|
||||
* @return The GSUB table or null if font has GSUB no table
|
||||
*/
|
||||
virtual const uint16_t* getGSUBTable() const
|
||||
{
|
||||
return gsubTable;
|
||||
}
|
||||
|
||||
protected:
|
||||
GeneratedFont() : ConstFont(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), glyphData(0), kerningData(0), gsubTable(0) { }
|
||||
const void* glyphData; ///< Information describing the glyphs
|
||||
const KerningNode* kerningData; ///< Information describing the kerning
|
||||
const uint16_t* gsubTable; ///< Information describing the GSUB tables
|
||||
};
|
||||
|
||||
struct BinaryFontData
|
||||
{
|
||||
uint32_t fontIndex; // The font index (as used by TypedTextDatabase)
|
||||
uint32_t sizeOfFontData; // Size of the complete BinaryFont
|
||||
uint32_t offsetToTable; // GlyphNode[]
|
||||
uint32_t offsetToKerning; // KerningNode[]
|
||||
uint32_t offsetToGlyphs; // uint8_t[]
|
||||
uint32_t offsetToGSUB; // uint16_t[]
|
||||
uint16_t numberOfGlyphs; // Number of glyphs in Table and Glyphs
|
||||
uint16_t height; // Font height from base
|
||||
uint8_t pixBelowBase; // Max pixels below base
|
||||
uint8_t bitsPerPixel: 7; // Bpp
|
||||
uint8_t byteAlignRow: 1; // A4/A2/A1
|
||||
uint8_t maxLeft; // The maximum a character extends to the left
|
||||
uint8_t maxRight; // The maximum a character extends to the right
|
||||
Unicode::UnicodeChar fallbackChar; // Fallback Character for the font
|
||||
Unicode::UnicodeChar ellipsisChar; // Ellipsis Character for the font
|
||||
};
|
||||
|
||||
class BinaryFont : public GeneratedFont
|
||||
{
|
||||
public:
|
||||
BinaryFont(const struct touchgfx::BinaryFontData* data)
|
||||
: GeneratedFont((const GlyphNode*)((const uint8_t*)data + data->offsetToTable),
|
||||
data->numberOfGlyphs,
|
||||
data->height,
|
||||
data->pixBelowBase,
|
||||
data->bitsPerPixel,
|
||||
data->byteAlignRow,
|
||||
data->maxLeft,
|
||||
data->maxRight,
|
||||
0,
|
||||
(const KerningNode*)((const uint8_t*)data + data->offsetToKerning),
|
||||
data->fallbackChar,
|
||||
data->ellipsisChar,
|
||||
(data->offsetToGSUB == 0) ? 0 : (const uint16_t*)((const uint8_t*)data + data->offsetToGSUB)),
|
||||
glyphData((const uint8_t*)data + data->offsetToGlyphs)
|
||||
{
|
||||
}
|
||||
|
||||
BinaryFont() : GeneratedFont() {}
|
||||
|
||||
virtual const uint8_t* getPixelData(const GlyphNode* glyph) const
|
||||
{
|
||||
const uint8_t* data = (const uint8_t*)glyphData;
|
||||
return &(data[glyph->dataOffset]);
|
||||
}
|
||||
protected:
|
||||
const uint8_t* glyphData;
|
||||
};
|
||||
} // namespace touchgfx
|
||||
|
||||
#endif // GENERATEDFONT_HPP
|
@ -0,0 +1,109 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#ifndef UNMAPPEDDATAFONT_HPP
|
||||
#define UNMAPPEDDATAFONT_HPP
|
||||
|
||||
#include <touchgfx/Font.hpp>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
/**
|
||||
* An UnmappedDataFont has both glyph table and glyph data placed in a
|
||||
* flash which does not support random access read (indirect
|
||||
* access). A unicode table is located in a flash with random read
|
||||
* access (direct access).
|
||||
*
|
||||
* @see Font, ConstFont
|
||||
*/
|
||||
class UnmappedDataFont : public Font
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Construct the UnmappedDataFont.
|
||||
*
|
||||
* @param list The array of glyphs known to this font (indirect).
|
||||
* @param unicodes The array of unicodes known to this font (direct).
|
||||
* @param size The number of glyphs in list.
|
||||
* @param height The height in pixels of the highest character in this font.
|
||||
* @param pixBelowBase The maximum number of pixels that can be drawn below the
|
||||
* baseline in this font.
|
||||
* @param bitsPerPixel The number of bits per pixel in this font.
|
||||
* @param byteAlignRow Are glyphs encoded using A4 format
|
||||
* @param maxLeft The maximum a character extends to the left.
|
||||
* @param maxRight The maximum a character extends to the right.
|
||||
* @param glyphDataList Pointer to pointers the glyph data for the font (indirect).
|
||||
* @param kerningList pointer to the kerning data for the font (direct).
|
||||
* @param fallbackChar The fallback character for the typography in case no glyph is
|
||||
* available.
|
||||
* @param ellipsisChar The ellipsis character used for truncating long texts.
|
||||
* @param gsubTable Pointer to GSUB table (direct).
|
||||
*/
|
||||
UnmappedDataFont(const GlyphNode* list, const uint16_t* unicodes, uint16_t size, uint16_t height, uint8_t pixBelowBase, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataList, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData);
|
||||
|
||||
using Font::getGlyph;
|
||||
|
||||
/**
|
||||
* Gets the glyph data associated with the specified Unicode. The
|
||||
GlyphNode is allocated in the buffer passed to the constructor.
|
||||
*
|
||||
* Please note that in case of Thai letters and Arabic letters
|
||||
* where diacritics can be placed relative to the previous
|
||||
* character(s), please use TextProvider::getNextLigature()
|
||||
* instead as it will create a temporary GlyphNode that will be
|
||||
* adjusted with respect to X/Y position.
|
||||
*
|
||||
* @param unicode The character to look up.
|
||||
* @param pixelData Pointer to the pixel data for the glyph if the glyph is
|
||||
* found. This is set by this method.
|
||||
* @param [out] bitsPerPixel Reference where to place the number of bits per pixel.
|
||||
*
|
||||
* @return A pointer to the glyph node or null if the glyph was not found.
|
||||
*/
|
||||
virtual const GlyphNode* getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const;
|
||||
|
||||
/**
|
||||
* Obtains the address to the pixel data for the specified glyph.
|
||||
*
|
||||
* @param glyph The glyph to get the pixels data of.
|
||||
*
|
||||
* @return The address of the pixel data of the glyph.
|
||||
*/
|
||||
virtual const uint8_t* getPixelData(const GlyphNode* glyph) const;
|
||||
|
||||
/**
|
||||
* Gets the kerning distance between two characters.
|
||||
*
|
||||
* @param prevChar The unicode value of the previous character.
|
||||
* @param glyph the glyph object for the current character.
|
||||
*
|
||||
* @return The kerning distance between prevChar and glyph char.
|
||||
*/
|
||||
virtual int8_t getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const;
|
||||
|
||||
/**
|
||||
* Gets GSUB table.
|
||||
*
|
||||
* @return The GSUB table or null if font has GSUB no table
|
||||
*/
|
||||
virtual const uint16_t* getGSUBTable() const
|
||||
{
|
||||
return gsubTable;
|
||||
}
|
||||
|
||||
protected:
|
||||
UnmappedDataFont() : Font(0, 0, 0, 0, 0, 0, 0, 0), glyphList(0), unicodes(0), glyphDataList(0), kerningData(0), gsubTable(0) { }
|
||||
int lookupUnicode(uint16_t unicode) const;
|
||||
|
||||
const GlyphNode* glyphList; ///< The list of glyphs
|
||||
uint16_t listSize; ///< The size of the list of glyphs
|
||||
const uint16_t* unicodes; ///< LookupTable with all unicodes in this font
|
||||
const void* glyphDataList; ///< Information describing the glyphs (list of pointers)
|
||||
const KerningNode* kerningData; ///< Information describing the kerning
|
||||
const uint16_t* gsubTable; ///< Information describing the GSUB tables
|
||||
|
||||
static GlyphNode glyphNodeBuffer; ///< Buffer for GlyphNodes read from unmapped flash
|
||||
};
|
||||
} // namespace touchgfx
|
||||
|
||||
#endif // UNMAPPEDDATAFONT_HPP
|
@ -0,0 +1,24 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#include <fonts/ApplicationFontProvider.hpp>
|
||||
#include <fonts/GeneratedFont.hpp>
|
||||
#include <texts/TypedTextDatabase.hpp>
|
||||
|
||||
touchgfx::Font* ApplicationFontProvider::getFont(touchgfx::FontId typography)
|
||||
{
|
||||
switch (typography)
|
||||
{
|
||||
case Typography::DEFAULT:
|
||||
// verdana_20_4bpp
|
||||
return const_cast<touchgfx::Font*>(TypedTextDatabase::getFonts()[0]);
|
||||
case Typography::LARGE:
|
||||
// verdana_40_4bpp
|
||||
return const_cast<touchgfx::Font*>(TypedTextDatabase::getFonts()[1]);
|
||||
case Typography::SMALL:
|
||||
// verdana_10_4bpp
|
||||
return const_cast<touchgfx::Font*>(TypedTextDatabase::getFonts()[2]);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
58
ide-touchgfx-gen/TouchGFX/generated/fonts/src/CachedFont.cpp
Normal file
58
ide-touchgfx-gen/TouchGFX/generated/fonts/src/CachedFont.cpp
Normal file
@ -0,0 +1,58 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#include <fonts/CachedFont.hpp>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
const uint8_t* CachedFont::getPixelData(const GlyphNode* glyph) const
|
||||
{
|
||||
//if glyph is cached, then data is present just after the GlyphNode
|
||||
if (FontCache::isCached(glyph))
|
||||
{
|
||||
const uint8_t* data = FontCache::getPixelData(glyph);
|
||||
return data;
|
||||
}
|
||||
else
|
||||
{
|
||||
return flashFont->getPixelData(glyph);
|
||||
}
|
||||
}
|
||||
|
||||
const GlyphNode* CachedFont::getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const
|
||||
{
|
||||
//look first in internal flash font
|
||||
const GlyphNode* n = flashFont->find(unicode);
|
||||
|
||||
if ((n == 0) && (cache != 0))
|
||||
{
|
||||
//now look in FontCache table
|
||||
n = cache->getGlyph(unicode, fontId);
|
||||
}
|
||||
|
||||
//revert to normal behaviour if still not found
|
||||
if (n == 0 && unicode != 0 && unicode != '\n')
|
||||
{
|
||||
Unicode::UnicodeChar fallbackChar = flashFont->getFallbackChar();
|
||||
n = flashFont->find(fallbackChar);
|
||||
if (n == 0)
|
||||
{
|
||||
n = cache->getGlyph(fallbackChar, fontId);
|
||||
}
|
||||
}
|
||||
|
||||
if (n != 0)
|
||||
{
|
||||
pixelData = getPixelData(n);
|
||||
bitsPerPixel = getBitsPerPixel();
|
||||
return n;
|
||||
}
|
||||
return (const GlyphNode*)0;
|
||||
}
|
||||
|
||||
int8_t CachedFont::getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const
|
||||
{
|
||||
//Kerning is not supported by Font Caching
|
||||
return 0;
|
||||
}
|
||||
}
|
378
ide-touchgfx-gen/TouchGFX/generated/fonts/src/FontCache.cpp
Normal file
378
ide-touchgfx-gen/TouchGFX/generated/fonts/src/FontCache.cpp
Normal file
@ -0,0 +1,378 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#include <fonts/FontCache.hpp>
|
||||
#include <fonts/CachedFont.hpp>
|
||||
#include <texts/TypedTextDatabase.hpp>
|
||||
#include <touchgfx/TextProvider.hpp>
|
||||
#include <touchgfx/Utils.hpp>
|
||||
#include <cstring>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
FontCache::FontCache()
|
||||
: memorySize(0), memory(0), top(0), gsubStart(0), reader(0)
|
||||
{
|
||||
}
|
||||
|
||||
void FontCache::clear(bool keepGsubTable /* = false */)
|
||||
{
|
||||
memset(fontTable, 0, sizeof(fontTable));
|
||||
|
||||
//top is beginning of memory, no glyphs are cached yet
|
||||
top = memory;
|
||||
|
||||
if (!keepGsubTable)
|
||||
{
|
||||
//gsubStart points to end of memory (nothing loaded yet)
|
||||
gsubStart = memory + memorySize;
|
||||
}
|
||||
}
|
||||
|
||||
void FontCache::setMemory(uint8_t* _memory, uint32_t size)
|
||||
{
|
||||
memory = _memory;
|
||||
memorySize = size;
|
||||
|
||||
clear();
|
||||
}
|
||||
|
||||
void FontCache::setReader(FontDataReader* _reader)
|
||||
{
|
||||
reader = _reader;
|
||||
}
|
||||
|
||||
const GlyphNode* FontCache::getGlyph(Unicode::UnicodeChar unicode, FontId font) const
|
||||
{
|
||||
GlyphNode* g = (GlyphNode*)fontTable[font].first;
|
||||
while (g)
|
||||
{
|
||||
if (g->unicode == unicode)
|
||||
{
|
||||
return g;
|
||||
}
|
||||
GlyphNode** next = (GlyphNode**)((uint8_t*)g + SizeGlyphNode);
|
||||
g = *next;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void FontCache::open()
|
||||
{
|
||||
if (reader)
|
||||
{
|
||||
reader->open();
|
||||
}
|
||||
}
|
||||
|
||||
void FontCache::close()
|
||||
{
|
||||
if (reader)
|
||||
{
|
||||
reader->close();
|
||||
}
|
||||
}
|
||||
|
||||
void FontCache::initializeCachedFont(TypedText t, CachedFont* font, bool loadGsubTable /*= false*/)
|
||||
{
|
||||
//get font index from typed text
|
||||
FontId fontId = t.getFontId();
|
||||
//reset to start of file
|
||||
open();
|
||||
setPosition(0);
|
||||
|
||||
assert(sizeof(touchgfx::BinaryFontData) < MAX_BUFFER_SIZE);
|
||||
readData(buffer, sizeof(touchgfx::BinaryFontData));
|
||||
const struct touchgfx::BinaryFontData* binaryFontData = reinterpret_cast<const struct touchgfx::BinaryFontData*>(buffer);
|
||||
|
||||
const Font** flashFonts = TypedTextDatabase::getFonts();
|
||||
const GeneratedFont* flashFont = static_cast<const GeneratedFont*>(flashFonts[fontId]);
|
||||
*font = CachedFont(reinterpret_cast<const struct touchgfx::BinaryFontData*>(buffer), fontId, this, flashFont);
|
||||
|
||||
if (loadGsubTable)
|
||||
{
|
||||
setPosition(binaryFontData->offsetToGSUB);
|
||||
|
||||
const uint32_t sizeOfGSUB = binaryFontData->sizeOfFontData - binaryFontData->offsetToGSUB;
|
||||
if (top + sizeOfGSUB < gsubStart) //room for this GSUB table
|
||||
{
|
||||
uint8_t* const gsubPosition = gsubStart - sizeOfGSUB;
|
||||
readData(gsubPosition, sizeOfGSUB);
|
||||
font->setGSUBTable(reinterpret_cast<uint16_t*>(gsubPosition));
|
||||
gsubStart -= sizeOfGSUB;
|
||||
}
|
||||
else
|
||||
{
|
||||
font->setGSUBTable(0);
|
||||
}
|
||||
}
|
||||
close();
|
||||
}
|
||||
|
||||
bool FontCache::cacheString(TypedText t, const Unicode::UnicodeChar* string)
|
||||
{
|
||||
open();
|
||||
if (!createSortedString(string))
|
||||
{
|
||||
close();
|
||||
return false;
|
||||
}
|
||||
const bool result = cacheSortedString(t);
|
||||
close();
|
||||
return result;
|
||||
}
|
||||
|
||||
bool FontCache::cacheLigatures(CachedFont* font, TypedText t, const Unicode::UnicodeChar* string)
|
||||
{
|
||||
open();
|
||||
if (!createSortedLigatures(font, t, string, 0, 0))
|
||||
{
|
||||
close();
|
||||
return false;
|
||||
}
|
||||
const bool result = cacheSortedString(t);
|
||||
close();
|
||||
return result;
|
||||
}
|
||||
|
||||
bool FontCache::cacheSortedString(TypedText t)
|
||||
{
|
||||
setPosition(8); //skip font index and size
|
||||
uint32_t glyphNodeOffset;
|
||||
uint32_t dummy;
|
||||
readData(&glyphNodeOffset, sizeof(uint32_t));
|
||||
readData(&dummy, sizeof(uint32_t));
|
||||
readData(&glyphDataOffset, sizeof(uint32_t));
|
||||
readData(&dummy, sizeof(uint32_t));
|
||||
readData(&numGlyphs, sizeof(uint16_t));
|
||||
|
||||
FontId fontId = t.getFontId(); // Get font index from typed text
|
||||
uint32_t bpp = t.getFont()->getBitsPerPixel(); // Get BPP from standard font
|
||||
|
||||
setPosition(glyphNodeOffset); // Go to glyph nodes for font
|
||||
currentFileGlyphNumber = 0;
|
||||
currentFileGlyphNode.unicode = 0; // Force reading of first glyph
|
||||
|
||||
const Unicode::UnicodeChar* string = sortedString;
|
||||
Unicode::UnicodeChar last = 0;
|
||||
GlyphNode* firstNewGlyph = 0;
|
||||
bool outOfMemory = false;
|
||||
while (*string)
|
||||
{
|
||||
Unicode::UnicodeChar ch = *string;
|
||||
if (ch != last)
|
||||
{
|
||||
if (!contains(ch, fontId))
|
||||
{
|
||||
insert(ch, fontId, bpp, outOfMemory);
|
||||
if (outOfMemory)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (firstNewGlyph == 0)
|
||||
{
|
||||
firstNewGlyph = (GlyphNode*)fontTable[fontId].last;
|
||||
}
|
||||
}
|
||||
}
|
||||
last = ch;
|
||||
string++;
|
||||
}
|
||||
|
||||
cacheData(bpp, firstNewGlyph);
|
||||
return !outOfMemory;
|
||||
}
|
||||
|
||||
bool FontCache::contains(Unicode::UnicodeChar unicode, FontId font) const
|
||||
{
|
||||
GlyphNode* g = (GlyphNode*)fontTable[font].first;
|
||||
while (g)
|
||||
{
|
||||
if (g->unicode == unicode)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
GlyphNode** next = (GlyphNode**)((uint8_t*)g + SizeGlyphNode);
|
||||
g = *next;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void FontCache::insert(Unicode::UnicodeChar unicode, FontId font, uint32_t bpp, bool& outOfMemory)
|
||||
{
|
||||
//insert new glyphnode and glyph after last for font.
|
||||
uint8_t* oldTop = top;
|
||||
top = copyGlyph(top, unicode, font, bpp, outOfMemory);
|
||||
|
||||
if (top == oldTop)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (fontTable[font].last == 0)
|
||||
{
|
||||
//first glyph
|
||||
fontTable[font].first = oldTop;
|
||||
fontTable[font].last = oldTop;
|
||||
}
|
||||
else
|
||||
{
|
||||
//set next pointer of old last glyph
|
||||
uint8_t** old_next = (uint8_t**)(fontTable[font].last + SizeGlyphNode);
|
||||
*old_next = oldTop;
|
||||
|
||||
//save new glyph as last glyph
|
||||
fontTable[font].last = oldTop;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t* FontCache::copyGlyph(uint8_t* top, Unicode::UnicodeChar unicode, FontId font, uint32_t bpp, bool& outOfMemory)
|
||||
{
|
||||
while (currentFileGlyphNumber < numGlyphs && currentFileGlyphNode.unicode < unicode)
|
||||
{
|
||||
readData(¤tFileGlyphNode, sizeof(GlyphNode));
|
||||
currentFileGlyphNumber++;
|
||||
}
|
||||
if (currentFileGlyphNode.unicode != unicode)
|
||||
{
|
||||
//glyphnode not found
|
||||
return top;
|
||||
}
|
||||
|
||||
//glyphnode found
|
||||
uint32_t glyphSize = ((currentFileGlyphNode.width() + 1) & ~1) * currentFileGlyphNode.height() * bpp / 8;
|
||||
glyphSize = (glyphSize + 3) & ~0x03;
|
||||
uint32_t requiredMem = SizeGlyphNode + 4 + glyphSize; // GlyphNode + next ptr + glyph
|
||||
|
||||
//is space available before sortedString
|
||||
if (top + requiredMem > (uint8_t*)sortedString)
|
||||
{
|
||||
outOfMemory = true;
|
||||
return top;
|
||||
}
|
||||
|
||||
*(GlyphNode*)top = currentFileGlyphNode;
|
||||
|
||||
//clear next pointer
|
||||
uint8_t** next = (uint8_t**)(top + SizeGlyphNode);
|
||||
*next = 0;
|
||||
top += requiredMem;
|
||||
return top;
|
||||
}
|
||||
|
||||
void FontCache::cacheData(uint32_t bpp, GlyphNode* first)
|
||||
{
|
||||
GlyphNode* gn = first;
|
||||
while (gn)
|
||||
{
|
||||
uint8_t* p = (uint8_t*)gn;
|
||||
if (gn->dataOffset != 0xFFFFFFFF)
|
||||
{
|
||||
p += SizeGlyphNode;
|
||||
//next pointer
|
||||
p += 4;
|
||||
|
||||
//seek and copy
|
||||
setPosition(glyphDataOffset + gn->dataOffset);
|
||||
uint32_t glyphSize = ((gn->width() + 1) & ~1) * gn->height() * bpp / 8;
|
||||
readData(p, glyphSize);
|
||||
|
||||
//mark glyphNode as cached
|
||||
gn->dataOffset = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
GlyphNode** next = (GlyphNode**)((uint8_t*)gn + SizeGlyphNode);
|
||||
gn = *next;
|
||||
}
|
||||
}
|
||||
|
||||
bool FontCache::createSortedString(const Unicode::UnicodeChar* string)
|
||||
{
|
||||
int length = Unicode::strlen(string);
|
||||
//sorted string is allocated at end of buffer
|
||||
sortedString = (Unicode::UnicodeChar*)(gsubStart - (length + 1) * 2);
|
||||
if ((uint8_t*)sortedString < top)
|
||||
{
|
||||
//unable to allocate string buffer in end of memory
|
||||
return false;
|
||||
}
|
||||
int n = 0;
|
||||
Unicode::UnicodeChar* uc = sortedString;
|
||||
while (*string)
|
||||
{
|
||||
*uc++ = *string++;
|
||||
n++;
|
||||
}
|
||||
*uc = 0;
|
||||
return sortSortedString(n);
|
||||
}
|
||||
|
||||
bool FontCache::createSortedLigatures(CachedFont* font, TypedText t, const Unicode::UnicodeChar* string, ...)
|
||||
{
|
||||
va_list pArg;
|
||||
va_start(pArg, string);
|
||||
TextProvider tp;
|
||||
tp.initialize(string, pArg, font->getGSUBTable());
|
||||
va_end(pArg);
|
||||
Unicode::UnicodeChar ligature;
|
||||
sortedString = (Unicode::UnicodeChar*)(gsubStart);
|
||||
if ((uint8_t*)(sortedString - 1) < top)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
*--sortedString = 0;
|
||||
int n = 0;
|
||||
while ((ligature = tp.getNextLigature(t.getTextDirection())) != 0)
|
||||
{
|
||||
if ((uint8_t*)(sortedString - 1) < top)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
*--sortedString = ligature;
|
||||
n++;
|
||||
}
|
||||
return sortSortedString(n);
|
||||
}
|
||||
|
||||
bool FontCache::sortSortedString(int n)
|
||||
{
|
||||
Unicode::UnicodeChar* uc = sortedString;
|
||||
for (int i = 0; i < n - 1; i++)
|
||||
{
|
||||
bool swapped = false;
|
||||
for (int j = 0; j < n - i - 1; j++)
|
||||
{
|
||||
if (uc[j] > uc[j + 1])
|
||||
{
|
||||
Unicode::UnicodeChar temp = uc[j];
|
||||
uc[j] = uc[j + 1];
|
||||
uc[j + 1] = temp;
|
||||
swapped = true;
|
||||
}
|
||||
}
|
||||
|
||||
//if no two elements were swapped by inner loop, then break
|
||||
if (!swapped)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void FontCache::setPosition(uint32_t position)
|
||||
{
|
||||
if (reader)
|
||||
{
|
||||
reader->setPosition(position);
|
||||
}
|
||||
}
|
||||
|
||||
void FontCache::readData(void* out, uint32_t numberOfBytes)
|
||||
{
|
||||
if (reader)
|
||||
{
|
||||
reader->readData(out, numberOfBytes);
|
||||
}
|
||||
}
|
||||
} // namespace touchgfx
|
@ -0,0 +1,203 @@
|
||||
#include <touchgfx/hal/Types.hpp>
|
||||
|
||||
FONT_GLYPH_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const uint8_t unicodes_verdana_10_4bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
// Unicode: [0x0020]
|
||||
// (Has no glyph data)
|
||||
// Unicode: [0x002B]
|
||||
0x00, 0x42, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0xDC, 0xED, 0xDD, 0x02,
|
||||
0x00, 0x85, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00,
|
||||
// Unicode: [0x002D]
|
||||
0xE4, 0xBE,
|
||||
// Unicode: [0x002E]
|
||||
0x36, 0x6C,
|
||||
// Unicode: [0x002F]
|
||||
0x00, 0xC0, 0x01, 0x00, 0xA3, 0x00, 0x00, 0x49, 0x00, 0x00, 0x0C, 0x00, 0x50, 0x08, 0x00, 0xA0,
|
||||
0x03, 0x00, 0xC1, 0x00, 0x00, 0x76, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x06, 0x00, 0x00,
|
||||
// Unicode: [0x0030]
|
||||
0x40, 0xDC, 0x08, 0xD0, 0x02, 0x4B, 0xC3, 0x00, 0x86, 0xA5, 0x00, 0xA5, 0xA5, 0x00, 0xA5, 0xB3,
|
||||
0x00, 0x96, 0xD0, 0x02, 0x5B, 0x40, 0xDD, 0x08,
|
||||
// Unicode: [0x0031]
|
||||
0x20, 0x0C, 0x00, 0xD7, 0x0C, 0x00, 0x20, 0x0C, 0x00, 0x20, 0x0C, 0x00, 0x20, 0x0C, 0x00, 0x20,
|
||||
0x0C, 0x00, 0x20, 0x0C, 0x00, 0xC8, 0xCE, 0x04,
|
||||
// Unicode: [0x0032]
|
||||
0xB0, 0xEE, 0x08, 0x50, 0x10, 0x4C, 0x00, 0x00, 0x5A, 0x00, 0x10, 0x2D, 0x00, 0xB0, 0x06, 0x00,
|
||||
0x7A, 0x00, 0xB1, 0x07, 0x00, 0xF3, 0xDD, 0x9D,
|
||||
// Unicode: [0x0033]
|
||||
0xA0, 0xED, 0x1A, 0x50, 0x00, 0x6B, 0x00, 0x10, 0x3B, 0x00, 0xF7, 0x08, 0x00, 0x00, 0x5A, 0x00,
|
||||
0x00, 0x86, 0x42, 0x10, 0x5B, 0xB2, 0xDE, 0x08,
|
||||
// Unicode: [0x0034]
|
||||
0x00, 0x70, 0x0C, 0x00, 0xC4, 0x0C, 0x10, 0x3C, 0x0C, 0xB0, 0x24, 0x0C, 0x77, 0x20, 0x0C, 0xD9,
|
||||
0xDD, 0xBF, 0x00, 0x20, 0x0C, 0x00, 0x20, 0x0C,
|
||||
// Unicode: [0x0035]
|
||||
0xC0, 0xEE, 0x8E, 0xC0, 0x03, 0x00, 0xC0, 0x03, 0x00, 0xC0, 0xDE, 0x09, 0x10, 0x10, 0x7A, 0x00,
|
||||
0x00, 0x96, 0x41, 0x10, 0x6B, 0xB1, 0xDE, 0x08,
|
||||
// Unicode: [0x0036]
|
||||
0x00, 0xD8, 0x1E, 0x90, 0x09, 0x00, 0xD1, 0x00, 0x00, 0xD3, 0xDB, 0x1A, 0xB5, 0x01, 0x98, 0xB4,
|
||||
0x00, 0xB3, 0xD1, 0x03, 0x87, 0x40, 0xDC, 0x1A,
|
||||
// Unicode: [0x0037]
|
||||
0xE3, 0xEE, 0xBE, 0x00, 0x00, 0x96, 0x00, 0x00, 0x2D, 0x00, 0x60, 0x09, 0x00, 0xD0, 0x02, 0x00,
|
||||
0xA6, 0x00, 0x00, 0x2D, 0x00, 0x50, 0x0A, 0x00,
|
||||
// Unicode: [0x0038]
|
||||
0x60, 0xCC, 0x1A, 0xD1, 0x00, 0x78, 0xE2, 0x02, 0x68, 0x70, 0x9E, 0x0A, 0xC1, 0x53, 0x5D, 0x95,
|
||||
0x00, 0xB5, 0xD3, 0x01, 0x87, 0x70, 0xCC, 0x1A,
|
||||
// Unicode: [0x0039]
|
||||
0x60, 0xDD, 0x08, 0xC3, 0x01, 0x4B, 0x96, 0x00, 0x95, 0xD4, 0x01, 0xA6, 0x70, 0xCD, 0x9B, 0x00,
|
||||
0x00, 0x69, 0x00, 0x40, 0x1D, 0xA0, 0xBE, 0x02,
|
||||
// Unicode: [0x003F]
|
||||
0xD2, 0xCE, 0x03, 0x21, 0x50, 0x0C, 0x00, 0x30, 0x0C, 0x00, 0xC1, 0x05, 0x00, 0x4D, 0x00, 0x00,
|
||||
0x0C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0F, 0x00,
|
||||
// Unicode: [0x0041]
|
||||
0x00, 0xF6, 0x03, 0x00, 0x00, 0xAB, 0x08, 0x00, 0x10, 0x2D, 0x0D, 0x00, 0x60, 0x09, 0x3C, 0x00,
|
||||
0xB0, 0x04, 0x88, 0x00, 0xF1, 0xDD, 0xDD, 0x00, 0x96, 0x00, 0xD0, 0x03, 0x4B, 0x00, 0x80, 0x08,
|
||||
// Unicode: [0x0042]
|
||||
0xDF, 0xDD, 0x04, 0x0E, 0x50, 0x0C, 0x0E, 0x60, 0x09, 0xDF, 0xFD, 0x06, 0x0E, 0x10, 0x4D, 0x0E,
|
||||
0x00, 0x69, 0x0E, 0x10, 0x3D, 0xDF, 0xDD, 0x06,
|
||||
// Unicode: [0x0043]
|
||||
0x10, 0xE9, 0xBE, 0x04, 0xB0, 0x08, 0x40, 0x07, 0xD3, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00,
|
||||
0x96, 0x00, 0x00, 0x00, 0xD3, 0x00, 0x00, 0x00, 0xC0, 0x08, 0x30, 0x06, 0x10, 0xDA, 0xBE, 0x04,
|
||||
// Unicode: [0x0044]
|
||||
0xDF, 0xCE, 0x05, 0x00, 0x0E, 0x30, 0x6C, 0x00, 0x0E, 0x00, 0xD3, 0x00, 0x0E, 0x00, 0xE0, 0x01,
|
||||
0x0E, 0x00, 0xE0, 0x01, 0x0E, 0x00, 0xD3, 0x00, 0x0E, 0x30, 0x5C, 0x00, 0xDF, 0xCE, 0x05, 0x00,
|
||||
// Unicode: [0x0045]
|
||||
0xEF, 0xEE, 0x0B, 0x0E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xEF, 0xEE, 0x0A, 0x0E, 0x00, 0x00, 0x0E,
|
||||
0x00, 0x00, 0x0E, 0x00, 0x00, 0xEF, 0xEE, 0x0B,
|
||||
// Unicode: [0x0046]
|
||||
0xEF, 0xEE, 0x09, 0x0E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xEF, 0xEE, 0x01, 0x0E, 0x00, 0x00, 0x0E,
|
||||
0x00, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x00, 0x00,
|
||||
// Unicode: [0x0047]
|
||||
0x10, 0xD9, 0xCE, 0x07, 0xB0, 0x19, 0x20, 0x0A, 0xD3, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00,
|
||||
0xA6, 0x00, 0xEC, 0x1E, 0xD3, 0x00, 0x00, 0x1E, 0xB0, 0x19, 0x10, 0x1E, 0x10, 0xD8, 0xCD, 0x07,
|
||||
// Unicode: [0x0048]
|
||||
0x0E, 0x00, 0x86, 0x0E, 0x00, 0x86, 0x0E, 0x00, 0x86, 0xEF, 0xEE, 0x8E, 0x0E, 0x00, 0x86, 0x0E,
|
||||
0x00, 0x86, 0x0E, 0x00, 0x86, 0x0E, 0x00, 0x86,
|
||||
// Unicode: [0x0049]
|
||||
0xD4, 0x7E, 0x60, 0x09, 0x60, 0x09, 0x60, 0x09, 0x60, 0x09, 0x60, 0x09, 0x60, 0x09, 0xD4, 0x7E,
|
||||
// Unicode: [0x004A]
|
||||
0xB0, 0xAD, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0x88, 0xEA, 0x1B,
|
||||
// Unicode: [0x004B]
|
||||
0x0F, 0x10, 0x4C, 0x0F, 0xB0, 0x06, 0x0F, 0x89, 0x00, 0x7F, 0x0A, 0x00, 0xBF, 0x2D, 0x00, 0x0F,
|
||||
0xC7, 0x00, 0x0F, 0xA0, 0x09, 0x0F, 0x10, 0x6C,
|
||||
// Unicode: [0x004C]
|
||||
0x0E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x0E,
|
||||
0x00, 0x00, 0x0E, 0x00, 0x00, 0xEF, 0xEE, 0x08,
|
||||
// Unicode: [0x004D]
|
||||
0x8F, 0x00, 0xF2, 0x07, 0xDE, 0x00, 0xC8, 0x07, 0x8D, 0x06, 0x8C, 0x07, 0x2D, 0x6C, 0x87, 0x07,
|
||||
0x0D, 0xDA, 0x81, 0x07, 0x0D, 0x83, 0x80, 0x07, 0x0D, 0x00, 0x80, 0x07, 0x0D, 0x00, 0x80, 0x07,
|
||||
// Unicode: [0x004E]
|
||||
0xBF, 0x00, 0x86, 0xCD, 0x03, 0x86, 0x5D, 0x0A, 0x86, 0x0D, 0x2C, 0x86, 0x0D, 0xA5, 0x86, 0x0D,
|
||||
0xD0, 0x88, 0x0D, 0x60, 0x8E, 0x0D, 0x00, 0x8D,
|
||||
// Unicode: [0x004F]
|
||||
0x10, 0xEA, 0x9E, 0x01, 0xB0, 0x07, 0x90, 0x0A, 0xC3, 0x00, 0x00, 0x1E, 0x96, 0x00, 0x00, 0x4B,
|
||||
0x96, 0x00, 0x00, 0x4B, 0xC3, 0x00, 0x00, 0x1E, 0xC0, 0x07, 0x90, 0x0A, 0x10, 0xEA, 0x9E, 0x01,
|
||||
// Unicode: [0x0050]
|
||||
0xDF, 0xAD, 0x01, 0x0E, 0x90, 0x08, 0x0E, 0x50, 0x0A, 0x0E, 0xA1, 0x07, 0xDF, 0x8D, 0x00, 0x0E,
|
||||
0x00, 0x00, 0x0E, 0x00, 0x00, 0x0E, 0x00, 0x00,
|
||||
// Unicode: [0x0051]
|
||||
0x10, 0xEA, 0x9E, 0x01, 0xB0, 0x07, 0x90, 0x0A, 0xC3, 0x00, 0x00, 0x1E, 0x96, 0x00, 0x00, 0x4B,
|
||||
0x96, 0x00, 0x00, 0x4B, 0xC3, 0x00, 0x00, 0x1E, 0xC0, 0x07, 0x90, 0x0A, 0x10, 0xEA, 0xAF, 0x01,
|
||||
0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0xC2, 0x6E,
|
||||
// Unicode: [0x0052]
|
||||
0xDF, 0xBD, 0x01, 0x0E, 0x80, 0x09, 0x0E, 0x50, 0x0B, 0x0E, 0xA0, 0x06, 0xDF, 0x9E, 0x00, 0x0E,
|
||||
0xD4, 0x01, 0x0E, 0x70, 0x0B, 0x0E, 0x00, 0x9A,
|
||||
// Unicode: [0x0053]
|
||||
0x50, 0xED, 0x9D, 0x00, 0xD2, 0x02, 0x71, 0x00, 0xC4, 0x00, 0x00, 0x00, 0xC0, 0x8C, 0x15, 0x00,
|
||||
0x00, 0x84, 0xDC, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x74, 0x01, 0xD2, 0x01, 0xA2, 0xDE, 0x4C, 0x00,
|
||||
// Unicode: [0x0054]
|
||||
0xEE, 0xFE, 0xEE, 0x02, 0x00, 0x86, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00,
|
||||
0x00, 0x86, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00,
|
||||
// Unicode: [0x0055]
|
||||
0xD2, 0x00, 0x80, 0x07, 0xD2, 0x00, 0x80, 0x07, 0xD2, 0x00, 0x80, 0x07, 0xD2, 0x00, 0x80, 0x07,
|
||||
0xD2, 0x00, 0x80, 0x07, 0xD1, 0x00, 0x90, 0x05, 0xC0, 0x05, 0xD2, 0x02, 0x20, 0xDC, 0x5D, 0x00,
|
||||
// Unicode: [0x0056]
|
||||
0x5B, 0x00, 0x70, 0x08, 0xA6, 0x00, 0xC0, 0x03, 0xE1, 0x00, 0xD2, 0x00, 0xB0, 0x04, 0x86, 0x00,
|
||||
0x60, 0x09, 0x3B, 0x00, 0x10, 0x1E, 0x0D, 0x00, 0x00, 0xAB, 0x08, 0x00, 0x00, 0xF6, 0x03, 0x00,
|
||||
// Unicode: [0x0057]
|
||||
0x86, 0x00, 0x8A, 0x00, 0x59, 0xC3, 0x00, 0xCC, 0x00, 0x1D, 0xE0, 0x10, 0xCA, 0x11, 0x0D, 0xB0,
|
||||
0x54, 0x97, 0x54, 0x09, 0x70, 0x87, 0x53, 0x87, 0x06, 0x30, 0xBB, 0x20, 0xBA, 0x02, 0x00, 0xBD,
|
||||
0x00, 0xDC, 0x00, 0x00, 0x8B, 0x00, 0xAA, 0x00,
|
||||
// Unicode: [0x0058]
|
||||
0xC5, 0x00, 0xC0, 0x03, 0xA0, 0x06, 0x97, 0x00, 0x20, 0x3D, 0x1D, 0x00, 0x00, 0xE7, 0x05, 0x00,
|
||||
0x00, 0xE7, 0x05, 0x00, 0x20, 0x3D, 0x1D, 0x00, 0xB0, 0x05, 0x98, 0x00, 0xA5, 0x00, 0xD0, 0x03,
|
||||
// Unicode: [0x0059]
|
||||
0x6A, 0x00, 0xC3, 0xD2, 0x01, 0x4B, 0x90, 0x57, 0x0A, 0x10, 0xDD, 0x02, 0x00, 0x98, 0x00, 0x00,
|
||||
0x86, 0x00, 0x00, 0x86, 0x00, 0x00, 0x86, 0x00,
|
||||
// Unicode: [0x005A]
|
||||
0xE3, 0xEE, 0xFE, 0x03, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x20, 0x2D, 0x00, 0x00, 0xC0, 0x05, 0x00,
|
||||
0x00, 0x98, 0x00, 0x00, 0x40, 0x0C, 0x00, 0x00, 0xD1, 0x02, 0x00, 0x00, 0xF6, 0xEE, 0xEE, 0x04,
|
||||
// Unicode: [0x0061]
|
||||
0xD0, 0xDD, 0x07, 0x20, 0x10, 0x1D, 0x60, 0xCB, 0x2E, 0xC5, 0x01, 0x2C, 0x86, 0x10, 0x2D, 0xB1,
|
||||
0xBB, 0x2D,
|
||||
// Unicode: [0x0062]
|
||||
0xC1, 0x00, 0x00, 0xC1, 0x00, 0x00, 0xD1, 0xEA, 0x1B, 0xE1, 0x03, 0x7A, 0xC1, 0x00, 0xA4, 0xC1,
|
||||
0x00, 0x95, 0xD1, 0x00, 0x5A, 0xE1, 0xDC, 0x09,
|
||||
// Unicode: [0x0063]
|
||||
0x50, 0xDC, 0x0A, 0xD2, 0x01, 0x04, 0x86, 0x00, 0x00, 0x86, 0x00, 0x00, 0xD3, 0x01, 0x04, 0x60,
|
||||
0xDD, 0x0A,
|
||||
// Unicode: [0x0064]
|
||||
0x00, 0x00, 0x59, 0x00, 0x00, 0x59, 0x60, 0xDD, 0x5D, 0xD2, 0x01, 0x5A, 0x86, 0x00, 0x59, 0x86,
|
||||
0x00, 0x59, 0xB3, 0x00, 0x5B, 0x80, 0xBC, 0x5C,
|
||||
// Unicode: [0x0065]
|
||||
0x50, 0xCC, 0x09, 0xB2, 0x00, 0x49, 0xD6, 0xBB, 0x6C, 0x86, 0x00, 0x00, 0xD2, 0x02, 0x32, 0x50,
|
||||
0xDC, 0x3C,
|
||||
// Unicode: [0x0066]
|
||||
0x70, 0xBD, 0xD0, 0x00, 0xF8, 0x6C, 0xD1, 0x00, 0xD1, 0x00, 0xD1, 0x00, 0xD1, 0x00, 0xD1, 0x00,
|
||||
// Unicode: [0x0067]
|
||||
0x50, 0xDD, 0x5D, 0xD2, 0x01, 0x5A, 0x86, 0x00, 0x59, 0x86, 0x00, 0x59, 0xC3, 0x10, 0x5B, 0x80,
|
||||
0xCE, 0x4C, 0x10, 0x10, 0x2C, 0xC0, 0xDD, 0x06,
|
||||
// Unicode: [0x0068]
|
||||
0xC1, 0x00, 0x00, 0xC1, 0x00, 0x00, 0xD1, 0xE9, 0x1B, 0xE1, 0x04, 0x5A, 0xC1, 0x00, 0x77, 0xC1,
|
||||
0x00, 0x77, 0xC1, 0x00, 0x77, 0xC1, 0x00, 0x77,
|
||||
// Unicode: [0x0069]
|
||||
0xD2, 0x00, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1,
|
||||
// Unicode: [0x006A]
|
||||
0x00, 0x97, 0x00, 0x00, 0x60, 0x8D, 0x00, 0x86, 0x00, 0x86, 0x00, 0x86, 0x00, 0x86, 0x00, 0x86,
|
||||
0x00, 0x78, 0xD4, 0x1C,
|
||||
// Unicode: [0x006B]
|
||||
0xD1, 0x00, 0x00, 0xD1, 0x00, 0x00, 0xD1, 0x10, 0x4C, 0xD1, 0xB1, 0x05, 0xD1, 0x6A, 0x00, 0xF1,
|
||||
0xBA, 0x00, 0xD1, 0x90, 0x09, 0xD1, 0x00, 0x7B,
|
||||
// Unicode: [0x006C]
|
||||
0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1,
|
||||
// Unicode: [0x006D]
|
||||
0xD1, 0xCA, 0x7B, 0xDB, 0x04, 0xE1, 0x02, 0x8B, 0x30, 0x0B, 0xC1, 0x00, 0x59, 0x10, 0x0D, 0xC1,
|
||||
0x00, 0x59, 0x10, 0x0D, 0xC1, 0x00, 0x59, 0x10, 0x0D, 0xC1, 0x00, 0x59, 0x10, 0x0D,
|
||||
// Unicode: [0x006E]
|
||||
0xD1, 0xCA, 0x1B, 0xE1, 0x02, 0x59, 0xC1, 0x00, 0x77, 0xC1, 0x00, 0x77, 0xC1, 0x00, 0x77, 0xC1,
|
||||
0x00, 0x77,
|
||||
// Unicode: [0x006F]
|
||||
0x60, 0xDD, 0x07, 0xC3, 0x01, 0x3C, 0x86, 0x00, 0x77, 0x86, 0x00, 0x77, 0xC3, 0x01, 0x3C, 0x60,
|
||||
0xDD, 0x07,
|
||||
// Unicode: [0x0070]
|
||||
0xE1, 0xCA, 0x1B, 0xD1, 0x01, 0x78, 0xC1, 0x00, 0xA4, 0xC1, 0x00, 0x95, 0xD1, 0x00, 0x5B, 0xE1,
|
||||
0xDC, 0x09, 0xC1, 0x00, 0x00, 0xC1, 0x00, 0x00,
|
||||
// Unicode: [0x0071]
|
||||
0x60, 0xDD, 0x5D, 0xD2, 0x01, 0x5A, 0x86, 0x00, 0x59, 0x86, 0x00, 0x59, 0xC3, 0x11, 0x5C, 0x80,
|
||||
0xCE, 0x5B, 0x00, 0x00, 0x59, 0x00, 0x00, 0x59,
|
||||
// Unicode: [0x0072]
|
||||
0xD1, 0xE9, 0x04, 0xE1, 0x04, 0x00, 0xC1, 0x00, 0x00, 0xC1, 0x00, 0x00, 0xC1, 0x00, 0x00, 0xC1,
|
||||
0x00, 0x00,
|
||||
// Unicode: [0x0073]
|
||||
0xA1, 0xDD, 0x06, 0x96, 0x00, 0x03, 0xE3, 0x48, 0x00, 0x20, 0xB6, 0x09, 0x23, 0x40, 0x0B, 0xD4,
|
||||
0xCD, 0x03,
|
||||
// Unicode: [0x0074]
|
||||
0x61, 0x00, 0xD1, 0x00, 0xF9, 0x9C, 0xD1, 0x00, 0xD1, 0x00, 0xD1, 0x00, 0xE0, 0x00, 0x80, 0x9D,
|
||||
// Unicode: [0x0075]
|
||||
0xC2, 0x00, 0x68, 0xC2, 0x00, 0x68, 0xC2, 0x00, 0x68, 0xC2, 0x00, 0x68, 0xD1, 0x00, 0x6A, 0x70,
|
||||
0xBC, 0x6B,
|
||||
// Unicode: [0x0076]
|
||||
0x78, 0x00, 0x78, 0xC2, 0x00, 0x1D, 0xC0, 0x33, 0x0B, 0x60, 0x98, 0x05, 0x10, 0xDD, 0x00, 0x00,
|
||||
0x9B, 0x00,
|
||||
// Unicode: [0x0077]
|
||||
0x77, 0x60, 0x0A, 0xA4, 0xA3, 0xA0, 0x0C, 0x67, 0xD0, 0xB1, 0x49, 0x3A, 0xB0, 0x76, 0x84, 0x0C,
|
||||
0x80, 0x2D, 0xD0, 0x0A, 0x40, 0x0D, 0xA0, 0x07,
|
||||
// Unicode: [0x0078]
|
||||
0xC5, 0x00, 0x4C, 0xA0, 0x77, 0x08, 0x10, 0xBD, 0x00, 0x10, 0xCC, 0x00, 0xA0, 0x86, 0x09, 0xA5,
|
||||
0x00, 0x4D,
|
||||
// Unicode: [0x0079]
|
||||
0x78, 0x00, 0x68, 0xD2, 0x00, 0x1D, 0xB0, 0x54, 0x09, 0x50, 0xBA, 0x03, 0x00, 0xCD, 0x00, 0x00,
|
||||
0x7A, 0x00, 0x00, 0x1D, 0x00, 0x50, 0x0A, 0x00,
|
||||
// Unicode: [0x007A]
|
||||
0xC6, 0xDC, 0x0B, 0x00, 0xC0, 0x03, 0x00, 0x78, 0x00, 0x40, 0x0B, 0x00, 0xD1, 0x02, 0x00, 0xE8,
|
||||
0xCC, 0x0B
|
||||
};
|
@ -0,0 +1,12 @@
|
||||
#include <touchgfx/hal/Types.hpp>
|
||||
|
||||
FONT_GLYPH_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const uint8_t unicodes_verdana_20_4bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
// Unicode: [0x003F]
|
||||
0x93, 0xEC, 0xDE, 0x29, 0x00, 0xF7, 0xAD, 0xDA, 0xEF, 0x02, 0x33, 0x00, 0x00, 0xF9, 0x0A, 0x00,
|
||||
0x00, 0x00, 0xF3, 0x0C, 0x00, 0x00, 0x00, 0xF5, 0x0A, 0x00, 0x00, 0x10, 0xFD, 0x03, 0x00, 0x00,
|
||||
0xD5, 0x6F, 0x00, 0x00, 0xB0, 0xCF, 0x03, 0x00, 0x00, 0xE0, 0x0C, 0x00, 0x00, 0x00, 0xE0, 0x0C,
|
||||
0x00, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x0E, 0x00,
|
||||
0x00, 0x00, 0xF0, 0x0E, 0x00, 0x00
|
||||
};
|
@ -0,0 +1,25 @@
|
||||
#include <touchgfx/hal/Types.hpp>
|
||||
|
||||
FONT_GLYPH_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const uint8_t unicodes_verdana_40_4bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
// Unicode: [0x003F]
|
||||
0x00, 0x10, 0x53, 0x77, 0x57, 0x02, 0x00, 0x00, 0x00, 0x83, 0xFC, 0xFF, 0xFF, 0xFF, 0xDF, 0x17,
|
||||
0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x02, 0x00, 0xFD, 0xFF, 0xFF, 0xEF, 0xFF,
|
||||
0xFF, 0xFF, 0x2E, 0x00, 0xFD, 0x9E, 0x15, 0x00, 0x41, 0xFA, 0xFF, 0xBF, 0x00, 0x6B, 0x00, 0x00,
|
||||
0x00, 0x00, 0x60, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0x07, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF,
|
||||
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFB, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xC1, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0x0C, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xD3, 0xFF, 0xDF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0x2C, 0x00, 0x00,
|
||||
0x00, 0x00, 0x60, 0xFE, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xDF, 0x04, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x09,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0,
|
||||
0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x44, 0x03, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF,
|
||||
0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xF1, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
@ -0,0 +1,43 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#include <fonts/GeneratedFont.hpp>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
GeneratedFont::GeneratedFont(const GlyphNode* list, uint16_t size, uint16_t height, uint8_t pixBelowBase, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataInternalFlash, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData) :
|
||||
ConstFont(list, size, height, pixBelowBase, bitsPerPixel, byteAlignRow, maxLeft, maxRight, fallbackChar, ellipsisChar),
|
||||
glyphData(glyphDataInternalFlash),
|
||||
kerningData(kerningList),
|
||||
gsubTable(gsubData)
|
||||
{
|
||||
}
|
||||
|
||||
const uint8_t* GeneratedFont::getPixelData(const GlyphNode* glyph) const
|
||||
{
|
||||
const uint8_t* const* table = (const uint8_t* const*)glyphData;
|
||||
return &(table[glyph->unicode / 2048][glyph->dataOffset]);
|
||||
}
|
||||
|
||||
int8_t GeneratedFont::getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const
|
||||
{
|
||||
if (!glyph || glyph->kerningTableSize == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const KerningNode* kerndata = kerningData + glyph->kerningTablePos();
|
||||
for (uint16_t i = glyph->kerningTableSize; i > 0; i--, kerndata++)
|
||||
{
|
||||
if (prevChar == kerndata->unicodePrevChar)
|
||||
{
|
||||
return kerndata->distance;
|
||||
}
|
||||
if (prevChar < kerndata->unicodePrevChar)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} // namespace touchgfx
|
@ -0,0 +1,12 @@
|
||||
#include <touchgfx/Font.hpp>
|
||||
|
||||
FONT_KERNING_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const touchgfx::KerningNode kerning_verdana_10_4bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
{ 0x0046, -1 }, // (First char = [0x0046, F], Second char = [0x002E, .], Kerning dist = -1)
|
||||
{ 0x0050, -1 }, // (First char = [0x0050, P], Second char = [0x002E, .], Kerning dist = -1)
|
||||
{ 0x0054, -1 }, // (First char = [0x0054, T], Second char = [0x002E, .], Kerning dist = -1)
|
||||
{ 0x0056, -1 }, // (First char = [0x0056, V], Second char = [0x002E, .], Kerning dist = -1)
|
||||
{ 0x0059, -1 }, // (First char = [0x0059, Y], Second char = [0x002E, .], Kerning dist = -1)
|
||||
{ 0x0072, -1 }, // (First char = [0x0072, r], Second char = [0x002E, .], Kerning dist = -1)
|
||||
};
|
@ -0,0 +1,7 @@
|
||||
#include <touchgfx/Font.hpp>
|
||||
|
||||
FONT_KERNING_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const touchgfx::KerningNode kerning_verdana_20_4bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
{ 0, 0 }
|
||||
};
|
@ -0,0 +1,7 @@
|
||||
#include <touchgfx/Font.hpp>
|
||||
|
||||
FONT_KERNING_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const touchgfx::KerningNode kerning_verdana_40_4bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
{ 0, 0 }
|
||||
};
|
@ -0,0 +1,93 @@
|
||||
// Autogenerated, do not edit
|
||||
|
||||
#include <fonts/GeneratedFont.hpp>
|
||||
|
||||
FONT_TABLE_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const touchgfx::GlyphNode glyphs_verdana_10_4bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
{ 0, 0x0020, 0, 0, 0, 0, 4, 0, 0, 0x00 },
|
||||
{ 0, 0x002B, 7, 7, 7, 1, 8, 0, 0, 0x00 },
|
||||
{ 28, 0x002D, 4, 1, 4, 0, 5, 0, 0, 0x00 },
|
||||
{ 30, 0x002E, 2, 2, 2, 1, 4, 0, 6, 0x00 },
|
||||
{ 32, 0x002F, 5, 10, 8, 0, 5, 0, 0, 0x00 },
|
||||
{ 62, 0x0030, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 86, 0x0031, 5, 8, 8, 1, 6, 0, 0, 0x00 },
|
||||
{ 110, 0x0032, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 134, 0x0033, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 158, 0x0034, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 182, 0x0035, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 206, 0x0036, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 230, 0x0037, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 254, 0x0038, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 278, 0x0039, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 302, 0x003F, 5, 8, 8, 0, 5, 0, 0, 0x00 },
|
||||
{ 326, 0x0041, 7, 8, 8, 0, 7, 0, 0, 0x00 },
|
||||
{ 358, 0x0042, 6, 8, 8, 1, 7, 0, 0, 0x00 },
|
||||
{ 382, 0x0043, 7, 8, 8, 0, 7, 0, 0, 0x00 },
|
||||
{ 414, 0x0044, 7, 8, 8, 1, 8, 0, 0, 0x00 },
|
||||
{ 446, 0x0045, 5, 8, 8, 1, 6, 0, 0, 0x00 },
|
||||
{ 470, 0x0046, 5, 8, 8, 1, 6, 0, 0, 0x00 },
|
||||
{ 494, 0x0047, 8, 8, 8, 0, 8, 0, 0, 0x00 },
|
||||
{ 526, 0x0048, 6, 8, 8, 1, 8, 0, 0, 0x00 },
|
||||
{ 550, 0x0049, 4, 8, 8, 0, 4, 0, 0, 0x00 },
|
||||
{ 566, 0x004A, 4, 8, 8, 0, 5, 0, 0, 0x00 },
|
||||
{ 582, 0x004B, 6, 8, 8, 1, 7, 0, 0, 0x00 },
|
||||
{ 606, 0x004C, 5, 8, 8, 1, 6, 0, 0, 0x00 },
|
||||
{ 630, 0x004D, 7, 8, 8, 1, 8, 0, 0, 0x00 },
|
||||
{ 662, 0x004E, 6, 8, 8, 1, 7, 0, 0, 0x00 },
|
||||
{ 686, 0x004F, 8, 8, 8, 0, 8, 0, 0, 0x00 },
|
||||
{ 718, 0x0050, 5, 8, 8, 1, 6, 0, 0, 0x00 },
|
||||
{ 742, 0x0051, 8, 10, 8, 0, 8, 0, 0, 0x00 },
|
||||
{ 782, 0x0052, 6, 8, 8, 1, 7, 0, 0, 0x00 },
|
||||
{ 806, 0x0053, 7, 8, 8, 0, 7, 0, 0, 0x00 },
|
||||
{ 838, 0x0054, 7, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 870, 0x0055, 7, 8, 8, 0, 7, 0, 0, 0x00 },
|
||||
{ 902, 0x0056, 7, 8, 8, 0, 7, 0, 0, 0x00 },
|
||||
{ 934, 0x0057, 10, 8, 8, 0, 10, 0, 0, 0x00 },
|
||||
{ 974, 0x0058, 7, 8, 8, 0, 7, 0, 0, 0x00 },
|
||||
{ 1006, 0x0059, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 1030, 0x005A, 7, 8, 8, 0, 7, 0, 0, 0x00 },
|
||||
{ 1062, 0x0061, 6, 6, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1080, 0x0062, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 1104, 0x0063, 5, 6, 6, 0, 5, 0, 0, 0x00 },
|
||||
{ 1122, 0x0064, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 1146, 0x0065, 6, 6, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1164, 0x0066, 4, 8, 8, 0, 4, 0, 0, 0x00 },
|
||||
{ 1180, 0x0067, 6, 8, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1204, 0x0068, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 1228, 0x0069, 2, 8, 8, 0, 3, 0, 0, 0x00 },
|
||||
{ 1236, 0x006A, 4, 10, 8, -1, 3, 0, 0, 0x00 },
|
||||
{ 1256, 0x006B, 6, 8, 8, 0, 6, 0, 0, 0x00 },
|
||||
{ 1280, 0x006C, 2, 8, 8, 0, 3, 0, 0, 0x00 },
|
||||
{ 1288, 0x006D, 9, 6, 6, 0, 10, 0, 0, 0x00 },
|
||||
{ 1318, 0x006E, 6, 6, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1336, 0x006F, 6, 6, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1354, 0x0070, 6, 8, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1378, 0x0071, 6, 8, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1402, 0x0072, 5, 6, 6, 0, 4, 0, 0, 0x00 },
|
||||
{ 1420, 0x0073, 5, 6, 6, 0, 5, 0, 0, 0x00 },
|
||||
{ 1438, 0x0074, 4, 8, 8, 0, 4, 0, 0, 0x00 },
|
||||
{ 1454, 0x0075, 6, 6, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1472, 0x0076, 6, 6, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1490, 0x0077, 8, 6, 6, 0, 8, 0, 0, 0x00 },
|
||||
{ 1514, 0x0078, 6, 6, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1532, 0x0079, 6, 8, 6, 0, 6, 0, 0, 0x00 },
|
||||
{ 1556, 0x007A, 5, 6, 6, 0, 5, 0, 0, 0x00 }
|
||||
};
|
||||
|
||||
// verdana_10_4bpp
|
||||
extern const touchgfx::GlyphNode glyphs_verdana_10_4bpp[];
|
||||
extern const uint8_t unicodes_verdana_10_4bpp_0[];
|
||||
extern const uint8_t* const unicodes_verdana_10_4bpp[] =
|
||||
{
|
||||
unicodes_verdana_10_4bpp_0
|
||||
};
|
||||
extern const touchgfx::KerningNode kerning_verdana_10_4bpp[];
|
||||
|
||||
touchgfx::GeneratedFont& getFont_verdana_10_4bpp();
|
||||
|
||||
touchgfx::GeneratedFont& getFont_verdana_10_4bpp()
|
||||
{
|
||||
static touchgfx::GeneratedFont verdana_10_4bpp(glyphs_verdana_10_4bpp, 68, 10, 2, 4, 1, 1, 1, unicodes_verdana_10_4bpp, kerning_verdana_10_4bpp, 63, 0, 0);
|
||||
return verdana_10_4bpp;
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
// Autogenerated, do not edit
|
||||
|
||||
#include <fonts/GeneratedFont.hpp>
|
||||
|
||||
FONT_TABLE_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const touchgfx::GlyphNode glyphs_verdana_20_4bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
{ 0, 0x003F, 9, 14, 14, 1, 11, 0, 0, 0x00 }
|
||||
};
|
||||
|
||||
// verdana_20_4bpp
|
||||
extern const touchgfx::GlyphNode glyphs_verdana_20_4bpp[];
|
||||
extern const uint8_t unicodes_verdana_20_4bpp_0[];
|
||||
extern const uint8_t* const unicodes_verdana_20_4bpp[] =
|
||||
{
|
||||
unicodes_verdana_20_4bpp_0
|
||||
};
|
||||
extern const touchgfx::KerningNode kerning_verdana_20_4bpp[];
|
||||
|
||||
touchgfx::GeneratedFont& getFont_verdana_20_4bpp();
|
||||
|
||||
touchgfx::GeneratedFont& getFont_verdana_20_4bpp()
|
||||
{
|
||||
static touchgfx::GeneratedFont verdana_20_4bpp(glyphs_verdana_20_4bpp, 1, 20, 0, 4, 1, 0, 0, unicodes_verdana_20_4bpp, kerning_verdana_20_4bpp, 63, 0, 0);
|
||||
return verdana_20_4bpp;
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
// Autogenerated, do not edit
|
||||
|
||||
#include <fonts/GeneratedFont.hpp>
|
||||
|
||||
FONT_TABLE_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const touchgfx::GlyphNode glyphs_verdana_40_4bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
{ 0, 0x003F, 17, 31, 31, 3, 22, 0, 0, 0x00 }
|
||||
};
|
||||
|
||||
// verdana_40_4bpp
|
||||
extern const touchgfx::GlyphNode glyphs_verdana_40_4bpp[];
|
||||
extern const uint8_t unicodes_verdana_40_4bpp_0[];
|
||||
extern const uint8_t* const unicodes_verdana_40_4bpp[] =
|
||||
{
|
||||
unicodes_verdana_40_4bpp_0
|
||||
};
|
||||
extern const touchgfx::KerningNode kerning_verdana_40_4bpp[];
|
||||
|
||||
touchgfx::GeneratedFont& getFont_verdana_40_4bpp();
|
||||
|
||||
touchgfx::GeneratedFont& getFont_verdana_40_4bpp()
|
||||
{
|
||||
static touchgfx::GeneratedFont verdana_40_4bpp(glyphs_verdana_40_4bpp, 1, 40, 0, 4, 1, 0, 0, unicodes_verdana_40_4bpp, kerning_verdana_40_4bpp, 63, 0, 0);
|
||||
return verdana_40_4bpp;
|
||||
}
|
@ -0,0 +1,148 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#include <fonts/UnmappedDataFont.hpp>
|
||||
#include <fonts/ApplicationFontProvider.hpp>
|
||||
#include <touchgfx/hal/FlashDataReader.hpp>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
GlyphNode UnmappedDataFont::glyphNodeBuffer;
|
||||
|
||||
UnmappedDataFont::UnmappedDataFont(const GlyphNode* list, const uint16_t* unicodeList, uint16_t size, uint16_t height, uint8_t pixBelowBase, uint8_t bitsPerPixel, uint8_t byteAlignRow, uint8_t maxLeft, uint8_t maxRight, const uint8_t* const* glyphDataList, const KerningNode* kerningList, const Unicode::UnicodeChar fallbackChar, const Unicode::UnicodeChar ellipsisChar, const uint16_t* const gsubData) :
|
||||
Font(height, pixBelowBase, bitsPerPixel, byteAlignRow, maxLeft, maxRight, fallbackChar, ellipsisChar),
|
||||
glyphList(list),
|
||||
listSize(size),
|
||||
unicodes(unicodeList),
|
||||
glyphDataList(glyphDataList),
|
||||
kerningData(kerningList),
|
||||
gsubTable(gsubData)
|
||||
{
|
||||
}
|
||||
|
||||
const GlyphNode* UnmappedDataFont::getGlyph(Unicode::UnicodeChar unicode, const uint8_t*& pixelData, uint8_t& bitsPerPixel) const
|
||||
{
|
||||
int index = lookupUnicode(unicode);
|
||||
|
||||
if (index != -1)
|
||||
{
|
||||
//Read glyphNode from unmapped flash
|
||||
touchgfx::FlashDataReader* const flashReader = ApplicationFontProvider::getFlashReader();
|
||||
flashReader->copyData(glyphList + index, &glyphNodeBuffer, sizeof(GlyphNode));
|
||||
|
||||
pixelData = getPixelData(const_cast<const GlyphNode*>(&glyphNodeBuffer));
|
||||
bitsPerPixel = getBitsPerPixel();
|
||||
return &glyphNodeBuffer;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
const uint8_t* UnmappedDataFont::getPixelData(const GlyphNode* glyph) const
|
||||
{
|
||||
const uint8_t* const* table = (const uint8_t* const*)glyphDataList;
|
||||
return &(table[glyph->unicode / 2048][glyph->dataOffset]);
|
||||
}
|
||||
|
||||
int8_t UnmappedDataFont::getKerning(Unicode::UnicodeChar prevChar, const GlyphNode* glyph) const
|
||||
{
|
||||
if (!glyph || glyph->kerningTableSize == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const KerningNode* kerndata = kerningData + glyph->kerningTablePos();
|
||||
for (uint16_t i = glyph->kerningTableSize; i > 0; i--, kerndata++)
|
||||
{
|
||||
if (prevChar == kerndata->unicodePrevChar)
|
||||
{
|
||||
return kerndata->distance;
|
||||
}
|
||||
if (prevChar < kerndata->unicodePrevChar)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int UnmappedDataFont::lookupUnicode(uint16_t unicode) const
|
||||
{
|
||||
int32_t min = 0;
|
||||
int32_t max = listSize - 1;
|
||||
|
||||
int32_t mid = min + (unicode - unicodes[min]); // Linear up from [min].unicode
|
||||
if (mid < min)
|
||||
{
|
||||
// Unicode < unicodes[min] => not found
|
||||
return -1;
|
||||
}
|
||||
if (mid > max)
|
||||
{
|
||||
// Linear up ends too high
|
||||
mid = max - (unicodes[max] - unicode); // Linear down from [max].unicode
|
||||
if (mid > max)
|
||||
{
|
||||
// Unicode > unicodes[max] => not found
|
||||
return -1;
|
||||
}
|
||||
if (mid < min)
|
||||
{
|
||||
// Linear down ends too low, take the middle element
|
||||
mid = (min + max) / 2;
|
||||
}
|
||||
}
|
||||
while (min <= max)
|
||||
{
|
||||
if (unicode == unicodes[mid])
|
||||
{
|
||||
// Found at [mid]
|
||||
return mid;
|
||||
}
|
||||
if (unicode < unicodes[mid])
|
||||
{
|
||||
// Unicode is in lower half
|
||||
max = mid - 1;
|
||||
if (max < min)
|
||||
{
|
||||
// Range is empty => not found
|
||||
break;
|
||||
}
|
||||
// We adjusted max, try linear down from [max].unicode
|
||||
mid = max - (unicodes[max] - unicode);
|
||||
if (mid > max)
|
||||
{
|
||||
// Unicode > [max].unicode => not found
|
||||
break;
|
||||
}
|
||||
if (mid < min)
|
||||
{
|
||||
// Linear down ends too low, take the middle element
|
||||
mid = (min + max) / 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Unicode is in upper half
|
||||
min = mid + 1;
|
||||
if (min > max)
|
||||
{
|
||||
// Range is empty => not found
|
||||
break;
|
||||
}
|
||||
// We adjusted min, try linear up from [min].unicode
|
||||
mid = min + (unicode - unicodes[min]);
|
||||
if (mid < min)
|
||||
{
|
||||
// Unicode < [min].unicode => not found
|
||||
break;
|
||||
}
|
||||
if (mid > max)
|
||||
{
|
||||
// Linear up ends too high, take the middle element
|
||||
mid = (min + max) / 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
} // namespace touchgfx
|
@ -0,0 +1,30 @@
|
||||
/*********************************************************************************/
|
||||
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
|
||||
/*********************************************************************************/
|
||||
#ifndef FRONTENDAPPLICATIONBASE_HPP
|
||||
#define FRONTENDAPPLICATIONBASE_HPP
|
||||
|
||||
#include <mvp/MVPApplication.hpp>
|
||||
#include <gui/model/Model.hpp>
|
||||
|
||||
class FrontendHeap;
|
||||
|
||||
class FrontendApplicationBase : public touchgfx::MVPApplication
|
||||
{
|
||||
public:
|
||||
FrontendApplicationBase(Model& m, FrontendHeap& heap);
|
||||
virtual ~FrontendApplicationBase() { }
|
||||
|
||||
// Terminal
|
||||
void gotoTerminalScreenNoTransition();
|
||||
|
||||
protected:
|
||||
touchgfx::Callback<FrontendApplicationBase> transitionCallback;
|
||||
FrontendHeap& frontendHeap;
|
||||
Model& model;
|
||||
|
||||
// Terminal
|
||||
void gotoTerminalScreenNoTransitionImpl();
|
||||
};
|
||||
|
||||
#endif // FRONTENDAPPLICATIONBASE_HPP
|
@ -0,0 +1,87 @@
|
||||
/*********************************************************************************/
|
||||
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
|
||||
/*********************************************************************************/
|
||||
#ifndef FRONTENDHEAPBASE_HPP
|
||||
#define FRONTENDHEAPBASE_HPP
|
||||
|
||||
#include <common/Meta.hpp>
|
||||
#include <common/Partition.hpp>
|
||||
#include <mvp/MVPHeap.hpp>
|
||||
|
||||
#include <touchgfx/transitions/NoTransition.hpp>
|
||||
#include <gui/common/FrontendApplication.hpp>
|
||||
#include <gui/model/Model.hpp>
|
||||
|
||||
#include <gui/terminal_screen/TerminalView.hpp>
|
||||
#include <gui/terminal_screen/TerminalPresenter.hpp>
|
||||
|
||||
|
||||
/**
|
||||
* This class provides the memory that shall be used for memory allocations
|
||||
* in the frontend. A single instance of the FrontendHeap is allocated once (in heap
|
||||
* memory), and all other frontend objects such as views, presenters and data model are
|
||||
* allocated within the scope of this FrontendHeap. As such, the RAM usage of the entire
|
||||
* user interface is sizeof(FrontendHeap).
|
||||
*
|
||||
* @note The FrontendHeap reserves memory for the most memory-consuming presenter and
|
||||
* view only. The largest of these classes are determined at compile-time using template
|
||||
* magic. As such, it is important to add all presenters, views and transitions to the
|
||||
* type lists in this class.
|
||||
*
|
||||
*/
|
||||
class FrontendHeapBase : public touchgfx::MVPHeap
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* A list of all view types. Must end with meta::Nil.
|
||||
* @note All view types used in the application MUST be added to this list!
|
||||
*/
|
||||
typedef touchgfx::meta::TypeList< TerminalView,
|
||||
touchgfx::meta::Nil
|
||||
> GeneratedViewTypes;
|
||||
|
||||
/**
|
||||
* Determine (compile time) the View type of largest size.
|
||||
*/
|
||||
typedef touchgfx::meta::select_type_maxsize< GeneratedViewTypes >::type MaxGeneratedViewType;
|
||||
|
||||
/**
|
||||
* A list of all presenter types. Must end with meta::Nil.
|
||||
* @note All presenter types used in the application MUST be added to this list!
|
||||
*/
|
||||
typedef touchgfx::meta::TypeList< TerminalPresenter,
|
||||
touchgfx::meta::Nil
|
||||
> GeneratedPresenterTypes;
|
||||
|
||||
/**
|
||||
* Determine (compile time) the Presenter type of largest size.
|
||||
*/
|
||||
typedef touchgfx::meta::select_type_maxsize< GeneratedPresenterTypes >::type MaxGeneratedPresenterType;
|
||||
|
||||
/**
|
||||
* A list of all transition types. Must end with meta::Nil.
|
||||
* @note All transition types used in the application MUST be added to this list!
|
||||
*/
|
||||
typedef touchgfx::meta::TypeList< touchgfx::NoTransition,
|
||||
touchgfx::meta::Nil
|
||||
> GeneratedTransitionTypes;
|
||||
|
||||
/**
|
||||
* Determine (compile time) the Transition type of largest size.
|
||||
*/
|
||||
typedef touchgfx::meta::select_type_maxsize< GeneratedTransitionTypes >::type MaxGeneratedTransitionType;
|
||||
|
||||
virtual void gotoStartScreen(FrontendApplication& app)
|
||||
{
|
||||
app.gotoTerminalScreenNoTransition();
|
||||
}
|
||||
protected:
|
||||
FrontendHeapBase(touchgfx::AbstractPartition& presenters, touchgfx::AbstractPartition& views, touchgfx::AbstractPartition& transitions, FrontendApplication& app)
|
||||
: MVPHeap(presenters, views, transitions, app)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif // FRONTENDHEAPBASE_HPP
|
@ -0,0 +1,11 @@
|
||||
/*********************************************************************************/
|
||||
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
|
||||
/*********************************************************************************/
|
||||
#ifndef SIMCONSTANTS_HPP
|
||||
#define SIMCONSTANTS_HPP
|
||||
|
||||
static unsigned short SIM_WIDTH = 480;
|
||||
static unsigned short SIM_HEIGHT = 272;
|
||||
#define SIM_TITLE "STM32F746G_DISCO"
|
||||
|
||||
#endif // SIMCONSTANTS_HPP
|
@ -0,0 +1,66 @@
|
||||
/*********************************************************************************/
|
||||
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
|
||||
/*********************************************************************************/
|
||||
#ifndef TERMINALVIEWBASE_HPP
|
||||
#define TERMINALVIEWBASE_HPP
|
||||
|
||||
#include <gui/common/FrontendApplication.hpp>
|
||||
#include <mvp/View.hpp>
|
||||
#include <gui/terminal_screen/TerminalPresenter.hpp>
|
||||
#include <touchgfx/widgets/Box.hpp>
|
||||
#include <touchgfx/widgets/ButtonWithIcon.hpp>
|
||||
#include <touchgfx/containers/ScrollableContainer.hpp>
|
||||
#include <touchgfx/widgets/TextAreaWithWildcard.hpp>
|
||||
#include <touchgfx/EasingEquations.hpp>
|
||||
#include <touchgfx/mixins/MoveAnimator.hpp>
|
||||
|
||||
class TerminalViewBase : public touchgfx::View<TerminalPresenter>
|
||||
{
|
||||
public:
|
||||
TerminalViewBase();
|
||||
virtual ~TerminalViewBase() {}
|
||||
virtual void setupScreen();
|
||||
virtual void handleKeyEvent(uint8_t key);
|
||||
|
||||
/*
|
||||
* Virtual Action Handlers
|
||||
*/
|
||||
virtual void onButtonClearLogTextClicked()
|
||||
{
|
||||
// Override and implement this function in Terminal
|
||||
}
|
||||
|
||||
protected:
|
||||
FrontendApplication& application() {
|
||||
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
|
||||
}
|
||||
|
||||
/*
|
||||
* Member Declarations
|
||||
*/
|
||||
touchgfx::Box __background;
|
||||
touchgfx::ButtonWithIcon buttonClearLogText_;
|
||||
touchgfx::ScrollableContainer scrollableTextArea_;
|
||||
touchgfx::MoveAnimator< touchgfx::TextAreaWithOneWildcard > logText_;
|
||||
|
||||
/*
|
||||
* Wildcard Buffers
|
||||
*/
|
||||
static const uint16_t LOGTEXT__SIZE = 2048;
|
||||
touchgfx::Unicode::UnicodeChar logText_Buffer[LOGTEXT__SIZE];
|
||||
|
||||
private:
|
||||
|
||||
/*
|
||||
* Callback Declarations
|
||||
*/
|
||||
touchgfx::Callback<TerminalViewBase, const touchgfx::AbstractButton&> buttonCallback;
|
||||
|
||||
/*
|
||||
* Callback Handler Declarations
|
||||
*/
|
||||
void buttonCallbackHandler(const touchgfx::AbstractButton& src);
|
||||
|
||||
};
|
||||
|
||||
#endif // TERMINALVIEWBASE_HPP
|
@ -0,0 +1,43 @@
|
||||
/*********************************************************************************/
|
||||
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
|
||||
/*********************************************************************************/
|
||||
#include <new>
|
||||
#include <gui_generated/common/FrontendApplicationBase.hpp>
|
||||
#include <gui/common/FrontendHeap.hpp>
|
||||
#include <touchgfx/transitions/NoTransition.hpp>
|
||||
#include <texts/TextKeysAndLanguages.hpp>
|
||||
#include <touchgfx/Texts.hpp>
|
||||
#include <touchgfx/hal/HAL.hpp>
|
||||
#include <platform/driver/lcd/LCD16bpp.hpp>
|
||||
#include <gui/terminal_screen/TerminalView.hpp>
|
||||
#include <gui/terminal_screen/TerminalPresenter.hpp>
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
FrontendApplicationBase::FrontendApplicationBase(Model& m, FrontendHeap& heap)
|
||||
: touchgfx::MVPApplication(),
|
||||
transitionCallback(),
|
||||
frontendHeap(heap),
|
||||
model(m)
|
||||
{
|
||||
touchgfx::HAL::getInstance()->setDisplayOrientation(touchgfx::ORIENTATION_LANDSCAPE);
|
||||
touchgfx::Texts::setLanguage(GB);
|
||||
reinterpret_cast<touchgfx::LCD16bpp&>(touchgfx::HAL::lcd()).enableTextureMapperAll();
|
||||
}
|
||||
|
||||
/*
|
||||
* Screen Transition Declarations
|
||||
*/
|
||||
|
||||
// Terminal
|
||||
|
||||
void FrontendApplicationBase::gotoTerminalScreenNoTransition()
|
||||
{
|
||||
transitionCallback = touchgfx::Callback<FrontendApplicationBase>(this, &FrontendApplication::gotoTerminalScreenNoTransitionImpl);
|
||||
pendingScreenTransitionCallback = &transitionCallback;
|
||||
}
|
||||
|
||||
void FrontendApplicationBase::gotoTerminalScreenNoTransitionImpl()
|
||||
{
|
||||
touchgfx::makeTransition<TerminalView, TerminalPresenter, touchgfx::NoTransition, Model >(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model);
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
/*********************************************************************************/
|
||||
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
|
||||
/*********************************************************************************/
|
||||
#include <gui_generated/terminal_screen/TerminalViewBase.hpp>
|
||||
#include <touchgfx/Color.hpp>
|
||||
#include "BitmapDatabase.hpp"
|
||||
#include <texts/TextKeysAndLanguages.hpp>
|
||||
|
||||
TerminalViewBase::TerminalViewBase() :
|
||||
buttonCallback(this, &TerminalViewBase::buttonCallbackHandler)
|
||||
{
|
||||
|
||||
__background.setPosition(0, 0, 480, 272);
|
||||
__background.setColor(touchgfx::Color::getColorFrom24BitRGB(0, 0, 0));
|
||||
|
||||
buttonClearLogText_.setXY(1, 6);
|
||||
buttonClearLogText_.setBitmaps(touchgfx::Bitmap(BITMAP_DARK_BUTTONS_ROUND_EDGE_ICON_BUTTON_ID), touchgfx::Bitmap(BITMAP_DARK_BUTTONS_ROUND_EDGE_ICON_BUTTON_PRESSED_ID), touchgfx::Bitmap(BITMAP_DARK_ICONS_TRASH_32_ROTATED_ID), touchgfx::Bitmap(BITMAP_DARK_ICONS_TRASH_32_ROTATED_ID));
|
||||
buttonClearLogText_.setIconXY(17, 14);
|
||||
buttonClearLogText_.setAction(buttonCallback);
|
||||
|
||||
scrollableTextArea_.setPosition(61, 6, 414, 260);
|
||||
scrollableTextArea_.setScrollbarsColor(touchgfx::Color::getColorFrom24BitRGB(0, 0, 0));
|
||||
|
||||
logText_.setPosition(0, 129, 414, 130);
|
||||
logText_.setColor(touchgfx::Color::getColorFrom24BitRGB(171, 171, 171));
|
||||
logText_.setLinespacing(0);
|
||||
logText_.setRotation(touchgfx::TEXT_ROTATE_180);
|
||||
Unicode::snprintf(logText_Buffer, LOGTEXT__SIZE, "%s", touchgfx::TypedText(T_SINGLEUSEID2).getText());
|
||||
logText_.setWildcard(logText_Buffer);
|
||||
logText_.setTypedText(touchgfx::TypedText(T_SINGLEUSEID1));
|
||||
scrollableTextArea_.add(logText_);
|
||||
|
||||
add(__background);
|
||||
add(buttonClearLogText_);
|
||||
add(scrollableTextArea_);
|
||||
}
|
||||
|
||||
void TerminalViewBase::setupScreen()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//Handles when a key is pressed
|
||||
void TerminalViewBase::handleKeyEvent(uint8_t key)
|
||||
{
|
||||
if(0 == key)
|
||||
{
|
||||
//Interaction1
|
||||
//When hardware button 0 clicked move logText_
|
||||
//Set position x:0 and y:0 on logText_
|
||||
logText_.moveTo(0,0);
|
||||
}
|
||||
}
|
||||
|
||||
void TerminalViewBase::buttonCallbackHandler(const touchgfx::AbstractButton& src)
|
||||
{
|
||||
if (&src == &buttonClearLogText_)
|
||||
{
|
||||
//ButtonClearLogTextClicked
|
||||
//When buttonClearLogText_ clicked call virtual function
|
||||
//Call onButtonClearLogTextClicked
|
||||
onButtonClearLogTextClicked();
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
// Generated by imageconverter. Please, do not edit!
|
||||
|
||||
#ifndef BITMAPDATABASE_HPP
|
||||
#define BITMAPDATABASE_HPP
|
||||
|
||||
#include <touchgfx/hal/Types.hpp>
|
||||
#include <touchgfx/Bitmap.hpp>
|
||||
|
||||
const uint16_t BITMAP_DARK_BUTTONS_ROUND_EDGE_ICON_BUTTON_ID = 0;
|
||||
const uint16_t BITMAP_DARK_BUTTONS_ROUND_EDGE_ICON_BUTTON_PRESSED_ID = 1;
|
||||
const uint16_t BITMAP_DARK_ICONS_TRASH_32_ROTATED_ID = 2;
|
||||
|
||||
namespace BitmapDatabase
|
||||
{
|
||||
const touchgfx::Bitmap::BitmapData* getInstance();
|
||||
uint16_t getInstanceSize();
|
||||
}
|
||||
|
||||
#endif
|
@ -0,0 +1,29 @@
|
||||
// 4.16.1 0xde3ab13a
|
||||
// Generated by imageconverter. Please, do not edit!
|
||||
|
||||
#include <BitmapDatabase.hpp>
|
||||
#include <touchgfx/Bitmap.hpp>
|
||||
|
||||
extern const unsigned char image_dark_buttons_round_edge_icon_button[]; // BITMAP_DARK_BUTTONS_ROUND_EDGE_ICON_BUTTON_ID = 0, Size: 60x60 pixels
|
||||
extern const unsigned char image_dark_buttons_round_edge_icon_button_pressed[]; // BITMAP_DARK_BUTTONS_ROUND_EDGE_ICON_BUTTON_PRESSED_ID = 1, Size: 60x60 pixels
|
||||
extern const unsigned char image_dark_icons_trash_32_rotated[]; // BITMAP_DARK_ICONS_TRASH_32_ROTATED_ID = 2, Size: 26x32 pixels
|
||||
|
||||
const touchgfx::Bitmap::BitmapData bitmap_database[] =
|
||||
{
|
||||
{ image_dark_buttons_round_edge_icon_button, 0, 60, 60, 7, 6, 46, (uint8_t)(touchgfx::Bitmap::ARGB8888) >> 3, 46, (uint8_t)(touchgfx::Bitmap::ARGB8888) & 0x7 },
|
||||
{ image_dark_buttons_round_edge_icon_button_pressed, 0, 60, 60, 7, 6, 46, (uint8_t)(touchgfx::Bitmap::ARGB8888) >> 3, 46, (uint8_t)(touchgfx::Bitmap::ARGB8888) & 0x7 },
|
||||
{ image_dark_icons_trash_32_rotated, 0, 26, 32, 3, 19, 20, (uint8_t)(touchgfx::Bitmap::ARGB8888) >> 3, 4, (uint8_t)(touchgfx::Bitmap::ARGB8888) & 0x7 }
|
||||
};
|
||||
|
||||
namespace BitmapDatabase
|
||||
{
|
||||
const touchgfx::Bitmap::BitmapData* getInstance()
|
||||
{
|
||||
return bitmap_database;
|
||||
}
|
||||
|
||||
uint16_t getInstanceSize()
|
||||
{
|
||||
return (uint16_t)(sizeof(bitmap_database) / sizeof(touchgfx::Bitmap::BitmapData));
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,287 @@
|
||||
// 4.16.1 0x83f1927f D2 AY R0 FARGB8888 U565 N0 SExtFlashSection
|
||||
// Generated by imageconverter. Please, do not edit!
|
||||
|
||||
#include <touchgfx/hal/Config.hpp>
|
||||
|
||||
LOCATION_PRAGMA("ExtFlashSection")
|
||||
KEEP extern const unsigned char image_dark_icons_trash_32_rotated[] LOCATION_ATTRIBUTE("ExtFlashSection") = // 26x32 ARGB8888 pixels.
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x18,
|
||||
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18,
|
||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20,
|
||||
0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51,
|
||||
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4d,
|
||||
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51,
|
||||
0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4d,
|
||||
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4d,
|
||||
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x3c,
|
||||
0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x10, 0x40, 0x3c, 0x40, 0x55, 0x80, 0x7c, 0x80, 0xd3,
|
||||
0x88, 0x8c, 0x88, 0xfb, 0x88, 0x8c, 0x88, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x88, 0x8c, 0x88, 0xff, 0x88, 0x8c, 0x88, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x88, 0x8c, 0x88, 0xff, 0x88, 0x8c, 0x88, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x88, 0x8c, 0x88, 0xff, 0x88, 0x8c, 0x88, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x88, 0x8c, 0x88, 0xff, 0x88, 0x8c, 0x88, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x88, 0x8c, 0x88, 0xfb, 0x80, 0x7c, 0x80, 0xd3, 0x40, 0x3c, 0x40, 0x55,
|
||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
|
||||
0x88, 0x88, 0x88, 0xd7, 0x88, 0x8c, 0x88, 0xff, 0x88, 0x8c, 0x88, 0xff,
|
||||
0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x88, 0x8c, 0x88, 0xff,
|
||||
0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x88, 0x8c, 0x88, 0xff,
|
||||
0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x88, 0x8c, 0x88, 0xff,
|
||||
0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x88, 0x8c, 0x88, 0xff,
|
||||
0x90, 0x8c, 0x90, 0xff, 0x88, 0x8c, 0x88, 0xff, 0x88, 0x8c, 0x88, 0xff,
|
||||
0x90, 0x8c, 0x90, 0xff, 0x88, 0x88, 0x88, 0xd7, 0x00, 0x00, 0x00, 0x18,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x90, 0x90, 0x90, 0xff,
|
||||
0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x88, 0x8c, 0x88, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x88, 0x8c, 0x88, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x88, 0x8c, 0x88, 0xff,
|
||||
0x90, 0x94, 0x90, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x90, 0x94, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x90, 0x94, 0x90, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x90, 0x94, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x90, 0x94, 0x90, 0xff, 0x78, 0x7c, 0x78, 0x55, 0x78, 0x7c, 0x78, 0x59,
|
||||
0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x78, 0x7c, 0x78, 0x55, 0x78, 0x7c, 0x78, 0x55, 0x90, 0x90, 0x90, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff, 0x78, 0x7c, 0x78, 0x55,
|
||||
0x80, 0x7c, 0x80, 0x55, 0x90, 0x94, 0x90, 0xff, 0x90, 0x8c, 0x90, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x90, 0x94, 0x90, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x90, 0x94, 0x90, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff, 0x90, 0x94, 0x90, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x98, 0x94, 0x98, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x90, 0x94, 0x90, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x98, 0x94, 0x98, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x90, 0x94, 0x90, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x90, 0x94, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x90, 0x94, 0x90, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x98, 0x94, 0x98, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x98, 0x94, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x98, 0x94, 0x98, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x98, 0x94, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x18,
|
||||
0x98, 0x94, 0x98, 0xff, 0x90, 0x90, 0x90, 0xff, 0x98, 0x94, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x98, 0x94, 0x98, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff, 0x98, 0x94, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x98, 0x94, 0x98, 0xff, 0x90, 0x90, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x98, 0x94, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x18,
|
||||
0x98, 0x94, 0x98, 0xff, 0x90, 0x90, 0x90, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x98, 0x94, 0x98, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x98, 0x94, 0x98, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x90, 0x90, 0x90, 0xff, 0x98, 0x94, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x98, 0x98, 0x98, 0xff,
|
||||
0x90, 0x94, 0x90, 0xff, 0x90, 0x94, 0x90, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x98, 0x98, 0x98, 0xff,
|
||||
0x90, 0x94, 0x90, 0xff, 0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x18,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x98, 0x98, 0x98, 0xff, 0x90, 0x94, 0x90, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x98, 0x98, 0x98, 0xff, 0x90, 0x94, 0x90, 0xff, 0x90, 0x90, 0x90, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x98, 0x98, 0x98, 0xff, 0x90, 0x94, 0x90, 0xff,
|
||||
0x90, 0x94, 0x90, 0xff, 0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x18, 0x98, 0x98, 0x98, 0xff, 0x90, 0x94, 0x90, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x98, 0x98, 0x98, 0xff, 0x90, 0x94, 0x90, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x98, 0x98, 0x98, 0xff,
|
||||
0x90, 0x94, 0x90, 0xff, 0x90, 0x94, 0x90, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x98, 0x98, 0x98, 0xff, 0x98, 0x94, 0x98, 0xff, 0x98, 0x94, 0x98, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x98, 0x98, 0x98, 0xff, 0x90, 0x94, 0x90, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x18, 0x98, 0x98, 0x98, 0xff,
|
||||
0x90, 0x94, 0x90, 0xff, 0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x18, 0x98, 0x98, 0x98, 0xff, 0x98, 0x94, 0x98, 0xff,
|
||||
0x98, 0x94, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x98, 0x98, 0x98, 0xff,
|
||||
0x98, 0x94, 0x98, 0xff, 0x98, 0x94, 0x98, 0xff, 0x98, 0x9c, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c, 0x98, 0x98, 0x98, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x98, 0x98, 0x98, 0xff, 0x98, 0x94, 0x98, 0xff,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x98, 0x98, 0x98, 0xff, 0x98, 0x94, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x98, 0x9c, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x98, 0x9c, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x98, 0x9c, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff, 0x98, 0x9c, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c, 0x98, 0x9c, 0x98, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff, 0x98, 0x9c, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x18,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0x98, 0x98, 0x98, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0xa0, 0x9c, 0xa0, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0xa0, 0x9c, 0xa0, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x98, 0x9c, 0x98, 0xff, 0x00, 0x00, 0x00, 0x18,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x98, 0x9c, 0x98, 0xff, 0x00, 0x00, 0x00, 0x20,
|
||||
0x00, 0x00, 0x00, 0x1c, 0xa0, 0x9c, 0xa0, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1c, 0xa0, 0xa0, 0xa0, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x98, 0x9c, 0x98, 0xff, 0x00, 0x00, 0x00, 0x38,
|
||||
0x00, 0x00, 0x00, 0x38, 0x98, 0x9c, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x98, 0x98, 0x98, 0xff, 0x98, 0x9c, 0x98, 0xff,
|
||||
0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x98, 0x9c, 0x98, 0xff,
|
||||
0x98, 0x98, 0x98, 0xff, 0x98, 0x9c, 0x98, 0xff, 0xa0, 0xa0, 0xa0, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
|
||||
0xa0, 0xa0, 0xa0, 0xff, 0x98, 0x9c, 0x98, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0x98, 0x9c, 0x98, 0xff, 0x48, 0x48, 0x48, 0x82, 0x48, 0x48, 0x48, 0x82,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0x98, 0x9c, 0x98, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0x48, 0x48, 0x48, 0x82, 0x48, 0x48, 0x48, 0x82, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0x98, 0x9c, 0x98, 0xff, 0xa0, 0x9c, 0xa0, 0xff, 0x48, 0x48, 0x48, 0x82,
|
||||
0x48, 0x48, 0x48, 0x82, 0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0x98, 0x9c, 0x98, 0xff, 0xa0, 0xa0, 0xa0, 0xff, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa0, 0xa0, 0xa0, 0xff,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0xa0, 0xa0, 0xa0, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x18, 0xa0, 0xa0, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0xa0, 0xa0, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0xa0, 0xa0, 0xff,
|
||||
0xa0, 0xa0, 0xa0, 0xff, 0x98, 0x9c, 0x98, 0xff, 0xa0, 0xa0, 0xa0, 0xff,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0x98, 0xa0, 0x98, 0xff, 0xa0, 0x9c, 0xa0, 0xff,
|
||||
0xa0, 0xa0, 0xa0, 0xff, 0x98, 0x9c, 0x98, 0xff, 0xa0, 0xa0, 0xa0, 0xff,
|
||||
0xa0, 0xa0, 0xa0, 0xff, 0x98, 0x9c, 0x98, 0xff, 0xa0, 0xa0, 0xa0, 0xff,
|
||||
0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0x9c, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
|
||||
0xb0, 0xac, 0xb0, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xb0, 0xac, 0xb0, 0xff, 0x00, 0x00, 0x00, 0x14,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xb8, 0xb8, 0xb8, 0xff, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14,
|
||||
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04,
|
||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x4d,
|
||||
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4d,
|
||||
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4d,
|
||||
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4d,
|
||||
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51,
|
||||
0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51,
|
||||
0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51,
|
||||
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4d,
|
||||
0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x14,
|
||||
0xb0, 0xac, 0xb0, 0xf7, 0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa8, 0xa4, 0xa8, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa8, 0xa4, 0xa8, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff,
|
||||
0xa8, 0xa4, 0xa8, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa8, 0xa4, 0xa8, 0xff,
|
||||
0xa8, 0xa4, 0xa8, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa8, 0xa4, 0xa8, 0xff,
|
||||
0xa0, 0xa4, 0xa0, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xb0, 0xac, 0xb0, 0xf7,
|
||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0xb0, 0xb0, 0xb0, 0xc3,
|
||||
0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff,
|
||||
0xa8, 0xa4, 0xa8, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa8, 0xa4, 0xa8, 0xff,
|
||||
0xa8, 0xa4, 0xa8, 0xff, 0xa0, 0xa4, 0xa0, 0xff, 0xa8, 0xa4, 0xa8, 0xff,
|
||||
0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff, 0xa0, 0xa4, 0xa0, 0xff,
|
||||
0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff,
|
||||
0xa8, 0xa8, 0xa8, 0xff, 0xb0, 0xb0, 0xb0, 0xc7, 0x00, 0x00, 0x00, 0x08,
|
||||
0x00, 0x00, 0x00, 0x00, 0xa0, 0xa0, 0xa0, 0x49, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xb0, 0xb0, 0xb0, 0xff, 0xa8, 0xac, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff,
|
||||
0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff,
|
||||
0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff,
|
||||
0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff,
|
||||
0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa4, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff,
|
||||
0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff,
|
||||
0xa8, 0xac, 0xa8, 0xff, 0xb0, 0xb0, 0xb0, 0xff, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xa0, 0xa0, 0xa0, 0x51, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x04, 0xb0, 0xb0, 0xb0, 0x69, 0xb8, 0xbc, 0xb8, 0xe7,
|
||||
0xb8, 0xbc, 0xb8, 0xff, 0xc0, 0xbc, 0xc0, 0xff, 0xb8, 0xbc, 0xb8, 0xff,
|
||||
0xb8, 0xb8, 0xb8, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff,
|
||||
0xb0, 0xb0, 0xb0, 0xff, 0xb0, 0xb4, 0xb0, 0xff, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xb8, 0xb8, 0xb8, 0xff, 0xb0, 0xb4, 0xb0, 0xff, 0xb0, 0xb0, 0xb0, 0xff,
|
||||
0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xb8, 0xb8, 0xb8, 0xff,
|
||||
0xb8, 0xbc, 0xb8, 0xff, 0xb8, 0xbc, 0xb8, 0xff, 0xc0, 0xbc, 0xc0, 0xff,
|
||||
0xb8, 0xbc, 0xb8, 0xe7, 0xb0, 0xb0, 0xb0, 0x69, 0x00, 0x00, 0x00, 0x04,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
|
||||
0xb0, 0xb4, 0xb0, 0xfb, 0xa8, 0xa8, 0xa8, 0xff, 0x38, 0x3c, 0x38, 0x71,
|
||||
0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x51,
|
||||
0x00, 0x00, 0x00, 0x51, 0x38, 0x38, 0x38, 0x71, 0xa8, 0xa8, 0xa8, 0xff,
|
||||
0xb0, 0xb4, 0xb0, 0xff, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xb8, 0xb8, 0xb8, 0xcf,
|
||||
0xb0, 0xb4, 0xb0, 0xff, 0xb0, 0xac, 0xb0, 0xff, 0xa8, 0xac, 0xa8, 0xff,
|
||||
0xa8, 0xac, 0xa8, 0xff, 0xb0, 0xac, 0xb0, 0xff, 0xa8, 0xac, 0xa8, 0xff,
|
||||
0xb0, 0xac, 0xb0, 0xff, 0xb0, 0xb4, 0xb0, 0xff, 0xb8, 0xb8, 0xb8, 0xd3,
|
||||
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xa8, 0xa4, 0xa8, 0x2c, 0xb8, 0xb8, 0xb8, 0xc7,
|
||||
0xc0, 0xbc, 0xc0, 0xf7, 0xc0, 0xbc, 0xc0, 0xff, 0xc0, 0xbc, 0xc0, 0xff,
|
||||
0xc0, 0xbc, 0xc0, 0xff, 0xc0, 0xbc, 0xc0, 0xff, 0xc0, 0xbc, 0xc0, 0xfb,
|
||||
0xb8, 0xbc, 0xb8, 0xc7, 0xa8, 0xa8, 0xa8, 0x2c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00
|
||||
};
|
@ -0,0 +1,9 @@
|
||||
/*********************************************************************************/
|
||||
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
|
||||
/*********************************************************************************/
|
||||
#include <touchgfx/hal/HAL.hpp>
|
||||
#include <touchgfx/lcd/LCD.hpp>
|
||||
|
||||
void setupSimulator(int argc, char** argv, touchgfx::HAL& hal);
|
||||
|
||||
touchgfx::LCD& setupLCD();
|
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<LocalDebuggerEnvironment>PATH=$(TouchGFXReleasePath)\lib\sdl\win32</LocalDebuggerEnvironment>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(ApplicationRoot)\gui\include;$(ApplicationRoot)\generated\images\include;$(ApplicationRoot)\generated\bitmaps\include;$(ApplicationRoot)\generated\fonts\include;$(ApplicationRoot)\generated\texts\include;$(ApplicationRoot)\generated\gui_generated\include;$(ApplicationRoot)\generated\simulator\include;$(TouchGFXReleasePath)\framework\common\include;$(TouchGFXReleasePath)\framework\mvp\include;$(TouchGFXReleasePath)\framework\include\platform\hal\simulator\sdl\vendor\win32;$(TouchGFXReleasePath)\framework\platform\hal\simulator\sdl\3rdparty\sdl\include\win32;$(TouchGFXReleasePath)\framework\include</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>$(UseBPPOption)</AdditionalOptions>
|
||||
<PreprocessorDefinitions>SIMULATOR;_ITERATOR_DEBUG_LEVEL=0</PreprocessorDefinitions>
|
||||
<DisableSpecificWarnings>4355</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Link>
|
||||
<AdditionalDependencies>$(TouchGFXReleasePath)\lib\sdl\win32\SDL.lib;$(TouchGFXReleasePath)\lib\sdl\win32\SDLmain.lib;$(TouchGFXReleasePath)\lib\sdl\win32\SDL_image.lib;$(TouchGFXReleasePath)\lib\win\msvs\libtouchgfx_$(PlatformToolset)_debug.lib;user32.lib;shell32.lib</AdditionalDependencies>
|
||||
<AdditionalOptions>/NODEFAULTLIB:msvcrt.lib</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Link>
|
||||
<AdditionalDependencies>$(TouchGFXReleasePath)\lib\sdl\win32\SDL.lib;$(TouchGFXReleasePath)\lib\sdl\win32\SDLmain.lib;$(TouchGFXReleasePath)\lib\sdl\win32\SDL_image.lib;$(TouchGFXReleasePath)\lib\win\msvs\libtouchgfx_$(PlatformToolset).lib;user32.lib;shell32.lib</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
</Project>
|
@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<AllGeneratedFiles Include="$(ApplicationRoot)\generated\fonts\**\*.*;$(ApplicationRoot)\generated\images\**\*.*;$(ApplicationRoot)\generated\texts\**\*.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ImageConvertExecutable Include="$(TouchGFXReleasePath)\framework\tools\imageconvert\build\msvs\ImageConvert.exe"/>
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<UseBPPOption>/DUSE_BPP=$(UseBPP)</UseBPPOption>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(LCD)'!=''">
|
||||
<LCDOption>/D$(LCD)</LCDOption>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(LCD)'==''">
|
||||
<LCDOption/>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<touchgfx_env Condition="'$(TouchGFXEnvPath)'==''">$(TouchGFXReleasePath)\..\env</touchgfx_env>
|
||||
<touchgfx_env Condition="'$(TouchGFXEnvPath)'!=''">$(TouchGFXEnvPath)</touchgfx_env>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="GenerateBitmapDatabaseFiles" BeforeTargets="ClCompile">
|
||||
<Message Text="Converting images"/>
|
||||
<Exec Command="echo Converting images"/>
|
||||
<Exec Command=""%(ImageConvertExecutable.FullPath)" -r assets\images -w generated\images" WorkingDirectory="$(ApplicationRoot)"/>
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateTextsAndFontsFiles" BeforeTargets="ClCompile">
|
||||
<Message Text="Converting texts and fonts" />
|
||||
<Exec Command="echo Converting texts and fonts"/>
|
||||
<Exec Command=""$(touchgfx_env)\MinGW\msys\1.0\ruby193\bin\ruby.exe" "$(TouchGFXReleasePath)\framework\tools\textconvert\main.rb" "$(ApplicationRoot)\assets\texts\texts.xlsx" "$(TouchGFXReleasePath)\framework\tools\fontconvert\build\win\fontconvert.out" "$(ApplicationRoot)\generated\fonts" "$(ApplicationRoot)\generated\texts" "$(ApplicationRoot)\assets\fonts" "$(ApplicationRoot)""/>
|
||||
</Target>
|
||||
|
||||
<Target Name="CompileAllGeneratedFiles" BeforeTargets="ClCompile">
|
||||
<ItemGroup>
|
||||
<AllGeneratedCompileFiles Include="$(ApplicationRoot)\generated\fonts\**\*.cpp;$(ApplicationRoot)\generated\images\**\*.cpp;$(ApplicationRoot)\generated\texts\**\*.cpp;" />
|
||||
</ItemGroup>
|
||||
<Message Text="Creating compile items for all generated source files: @(AllGeneratedCompileFiles)"/>
|
||||
<Exec Command="echo Creating compile items for all generated source files: @(AllGeneratedCompileFiles)"/>
|
||||
<CreateItem Include="@(AllGeneratedCompileFiles)">
|
||||
<Output TaskParameter="Include" ItemName="ClCompile"/>
|
||||
</CreateItem>
|
||||
</Target>
|
||||
|
||||
<Target Name="CleanupGeneratedFiles" AfterTargets="Clean">
|
||||
<Message Text="Clean-up generated files: @(AllGeneratedFiles)"/>
|
||||
<Exec Command="echo Clean-up generated files: @(AllGeneratedFiles)"/>
|
||||
<Delete Files="@(AllGeneratedFiles)"/>
|
||||
</Target>
|
||||
|
||||
<Target Name="PostBuild" AfterTargets="ClCompile">
|
||||
<Exec Command="copy $(TouchGFXReleasePath)\lib\sdl2\win32\SDL2.dll $(OutDir) > nul" />
|
||||
<Exec Command="copy $(TouchGFXReleasePath)\lib\sdl2\win32\SDL2_image.dll $(OutDir) > nul" />
|
||||
<Exec Command="copy $(TouchGFXReleasePath)\lib\sdl2\win32\libpng16-16.dll $(OutDir) > nul" />
|
||||
<Exec Command="copy $(TouchGFXReleasePath)\lib\sdl2\win32\zlib1.dll $(OutDir) > nul"/>
|
||||
<Exec Command="if exist $(ApplicationRoot)\simulator\landscape.png copy /y $(ApplicationRoot)\simulator\landscape.png $(OutDir) > nul" />
|
||||
<Exec Command="if exist $(ApplicationRoot)\simulator\portrait.png copy /y $(ApplicationRoot)\simulator\portrait.png $(OutDir) > nul" />
|
||||
</Target>
|
||||
</Project>
|
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<LocalDebuggerEnvironment>PATH=$(TouchGFXReleasePath)\lib\sdl2\win32</LocalDebuggerEnvironment>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(ApplicationRoot)\gui\include;$(ApplicationRoot)\generated\images\include;$(ApplicationRoot)\generated\bitmaps\include;$(ApplicationRoot)\generated\fonts\include;$(ApplicationRoot)\generated\texts\include;$(ApplicationRoot)\generated\gui_generated\include;$(ApplicationRoot)\generated\simulator\include;$(TouchGFXReleasePath)\framework\common\include;$(TouchGFXReleasePath)\framework\mvp\include;$(TouchGFXReleasePath)\framework\include\platform\hal\simulator\sdl2\vendor;$(TouchGFXReleasePath)\framework\include</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>$(UseBPPOption)</AdditionalOptions>
|
||||
<PreprocessorDefinitions>SIMULATOR;_ITERATOR_DEBUG_LEVEL=0</PreprocessorDefinitions>
|
||||
<DisableSpecificWarnings>4355</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Link>
|
||||
<AdditionalDependencies>$(TouchGFXReleasePath)\lib\sdl2\win32\SDL2.lib;$(TouchGFXReleasePath)\lib\sdl2\win32\SDL2_image.lib;$(TouchGFXReleasePath)\lib\win\msvs\libtouchgfx_$(PlatformToolset)_debug.lib;user32.lib;shell32.lib</AdditionalDependencies>
|
||||
<AdditionalOptions>/NODEFAULTLIB:msvcrt.lib</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Link>
|
||||
<AdditionalDependencies>$(TouchGFXReleasePath)\lib\sdl2\win32\SDL2.lib;$(TouchGFXReleasePath)\lib\sdl2\win32\SDL2_image.lib;$(TouchGFXReleasePath)\lib\win\msvs\libtouchgfx_$(PlatformToolset).lib;user32.lib;shell32.lib</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup />
|
||||
</Project>
|
@ -0,0 +1,25 @@
|
||||
/*********************************************************************************/
|
||||
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
|
||||
/*********************************************************************************/
|
||||
#include <simulator/mainBase.hpp>
|
||||
#include <platform/hal/simulator/sdl2/HALSDL2.hpp>
|
||||
#include <common/TouchGFXInit.hpp>
|
||||
#include <platform/driver/lcd/LCD16bpp.hpp>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
void setupSimulator(int argc, char** argv, touchgfx::HAL& hal) {
|
||||
// Simulate hardware running at 60Hz generating a vsync every 16.6667 ms
|
||||
static_cast<touchgfx::HALSDL2&>(hal).setVsyncInterval(16.6667f);
|
||||
static_cast<touchgfx::HALSDL2&>(hal).setWindowTitle("STM32F746G_DISCO");
|
||||
|
||||
// Initialize SDL
|
||||
bool sdl_init_result = static_cast<touchgfx::HALSDL2&>(hal).sdl_init(argc, argv);
|
||||
assert(sdl_init_result && "Error during SDL initialization");
|
||||
|
||||
}
|
||||
|
||||
touchgfx::LCD16bpp lcd;
|
||||
touchgfx::LCD& setupLCD() {
|
||||
return lcd;
|
||||
}
|
BIN
ide-touchgfx-gen/TouchGFX/generated/simulator/touchgfx.ico
Normal file
BIN
ide-touchgfx-gen/TouchGFX/generated/simulator/touchgfx.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 97 KiB |
@ -0,0 +1 @@
|
||||
id ICON touchgfx.ico
|
BIN
ide-touchgfx-gen/TouchGFX/generated/simulator/touchgfx.res
Normal file
BIN
ide-touchgfx-gen/TouchGFX/generated/simulator/touchgfx.res
Normal file
Binary file not shown.
1
ide-touchgfx-gen/TouchGFX/generated/texts/cache/LanguageCpp_Gb.cache
vendored
Normal file
1
ide-touchgfx-gen/TouchGFX/generated/texts/cache/LanguageCpp_Gb.cache
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"remap":"yes","language":"Gb","language_index":0,"indices":[["23","T_SingleUseId1"],["0","T_SingleUseId2"]]}
|
1
ide-touchgfx-gen/TouchGFX/generated/texts/cache/TextKeysAndLanguages.cache
vendored
Normal file
1
ide-touchgfx-gen/TouchGFX/generated/texts/cache/TextKeysAndLanguages.cache
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"languages":["Gb"],"textids":["T_SingleUseId1","T_SingleUseId2"]}
|
1
ide-touchgfx-gen/TouchGFX/generated/texts/cache/TextsCpp.cache
vendored
Normal file
1
ide-touchgfx-gen/TouchGFX/generated/texts/cache/TextsCpp.cache
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"remap":"yes","languages":["Gb"],"characters":[65,112,112,108,105,99,97,116,105,111,110,32,115,116,97,114,116,101,100,46,46,46,0,2,0]}
|
1
ide-touchgfx-gen/TouchGFX/generated/texts/cache/TypedTextDatabaseCpp.cache
vendored
Normal file
1
ide-touchgfx-gen/TouchGFX/generated/texts/cache/TypedTextDatabaseCpp.cache
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"databases":{"DEFAULT":[[2,"LEFT","LTR"],[2,"LEFT","LTR"]]},"database_list":["DEFAULT"],"fonts":{"getFont_verdana_20_4bpp":0,"getFont_verdana_40_4bpp":1,"getFont_verdana_10_4bpp":2},"generate_font_format":"0"}
|
0
ide-touchgfx-gen/TouchGFX/generated/texts/cache/compile_time.cache
vendored
Normal file
0
ide-touchgfx-gen/TouchGFX/generated/texts/cache/compile_time.cache
vendored
Normal file
1
ide-touchgfx-gen/TouchGFX/generated/texts/cache/options.cache
vendored
Normal file
1
ide-touchgfx-gen/TouchGFX/generated/texts/cache/options.cache
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"remap":"yes","data_format":"A4","binary_translations":"no","binary_fonts":"no","font_format":"0","framebuffer_bpp":"BPP16"}
|
@ -0,0 +1,22 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#ifndef TEXTKEYSANDLANGUAGES_HPP
|
||||
#define TEXTKEYSANDLANGUAGES_HPP
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GB,
|
||||
NUMBER_OF_LANGUAGES
|
||||
} LANGUAGES;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
T_SINGLEUSEID1,
|
||||
T_SINGLEUSEID2,
|
||||
NUMBER_OF_TEXT_KEYS
|
||||
} TEXTS;
|
||||
|
||||
#endif // TEXTKEYSANDLANGUAGES_HPP
|
@ -0,0 +1,21 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#ifndef TYPEDTEXTDATABASE_HPP
|
||||
#define TYPEDTEXTDATABASE_HPP
|
||||
|
||||
#include <touchgfx/hal/Types.hpp>
|
||||
#include <touchgfx/TypedText.hpp>
|
||||
|
||||
namespace TypedTextDatabase
|
||||
{
|
||||
class TypedTextData;
|
||||
const touchgfx::TypedText::TypedTextData* getInstance(touchgfx::LanguageId id);
|
||||
const touchgfx::TypedText::TypedTextData* getInstance();
|
||||
const touchgfx::Font** getFonts();
|
||||
const touchgfx::Font* setFont(touchgfx::FontId fontId, const touchgfx::Font*);
|
||||
void resetFont(touchgfx::FontId fontId);
|
||||
uint16_t getInstanceSize();
|
||||
}
|
||||
|
||||
#endif
|
15
ide-touchgfx-gen/TouchGFX/generated/texts/src/LanguageGb.cpp
Normal file
15
ide-touchgfx-gen/TouchGFX/generated/texts/src/LanguageGb.cpp
Normal file
@ -0,0 +1,15 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#include <stdint.h>
|
||||
#include <touchgfx/Unicode.hpp>
|
||||
|
||||
TEXT_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE;
|
||||
|
||||
TEXT_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
23, // T_SingleUseId1
|
||||
0 // T_SingleUseId2
|
||||
};
|
128
ide-touchgfx-gen/TouchGFX/generated/texts/src/Texts.cpp
Normal file
128
ide-touchgfx-gen/TouchGFX/generated/texts/src/Texts.cpp
Normal file
@ -0,0 +1,128 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <texts/TypedTextDatabase.hpp>
|
||||
#include <touchgfx/TextProvider.hpp>
|
||||
#include <touchgfx/Texts.hpp>
|
||||
#include <touchgfx/TypedText.hpp>
|
||||
#include <touchgfx/Unicode.hpp>
|
||||
#include <touchgfx/hal/HAL.hpp>
|
||||
#include <touchgfx/lcd/LCD.hpp>
|
||||
|
||||
uint16_t touchgfx::Font::getStringWidth(const touchgfx::Unicode::UnicodeChar* text, ...) const
|
||||
{
|
||||
va_list pArg;
|
||||
va_start(pArg, text);
|
||||
uint16_t width = getStringWidthLTR(TEXT_DIRECTION_LTR, text, pArg);
|
||||
va_end(pArg);
|
||||
return width;
|
||||
}
|
||||
|
||||
uint16_t touchgfx::Font::getStringWidth(touchgfx::TextDirection textDirection, const touchgfx::Unicode::UnicodeChar* text, ...) const
|
||||
{
|
||||
va_list pArg;
|
||||
va_start(pArg, text);
|
||||
uint16_t width = getStringWidthLTR(textDirection, text, pArg);
|
||||
va_end(pArg);
|
||||
return width;
|
||||
}
|
||||
|
||||
touchgfx::Unicode::UnicodeChar touchgfx::TextProvider::getNextLigature(TextDirection direction)
|
||||
{
|
||||
if (fontGsubTable && nextCharacters.peekChar())
|
||||
{
|
||||
substituteGlyphs();
|
||||
if (nextCharacters.peekChar(1) == 0x093F) //Hindi I-matra
|
||||
{
|
||||
nextCharacters.replaceAt1(nextCharacters.peekChar());
|
||||
nextCharacters.replaceAt0(0x093F);
|
||||
}
|
||||
}
|
||||
return getNextChar();
|
||||
}
|
||||
|
||||
void touchgfx::TextProvider::initializeInternal()
|
||||
{
|
||||
fillInputBuffer();
|
||||
}
|
||||
|
||||
void touchgfx::LCD::drawString(touchgfx::Rect widgetArea, const touchgfx::Rect& invalidatedArea, const touchgfx::LCD::StringVisuals& stringVisuals, const touchgfx::Unicode::UnicodeChar* format, ...)
|
||||
{
|
||||
va_list pArg;
|
||||
va_start(pArg, format);
|
||||
drawStringLTR(widgetArea, invalidatedArea, stringVisuals, format, pArg);
|
||||
va_end(pArg);
|
||||
}
|
||||
|
||||
//Default typed text database
|
||||
extern const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[];
|
||||
|
||||
TEXT_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x2e, 0x2e, 0x2e, 0x0, // @0 "Application started..."
|
||||
0x2, 0x0 // @23 "<>"
|
||||
};
|
||||
TEXT_LOCATION_FLASH_PRAGMA
|
||||
KEEP extern uint32_t const indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE;
|
||||
|
||||
//array holding dynamically installed languages
|
||||
struct TranslationHeader
|
||||
{
|
||||
uint32_t offset_to_texts;
|
||||
uint32_t offset_to_indices;
|
||||
uint32_t offset_to_typedtext;
|
||||
};
|
||||
static const TranslationHeader* languagesArray[1] = { 0 };
|
||||
|
||||
//Compiled and linked in languages
|
||||
static const uint32_t* const staticLanguageIndices[] =
|
||||
{
|
||||
indicesGb
|
||||
};
|
||||
|
||||
touchgfx::LanguageId touchgfx::Texts::currentLanguage = static_cast<touchgfx::LanguageId>(0);
|
||||
static const touchgfx::Unicode::UnicodeChar* currentLanguagePtr = 0;
|
||||
static const uint32_t* currentLanguageIndices = 0;
|
||||
|
||||
void touchgfx::Texts::setLanguage(touchgfx::LanguageId id)
|
||||
{
|
||||
const touchgfx::TypedText::TypedTextData* currentLanguageTypedText = 0;
|
||||
if (id < 1)
|
||||
{
|
||||
if (languagesArray[id] != 0)
|
||||
{
|
||||
//dynamic translation is added
|
||||
const TranslationHeader* translation = languagesArray[id];
|
||||
currentLanguagePtr = (const touchgfx::Unicode::UnicodeChar*)(((const uint8_t*)translation) + translation->offset_to_texts);
|
||||
currentLanguageIndices = (const uint32_t*)(((const uint8_t*)translation) + translation->offset_to_indices);
|
||||
currentLanguageTypedText = (const touchgfx::TypedText::TypedTextData*)(((const uint8_t*)translation) + translation->offset_to_typedtext);
|
||||
}
|
||||
else
|
||||
{
|
||||
//compiled and linked in languages
|
||||
currentLanguagePtr = texts_all_languages;
|
||||
currentLanguageIndices = staticLanguageIndices[id];
|
||||
currentLanguageTypedText = typedTextDatabaseArray[id];
|
||||
}
|
||||
}
|
||||
|
||||
if (currentLanguageTypedText)
|
||||
{
|
||||
currentLanguage = id;
|
||||
touchgfx::TypedText::registerTypedTextDatabase(currentLanguageTypedText,
|
||||
TypedTextDatabase::getFonts(), TypedTextDatabase::getInstanceSize());
|
||||
}
|
||||
}
|
||||
|
||||
void touchgfx::Texts::setTranslation(touchgfx::LanguageId id, const void* translation)
|
||||
{
|
||||
languagesArray[id] = (const TranslationHeader*)translation;
|
||||
}
|
||||
|
||||
const touchgfx::Unicode::UnicodeChar* touchgfx::Texts::getText(TypedTextId id) const
|
||||
{
|
||||
return ¤tLanguagePtr[currentLanguageIndices[id]];
|
||||
}
|
||||
|
@ -0,0 +1,74 @@
|
||||
/* DO NOT EDIT THIS FILE */
|
||||
/* This file is autogenerated by the text-database code generator */
|
||||
|
||||
#include <touchgfx/TypedText.hpp>
|
||||
#include <fonts/GeneratedFont.hpp>
|
||||
#include <texts/TypedTextDatabase.hpp>
|
||||
|
||||
extern touchgfx::GeneratedFont& getFont_verdana_20_4bpp();
|
||||
extern touchgfx::GeneratedFont& getFont_verdana_40_4bpp();
|
||||
extern touchgfx::GeneratedFont& getFont_verdana_10_4bpp();
|
||||
|
||||
const touchgfx::Font* touchgfx_fonts[] =
|
||||
{
|
||||
&(getFont_verdana_20_4bpp()),
|
||||
&(getFont_verdana_40_4bpp()),
|
||||
&(getFont_verdana_10_4bpp())
|
||||
};
|
||||
|
||||
extern const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[];
|
||||
extern const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[];
|
||||
|
||||
TEXT_LOCATION_FLASH_PRAGMA
|
||||
const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
|
||||
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR }
|
||||
};
|
||||
|
||||
TEXT_LOCATION_FLASH_PRAGMA
|
||||
const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[] TEXT_LOCATION_FLASH_ATTRIBUTE =
|
||||
{
|
||||
typedText_database_DEFAULT
|
||||
};
|
||||
|
||||
namespace TypedTextDatabase
|
||||
{
|
||||
const touchgfx::TypedText::TypedTextData* getInstance(touchgfx::LanguageId id)
|
||||
{
|
||||
return typedTextDatabaseArray[id];
|
||||
}
|
||||
|
||||
uint16_t getInstanceSize()
|
||||
{
|
||||
return sizeof(typedText_database_DEFAULT) / sizeof(touchgfx::TypedText::TypedTextData);
|
||||
}
|
||||
|
||||
const touchgfx::Font** getFonts()
|
||||
{
|
||||
return touchgfx_fonts;
|
||||
}
|
||||
|
||||
const touchgfx::Font* setFont(touchgfx::FontId fontId, const touchgfx::Font* font)
|
||||
{
|
||||
const touchgfx::Font* old = touchgfx_fonts[fontId];
|
||||
touchgfx_fonts[fontId] = font;
|
||||
return old;
|
||||
}
|
||||
|
||||
void resetFont(touchgfx::FontId fontId)
|
||||
{
|
||||
switch (fontId)
|
||||
{
|
||||
case 0:
|
||||
touchgfx_fonts[0] = &(getFont_verdana_20_4bpp());
|
||||
break;
|
||||
case 1:
|
||||
touchgfx_fonts[1] = &(getFont_verdana_40_4bpp());
|
||||
break;
|
||||
case 2:
|
||||
touchgfx_fonts[2] = &(getFont_verdana_10_4bpp());
|
||||
break;
|
||||
}
|
||||
}
|
||||
} // namespace TypedTextDatabase
|
@ -0,0 +1,24 @@
|
||||
#ifndef FRONTENDAPPLICATION_HPP
|
||||
#define FRONTENDAPPLICATION_HPP
|
||||
|
||||
#include <gui_generated/common/FrontendApplicationBase.hpp>
|
||||
|
||||
class FrontendHeap;
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
class FrontendApplication : public FrontendApplicationBase
|
||||
{
|
||||
public:
|
||||
FrontendApplication(Model& m, FrontendHeap& heap);
|
||||
virtual ~FrontendApplication() { }
|
||||
|
||||
virtual void handleTickEvent()
|
||||
{
|
||||
model.tick();
|
||||
FrontendApplicationBase::handleTickEvent();
|
||||
}
|
||||
private:
|
||||
};
|
||||
|
||||
#endif // FRONTENDAPPLICATION_HPP
|
@ -0,0 +1,74 @@
|
||||
#ifndef FRONTENDHEAP_HPP
|
||||
#define FRONTENDHEAP_HPP
|
||||
|
||||
#include <gui_generated/common/FrontendHeapBase.hpp>
|
||||
|
||||
class FrontendHeap : public FrontendHeapBase
|
||||
{
|
||||
public:
|
||||
/* List any user-defined view types here*/
|
||||
typedef touchgfx::meta::TypeList< touchgfx::meta::Nil, //Replace this with first user-defined type
|
||||
touchgfx::meta::Nil //List must always end with meta::Nil !
|
||||
> UserDefinedViewTypes;
|
||||
|
||||
/* List any user-defined presenter types here*/
|
||||
typedef touchgfx::meta::TypeList< touchgfx::meta::Nil, //Replace this with first user-defined type
|
||||
touchgfx::meta::Nil //List must always end with meta::Nil !
|
||||
> UserDefinedPresenterTypes;
|
||||
|
||||
/* List any user-defined transition types here*/
|
||||
typedef touchgfx::meta::TypeList< touchgfx::meta::Nil, //Replace this with first user-defined type
|
||||
touchgfx::meta::Nil //List must always end with meta::Nil !
|
||||
> UserDefinedTransitionTypes;
|
||||
|
||||
|
||||
|
||||
/* Calculate largest view, both from generated and user-defined typelists */
|
||||
typedef touchgfx::meta::select_type_maxsize< UserDefinedViewTypes >::type MaxUserViewType;
|
||||
|
||||
typedef touchgfx::meta::TypeList< MaxGeneratedViewType,
|
||||
touchgfx::meta::TypeList< MaxUserViewType,
|
||||
touchgfx::meta::Nil
|
||||
> > CombinedViewTypes;
|
||||
|
||||
typedef touchgfx::meta::select_type_maxsize< CombinedViewTypes >::type MaxViewType;
|
||||
|
||||
/* Calculate largest presenter, both from generated and user-defined typelists */
|
||||
typedef touchgfx::meta::select_type_maxsize< UserDefinedPresenterTypes >::type MaxUserPresenterType;
|
||||
|
||||
typedef touchgfx::meta::TypeList< MaxGeneratedPresenterType,
|
||||
touchgfx::meta::TypeList< MaxUserPresenterType,
|
||||
touchgfx::meta::Nil
|
||||
> > CombinedPresenterTypes;
|
||||
typedef touchgfx::meta::select_type_maxsize< CombinedPresenterTypes >::type MaxPresenterType;
|
||||
|
||||
/* Calculate largest transition, both from generated and user-defined typelists */
|
||||
typedef touchgfx::meta::select_type_maxsize< UserDefinedTransitionTypes >::type MaxUserTransitionType;
|
||||
|
||||
typedef touchgfx::meta::TypeList< MaxGeneratedTransitionType,
|
||||
touchgfx::meta::TypeList< MaxUserTransitionType,
|
||||
touchgfx::meta::Nil
|
||||
> > CombinedTransitionTypes;
|
||||
typedef touchgfx::meta::select_type_maxsize< CombinedTransitionTypes >::type MaxTransitionType;
|
||||
|
||||
static FrontendHeap& getInstance()
|
||||
{
|
||||
static FrontendHeap instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
touchgfx::Partition< CombinedPresenterTypes, 1 > presenters;
|
||||
touchgfx::Partition< CombinedViewTypes, 1 > views;
|
||||
touchgfx::Partition< CombinedTransitionTypes, 1 > transitions;
|
||||
Model model;
|
||||
FrontendApplication app;
|
||||
|
||||
private:
|
||||
FrontendHeap() : FrontendHeapBase(presenters, views, transitions, app),
|
||||
app(model, *this)
|
||||
{
|
||||
gotoStartScreen(app);
|
||||
}
|
||||
};
|
||||
|
||||
#endif // FRONTENDHEAP_HPP
|
57
ide-touchgfx-gen/TouchGFX/gui/include/gui/model/Model.hpp
Normal file
57
ide-touchgfx-gen/TouchGFX/gui/include/gui/model/Model.hpp
Normal file
@ -0,0 +1,57 @@
|
||||
#ifndef MODEL_HPP
|
||||
#define MODEL_HPP
|
||||
|
||||
#include <string>
|
||||
#include <list>
|
||||
#include "config/touchgfx-config.h"
|
||||
|
||||
#if defined(TOUCHGFX_ENABLED) && (TOUCHGFX_ENABLED != 0) // Used to get a compilable project for the students!
|
||||
#include "mdw/button/buttoneventshandler.h"
|
||||
#endif // TOUCHGFX_ENABLED
|
||||
|
||||
class ModelListener;
|
||||
|
||||
/**
|
||||
* @brief Model containing data used by the GUI view(s).
|
||||
*/
|
||||
class Model
|
||||
#if defined(TOUCHGFX_ENABLED) && (TOUCHGFX_ENABLED != 0) // Used to get a compilable project for the students!
|
||||
: public interface::ButtonEventsHandlerObserver
|
||||
#endif // TOUCHGFX_ENABLED
|
||||
{
|
||||
public:
|
||||
Model();
|
||||
|
||||
void initialize(
|
||||
#if defined(TOUCHGFX_ENABLED) && (TOUCHGFX_ENABLED != 0)
|
||||
ButtonEventsHandler & buttonEventsHandler
|
||||
#endif // TOUCHGFX_ENABLED
|
||||
);
|
||||
|
||||
void bind(ModelListener* listener)
|
||||
{
|
||||
modelListener = listener;
|
||||
}
|
||||
|
||||
void tick();
|
||||
|
||||
void addLogMessage(const std::string & logMessage);
|
||||
void clearLogMessages();
|
||||
|
||||
#if defined(TOUCHGFX_ENABLED) && (TOUCHGFX_ENABLED != 0)
|
||||
protected:
|
||||
void onButtonShortPressed(ButtonIndex buttonIndex) override;
|
||||
void onButtonLongPressed(ButtonIndex buttonIndex) override;
|
||||
#endif // TOUCHGFX_ENABLED
|
||||
|
||||
protected:
|
||||
ModelListener* modelListener;
|
||||
|
||||
static constexpr const uint32_t MAX_MESSAGES = 50;
|
||||
|
||||
std::list<std::string> logMessages_; ///< Log messages
|
||||
std::string logTextTotal_; ///< String containing all log messages to display, provided to the model listener.
|
||||
bool logTextChanged_; ///< True when one or more log messages were added.
|
||||
};
|
||||
|
||||
#endif // MODEL_HPP
|
@ -0,0 +1,25 @@
|
||||
#ifndef MODELLISTENER_HPP
|
||||
#define MODELLISTENER_HPP
|
||||
|
||||
#include <gui/model/Model.hpp>
|
||||
|
||||
class ModelListener
|
||||
{
|
||||
public:
|
||||
ModelListener() : model(0) {}
|
||||
|
||||
virtual ~ModelListener() {}
|
||||
|
||||
void bind(Model* m)
|
||||
{
|
||||
model = m;
|
||||
}
|
||||
|
||||
virtual void notifyLogTextChanged(const std::string & logText) =0;
|
||||
virtual void notifyClearLogMessages() =0;
|
||||
|
||||
protected:
|
||||
Model* model;
|
||||
};
|
||||
|
||||
#endif // MODELLISTENER_HPP
|
@ -0,0 +1,52 @@
|
||||
#ifndef TERMINALPRESENTER_HPP
|
||||
#define TERMINALPRESENTER_HPP
|
||||
|
||||
#include <gui/model/ModelListener.hpp>
|
||||
#include <mvp/Presenter.hpp>
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
class TerminalView;
|
||||
|
||||
class TerminalPresenter : public touchgfx::Presenter, public ModelListener
|
||||
{
|
||||
friend class TerminalView;
|
||||
public:
|
||||
TerminalPresenter(TerminalView& v);
|
||||
|
||||
/**
|
||||
* The activate function is called automatically when this screen is "switched in"
|
||||
* (ie. made active). Initialization logic can be placed here.
|
||||
*/
|
||||
virtual void activate();
|
||||
|
||||
/**
|
||||
* The deactivate function is called automatically when this screen is "switched out"
|
||||
* (ie. made inactive). Teardown functionality can be placed here.
|
||||
*/
|
||||
virtual void deactivate();
|
||||
|
||||
virtual ~TerminalPresenter() {};
|
||||
|
||||
protected:
|
||||
void clearLogMessages();
|
||||
|
||||
/**
|
||||
* Methods below are called by the associated view.
|
||||
*/
|
||||
void onButtonClearLogTextClicked();
|
||||
|
||||
/**
|
||||
* Notify methods below are asynchronously called by the
|
||||
* TouchGFX UI task to update the LCD display
|
||||
*/
|
||||
void notifyLogTextChanged(const std::string & logText) override;
|
||||
void notifyClearLogMessages() override;
|
||||
|
||||
private:
|
||||
TerminalPresenter();
|
||||
|
||||
TerminalView& view;
|
||||
};
|
||||
|
||||
#endif // TERMINALPRESENTER_HPP
|
@ -0,0 +1,31 @@
|
||||
#ifndef TERMINALVIEW_HPP
|
||||
#define TERMINALVIEW_HPP
|
||||
|
||||
#include <string>
|
||||
#include <gui_generated/terminal_screen/TerminalViewBase.hpp>
|
||||
#include <gui/terminal_screen/TerminalPresenter.hpp>
|
||||
|
||||
class TerminalView : public TerminalViewBase
|
||||
{
|
||||
friend class TerminalPresenter;
|
||||
public:
|
||||
TerminalView();
|
||||
virtual ~TerminalView() {}
|
||||
virtual void setupScreen();
|
||||
virtual void tearDownScreen();
|
||||
|
||||
protected:
|
||||
void onButtonClearLogTextClicked() override;
|
||||
|
||||
/**
|
||||
* Methods below must only be called by the Presenter or
|
||||
* the TouchGfx UI task.
|
||||
*/
|
||||
void updateLogText(const std::string & str);
|
||||
void clearLogText();
|
||||
|
||||
protected:
|
||||
bool autoScrollText_;
|
||||
};
|
||||
|
||||
#endif // TERMINALVIEW_HPP
|
@ -0,0 +1,7 @@
|
||||
#include <gui/common/FrontendApplication.hpp>
|
||||
|
||||
FrontendApplication::FrontendApplication(Model& m, FrontendHeap& heap)
|
||||
: FrontendApplicationBase(m, heap)
|
||||
{
|
||||
|
||||
}
|
98
ide-touchgfx-gen/TouchGFX/gui/src/model/Model.cpp
Normal file
98
ide-touchgfx-gen/TouchGFX/gui/src/model/Model.cpp
Normal file
@ -0,0 +1,98 @@
|
||||
#include "config/touchgfx-config.h"
|
||||
#include <gui/model/Model.hpp>
|
||||
#include <gui/model/ModelListener.hpp>
|
||||
|
||||
Model::Model() :
|
||||
modelListener(0),
|
||||
logTextChanged_(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Model::initialize(
|
||||
#if defined(TOUCHGFX_ENABLED) && (TOUCHGFX_ENABLED != 0) // Used to get a compilable project for the students!
|
||||
ButtonEventsHandler & buttonEventsHandler
|
||||
#endif // TOUCHGFX_ENABLED
|
||||
)
|
||||
{
|
||||
#if defined(TOUCHGFX_ENABLED) && (TOUCHGFX_ENABLED != 0)
|
||||
// Subscribe to button events
|
||||
bool success = buttonEventsHandler.subscribe(this);
|
||||
assert(success);
|
||||
#endif // TOUCHGFX_ENABLED
|
||||
}
|
||||
|
||||
/**
|
||||
* The tick method is called regularly by the TouchGFX task
|
||||
*/
|
||||
void Model::tick()
|
||||
{
|
||||
if (logTextChanged_)
|
||||
{
|
||||
logTextChanged_ = false;
|
||||
if (logMessages_.size() > 0)
|
||||
{
|
||||
logTextTotal_.clear();
|
||||
|
||||
// Add all log messages to logTextTotal_
|
||||
// New messages are at the beginning of the list, but
|
||||
// need to be at the end in logTextTotal_
|
||||
for (std::string str : logMessages_)
|
||||
{
|
||||
logTextTotal_.insert(0, str);
|
||||
}
|
||||
|
||||
modelListener->notifyLogTextChanged(logTextTotal_);
|
||||
}
|
||||
else
|
||||
{
|
||||
modelListener->notifyClearLogMessages();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Model::addLogMessage(const std::string & logMessage)
|
||||
{
|
||||
logMessages_.push_front(logMessage);
|
||||
|
||||
// Remove an old message if list is too big
|
||||
if (logMessages_.size() > MAX_MESSAGES)
|
||||
{
|
||||
logMessages_.pop_back();
|
||||
}
|
||||
|
||||
// Tell UI task that logText did change
|
||||
logTextChanged_ = true;
|
||||
}
|
||||
|
||||
void Model::clearLogMessages()
|
||||
{
|
||||
logMessages_.clear();
|
||||
logTextTotal_.clear();
|
||||
|
||||
// Tell UI task that logText did change
|
||||
logTextChanged_ = true;
|
||||
}
|
||||
|
||||
#if defined(TOUCHGFX_ENABLED) && (TOUCHGFX_ENABLED != 0)
|
||||
void Model::onButtonShortPressed(ButtonIndex buttonIndex)
|
||||
{
|
||||
std::string logMessage("Button ");
|
||||
|
||||
logMessage += std::to_string(buttonIndex);
|
||||
logMessage += " short pressed\n";
|
||||
|
||||
addLogMessage(logMessage);
|
||||
}
|
||||
|
||||
void Model::onButtonLongPressed(ButtonIndex buttonIndex)
|
||||
{
|
||||
std::string logMessage("Button ");
|
||||
|
||||
logMessage += std::to_string(buttonIndex);
|
||||
logMessage += " long pressed\n";
|
||||
|
||||
addLogMessage(logMessage);
|
||||
}
|
||||
#endif // TOUCHGFX_ENABLED
|
@ -0,0 +1,38 @@
|
||||
#include <gui/terminal_screen/TerminalView.hpp>
|
||||
#include <gui/terminal_screen/TerminalPresenter.hpp>
|
||||
|
||||
TerminalPresenter::TerminalPresenter(TerminalView& v)
|
||||
: view(v)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void TerminalPresenter::activate()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void TerminalPresenter::deactivate()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void TerminalPresenter::clearLogMessages()
|
||||
{
|
||||
model->clearLogMessages();
|
||||
}
|
||||
|
||||
void TerminalPresenter::onButtonClearLogTextClicked()
|
||||
{
|
||||
clearLogMessages();
|
||||
}
|
||||
|
||||
void TerminalPresenter::notifyLogTextChanged(const std::string & logText)
|
||||
{
|
||||
view.updateLogText(logText);
|
||||
}
|
||||
|
||||
void TerminalPresenter::notifyClearLogMessages()
|
||||
{
|
||||
view.clearLogText();
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
#include <gui/terminal_screen/TerminalView.hpp>
|
||||
|
||||
TerminalView::TerminalView():
|
||||
autoScrollText_(true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void TerminalView::setupScreen()
|
||||
{
|
||||
TerminalViewBase::setupScreen();
|
||||
}
|
||||
|
||||
void TerminalView::tearDownScreen()
|
||||
{
|
||||
TerminalViewBase::tearDownScreen();
|
||||
}
|
||||
|
||||
void TerminalView::onButtonClearLogTextClicked()
|
||||
{
|
||||
// Forward event to presenter
|
||||
presenter->onButtonClearLogTextClicked();
|
||||
}
|
||||
|
||||
void TerminalView::updateLogText(const std::string & str)
|
||||
{
|
||||
Unicode::fromUTF8((const unsigned char *)str.c_str(), logText_Buffer, LOGTEXT__SIZE);
|
||||
logText_.resizeToCurrentTextWithAlignment(); // Update height of text area
|
||||
|
||||
// Check if we always need to show the end of the logs (most recent logs)
|
||||
if (autoScrollText_)
|
||||
{
|
||||
auto scrollHeight = scrollableTextArea_.getHeight();
|
||||
auto textHeight = logText_.getTextHeight();
|
||||
|
||||
if (logText_.getRotation() == TEXT_ROTATE_0)
|
||||
{
|
||||
if (textHeight > scrollHeight)
|
||||
{
|
||||
logText_.startMoveAnimation(logText_.getX(), // X value to scroll to
|
||||
-(textHeight - scrollHeight), // Y value to scroll to
|
||||
2); // Animation duration in ticks
|
||||
}
|
||||
}
|
||||
else if (logText_.getRotation() == TEXT_ROTATE_180)
|
||||
{
|
||||
if (textHeight > scrollHeight)
|
||||
{
|
||||
// Scroll to bottom is scrolling to y == 0
|
||||
logText_.startMoveAnimation(logText_.getX(), 0, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logText_.invalidate();
|
||||
}
|
||||
|
||||
void TerminalView::clearLogText()
|
||||
{
|
||||
logText_Buffer[0] = '\0';
|
||||
|
||||
if (logText_.getRotation() == TEXT_ROTATE_0)
|
||||
{
|
||||
logText_.resizeHeightToCurrentText();
|
||||
|
||||
logText_.startMoveAnimation(logText_.getX(), // X value to scroll to
|
||||
0, // Y value to scroll to
|
||||
2); // Animation duration in ticks
|
||||
}
|
||||
else if (logText_.getRotation() == TEXT_ROTATE_180)
|
||||
{
|
||||
logText_.resizeToCurrentTextWithAlignment();
|
||||
|
||||
logText_.startMoveAnimation(logText_.getX(), // X value to scroll to
|
||||
scrollableTextArea_.getHeight() - logText_.getHeight(), // Y value to scroll to (in respect with rotated text)
|
||||
2); // Animation duration in ticks
|
||||
}
|
||||
|
||||
logText_.invalidate();
|
||||
scrollableTextArea_.invalidate();
|
||||
}
|
||||
|
183
ide-touchgfx-gen/TouchGFX/ide-touchgfx-gen.touchgfx
Normal file
183
ide-touchgfx-gen/TouchGFX/ide-touchgfx-gen.touchgfx
Normal file
@ -0,0 +1,183 @@
|
||||
{
|
||||
"Application": {
|
||||
"Screens": [
|
||||
{
|
||||
"Components": [
|
||||
{
|
||||
"Type": "ButtonWithIcon",
|
||||
"Pressed": "__designer\\Dark_Buttons_Round_Edge_icon_button_pressed.png",
|
||||
"Released": "__designer\\Dark_Buttons_Round_Edge_icon_button.png",
|
||||
"Alpha": 255,
|
||||
"IconPressed": "Dark_Icons_trash_32_rotated.png",
|
||||
"IconReleased": "Dark_Icons_trash_32_rotated.png",
|
||||
"IconX": 17,
|
||||
"IconY": 14,
|
||||
"IconHeight": 32,
|
||||
"IconWidth": 26,
|
||||
"ButtonStyle": "Style1",
|
||||
"Name": "buttonClearLogText_",
|
||||
"X": 1,
|
||||
"Y": 6,
|
||||
"Width": 60,
|
||||
"Height": 60,
|
||||
"Visible": true,
|
||||
"LockPosition": false,
|
||||
"Draggable": false,
|
||||
"Clickable": false,
|
||||
"Fadeable": false,
|
||||
"Moveable": false
|
||||
},
|
||||
{
|
||||
"Components": [
|
||||
{
|
||||
"Type": "TextArea",
|
||||
"TextId": "SingleUseId1",
|
||||
"TextRotation": "180",
|
||||
"Color": {
|
||||
"Red": 171,
|
||||
"Green": 171,
|
||||
"Blue": 171
|
||||
},
|
||||
"Alpha": 255,
|
||||
"AutoSize": false,
|
||||
"LineSpacing": 0,
|
||||
"Wildcard1": {
|
||||
"TextId": "SingleUseId2",
|
||||
"UseBuffer": true,
|
||||
"BufferSize": 2048
|
||||
},
|
||||
"Name": "logText_",
|
||||
"X": 0,
|
||||
"Y": 129,
|
||||
"Width": 414,
|
||||
"Height": 130,
|
||||
"Visible": true,
|
||||
"LockPosition": false,
|
||||
"Draggable": false,
|
||||
"Clickable": false,
|
||||
"Fadeable": false,
|
||||
"Moveable": true
|
||||
}
|
||||
],
|
||||
"Type": "ScrollableContainer",
|
||||
"HorizontalScrollEnabled": true,
|
||||
"VerticalScrollEnabled": true,
|
||||
"ScrollbarsVisible": false,
|
||||
"ScrollbarsVisibleOnPressed": true,
|
||||
"ScrollbarsColor": {
|
||||
"Red": 0,
|
||||
"Green": 0,
|
||||
"Blue": 0
|
||||
},
|
||||
"ScrollbarsAlpha": 255,
|
||||
"Name": "scrollableTextArea_",
|
||||
"X": 61,
|
||||
"Y": 6,
|
||||
"Width": 414,
|
||||
"Height": 260,
|
||||
"Visible": true,
|
||||
"LockPosition": false,
|
||||
"Draggable": false,
|
||||
"Clickable": false,
|
||||
"Fadeable": false,
|
||||
"Moveable": false
|
||||
}
|
||||
],
|
||||
"Interactions": [
|
||||
{
|
||||
"InteractionName": "Interaction1",
|
||||
"HasCompletedTrigger": false,
|
||||
"Trigger": {
|
||||
"Type": "TriggerPhysicalButtonClicked",
|
||||
"ButtonKey": 0
|
||||
},
|
||||
"Action": {
|
||||
"Type": "ActionMove",
|
||||
"X": 0,
|
||||
"Y": 0,
|
||||
"Easing": "Linear",
|
||||
"EasingOption": "In",
|
||||
"Duration": 0,
|
||||
"ActionComponent": "logText_"
|
||||
}
|
||||
},
|
||||
{
|
||||
"InteractionName": "ButtonClearLogTextClicked",
|
||||
"HasCompletedTrigger": false,
|
||||
"Trigger": {
|
||||
"Type": "TriggerClicked",
|
||||
"TriggerComponent": "buttonClearLogText_"
|
||||
},
|
||||
"Action": {
|
||||
"Type": "ActionCustom",
|
||||
"FunctionName": "onButtonClearLogTextClicked"
|
||||
}
|
||||
}
|
||||
],
|
||||
"Name": "Terminal",
|
||||
"OverrideDefaultBufferSize": false,
|
||||
"CanvasBufferSize": 0
|
||||
}
|
||||
],
|
||||
"CustomContainerDefinitions": [],
|
||||
"TextEntries": [
|
||||
{
|
||||
"TextEntryId": "SingleUseId1",
|
||||
"IsResource": false
|
||||
},
|
||||
{
|
||||
"TextEntryId": "SingleUseId2",
|
||||
"IsResource": false
|
||||
}
|
||||
],
|
||||
"Name": "STM32F746G_DISCO",
|
||||
"Resolution": {
|
||||
"Width": 480,
|
||||
"Height": 272
|
||||
},
|
||||
"SelectedColorDepth": 16,
|
||||
"StartupScreenName": "Terminal",
|
||||
"SelectedStartupLanguage": "GB",
|
||||
"Skin": "Dark",
|
||||
"TouchGfxPath": "../Middlewares/ST/touchgfx",
|
||||
"UIPath": ".",
|
||||
"AvailableColorDepths": [
|
||||
16
|
||||
],
|
||||
"AvailableLCDs": {
|
||||
"16": "LCD16bpp"
|
||||
},
|
||||
"AvailableSections": [
|
||||
"ExtFlashSection",
|
||||
"IntFlashSection"
|
||||
],
|
||||
"AvailableResolutions": [
|
||||
{
|
||||
"Width": 480,
|
||||
"Height": 272
|
||||
}
|
||||
],
|
||||
"PhysicalButtons": [],
|
||||
"FrameworkFeatures": {
|
||||
"LCD16bpp": {
|
||||
"Id": "LCD16bpp",
|
||||
"IsEnabled": true
|
||||
}
|
||||
},
|
||||
"GenerateAssetsCommand": "make -f simulator/gcc/Makefile assets -j8",
|
||||
"PostGenerateCommand": "touchgfx update_project --project-file=simulator/msvs/Application.vcxproj",
|
||||
"PostGenerateTargetCommand": "touchgfx update_project --project-file=../STM32F746G_DISCO.ioc --platform=m7",
|
||||
"CompileSimulatorCommand": "make -f simulator/gcc/Makefile -j8",
|
||||
"RunSimulatorCommand": "build\\bin\\simulator.exe",
|
||||
"CompileTargetCommand": "make -f ../gcc/Makefile -j8",
|
||||
"FlashTargetCommand": "make -f ../gcc/Makefile flash -j8",
|
||||
"LandscapeSkinX": 0,
|
||||
"LandscapeSkinY": 0,
|
||||
"PortraitSkinX": 0,
|
||||
"PortraitSkinY": 0,
|
||||
"DisplayOrientation": "Landscape",
|
||||
"Family": "STM32F7"
|
||||
},
|
||||
"Version": "4.16.1",
|
||||
"CreatedBy": "4.16.1"
|
||||
}
|
54
ide-touchgfx-gen/TouchGFX/simulator/main.cpp
Normal file
54
ide-touchgfx-gen/TouchGFX/simulator/main.cpp
Normal file
@ -0,0 +1,54 @@
|
||||
#include <platform/hal/simulator/sdl2/HALSDL2.hpp>
|
||||
#include <touchgfx/hal/NoDMA.hpp>
|
||||
#include <common/TouchGFXInit.hpp>
|
||||
#include <gui_generated/common/SimConstants.hpp>
|
||||
#include <platform/driver/touch/SDL2TouchController.hpp>
|
||||
#include <touchgfx/lcd/LCD.hpp>
|
||||
#include <stdlib.h>
|
||||
#include <simulator/mainBase.hpp>
|
||||
|
||||
//#include <touchgfx/canvas_widget_renderer/CanvasWidgetRenderer.hpp>
|
||||
//#define CANVAS_BUFFER_SIZE (3600)
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
#ifdef __linux__
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
#else
|
||||
#include <shellapi.h>
|
||||
#ifdef _UNICODE
|
||||
#error Cannot run in unicode mode
|
||||
#endif
|
||||
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
|
||||
{
|
||||
int argc;
|
||||
char** argv = touchgfx::HALSDL2::getArgv(&argc);
|
||||
#endif
|
||||
|
||||
touchgfx::NoDMA dma; //For windows/linux, DMA transfers are simulated
|
||||
LCD& lcd = setupLCD();
|
||||
touchgfx::SDL2TouchController tc;
|
||||
|
||||
touchgfx::HAL& hal = touchgfx::touchgfx_generic_init<touchgfx::HALSDL2>(dma, lcd, tc, SIM_WIDTH, SIM_HEIGHT, 0, 0);
|
||||
|
||||
setupSimulator(argc, argv, hal);
|
||||
|
||||
// Ensure there is a console window to print to using printf() or
|
||||
// std::cout, and read from using e.g. fgets or std::cin.
|
||||
// Alternatively, instead of using printf(), always use
|
||||
// touchgfx_printf() which will ensure there is a console to write
|
||||
// to.
|
||||
//touchgfx_enable_stdio();
|
||||
|
||||
// Setup the CanvasWidgetRenderer. ONLY needed if you use CanvasWidgets
|
||||
// in your application. The CANVAS_BUFFER_SIZE can be adjusted to match
|
||||
// your needs in performance vs. RAM usage. Read more on this in the
|
||||
// TouchGFX Manual.
|
||||
//static uint8_t canvasBuffer[CANVAS_BUFFER_SIZE];
|
||||
//touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE);
|
||||
|
||||
touchgfx::HAL::getInstance()->taskEntry(); //Never returns
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
20
ide-touchgfx-gen/TouchGFX/simulator/msvs/Application.sln
Normal file
20
ide-touchgfx-gen/TouchGFX/simulator/msvs/Application.sln
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Application", "Application.vcxproj", "{3C47683C-0505-487F-A1FD-75B8490BF72C}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{3C47683C-0505-487F-A1FD-75B8490BF72C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{3C47683C-0505-487F-A1FD-75B8490BF72C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{3C47683C-0505-487F-A1FD-75B8490BF72C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{3C47683C-0505-487F-A1FD-75B8490BF72C}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
265
ide-touchgfx-gen/TouchGFX/simulator/msvs/Application.vcxproj
Normal file
265
ide-touchgfx-gen/TouchGFX/simulator/msvs/Application.vcxproj
Normal file
@ -0,0 +1,265 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="12.0">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\driver\touch\SDL2TouchController.cpp"/>
|
||||
<ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\hal\simulator\sdl2\HALSDL2.cpp"/>
|
||||
<ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\hal\simulator\sdl2\HALSDL2_icon.cpp"/>
|
||||
<ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\hal\simulator\sdl2\OSWrappers.cpp"/>
|
||||
<ClCompile Include="$(ApplicationRoot)\simulator\main.cpp"/>
|
||||
<ClCompile Include="$(ApplicationRoot)\generated\simulator\src\mainBase.cpp"/>
|
||||
<ClCompile Include="..\..\gui\src\common\FrontendApplication.cpp"/>
|
||||
<ClCompile Include="..\..\generated\gui_generated\src\common\FrontendApplicationBase.cpp"/>
|
||||
<ClCompile Include="..\..\gui\src\model\Model.cpp"/>
|
||||
<ClCompile Include="..\..\generated\gui_generated\src\terminal_screen\TerminalViewBase.cpp"/>
|
||||
<ClCompile Include="..\..\gui\src\terminal_screen\terminalPresenter.cpp"/>
|
||||
<ClCompile Include="..\..\gui\src\terminal_screen\terminalView.cpp"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="$(ApplicationRoot)\assets\texts\texts.xlsx"/>
|
||||
<None Include="$(ApplicationRoot)\config\msvs\Application.props"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\common\AbstractPartition.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\common\Meta.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\common\Partition.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\common\TouchGFXInit.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\mvp\MVPApplication.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\mvp\MVPHeap.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\mvp\Presenter.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\mvp\View.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\lcd\LCD16bpp.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\lcd\LCD1bpp.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\lcd\LCD24bpp.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\lcd\LCD2bpp.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\lcd\LCD4bpp.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\touch\SDL2TouchController.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\hal\simulator\sdl2\HALSDL2.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Application.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Bitmap.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Callback.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\CanvasWidgetRenderer.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\Cell.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\Outline.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\Rasterizer.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\Renderer.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\RenderingBuffer.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\RGBA8.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\Scanline.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Color.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\ConstFont.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\clock\AbstractClock.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\clock\AnalogClock.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\clock\DigitalClock.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\Container.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\ListLayout.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\ModalWindow.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\AbstractDirectionProgress.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\AbstractProgressIndicator.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\BoxProgress.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\CircleProgress.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\ImageProgress.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\LineProgress.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\TextProgress.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\ScrollableContainer.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\SlideMenu.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\Slider.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\ZoomAnimationImage.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Drawable.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\EasingEquations.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Event.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\events\ClickEvent.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\events\DragEvent.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\events\GestureEvent.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Font.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\FontManager.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\Atomic.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\BlitOp.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\BoardConfiguration.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\Buttons.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\Config.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\DMA.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\Gestures.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\GPIO.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\HAL.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\LED.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\NoDMA.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\OSWrappers.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\Types.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\InternalFlashFont.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\JSMOCHelper.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\lcd\LCD.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Math3D.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\ClickListener.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\Draggable.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\FadeAnimator.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\MoveAnimator.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\PreRenderable.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\Snapper.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Screen.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\TextProvider.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Texts.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\TextureMapTypes.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\transforms\DisplayTransformation.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\transforms\TouchCalibration.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\transitions\NoTransition.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\transitions\SlideTransition.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\transitions\Transition.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\TypedText.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\UIEventListener.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Unicode.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Utils.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\AbstractButton.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\AnimatedImage.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\AnimationTextureMapper.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\Box.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\Button.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\ButtonWithIcon.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\ButtonWithLabel.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainter.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainterBW.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainterGRAY2.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainterGRAY4.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainterRGB565.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainterRGB888.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractShape.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\Canvas.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\CanvasWidget.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\Circle.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\CWRUtil.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\Line.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterBW.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterGRAY2.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterGRAY2Bitmap.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterGRAY4.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterGRAY4Bitmap.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterRGB565.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterRGB565Bitmap.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterRGB888.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterRGB888Bitmap.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\Shape.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\Image.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\Keyboard.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\PixelDataWidget.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\RadioButton.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\RadioButtonGroup.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\RepeatButton.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\ScalableImage.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\SnapshotWidget.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\TextArea.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\TextAreaWithWildcard.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\TextureMapper.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\TiledImage.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\ToggleButton.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\TouchArea.hpp"/>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\Widget.hpp"/>
|
||||
<ClInclude Include="$(ApplicationRoot)\generated\simulator\include\simulator\mainBase.hpp"/>
|
||||
<ClInclude Include="..\..\gui\include\gui\common\FrontendApplication.hpp"/>
|
||||
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\common\FrontendApplicationBase.hpp"/>
|
||||
<ClInclude Include="..\..\gui\include\gui\common\FrontendHeap.hpp"/>
|
||||
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\common\FrontendHeapBase.hpp"/>
|
||||
<ClInclude Include="..\..\gui\include\gui\model\Model.hpp"/>
|
||||
<ClInclude Include="..\..\gui\include\gui\model\ModelListener.hpp"/>
|
||||
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\common\SimConstants.hpp"/>
|
||||
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\terminal_screen\TerminalViewBase.hpp"/>
|
||||
<ClInclude Include="..\..\gui\include\gui\terminal_screen\terminalPresenter.hpp"/>
|
||||
<ClInclude Include="..\..\gui\include\gui\terminal_screen\terminalView.hpp"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="$(ApplicationRoot)\generated\simulator\touchgfx.rc"/>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{3C47683C-0505-487F-A1FD-75B8490BF72C}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>Application</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
|
||||
<Import Project="..\..\config\msvs\Application.props"/>
|
||||
<Import Project="..\..\generated\simulator\msvs\touchgfx_sdl2.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
|
||||
<Import Project="..\..\config\msvs\Application.props"/>
|
||||
<Import Project="..\..\generated\simulator\msvs\touchgfx_sdl2.props"/>
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros"/>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(ApplicationRoot)\build\$(Configuration)\bin\</OutDir>
|
||||
<IntDir>$(ApplicationRoot)\build\$(Configuration)\obj\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(ApplicationRoot)\build\$(Configuration)\bin\</OutDir>
|
||||
<IntDir>$(ApplicationRoot)\build\$(Configuration)\obj\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<DisableSpecificWarnings>4355</DisableSpecificWarnings>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
|
||||
<DisableSpecificWarnings/>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
<Import Project="$(ApplicationRoot)\generated\simulator\msvs\touchgfx_prebuild.targets"/>
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -0,0 +1,661 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<ItemGroup>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{4D1BFFCC-9CEB-4ABF-A951-582870FE71FD}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX">
|
||||
<UniqueIdentifier>{29C60541-803D-4F43-8683-028D9DA5E0CB}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\common">
|
||||
<UniqueIdentifier>{AF2BF67C-89EC-4545-B0D2-5BD6803628D4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\mvp">
|
||||
<UniqueIdentifier>{A8F51E02-A400-49F1-AC86-371872A7E5E6}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\platform">
|
||||
<UniqueIdentifier>{493CF637-721C-4516-8638-3EE4790FB455}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx">
|
||||
<UniqueIdentifier>{7187028B-6482-4EB3-8556-EECD38E0636B}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\platform\driver">
|
||||
<UniqueIdentifier>{D2E6B448-6B79-434F-A8EB-C8F8415957E9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\platform\hal">
|
||||
<UniqueIdentifier>{07737357-9365-4A8F-B2F6-908B5FC4E808}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\canvas_widget_renderer">
|
||||
<UniqueIdentifier>{085B248B-6BE1-4BF8-9913-35526BAEE4C7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\containers">
|
||||
<UniqueIdentifier>{E08C6B18-2F0E-4861-87D5-80FB0411017E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\events">
|
||||
<UniqueIdentifier>{29D72404-E5CB-472C-B00F-3784DF3CCD1E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\hal">
|
||||
<UniqueIdentifier>{09561B72-532B-45EB-8E32-CAA31C349F83}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\lcd">
|
||||
<UniqueIdentifier>{A89B6308-CBC1-48EC-BF14-B3C6106FACCE}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\mixins">
|
||||
<UniqueIdentifier>{DB82A963-BE52-4494-BD5E-358C5E79C081}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\transforms">
|
||||
<UniqueIdentifier>{509E01BB-FBF4-4198-B748-936C1B67839A}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\transitions">
|
||||
<UniqueIdentifier>{3F023E56-225A-4D4C-9D20-74447A23BAD9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\widgets">
|
||||
<UniqueIdentifier>{0E9A8FD3-B71B-46B9-B1F6-3A18292FFAC4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\platform\driver\lcd">
|
||||
<UniqueIdentifier>{9B32A742-EBA9-4EBA-832E-0421D7E68BC5}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\platform\driver\touch">
|
||||
<UniqueIdentifier>{8C31441B-2191-4B32-869D-7B253AECB28F}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\platform\hal\simulator">
|
||||
<UniqueIdentifier>{464CC9FB-AFF6-4FFA-B4D8-BCAC4B2B8898}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\containers\clock">
|
||||
<UniqueIdentifier>{B7237C13-DD69-4F78-8446-9A554431E3F8}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\containers\progress_indicators">
|
||||
<UniqueIdentifier>{5E0E884F-0059-4306-94BA-3197219750E3}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\touchgfx\widgets\canvas">
|
||||
<UniqueIdentifier>{DBFF640A-BD63-40BC-A0A5-2468BC461037}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\TouchGFX\platform\hal\simulator\sdl2">
|
||||
<UniqueIdentifier>{EA3962C0-553C-4CFD-A89B-A116A9493818}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\generated">
|
||||
<UniqueIdentifier>{29C60541-803D-4F44-8783-028D9DA5E0CC}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\generated\simulator">
|
||||
<UniqueIdentifier>{29C60541-803D-4F43-8683-028D9DA5E0CC}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{92BBFF14-FBDB-4755-BA47-A830D863D92B}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;ttf;otf;bdf;png;wav;xlsx;props;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\assets">
|
||||
<UniqueIdentifier>{AF899B0F-78BE-47F9-A912-E92CB9156E40}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\config">
|
||||
<UniqueIdentifier>{29E8A9F8-6504-4625-AB47-671A3F665E51}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\assets\texts">
|
||||
<UniqueIdentifier>{382278FD-2B19-4E89-AE4F-24AF77E7A270}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\config\msvs">
|
||||
<UniqueIdentifier>{C24EAEDB-9A3F-43DC-87FB-C7AC2729A078}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{2F3FC0AA-97C4-4366-9939-94A0FF4E028C}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\TouchGFX">
|
||||
<UniqueIdentifier>{C07B02A9-A55E-47AA-AD61-59A6AAD754E6}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\TouchGFX\platform">
|
||||
<UniqueIdentifier>{33EDC2DB-AF72-480C-92E5-2A2833BCAB6F}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\TouchGFX\platform\driver">
|
||||
<UniqueIdentifier>{1D8EFD90-430A-4539-9080-16A38861D20A}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\TouchGFX\platform\hal">
|
||||
<UniqueIdentifier>{E8DECBF2-0C8E-4397-8603-3101D6F922D6}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\TouchGFX\platform\driver\touch">
|
||||
<UniqueIdentifier>{40F0D55D-79D9-488A-AF83-ADC96179EADF}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\TouchGFX\platform\hal\simulator">
|
||||
<UniqueIdentifier>{3FB50DD5-31DA-4042-B7FD-2151C58CDA80}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\TouchGFX\platform\hal\simulator\sdl2">
|
||||
<UniqueIdentifier>{B48CB42B-0F9E-4815-BFE1-1ACC1150ED8A}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\simulator">
|
||||
<UniqueIdentifier>{C07B03A9-A55E-47AA-AD61-59A6AAD754E6}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\generated">
|
||||
<UniqueIdentifier>{C07B02B9-A55E-47AB-AD61-59A6AAD754E6}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\generated\simulator">
|
||||
<UniqueIdentifier>{C07B02B9-A55E-47AA-AD61-59A6AAD754E6}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\gui">
|
||||
<UniqueIdentifier>DDA5EEBC-F27C-83F5-F5BB-3D0B2D607BAF</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\gui">
|
||||
<UniqueIdentifier>DC6E21AF-CBEA-909B-8477-CE41C809C30A</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\gui\common">
|
||||
<UniqueIdentifier>4A79B56D-6BFB-D721-D2EF-537B35E011AF</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\generated\gui_generated">
|
||||
<UniqueIdentifier>C927B67E-3457-4035-89D6-1EC926034E0C</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\generated\gui_generated">
|
||||
<UniqueIdentifier>EE8EA4C6-519C-4D3D-3113-C0169B4ED772</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\gui\terminal_screen">
|
||||
<UniqueIdentifier>99376B21-7E34-79E0-2F9D-683AFDE1F9AA</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\gui\model">
|
||||
<UniqueIdentifier>FAAE15F3-0524-100F-ECE2-63A263DF97D3</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\gui\terminal_screen">
|
||||
<UniqueIdentifier>840687A4-0B8B-E41A-6F0B-11ACAA2F9B0F</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\gui\model">
|
||||
<UniqueIdentifier>01678C5D-EDED-8D44-2474-3EB29FA58F6F</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\gui\common">
|
||||
<UniqueIdentifier>F4072EEA-B84E-9F62-D074-D15FB7BE1594</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\generated\gui_generated\common">
|
||||
<UniqueIdentifier>D8DE8E44-9982-37BD-BC60-39550E9CCC11</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\generated\gui_generated\terminal_screen">
|
||||
<UniqueIdentifier>CD25772E-C4C0-B1FA-B77D-6526BB7A79D1</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\generated\gui_generated\common">
|
||||
<UniqueIdentifier>A5A74CD1-697E-73F3-D6BB-0B7ED5A8ED1D</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\generated\gui_generated\terminal_screen">
|
||||
<UniqueIdentifier>E2C6A000-5A5B-738F-58DB-7980400E402D</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\driver\touch\SDL2TouchController.cpp">
|
||||
<Filter>Source Files\TouchGFX\platform\driver\touch</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\hal\simulator\sdl2\HALSDL2.cpp">
|
||||
<Filter>Source Files\TouchGFX\platform\hal\simulator\sdl2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\hal\simulator\sdl2\HALSDL2_icon.cpp">
|
||||
<Filter>Source Files\TouchGFX\platform\hal\simulator\sdl2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(TouchGFXReleasePath)\framework\source\platform\hal\simulator\sdl2\OSWrappers.cpp">
|
||||
<Filter>Source Files\TouchGFX\platform\hal\simulator\sdl2</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(ApplicationRoot)\simulator\main.cpp">
|
||||
<Filter>Source Files\simulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(ApplicationRoot)\generated\simulator\src\mainBase.cpp">
|
||||
<Filter>Source Files\generated\simulator</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\gui\src\common\FrontendApplication.cpp">
|
||||
<Filter>Source Files\gui\common</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\generated\gui_generated\src\common\FrontendApplicationBase.cpp">
|
||||
<Filter>Source Files\generated\gui_generated\common</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\gui\src\model\Model.cpp">
|
||||
<Filter>Source Files\gui\model</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\generated\gui_generated\src\terminal_screen\TerminalViewBase.cpp">
|
||||
<Filter>Source Files\generated\gui_generated\terminal_screen</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\gui\src\terminal_screen\terminalPresenter.cpp">
|
||||
<Filter>Source Files\gui\terminal_screen</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\gui\src\terminal_screen\terminalView.cpp">
|
||||
<Filter>Source Files\gui\terminal_screen</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="$(ApplicationRoot)\assets\texts\texts.xlsx">
|
||||
<Filter>Resource Files\assets\texts</Filter>
|
||||
</None>
|
||||
<None Include="$(ApplicationRoot)\config\msvs\Application.props">
|
||||
<Filter>Resource Files\config\msvs</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\common\AbstractPartition.hpp">
|
||||
<Filter>Header Files\TouchGFX\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\common\Meta.hpp">
|
||||
<Filter>Header Files\TouchGFX\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\common\Partition.hpp">
|
||||
<Filter>Header Files\TouchGFX\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\common\TouchGFXInit.hpp">
|
||||
<Filter>Header Files\TouchGFX\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\mvp\MVPApplication.hpp">
|
||||
<Filter>Header Files\TouchGFX\mvp</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\mvp\MVPHeap.hpp">
|
||||
<Filter>Header Files\TouchGFX\mvp</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\mvp\Presenter.hpp">
|
||||
<Filter>Header Files\TouchGFX\mvp</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\mvp\View.hpp">
|
||||
<Filter>Header Files\TouchGFX\mvp</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\lcd\LCD16bpp.hpp">
|
||||
<Filter>Header Files\TouchGFX\platform\driver\lcd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\lcd\LCD1bpp.hpp">
|
||||
<Filter>Header Files\TouchGFX\platform\driver\lcd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\lcd\LCD24bpp.hpp">
|
||||
<Filter>Header Files\TouchGFX\platform\driver\lcd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\lcd\LCD2bpp.hpp">
|
||||
<Filter>Header Files\TouchGFX\platform\driver\lcd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\lcd\LCD4bpp.hpp">
|
||||
<Filter>Header Files\TouchGFX\platform\driver\lcd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\driver\touch\SDL2TouchController.hpp">
|
||||
<Filter>Header Files\TouchGFX\platform\driver\touch</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\platform\hal\simulator\sdl2\HALSDL2.hpp">
|
||||
<Filter>Header Files\TouchGFX\platform\hal\simulator\sdl2</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Application.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Bitmap.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Callback.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\CanvasWidgetRenderer.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\canvas_widget_renderer</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\Cell.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\canvas_widget_renderer</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\Outline.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\canvas_widget_renderer</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\Rasterizer.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\canvas_widget_renderer</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\Renderer.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\canvas_widget_renderer</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\RenderingBuffer.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\canvas_widget_renderer</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\RGBA8.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\canvas_widget_renderer</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\canvas_widget_renderer\Scanline.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\canvas_widget_renderer</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Color.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\ConstFont.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\clock\AbstractClock.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers\clock</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\clock\AnalogClock.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers\clock</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\clock\DigitalClock.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers\clock</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\Container.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\ListLayout.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\ModalWindow.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\AbstractDirectionProgress.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers\progress_indicators</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\AbstractProgressIndicator.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers\progress_indicators</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\BoxProgress.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers\progress_indicators</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\CircleProgress.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers\progress_indicators</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\ImageProgress.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers\progress_indicators</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\LineProgress.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers\progress_indicators</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\progress_indicators\TextProgress.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers\progress_indicators</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\ScrollableContainer.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\SlideMenu.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\Slider.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\containers\ZoomAnimationImage.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Drawable.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\EasingEquations.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Event.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\events\ClickEvent.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\events</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\events\DragEvent.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\events</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\events\GestureEvent.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\events</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Font.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\FontManager.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\Atomic.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\BlitOp.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\BoardConfiguration.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\Buttons.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\Config.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\DMA.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\Gestures.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\GPIO.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\HAL.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\LED.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\NoDMA.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\OSWrappers.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\hal\Types.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\hal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\InternalFlashFont.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\JSMOCHelper.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\lcd\LCD.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\lcd</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Math3D.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\ClickListener.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\mixins</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\Draggable.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\mixins</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\FadeAnimator.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\mixins</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\MoveAnimator.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\mixins</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\PreRenderable.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\mixins</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\mixins\Snapper.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\mixins</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Screen.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\TextProvider.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Texts.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\TextureMapTypes.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\transforms\DisplayTransformation.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\transforms</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\transforms\TouchCalibration.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\transforms</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\transitions\NoTransition.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\transitions</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\transitions\SlideTransition.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\transitions</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\transitions\Transition.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\transitions</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\TypedText.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\UIEventListener.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Unicode.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\Utils.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\AbstractButton.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\AnimatedImage.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\AnimationTextureMapper.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\Box.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\Button.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\ButtonWithIcon.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\ButtonWithLabel.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainter.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainterBW.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainterGRAY2.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainterGRAY4.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainterRGB565.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractPainterRGB888.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\AbstractShape.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\Canvas.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\CanvasWidget.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\Circle.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\CWRUtil.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\Line.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterBW.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterGRAY2.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterGRAY2Bitmap.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterGRAY4.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterGRAY4Bitmap.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterRGB565.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterRGB565Bitmap.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterRGB888.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\PainterRGB888Bitmap.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\canvas\Shape.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets\canvas</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\Image.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\Keyboard.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\PixelDataWidget.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\RadioButton.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\RadioButtonGroup.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\RepeatButton.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\ScalableImage.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\SnapshotWidget.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\TextArea.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\TextAreaWithWildcard.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\TextureMapper.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\TiledImage.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\ToggleButton.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\TouchArea.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(TouchGFXReleasePath)\framework\include\touchgfx\widgets\Widget.hpp">
|
||||
<Filter>Header Files\TouchGFX\touchgfx\widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(ApplicationRoot)\generated\simulator\include\simulator\mainBase.hpp">
|
||||
<Filter>Header Files\generated\simulator</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\gui\include\gui\common\FrontendApplication.hpp">
|
||||
<Filter>Header Files\gui\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\common\FrontendApplicationBase.hpp">
|
||||
<Filter>Header Files\generated\gui_generated\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\gui\include\gui\common\FrontendHeap.hpp">
|
||||
<Filter>Header Files\gui\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\common\FrontendHeapBase.hpp">
|
||||
<Filter>Header Files\generated\gui_generated\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\gui\include\gui\model\Model.hpp">
|
||||
<Filter>Header Files\gui\model</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\gui\include\gui\model\ModelListener.hpp">
|
||||
<Filter>Header Files\gui\model</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\common\SimConstants.hpp">
|
||||
<Filter>Header Files\generated\gui_generated\common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\generated\gui_generated\include\gui_generated\terminal_screen\TerminalViewBase.hpp">
|
||||
<Filter>Header Files\generated\gui_generated\terminal_screen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\gui\include\gui\terminal_screen\terminalPresenter.hpp">
|
||||
<Filter>Header Files\gui\terminal_screen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\gui\include\gui\terminal_screen\terminalView.hpp">
|
||||
<Filter>Header Files\gui\terminal_screen</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="$(ApplicationRoot)\generated\simulator\touchgfx.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,48 @@
|
||||
#include <CortexMMCUInstrumentation.hpp>
|
||||
#include <touchgfx/hal/HAL.hpp>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
void CortexMMCUInstrumentation::init()
|
||||
{
|
||||
// See: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337e/CEGHJDCF.html
|
||||
//
|
||||
// [24] Read/write TRCENA This bit must be set to 1 to enable use of the trace and debug blocks:
|
||||
// Data Watchpoint and Trace (DWT)
|
||||
// Instrumentation Trace Macrocell (ITM)
|
||||
// Embedded Trace Macrocell (ETM)
|
||||
// Trace Port Interface Unit (TPIU).
|
||||
// This enables control of power usage unless tracing is required. The application can enable this, for ITM use, or use by a debugger.
|
||||
|
||||
// Enable Debug Exception and Monitor Control Register
|
||||
*((volatile unsigned int*)0xE000EDFC) |= 0x01000000;
|
||||
// Enable Lock Access Register
|
||||
*((volatile unsigned int*)0xE0001FB0) |= 0xC5ACCE55;
|
||||
// Enable Data Watchpoint and Trace Control Register
|
||||
*((volatile unsigned int*)0xE0001000) |= 1;
|
||||
}
|
||||
|
||||
//Board specific clockfrequency
|
||||
unsigned int CortexMMCUInstrumentation::getElapsedUS(unsigned int start, unsigned int now, unsigned int clockfrequency)
|
||||
{
|
||||
return ((now - start) + (clockfrequency / 2)) / clockfrequency;
|
||||
}
|
||||
|
||||
unsigned int CortexMMCUInstrumentation::getCPUCycles()
|
||||
{
|
||||
return *((volatile unsigned int*)0xE0001004);
|
||||
}
|
||||
|
||||
void CortexMMCUInstrumentation::setMCUActive(bool active)
|
||||
{
|
||||
if (active) //idle task sched out
|
||||
{
|
||||
uint32_t cc_temp = getCPUCycles() - cc_in;
|
||||
cc_consumed += cc_temp;
|
||||
}
|
||||
else //idle task sched in
|
||||
{
|
||||
cc_in = getCPUCycles();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
#ifndef CORTEXMMCUINSTRUMENTATION_HPP
|
||||
#define CORTEXMMCUINSTRUMENTATION_HPP
|
||||
|
||||
#include <platform/core/MCUInstrumentation.hpp>
|
||||
#include <stdint.h>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
/**
|
||||
* @class CortexMMCUInstrumentation CortexMMCUInstrumentation.hpp platform/core/arm/cortex-m/CortexMMCUInstrumentation.hpp
|
||||
*
|
||||
* @brief Interface for instrumenting Cortex-M processors to measure MCU load via measured CPU
|
||||
* cycles.
|
||||
*
|
||||
* Interface for instrumenting Cortex-M processors to measure MCU load via measured CPU
|
||||
* cycles.
|
||||
*
|
||||
* @sa MCUInstrumentation
|
||||
*/
|
||||
class CortexMMCUInstrumentation : public MCUInstrumentation
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @fn virtual void CortexMMCUInstrumentation::init();
|
||||
*
|
||||
* @brief Initialization.
|
||||
*
|
||||
* Initialization.
|
||||
*/
|
||||
virtual void init();
|
||||
|
||||
/**
|
||||
* @fn virtual unsigned int CortexMMCUInstrumentation::getElapsedUS(unsigned int start, unsigned int now, unsigned int clockfrequency);
|
||||
*
|
||||
* @brief Gets elapsed microseconds basedon clockfrequency.
|
||||
*
|
||||
* Gets elapsed microseconds basedon clockfrequency.
|
||||
*
|
||||
* @param start Start time.
|
||||
* @param now Current time.
|
||||
* @param clockfrequency Clock frequency of the system.
|
||||
*
|
||||
* @return Elapsed microseconds start and now.
|
||||
*/
|
||||
virtual unsigned int getElapsedUS(unsigned int start, unsigned int now, unsigned int clockfrequency);
|
||||
|
||||
/**
|
||||
* @fn virtual unsigned int CortexMMCUInstrumentation::getCPUCycles();
|
||||
*
|
||||
* @brief Gets CPU cycles from register.
|
||||
*
|
||||
* Gets CPU cycles from register.
|
||||
*
|
||||
* @return CPU cycles.
|
||||
*/
|
||||
virtual unsigned int getCPUCycles();
|
||||
|
||||
/**
|
||||
* @fn virtual void CortexMMCUInstrumentation::setMCUActive(bool active);
|
||||
*
|
||||
* @brief Register if MCU is active by measuring cpu cycles.
|
||||
*
|
||||
* Register if MCU is active by measuring cpu cycles. If user wishes to track
|
||||
* MCU load, this method should be called whenever the OS Idle task is scheduled
|
||||
* in or out. This method makes calls to a concrete implementation of GPIO
|
||||
* functionality and a concrete implementation of cpu cycles.
|
||||
*
|
||||
* @param active If true, MCU is registered as being active, inactive otherwise.
|
||||
*/
|
||||
virtual void setMCUActive(bool active);
|
||||
};
|
||||
} // namespace touchgfx
|
||||
|
||||
#endif // CORTEXMMCUINSTRUMENTATION_HPP
|
176
ide-touchgfx-gen/TouchGFX/target/STM32TouchController.cpp
Normal file
176
ide-touchgfx-gen/TouchGFX/target/STM32TouchController.cpp
Normal file
@ -0,0 +1,176 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : STM32TouchController.cpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* USER CODE BEGIN STM32TouchController */
|
||||
|
||||
#include <STM32TouchController.hpp>
|
||||
#include <TouchGFXHAL.hpp>
|
||||
#include <ft5336.h>
|
||||
#include <stm32f7xx_hal.h>
|
||||
#include <touchgfx/hal/OSWrappers.hpp>
|
||||
|
||||
static TS_DrvTypeDef* tsDriver;
|
||||
extern I2C_HandleTypeDef hi2c3;
|
||||
|
||||
void STM32TouchController::init()
|
||||
{
|
||||
/* Initialize the TS driver structure */
|
||||
tsDriver = &ft5336_ts_drv;
|
||||
|
||||
/* Initialize the TS driver */
|
||||
tsDriver->Start(TS_I2C_ADDRESS);
|
||||
}
|
||||
|
||||
bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y)
|
||||
{
|
||||
/**
|
||||
* By default sampleTouch returns false,
|
||||
* return true if a touch has been detected, otherwise false.
|
||||
*
|
||||
* Coordinates are passed to the caller by reference by x and y.
|
||||
*
|
||||
* This function is called by the TouchGFX framework.
|
||||
* By default sampleTouch is called every tick, this can be adjusted by HAL::setTouchSampleRate(int8_t);
|
||||
*
|
||||
*/
|
||||
if (tsDriver)
|
||||
{
|
||||
if (tsDriver->DetectTouch(TS_I2C_ADDRESS))
|
||||
{
|
||||
/* Get each touch coordinates */
|
||||
tsDriver->GetXY(TS_I2C_ADDRESS, (uint16_t*)&y, (uint16_t*)&x);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Manages error callback by re-initializing I2C.
|
||||
* @param i2c_handler : I2C handler
|
||||
* @param Addr: I2C Address
|
||||
* @retval None
|
||||
*/
|
||||
static void I2Cx_Error(I2C_HandleTypeDef* i2c_handler, uint8_t Addr)
|
||||
{
|
||||
/* De-initialize the I2C communication bus */
|
||||
HAL_I2C_DeInit(i2c_handler);
|
||||
|
||||
/* Re-Initialize the I2C communication bus */
|
||||
//I2Cx_Init(i2c_handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reads multiple data.
|
||||
* @param i2c_handler : I2C handler
|
||||
* @param Addr: I2C address
|
||||
* @param Reg: Reg address
|
||||
* @param MemAddress: Memory address
|
||||
* @param Buffer: Pointer to data buffer
|
||||
* @param Length: Length of the data
|
||||
* @retval Number of read data
|
||||
*/
|
||||
static HAL_StatusTypeDef I2Cx_ReadMultiple(I2C_HandleTypeDef* i2c_handler,
|
||||
uint8_t Addr,
|
||||
uint16_t Reg,
|
||||
uint16_t MemAddress,
|
||||
uint8_t* Buffer,
|
||||
uint16_t Length)
|
||||
{
|
||||
HAL_StatusTypeDef status = HAL_OK;
|
||||
|
||||
status = HAL_I2C_Mem_Read(i2c_handler, Addr, (uint16_t)Reg, MemAddress, Buffer, Length, 1000);
|
||||
|
||||
/* Check the communication status */
|
||||
if (status != HAL_OK)
|
||||
{
|
||||
/* I2C error occurred */
|
||||
I2Cx_Error(i2c_handler, Addr);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Writes a value in a register of the device through BUS in using DMA mode.
|
||||
* @param i2c_handler : I2C handler
|
||||
* @param Addr: Device address on BUS Bus.
|
||||
* @param Reg: The target register address to write
|
||||
* @param MemAddress: Memory address
|
||||
* @param Buffer: The target register value to be written
|
||||
* @param Length: buffer size to be written
|
||||
* @retval HAL status
|
||||
*/
|
||||
static HAL_StatusTypeDef I2Cx_WriteMultiple(I2C_HandleTypeDef* i2c_handler,
|
||||
uint8_t Addr,
|
||||
uint16_t Reg,
|
||||
uint16_t MemAddress,
|
||||
uint8_t* Buffer,
|
||||
uint16_t Length)
|
||||
{
|
||||
HAL_StatusTypeDef status = HAL_OK;
|
||||
|
||||
status = HAL_I2C_Mem_Write(i2c_handler, Addr, (uint16_t)Reg, MemAddress, Buffer, Length, 1000);
|
||||
|
||||
/* Check the communication status */
|
||||
if (status != HAL_OK)
|
||||
{
|
||||
/* Re-Initiaize the I2C Bus */
|
||||
I2Cx_Error(i2c_handler, Addr);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Writes a single data.
|
||||
* @param Addr: I2C address
|
||||
* @param Reg: Reg address
|
||||
* @param Value: Data to be written
|
||||
* @retval None
|
||||
*/
|
||||
void TS_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
|
||||
{
|
||||
I2Cx_WriteMultiple(&hi2c3, Addr, (uint16_t)Reg, I2C_MEMADD_SIZE_8BIT, (uint8_t*)&Value, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reads a single data.
|
||||
* @param Addr: I2C address
|
||||
* @param Reg: Reg address
|
||||
* @retval Data to be read
|
||||
*/
|
||||
uint8_t TS_IO_Read(uint8_t Addr, uint8_t Reg)
|
||||
{
|
||||
uint8_t read_value = 0;
|
||||
|
||||
I2Cx_ReadMultiple(&hi2c3, Addr, Reg, I2C_MEMADD_SIZE_8BIT, (uint8_t*)&read_value, 1);
|
||||
|
||||
return read_value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TS delay
|
||||
* @param Delay: Delay in ms
|
||||
* @retval None
|
||||
*/
|
||||
void TS_IO_Delay(uint32_t Delay)
|
||||
{
|
||||
HAL_Delay(Delay);
|
||||
}
|
||||
|
||||
/* USER CODE END STM32TouchController */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
70
ide-touchgfx-gen/TouchGFX/target/STM32TouchController.hpp
Normal file
70
ide-touchgfx-gen/TouchGFX/target/STM32TouchController.hpp
Normal file
@ -0,0 +1,70 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : STM32TouchController.hpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* USER CODE BEGIN STM32TouchController */
|
||||
|
||||
#ifndef STM32TOUCHCONTROLLER_HPP
|
||||
#define STM32TOUCHCONTROLLER_HPP
|
||||
|
||||
#include <platform/driver/touch/TouchController.hpp>
|
||||
|
||||
/**
|
||||
* @class STM32TouchController
|
||||
*
|
||||
* @brief This class specializes TouchController Interface.
|
||||
*
|
||||
* @sa touchgfx::TouchController
|
||||
*/
|
||||
|
||||
class STM32TouchController : public touchgfx::TouchController
|
||||
{
|
||||
public:
|
||||
|
||||
STM32TouchController() {}
|
||||
|
||||
/**
|
||||
* @fn virtual void STM32TouchController::init() = 0;
|
||||
*
|
||||
* @brief Initializes touch controller.
|
||||
*
|
||||
* Initializes touch controller.
|
||||
*/
|
||||
virtual void init();
|
||||
|
||||
/**
|
||||
* @fn virtual bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y) = 0;
|
||||
*
|
||||
* @brief Checks whether the touch screen is being touched, and if so, what coordinates.
|
||||
*
|
||||
* Checks whether the touch screen is being touched, and if so, what coordinates.
|
||||
*
|
||||
* @param [out] x The x position of the touch
|
||||
* @param [out] y The y position of the touch
|
||||
*
|
||||
* @return True if a touch has been detected, otherwise false.
|
||||
*/
|
||||
virtual bool sampleTouch(int32_t& x, int32_t& y);
|
||||
|
||||
private:
|
||||
static const uint16_t TS_I2C_ADDRESS = ((uint16_t)0x70);
|
||||
};
|
||||
|
||||
#endif // STM32TOUCHCONTROLLER_HPP
|
||||
|
||||
/* USER CODE END STM32TouchController */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
76
ide-touchgfx-gen/TouchGFX/target/TouchGFXGPIO.cpp
Normal file
76
ide-touchgfx-gen/TouchGFX/target/TouchGFXGPIO.cpp
Normal file
@ -0,0 +1,76 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXGPIO.cpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include <touchgfx/hal/GPIO.hpp>
|
||||
|
||||
/**
|
||||
* GPIO_ID Enum, these are used bt TouchGFX framework to signal events.
|
||||
*
|
||||
* VSYNC_FREQ, /// Pin is toggled at each VSYNC
|
||||
* RENDER_TIME, /// Pin is high when frame rendering begins, low when finished
|
||||
* FRAME_RATE, /// Pin is toggled when the frame buffers are swapped.
|
||||
* MCU_ACTIVE /// Pin is high when framework is utilizing the MCU.
|
||||
*
|
||||
*/
|
||||
|
||||
/* USER CODE BEGIN TouchGFXGPIO.cpp */
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
/*
|
||||
* Perform configuration of IO pins.
|
||||
*/
|
||||
void GPIO::init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets a pin high.
|
||||
*/
|
||||
void GPIO::set(GPIO_ID id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets a pin low.
|
||||
*/
|
||||
void GPIO::clear(GPIO_ID id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Toggles a pin.
|
||||
*/
|
||||
void GPIO::toggle(GPIO_ID id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Gets the state of a pin.
|
||||
*/
|
||||
bool GPIO::get(GPIO_ID id)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/* USER CODE END TouchGFXGPIO.cpp */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
196
ide-touchgfx-gen/TouchGFX/target/TouchGFXHAL.cpp
Normal file
196
ide-touchgfx-gen/TouchGFX/target/TouchGFXHAL.cpp
Normal file
@ -0,0 +1,196 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXHAL.cpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
#include <TouchGFXHAL.hpp>
|
||||
|
||||
/* USER CODE BEGIN TouchGFXHAL.cpp */
|
||||
|
||||
#include "stm32f7xx.h"
|
||||
#include <touchgfx/hal/OSWrappers.hpp>
|
||||
#include <CortexMMCUInstrumentation.hpp>
|
||||
//#include "FreeRTOS.h"
|
||||
//#include "task.h"
|
||||
|
||||
using namespace touchgfx;
|
||||
CortexMMCUInstrumentation instrumentation;
|
||||
|
||||
void TouchGFXHAL::initialize()
|
||||
{
|
||||
// Calling parent implementation of initialize().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
// Please note, HAL::initialize() must be called to initialize the framework.
|
||||
|
||||
TouchGFXGeneratedHAL::initialize();
|
||||
setFrameBufferStartAddresses((void*)0xC0000000, (void*)0xC003FC00, (void*)0xC007F800); //enable the animation storage to allow slide animations
|
||||
lockDMAToFrontPorch(false);
|
||||
instrumentation.init();
|
||||
setMCUInstrumentation(&instrumentation);
|
||||
enableMCULoadCalculation(true);
|
||||
}
|
||||
|
||||
void TouchGFXHAL::taskEntry()
|
||||
{
|
||||
static bool firstCall = true;
|
||||
|
||||
if (firstCall)
|
||||
{
|
||||
firstCall = false;
|
||||
enableLCDControllerInterrupt();
|
||||
enableInterrupts();
|
||||
}
|
||||
|
||||
OSWrappers::waitForVSync();
|
||||
|
||||
//backPorchExited();
|
||||
// Not necessary to call here when it is done by the
|
||||
// OSWrappers::waitForVSync() method
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @return The address of the frame buffer currently being displayed on the TFT.
|
||||
*/
|
||||
uint16_t* TouchGFXHAL::getTFTFrameBuffer() const
|
||||
{
|
||||
// Calling parent implementation of getTFTFrameBuffer().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
return TouchGFXGeneratedHAL::getTFTFrameBuffer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @param [in] address New frame buffer address.
|
||||
*/
|
||||
void TouchGFXHAL::setTFTFrameBuffer(uint16_t* address)
|
||||
{
|
||||
// Calling parent implementation of setTFTFrameBuffer(uint16_t* address).
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
TouchGFXGeneratedHAL::setTFTFrameBuffer(address);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is called whenever the framework has performed a partial draw.
|
||||
*
|
||||
* @param rect The area of the screen that has been drawn, expressed in absolute coordinates.
|
||||
*
|
||||
* @see flushFrameBuffer().
|
||||
*/
|
||||
void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)
|
||||
{
|
||||
// Calling parent implementation of flushFrameBuffer(const touchgfx::Rect& rect).
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
// Please note, HAL::flushFrameBuffer(const touchgfx::Rect& rect) must
|
||||
// be called to notify the touchgfx framework that flush has been performed.
|
||||
|
||||
TouchGFXGeneratedHAL::flushFrameBuffer(rect);
|
||||
|
||||
// If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then we need
|
||||
// to flush the Dcache to make sure framebuffer is correct in RAM. That's done
|
||||
// using SCB_CleanInvalidateDCache().
|
||||
|
||||
SCB_CleanInvalidateDCache();
|
||||
}
|
||||
|
||||
bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes)
|
||||
{
|
||||
return TouchGFXGeneratedHAL::blockCopy(dest, src, numBytes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the interrupts relevant for TouchGFX. This primarily entails setting
|
||||
* the interrupt priorities for the DMA and LCD interrupts.
|
||||
*/
|
||||
void TouchGFXHAL::configureInterrupts()
|
||||
{
|
||||
// Calling parent implementation of configureInterrupts().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
TouchGFXGeneratedHAL::configureInterrupts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for enabling interrupts set in configureInterrupts()
|
||||
*/
|
||||
void TouchGFXHAL::enableInterrupts()
|
||||
{
|
||||
// Calling parent implementation of enableInterrupts().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
TouchGFXGeneratedHAL::enableInterrupts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for disabling interrupts set in configureInterrupts()
|
||||
*/
|
||||
void TouchGFXHAL::disableInterrupts()
|
||||
{
|
||||
// Calling parent implementation of disableInterrupts().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
TouchGFXGeneratedHAL::disableInterrupts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure the LCD controller to fire interrupts at VSYNC. Called automatically
|
||||
* once TouchGFX initialization has completed.
|
||||
*/
|
||||
void TouchGFXHAL::enableLCDControllerInterrupt()
|
||||
{
|
||||
// Calling parent implementation of enableLCDControllerInterrupt().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
TouchGFXGeneratedHAL::enableLCDControllerInterrupt();
|
||||
}
|
||||
|
||||
extern "C"
|
||||
{
|
||||
// portBASE_TYPE IdleTaskHook(void* p)
|
||||
// {
|
||||
// if ((int)p) //idle task sched out
|
||||
// {
|
||||
// touchgfx::HAL::getInstance()->setMCUActive(true);
|
||||
// }
|
||||
// else //idle task sched in
|
||||
// {
|
||||
// touchgfx::HAL::getInstance()->setMCUActive(false);
|
||||
// }
|
||||
// return pdTRUE;
|
||||
// }
|
||||
}
|
||||
|
||||
/* USER CODE END TouchGFXHAL.cpp */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
164
ide-touchgfx-gen/TouchGFX/target/TouchGFXHAL.hpp
Normal file
164
ide-touchgfx-gen/TouchGFX/target/TouchGFXHAL.hpp
Normal file
@ -0,0 +1,164 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXHAL.hpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef TouchGFXHAL_HPP
|
||||
#define TouchGFXHAL_HPP
|
||||
|
||||
/* USER CODE BEGIN TouchGFXHAL.hpp */
|
||||
|
||||
#include <TouchGFXGeneratedHAL.hpp>
|
||||
|
||||
/**
|
||||
* @class TouchGFXHAL
|
||||
*
|
||||
* @brief HAL implementation for TouchGFX.
|
||||
*
|
||||
* @sa HAL
|
||||
*/
|
||||
class TouchGFXHAL : public TouchGFXGeneratedHAL
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @fn TouchGFXHAL::TouchGFXHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) : TouchGFXGeneratedHAL(dma, display, tc, width, height)
|
||||
*
|
||||
* @brief Constructor.
|
||||
*
|
||||
* Constructor. Initializes members.
|
||||
*
|
||||
* @param [in,out] dma Reference to DMA interface.
|
||||
* @param [in,out] display Reference to LCD interface.
|
||||
* @param [in,out] tc Reference to Touch Controller driver.
|
||||
* @param width Width of the display.
|
||||
* @param height Height of the display.
|
||||
*/
|
||||
TouchGFXHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) : TouchGFXGeneratedHAL(dma, display, tc, width, height)
|
||||
{
|
||||
}
|
||||
|
||||
void initialize();
|
||||
|
||||
virtual void taskEntry();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::disableInterrupts();
|
||||
*
|
||||
* @brief Disables the DMA and LCD interrupts.
|
||||
*
|
||||
* Disables the DMA and LCD interrupts.
|
||||
*/
|
||||
virtual void disableInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::enableInterrupts();
|
||||
*
|
||||
* @brief Enables the DMA and LCD interrupts.
|
||||
*
|
||||
* Enables the DMA and LCD interrupts.
|
||||
*/
|
||||
virtual void enableInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::configureInterrupts();
|
||||
*
|
||||
* @brief Sets the DMA and LCD interrupt priorities.
|
||||
*
|
||||
* Sets the DMA and LCD interrupt priorities.
|
||||
*/
|
||||
virtual void configureInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::enableLCDControllerInterrupt();
|
||||
*
|
||||
* @brief Configure the LCD controller to fire interrupts at VSYNC.
|
||||
*
|
||||
* Configure the LCD controller to fire interrupts at VSYNC. Called automatically
|
||||
* once TouchGFX initialization has completed.
|
||||
*/
|
||||
virtual void enableLCDControllerInterrupt();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::flushFrameBuffer();
|
||||
*
|
||||
* @brief This function is called whenever the framework has performed a complete draw.
|
||||
*
|
||||
* This specialization is only in place to keep compilers happy. Base impl. will call the
|
||||
* Rect version.
|
||||
* @see HAL::flushFrameBuffer
|
||||
*/
|
||||
virtual void flushFrameBuffer()
|
||||
{
|
||||
TouchGFXGeneratedHAL::flushFrameBuffer();
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::flushFrameBuffer(const Rect& rect);
|
||||
*
|
||||
* @brief This function is called whenever the framework has performed a partial draw.
|
||||
*
|
||||
* This function is called whenever the framework has performed a partial draw.
|
||||
* On the STM32F7, make sure to clean and invalidate the data cache. This is to
|
||||
* ensure that LTDC sees correct data when transferring to the display.
|
||||
*
|
||||
* @param rect The area of the screen that has been drawn, expressed in absolute coordinates.
|
||||
*
|
||||
* @see flushFrameBuffer().
|
||||
*/
|
||||
virtual void flushFrameBuffer(const touchgfx::Rect& rect);
|
||||
|
||||
/**
|
||||
* @fn virtual bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes);
|
||||
*
|
||||
* @brief This function performs a platform-specific memcpy.
|
||||
*
|
||||
* This function performs a platform-specific memcpy, if supported by the hardware.
|
||||
*
|
||||
* @param [out] dest Pointer to destination memory.
|
||||
* @param [in] src Pointer to source memory.
|
||||
* @param numBytes Number of bytes to copy.
|
||||
*
|
||||
* @return true if the copy succeeded, false if copy was not performed.
|
||||
*/
|
||||
virtual bool blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @fn virtual uint16_t* TouchGFXHAL::getTFTFrameBuffer() const;
|
||||
*
|
||||
* @brief Gets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* Gets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @return The address of the frame buffer currently being displayed on the TFT.
|
||||
*/
|
||||
virtual uint16_t* getTFTFrameBuffer() const;
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::setTFTFrameBuffer(uint16_t* adr);
|
||||
*
|
||||
* @brief Sets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* Sets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @param [in,out] adr New frame buffer address.
|
||||
*/
|
||||
virtual void setTFTFrameBuffer(uint16_t* adr);
|
||||
};
|
||||
|
||||
/* USER CODE END TouchGFXHAL.hpp */
|
||||
|
||||
#endif // TouchGFXHAL_HPP
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
141
ide-touchgfx-gen/TouchGFX/target/generated/OSWrappers.cpp
Normal file
141
ide-touchgfx-gen/TouchGFX/target/generated/OSWrappers.cpp
Normal file
@ -0,0 +1,141 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : OSWrappers.cpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
#include <stm32f7xx_hal.h>
|
||||
#include <TouchGFXHAL.hpp>
|
||||
#include <touchgfx/hal/OSWrappers.hpp>
|
||||
|
||||
static volatile uint32_t fb_sem;
|
||||
static volatile uint32_t vsync_sem;
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
/*
|
||||
* Initialize frame buffer semaphore and queue/mutex for VSYNC signal.
|
||||
*/
|
||||
void OSWrappers::initialize()
|
||||
{
|
||||
fb_sem = 0;
|
||||
vsync_sem = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Take the frame buffer semaphore. Blocks until semaphore is available.
|
||||
*/
|
||||
void OSWrappers::takeFrameBufferSemaphore()
|
||||
{
|
||||
while(fb_sem);
|
||||
fb_sem = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Release the frame buffer semaphore.
|
||||
*/
|
||||
void OSWrappers::giveFrameBufferSemaphore()
|
||||
{
|
||||
fb_sem = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Attempt to obtain the frame buffer semaphore. If semaphore is not available, do
|
||||
* nothing.
|
||||
*
|
||||
* Note must return immediately! This function does not care who has the taken the semaphore,
|
||||
* it only serves to make sure that the semaphore is taken by someone.
|
||||
*/
|
||||
void OSWrappers::tryTakeFrameBufferSemaphore()
|
||||
{
|
||||
fb_sem = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Release the frame buffer semaphore in a way that is safe in interrupt context. Called
|
||||
* from ISR.
|
||||
*
|
||||
* Release the frame buffer semaphore in a way that is safe in interrupt context.
|
||||
* Called from ISR.
|
||||
*/
|
||||
void OSWrappers::giveFrameBufferSemaphoreFromISR()
|
||||
{
|
||||
fb_sem = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Signal that a VSYNC has occurred. Should make the vsync queue/mutex available.
|
||||
*
|
||||
* Note This function is called from an ISR, and should (depending on OS) trigger a
|
||||
* scheduling.
|
||||
*/
|
||||
void OSWrappers::signalVSync()
|
||||
{
|
||||
vsync_sem = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Signal that the rendering of the frame has completed. Used by
|
||||
* some systems to avoid using any previous vsync.
|
||||
*/
|
||||
void OSWrappers::signalRenderingDone()
|
||||
{
|
||||
vsync_sem = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function checks if a VSync occurred after last rendering.
|
||||
* The function is used in systems that cannot wait in waitForVSync
|
||||
* (because they are also checking other event sources.
|
||||
*
|
||||
* @note signalRenderingDone is typically used together with this function.
|
||||
*
|
||||
* @return True if VSync occurred.
|
||||
*/
|
||||
bool OSWrappers::isVSyncAvailable()
|
||||
{
|
||||
return vsync_sem;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function check if a VSYNC has occured.
|
||||
* If VSYNC has occured, signal TouchGFX to start a rendering
|
||||
*/
|
||||
void OSWrappers::waitForVSync()
|
||||
{
|
||||
if(vsync_sem)
|
||||
{
|
||||
vsync_sem = 0;
|
||||
HAL::getInstance()->backPorchExited();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* A function that causes executing task to sleep for a number of milliseconds.
|
||||
*
|
||||
* A function that causes executing task to sleep for a number of milliseconds.
|
||||
* This function is OPTIONAL. It is only used by the TouchGFX in the case of
|
||||
* a specific frame refresh strategy (REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL).
|
||||
* Due to backwards compatibility, in order for this function to be useable by the HAL
|
||||
* the function must be explicitly registered:
|
||||
* hal.registerTaskDelayFunction(&OSWrappers::taskDelay)
|
||||
*
|
||||
* see HAL::setFrameRefreshStrategy(FrameRefreshStrategy s)
|
||||
* see HAL::registerTaskDelayFunction(void (*delayF)(uint16_t))
|
||||
*/
|
||||
void OSWrappers::taskDelay(uint16_t ms)
|
||||
{
|
||||
HAL_Delay(ms);
|
||||
}
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
387
ide-touchgfx-gen/TouchGFX/target/generated/STM32DMA.cpp
Normal file
387
ide-touchgfx-gen/TouchGFX/target/generated/STM32DMA.cpp
Normal file
@ -0,0 +1,387 @@
|
||||
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : STM32DMA.cpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "stm32f7xx_hal.h"
|
||||
#include "stm32f7xx_hal_dma2d.h"
|
||||
#include <STM32DMA.hpp>
|
||||
#include <cassert>
|
||||
#include <touchgfx/Color.hpp>
|
||||
#include <touchgfx/hal/HAL.hpp>
|
||||
#include <touchgfx/hal/OSWrappers.hpp>
|
||||
#include <touchgfx/lcd/LCD.hpp>
|
||||
|
||||
/* Makes touchgfx specific types and variables visible to this file */
|
||||
using namespace touchgfx;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const uint16_t format;
|
||||
const uint16_t size;
|
||||
const uint32_t* const data;
|
||||
} clutData_t;
|
||||
|
||||
extern "C" DMA2D_HandleTypeDef hdma2d;
|
||||
|
||||
extern "C" {
|
||||
static void DMA2D_XferCpltCallback(DMA2D_HandleTypeDef* handle)
|
||||
{
|
||||
(void)handle; // Unused argument
|
||||
HAL::getInstance()->signalDMAInterrupt();
|
||||
}
|
||||
}
|
||||
|
||||
STM32F7DMA::STM32F7DMA()
|
||||
: DMA_Interface(dma_queue), dma_queue(queue_storage, sizeof(queue_storage) / sizeof(queue_storage[0]))
|
||||
{
|
||||
}
|
||||
|
||||
STM32F7DMA::~STM32F7DMA()
|
||||
{
|
||||
/* Disable DMA2D global Interrupt */
|
||||
NVIC_DisableIRQ(DMA2D_IRQn);
|
||||
}
|
||||
|
||||
void STM32F7DMA::initialize()
|
||||
{
|
||||
/* Ensure DMA2D Clock is enabled */
|
||||
__HAL_RCC_DMA2D_CLK_ENABLE();
|
||||
__HAL_RCC_DMA2D_FORCE_RESET();
|
||||
__HAL_RCC_DMA2D_RELEASE_RESET();
|
||||
|
||||
/* Add transfer complete callback function */
|
||||
hdma2d.XferCpltCallback = DMA2D_XferCpltCallback;
|
||||
|
||||
/* Enable DMA2D global Interrupt */
|
||||
NVIC_EnableIRQ(DMA2D_IRQn);
|
||||
}
|
||||
|
||||
inline uint32_t STM32F7DMA::getChromARTInputFormat(Bitmap::BitmapFormat format)
|
||||
{
|
||||
// Default color mode set to ARGB8888
|
||||
uint32_t dma2dColorMode = DMA2D_INPUT_ARGB8888;
|
||||
|
||||
switch (format)
|
||||
{
|
||||
case Bitmap::ARGB8888: /* DMA2D input mode set to 32bit ARGB */
|
||||
dma2dColorMode = DMA2D_INPUT_ARGB8888;
|
||||
break;
|
||||
case Bitmap::RGB888: /* DMA2D input mode set to 24bit RGB */
|
||||
dma2dColorMode = DMA2D_INPUT_RGB888;
|
||||
break;
|
||||
case Bitmap::RGB565: /* DMA2D input mode set to 16bit RGB */
|
||||
dma2dColorMode = DMA2D_INPUT_RGB565;
|
||||
break;
|
||||
case Bitmap::ARGB2222: /* Fall through */
|
||||
case Bitmap::ABGR2222: /* Fall through */
|
||||
case Bitmap::RGBA2222: /* Fall through */
|
||||
case Bitmap::BGRA2222: /* Fall through */
|
||||
case Bitmap::L8: /* DMA2D input mode set to 8bit Color Look up table*/
|
||||
dma2dColorMode = DMA2D_INPUT_L8;
|
||||
break;
|
||||
case Bitmap::BW: /* Fall through */
|
||||
case Bitmap::BW_RLE: /* Fall through */
|
||||
case Bitmap::GRAY4: /* Fall through */
|
||||
case Bitmap::GRAY2: /* Fall through */
|
||||
default: /* Unsupported input format for DMA2D */
|
||||
assert(0 && "Unsupported Format!");
|
||||
break;
|
||||
}
|
||||
|
||||
return dma2dColorMode;
|
||||
}
|
||||
|
||||
inline uint32_t STM32F7DMA::getChromARTOutputFormat(Bitmap::BitmapFormat format)
|
||||
{
|
||||
// Default color mode set to ARGB8888
|
||||
uint32_t dma2dColorMode = DMA2D_OUTPUT_ARGB8888;
|
||||
|
||||
switch (format)
|
||||
{
|
||||
case Bitmap::ARGB8888: /* DMA2D output mode set to 32bit ARGB */
|
||||
dma2dColorMode = DMA2D_OUTPUT_ARGB8888;
|
||||
break;
|
||||
case Bitmap::RGB888: /* Fall through */
|
||||
case Bitmap::ARGB2222: /* Fall through */
|
||||
case Bitmap::ABGR2222: /* Fall through */
|
||||
case Bitmap::RGBA2222: /* Fall through */
|
||||
case Bitmap::BGRA2222: /* DMA2D output mode set to 24bit RGB */
|
||||
dma2dColorMode = DMA2D_OUTPUT_RGB888;
|
||||
break;
|
||||
case Bitmap::RGB565: /* DMA2D output mode set to 16bit RGB */
|
||||
dma2dColorMode = DMA2D_OUTPUT_RGB565;
|
||||
break;
|
||||
case Bitmap::L8: /* Fall through */
|
||||
case Bitmap::BW: /* Fall through */
|
||||
case Bitmap::BW_RLE: /* Fall through */
|
||||
case Bitmap::GRAY4: /* Fall through */
|
||||
case Bitmap::GRAY2: /* Fall through */
|
||||
default: /* Unsupported output format for DMA2D */
|
||||
assert(0 && "Unsupported Format!");
|
||||
break;
|
||||
}
|
||||
|
||||
return dma2dColorMode;
|
||||
}
|
||||
|
||||
BlitOperations STM32F7DMA::getBlitCaps()
|
||||
{
|
||||
return static_cast<BlitOperations>(BLIT_OP_FILL
|
||||
| BLIT_OP_FILL_WITH_ALPHA
|
||||
| BLIT_OP_COPY
|
||||
| BLIT_OP_COPY_WITH_ALPHA
|
||||
| BLIT_OP_COPY_ARGB8888
|
||||
| BLIT_OP_COPY_ARGB8888_WITH_ALPHA
|
||||
| BLIT_OP_COPY_A4
|
||||
| BLIT_OP_COPY_A8);
|
||||
}
|
||||
|
||||
/*
|
||||
* void STM32F7DMA::setupDataCopy(const BlitOp& blitOp) handles blit operation of
|
||||
* BLIT_OP_COPY
|
||||
* BLIT_OP_COPY_WITH_ALPHA
|
||||
* BLIT_OP_COPY_ARGB8888
|
||||
* BLIT_OP_COPY_ARGB8888_WITH_ALPHA
|
||||
* BLIT_OP_COPY_A4
|
||||
* BLIT_OP_COPY_A8
|
||||
*/
|
||||
void STM32F7DMA::setupDataCopy(const BlitOp& blitOp)
|
||||
{
|
||||
uint32_t dma2dForegroundColorMode = getChromARTInputFormat(static_cast<Bitmap::BitmapFormat>(blitOp.srcFormat));
|
||||
uint32_t dma2dBackgroundColorMode = getChromARTInputFormat(static_cast<Bitmap::BitmapFormat>(blitOp.dstFormat));
|
||||
uint32_t dma2dOutputColorMode = getChromARTOutputFormat(static_cast<Bitmap::BitmapFormat>(blitOp.dstFormat));
|
||||
|
||||
/* DMA2D OOR register configuration ------------------------------------------*/
|
||||
WRITE_REG(DMA2D->OOR, blitOp.dstLoopStride - blitOp.nSteps);
|
||||
|
||||
/* DMA2D BGOR register configuration -------------------------------------*/
|
||||
WRITE_REG(DMA2D->BGOR, blitOp.dstLoopStride - blitOp.nSteps);
|
||||
|
||||
/* DMA2D FGOR register configuration -------------------------------------*/
|
||||
WRITE_REG(DMA2D->FGOR, blitOp.srcLoopStride - blitOp.nSteps);
|
||||
|
||||
/* DMA2D OPFCCR register configuration ---------------------------------------*/
|
||||
WRITE_REG(DMA2D->OPFCCR, dma2dOutputColorMode);
|
||||
|
||||
/* Configure DMA2D data size */
|
||||
WRITE_REG(DMA2D->NLR, (blitOp.nLoops | (blitOp.nSteps << DMA2D_NLR_PL_Pos)));
|
||||
|
||||
/* Configure DMA2D destination address */
|
||||
WRITE_REG(DMA2D->OMAR, reinterpret_cast<uint32_t>(blitOp.pDst));
|
||||
|
||||
/* Configure DMA2D source address */
|
||||
WRITE_REG(DMA2D->FGMAR, reinterpret_cast<uint32_t>(blitOp.pSrc));
|
||||
|
||||
switch (blitOp.operation)
|
||||
{
|
||||
case BLIT_OP_COPY_A4:
|
||||
/* Set DMA2D color mode and alpha mode */
|
||||
WRITE_REG(DMA2D->FGPFCCR, DMA2D_INPUT_A4 | (DMA2D_COMBINE_ALPHA << DMA2D_BGPFCCR_AM_Pos) | (blitOp.alpha << 24));
|
||||
|
||||
/* set DMA2D foreground color */
|
||||
WRITE_REG(DMA2D->FGCOLR, ((blitOp.color & 0xF800) << 8) | ((blitOp.color & 0x07E0) << 5) | ((blitOp.color & 0x001F) << 3));
|
||||
|
||||
/* Write DMA2D BGPFCCR register */
|
||||
WRITE_REG(DMA2D->BGPFCCR, dma2dBackgroundColorMode | (DMA2D_NO_MODIF_ALPHA << DMA2D_BGPFCCR_AM_Pos));
|
||||
|
||||
/* Configure DMA2D Stream source2 address */
|
||||
WRITE_REG(DMA2D->BGMAR, reinterpret_cast<uint32_t>(blitOp.pDst));
|
||||
|
||||
/* Set DMA2D mode */
|
||||
WRITE_REG(DMA2D->CR, DMA2D_M2M_BLEND | DMA2D_IT_TC | DMA2D_CR_START);
|
||||
break;
|
||||
case BLIT_OP_COPY_A8:
|
||||
/* Set DMA2D color mode and alpha mode */
|
||||
WRITE_REG(DMA2D->FGPFCCR, DMA2D_INPUT_A8 | (DMA2D_COMBINE_ALPHA << DMA2D_BGPFCCR_AM_Pos) | (blitOp.alpha << 24));
|
||||
|
||||
/* set DMA2D foreground color */
|
||||
WRITE_REG(DMA2D->FGCOLR, ((blitOp.color & 0xF800) << 8) | ((blitOp.color & 0x07E0) << 5) | ((blitOp.color & 0x001F) << 3));
|
||||
|
||||
/* Write DMA2D BGPFCCR register */
|
||||
WRITE_REG(DMA2D->BGPFCCR, dma2dBackgroundColorMode | (DMA2D_NO_MODIF_ALPHA << DMA2D_BGPFCCR_AM_Pos));
|
||||
|
||||
/* Configure DMA2D Stream source2 address */
|
||||
WRITE_REG(DMA2D->BGMAR, reinterpret_cast<uint32_t>(blitOp.pDst));
|
||||
|
||||
/* Set DMA2D mode */
|
||||
WRITE_REG(DMA2D->CR, DMA2D_M2M_BLEND | DMA2D_IT_TC | DMA2D_CR_START);
|
||||
break;
|
||||
case BLIT_OP_COPY_WITH_ALPHA:
|
||||
/* Set DMA2D color mode and alpha mode */
|
||||
WRITE_REG(DMA2D->FGPFCCR, dma2dForegroundColorMode | (DMA2D_COMBINE_ALPHA << DMA2D_BGPFCCR_AM_Pos) | (blitOp.alpha << 24));
|
||||
|
||||
/* Write DMA2D BGPFCCR register */
|
||||
WRITE_REG(DMA2D->BGPFCCR, dma2dBackgroundColorMode | (DMA2D_NO_MODIF_ALPHA << DMA2D_BGPFCCR_AM_Pos));
|
||||
|
||||
/* Configure DMA2D Stream source2 address */
|
||||
WRITE_REG(DMA2D->BGMAR, reinterpret_cast<uint32_t>(blitOp.pDst));
|
||||
|
||||
if (blitOp.srcFormat == Bitmap::L8)
|
||||
{
|
||||
const clutData_t* const palette = reinterpret_cast<const clutData_t*>(blitOp.pClut);
|
||||
|
||||
/* Write foreground CLUT memory address */
|
||||
WRITE_REG(DMA2D->FGCMAR, reinterpret_cast<uint32_t>(&palette->data));
|
||||
|
||||
switch ((Bitmap::ClutFormat)palette->format)
|
||||
{
|
||||
case Bitmap::CLUT_FORMAT_L8_ARGB8888:
|
||||
/* Write foreground CLUT size and CLUT color mode */
|
||||
MODIFY_REG(DMA2D->FGPFCCR, (DMA2D_FGPFCCR_CS | DMA2D_FGPFCCR_CCM), (((palette->size - 1) << DMA2D_FGPFCCR_CS_Pos) | (DMA2D_CCM_ARGB8888 << DMA2D_FGPFCCR_CCM_Pos)));
|
||||
break;
|
||||
case Bitmap::CLUT_FORMAT_L8_RGB888:
|
||||
MODIFY_REG(DMA2D->FGPFCCR, (DMA2D_FGPFCCR_CS | DMA2D_FGPFCCR_CCM), (((palette->size - 1) << DMA2D_FGPFCCR_CS_Pos) | (DMA2D_CCM_RGB888 << DMA2D_FGPFCCR_CCM_Pos)));
|
||||
break;
|
||||
|
||||
case Bitmap::CLUT_FORMAT_L8_RGB565:
|
||||
default:
|
||||
assert(0 && "Unsupported format");
|
||||
break;
|
||||
}
|
||||
|
||||
/* Enable the CLUT loading for the foreground */
|
||||
SET_BIT(DMA2D->FGPFCCR, DMA2D_FGPFCCR_START);
|
||||
|
||||
while ((READ_REG(DMA2D->FGPFCCR) & DMA2D_FGPFCCR_START) != 0U)
|
||||
{
|
||||
__NOP();
|
||||
}
|
||||
DMA2D->IFCR = (DMA2D_FLAG_CTC);
|
||||
}
|
||||
|
||||
/* Set DMA2D mode */
|
||||
WRITE_REG(DMA2D->CR, DMA2D_M2M_BLEND | DMA2D_IT_TC | DMA2D_CR_START);
|
||||
break;
|
||||
case BLIT_OP_COPY_ARGB8888:
|
||||
case BLIT_OP_COPY_ARGB8888_WITH_ALPHA:
|
||||
/* Set DMA2D color mode and alpha mode */
|
||||
WRITE_REG(DMA2D->FGPFCCR, dma2dForegroundColorMode | (DMA2D_COMBINE_ALPHA << DMA2D_BGPFCCR_AM_Pos) | (blitOp.alpha << 24));
|
||||
|
||||
/* Write DMA2D BGPFCCR register */
|
||||
WRITE_REG(DMA2D->BGPFCCR, dma2dBackgroundColorMode | (DMA2D_NO_MODIF_ALPHA << DMA2D_BGPFCCR_AM_Pos));
|
||||
|
||||
/* Configure DMA2D Stream source2 address */
|
||||
WRITE_REG(DMA2D->BGMAR, reinterpret_cast<uint32_t>(blitOp.pDst));
|
||||
|
||||
/* Set DMA2D mode */
|
||||
WRITE_REG(DMA2D->CR, DMA2D_M2M_BLEND | DMA2D_IT_TC | DMA2D_CR_START);
|
||||
break;
|
||||
default: /* BLIT_OP_COPY */
|
||||
/* Set DMA2D color mode and alpha mode */
|
||||
WRITE_REG(DMA2D->FGPFCCR, dma2dForegroundColorMode | (DMA2D_COMBINE_ALPHA << DMA2D_BGPFCCR_AM_Pos) | (blitOp.alpha << 24));
|
||||
|
||||
if (blitOp.srcFormat == Bitmap::L8)
|
||||
{
|
||||
const clutData_t* const palette = reinterpret_cast<const clutData_t*>(blitOp.pClut);
|
||||
|
||||
/* Write foreground CLUT memory address */
|
||||
WRITE_REG(DMA2D->FGCMAR, reinterpret_cast<uint32_t>(&palette->data));
|
||||
|
||||
/* Write foreground CLUT size and CLUT color mode */
|
||||
MODIFY_REG(DMA2D->FGPFCCR, (DMA2D_FGPFCCR_CS | DMA2D_FGPFCCR_CCM), (((palette->size - 1) << DMA2D_FGPFCCR_CS_Pos) | (DMA2D_CCM_RGB888 << DMA2D_FGPFCCR_CCM_Pos)));
|
||||
|
||||
/* Enable the CLUT loading for the foreground */
|
||||
SET_BIT(DMA2D->FGPFCCR, DMA2D_FGPFCCR_START);
|
||||
|
||||
while ((READ_REG(DMA2D->FGPFCCR) & DMA2D_FGPFCCR_START) != 0U)
|
||||
{
|
||||
__NOP();
|
||||
}
|
||||
DMA2D->IFCR = (DMA2D_FLAG_CTC);
|
||||
/* Start DMA2D */
|
||||
WRITE_REG(DMA2D->CR, DMA2D_M2M_PFC | DMA2D_IT_TC | DMA2D_CR_START);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Start DMA2D */
|
||||
WRITE_REG(DMA2D->CR, DMA2D_M2M | DMA2D_IT_TC | DMA2D_CR_START);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* void STM32F7DMA::setupDataFill(const BlitOp& blitOp) handles blit operation of
|
||||
* BLIT_OP_FILL
|
||||
* BLIT_OP_FILL_WITH_ALPHA
|
||||
*/
|
||||
void STM32F7DMA::setupDataFill(const BlitOp& blitOp)
|
||||
{
|
||||
uint32_t dma2dOutputColorMode = getChromARTOutputFormat(static_cast<Bitmap::BitmapFormat>(blitOp.dstFormat));
|
||||
|
||||
/* DMA2D OPFCCR register configuration ---------------------------------------*/
|
||||
WRITE_REG(DMA2D->OPFCCR, dma2dOutputColorMode);
|
||||
|
||||
/* Configure DMA2D data size */
|
||||
WRITE_REG(DMA2D->NLR, (blitOp.nLoops | (blitOp.nSteps << DMA2D_NLR_PL_Pos)));
|
||||
|
||||
/* Configure DMA2D destination address */
|
||||
WRITE_REG(DMA2D->OMAR, reinterpret_cast<uint32_t>(blitOp.pDst));
|
||||
|
||||
/* DMA2D OOR register configuration ------------------------------------------*/
|
||||
WRITE_REG(DMA2D->OOR, blitOp.dstLoopStride - blitOp.nSteps);
|
||||
|
||||
if (blitOp.operation == BLIT_OP_FILL_WITH_ALPHA)
|
||||
{
|
||||
/* DMA2D BGOR register configuration -------------------------------------*/
|
||||
WRITE_REG(DMA2D->BGOR, blitOp.dstLoopStride - blitOp.nSteps);
|
||||
|
||||
/* DMA2D FGOR register configuration -------------------------------------*/
|
||||
WRITE_REG(DMA2D->FGOR, blitOp.dstLoopStride - blitOp.nSteps);
|
||||
|
||||
/* Write DMA2D BGPFCCR register */
|
||||
WRITE_REG(DMA2D->BGPFCCR, dma2dOutputColorMode | (DMA2D_NO_MODIF_ALPHA << DMA2D_BGPFCCR_AM_Pos));
|
||||
|
||||
/* Write DMA2D FGPFCCR register */
|
||||
WRITE_REG(DMA2D->FGPFCCR, CM_A8 | (DMA2D_REPLACE_ALPHA << DMA2D_BGPFCCR_AM_Pos) | ((blitOp.alpha << 24) & DMA2D_BGPFCCR_ALPHA));
|
||||
|
||||
/* DMA2D FGCOLR register configuration -------------------------------------*/
|
||||
WRITE_REG(DMA2D->FGCOLR, ((blitOp.alpha << 24) | ((blitOp.color & 0xF800) << 8) | ((blitOp.color & 0x07E0) << 5) | ((blitOp.color & 0x001F) << 3)) & (DMA2D_FGCOLR_BLUE | DMA2D_FGCOLR_GREEN | DMA2D_FGCOLR_RED));
|
||||
|
||||
/* Configure DMA2D Stream source2 address */
|
||||
WRITE_REG(DMA2D->BGMAR, reinterpret_cast<uint32_t>(blitOp.pDst));
|
||||
|
||||
/* Configure DMA2D source address */
|
||||
WRITE_REG(DMA2D->FGMAR, reinterpret_cast<uint32_t>(blitOp.pDst));
|
||||
|
||||
/* Enable the Peripheral and Enable the transfer complete interrupt */
|
||||
WRITE_REG(DMA2D->CR, (DMA2D_IT_TC | DMA2D_CR_START | DMA2D_M2M_BLEND));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Write DMA2D FGPFCCR register */
|
||||
WRITE_REG(DMA2D->FGPFCCR, dma2dOutputColorMode | (DMA2D_NO_MODIF_ALPHA << DMA2D_BGPFCCR_AM_Pos));
|
||||
|
||||
/* DMA2D FGOR register configuration -------------------------------------*/
|
||||
WRITE_REG(DMA2D->FGOR, 0);
|
||||
|
||||
if (blitOp.dstFormat == Bitmap::RGB565)
|
||||
{
|
||||
// set color
|
||||
WRITE_REG(DMA2D->OCOLR, blitOp.color);
|
||||
}
|
||||
else
|
||||
{
|
||||
// set color
|
||||
WRITE_REG(DMA2D->OCOLR, (blitOp.alpha << 24) | (blitOp.alpha << 24) | ((blitOp.color & 0xF800) << 8) | ((blitOp.color & 0x07E0) << 5) | ((blitOp.color & 0x001F) << 3));
|
||||
}
|
||||
|
||||
/* Enable the Peripheral and Enable the transfer complete interrupt */
|
||||
WRITE_REG(DMA2D->CR, (DMA2D_IT_TC | DMA2D_CR_START | DMA2D_R2M));
|
||||
}
|
||||
}
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
164
ide-touchgfx-gen/TouchGFX/target/generated/STM32DMA.hpp
Normal file
164
ide-touchgfx-gen/TouchGFX/target/generated/STM32DMA.hpp
Normal file
@ -0,0 +1,164 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : STM32DMA.hpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef STM32F7DMA_HPP
|
||||
#define STM32F7DMA_HPP
|
||||
|
||||
#include <touchgfx/Bitmap.hpp>
|
||||
#include <touchgfx/hal/DMA.hpp>
|
||||
|
||||
/**
|
||||
* @class STM32F7DMA
|
||||
*
|
||||
* @brief This class specializes DMA_Interface for the STM32F7 processors.
|
||||
*
|
||||
* @sa touchgfx::DMA_Interface
|
||||
*/
|
||||
class STM32F7DMA : public touchgfx::DMA_Interface
|
||||
{
|
||||
/**
|
||||
* @typedef touchgfx::DMA_Interface Base
|
||||
*
|
||||
* @brief Defines an alias representing the base.
|
||||
*
|
||||
Defines an alias representing the base.
|
||||
*/
|
||||
typedef touchgfx::DMA_Interface Base;
|
||||
|
||||
public:
|
||||
/**
|
||||
* @fn STM32F7DMA::STM32F7DMA();
|
||||
*
|
||||
* @brief Default constructor.
|
||||
*
|
||||
* Default constructor.
|
||||
*/
|
||||
STM32F7DMA();
|
||||
|
||||
/**
|
||||
* @fn STM32F7DMA::~STM32F7DMA();
|
||||
*
|
||||
* @brief Destructor.
|
||||
*
|
||||
* Destructor.
|
||||
*/
|
||||
virtual ~STM32F7DMA();
|
||||
|
||||
/**
|
||||
* @fn DMAType touchgfx::STM32F7DMA::getDMAType()
|
||||
*
|
||||
* @brief Function for obtaining the DMA type of the concrete DMA_Interface implementation.
|
||||
*
|
||||
* Function for obtaining the DMA type of the concrete DMA_Interface implementation.
|
||||
* As default, will return DMA_TYPE_CHROMART type value.
|
||||
*
|
||||
* @return a DMAType value of the concrete DMA_Interface implementation.
|
||||
*/
|
||||
virtual touchgfx::DMAType getDMAType(void)
|
||||
{
|
||||
return touchgfx::DMA_TYPE_CHROMART;
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn touchgfx::BlitOperations STM32F7DMA::getBlitCaps();
|
||||
*
|
||||
* @brief Gets the blit capabilities.
|
||||
*
|
||||
* Gets the blit capabilities.
|
||||
*
|
||||
* This DMA supports a range of blit caps: BLIT_OP_COPY, BLIT_OP_COPY_ARGB8888,
|
||||
* BLIT_OP_COPY_ARGB8888_WITH_ALPHA, BLIT_OP_COPY_A4, BLIT_OP_COPY_A8.
|
||||
*
|
||||
*
|
||||
* @return Currently supported blitcaps.
|
||||
*/
|
||||
virtual touchgfx::BlitOperations getBlitCaps();
|
||||
|
||||
/**
|
||||
* @fn void STM32F7DMA::initialize();
|
||||
*
|
||||
* @brief Perform hardware specific initialization.
|
||||
*
|
||||
* Perform hardware specific initialization.
|
||||
*/
|
||||
virtual void initialize();
|
||||
|
||||
/**
|
||||
* @fn void STM32F7DMA::signalDMAInterrupt()
|
||||
*
|
||||
* @brief Raises a DMA interrupt signal.
|
||||
*
|
||||
* Raises a DMA interrupt signal.
|
||||
*/
|
||||
virtual void signalDMAInterrupt()
|
||||
{
|
||||
executeCompleted();
|
||||
}
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @fn virtual void STM32F7DMA::setupDataCopy(const touchgfx::BlitOp& blitOp);
|
||||
*
|
||||
* @brief Configures the DMA for copying data to the frame buffer.
|
||||
*
|
||||
* Configures the DMA for copying data to the frame buffer.
|
||||
*
|
||||
* @param blitOp Details on the copy to perform.
|
||||
*/
|
||||
virtual void setupDataCopy(const touchgfx::BlitOp& blitOp);
|
||||
|
||||
/**
|
||||
* @fn virtual void STM32F7DMA::setupDataFill(const touchgfx::BlitOp& blitOp);
|
||||
*
|
||||
* @brief Configures the DMA for "filling" the frame-buffer with a single color.
|
||||
*
|
||||
* Configures the DMA for "filling" the frame-buffer with a single color.
|
||||
*
|
||||
* @param blitOp Details on the "fill" to perform.
|
||||
*/
|
||||
virtual void setupDataFill(const touchgfx::BlitOp& blitOp);
|
||||
|
||||
private:
|
||||
touchgfx::LockFreeDMA_Queue dma_queue;
|
||||
touchgfx::BlitOp queue_storage[96];
|
||||
|
||||
/**
|
||||
* @fn void STM32F7DMA::getChromARTInputFormat()
|
||||
*
|
||||
* @brief Convert Bitmap format to ChromART Input format.
|
||||
*
|
||||
* @param format Bitmap format.
|
||||
*
|
||||
* @return ChromART Input format.
|
||||
*/
|
||||
|
||||
inline uint32_t getChromARTInputFormat(touchgfx::Bitmap::BitmapFormat format);
|
||||
|
||||
/**
|
||||
* @fn void STM32F7DMA::getChromARTOutputFormat()
|
||||
*
|
||||
* @brief Convert Bitmap format to ChromART Output format.
|
||||
*
|
||||
* @param format Bitmap format.
|
||||
*
|
||||
* @return ChromART Output format.
|
||||
*/
|
||||
inline uint32_t getChromARTOutputFormat(touchgfx::Bitmap::BitmapFormat format);
|
||||
};
|
||||
|
||||
#endif // STM32F7DMA_HPP
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
@ -0,0 +1,68 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXConfiguration.cpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
#include <texts/TypedTextDatabase.hpp>
|
||||
#include <fonts/ApplicationFontProvider.hpp>
|
||||
#include <gui/common/FrontendHeap.hpp>
|
||||
#include <BitmapDatabase.hpp>
|
||||
#include <platform/driver/lcd/LCD16bpp.hpp>
|
||||
#include <STM32DMA.hpp>
|
||||
#include <TouchGFXHAL.hpp>
|
||||
#include <STM32TouchController.hpp>
|
||||
#include <stm32f7xx_hal.h>
|
||||
|
||||
extern "C" void touchgfx_init();
|
||||
extern "C" void touchgfx_taskEntry();
|
||||
|
||||
static STM32TouchController tc;
|
||||
static STM32F7DMA dma;
|
||||
static LCD16bpp display;
|
||||
static ApplicationFontProvider fontProvider;
|
||||
static Texts texts;
|
||||
static TouchGFXHAL hal(dma, display, tc, 480, 272);
|
||||
|
||||
void touchgfx_init()
|
||||
{
|
||||
Bitmap::registerBitmapDatabase(BitmapDatabase::getInstance(), BitmapDatabase::getInstanceSize());
|
||||
TypedText::registerTexts(&texts);
|
||||
Texts::setLanguage(0);
|
||||
|
||||
FontManager::setFontProvider(&fontProvider);
|
||||
|
||||
FrontendHeap& heap = FrontendHeap::getInstance();
|
||||
/*
|
||||
* we need to obtain the reference above to initialize the frontend heap.
|
||||
*/
|
||||
(void)heap;
|
||||
|
||||
/*
|
||||
* Initialize TouchGFX
|
||||
*/
|
||||
hal.initialize();
|
||||
}
|
||||
|
||||
void touchgfx_taskEntry()
|
||||
{
|
||||
/*
|
||||
* Main event loop. Will wait for VSYNC signal, and then process next frame. Call
|
||||
* this function from your GUI task.
|
||||
*
|
||||
* Note This function never returns
|
||||
*/
|
||||
hal.taskEntry();
|
||||
}
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
@ -0,0 +1,139 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXGeneratedHAL.cpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include <TouchGFXGeneratedHAL.hpp>
|
||||
#include <touchgfx/hal/OSWrappers.hpp>
|
||||
#include <gui/common/FrontendHeap.hpp>
|
||||
#include <touchgfx/hal/GPIO.hpp>
|
||||
|
||||
#include "stm32f7xx.h"
|
||||
#include "stm32f7xx_hal_ltdc.h"
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
namespace
|
||||
{
|
||||
static uint16_t lcd_int_active_line;
|
||||
static uint16_t lcd_int_porch_line;
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::initialize()
|
||||
{
|
||||
HAL::initialize();
|
||||
|
||||
registerEventListener(*(Application::getInstance()));
|
||||
setFrameBufferStartAddresses((void*)0xC0000000, (void*)0xC003FC00, (void*)0);
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::configureInterrupts()
|
||||
{
|
||||
NVIC_SetPriority(DMA2D_IRQn, 9);
|
||||
NVIC_SetPriority(LTDC_IRQn, 9);
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::enableInterrupts()
|
||||
{
|
||||
NVIC_EnableIRQ(DMA2D_IRQn);
|
||||
NVIC_EnableIRQ(LTDC_IRQn);
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::disableInterrupts()
|
||||
{
|
||||
NVIC_DisableIRQ(DMA2D_IRQn);
|
||||
NVIC_DisableIRQ(LTDC_IRQn);
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::enableLCDControllerInterrupt()
|
||||
{
|
||||
lcd_int_active_line = (LTDC->BPCR & 0x7FF) - 1;
|
||||
lcd_int_porch_line = (LTDC->AWCR & 0x7FF) - 1;
|
||||
|
||||
/* Sets the Line Interrupt position */
|
||||
LTDC->LIPCR = lcd_int_active_line;
|
||||
/* Line Interrupt Enable */
|
||||
LTDC->IER |= LTDC_IER_LIE;
|
||||
}
|
||||
|
||||
uint16_t* TouchGFXGeneratedHAL::getTFTFrameBuffer() const
|
||||
{
|
||||
return (uint16_t*)LTDC_Layer1->CFBAR;
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::setTFTFrameBuffer(uint16_t* adr)
|
||||
{
|
||||
LTDC_Layer1->CFBAR = (uint32_t)adr;
|
||||
|
||||
/* Reload immediate */
|
||||
LTDC->SRCR = (uint32_t)LTDC_SRCR_IMR;
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::flushFrameBuffer(const touchgfx::Rect& rect)
|
||||
{
|
||||
HAL::flushFrameBuffer(rect);
|
||||
// If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then we need
|
||||
// to flush the Dcache prior to letting DMA2D accessing it. That's done
|
||||
// using SCB_CleanInvalidateDCache().
|
||||
SCB_CleanInvalidateDCache();
|
||||
}
|
||||
|
||||
bool TouchGFXGeneratedHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes)
|
||||
{
|
||||
return HAL::blockCopy(dest, src, numBytes);
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::InvalidateCache()
|
||||
{
|
||||
// If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then we need
|
||||
// to flush the Dcache prior to letting DMA2D accessing it. That's done
|
||||
// using SCB_CleanInvalidateDCache().
|
||||
SCB_CleanInvalidateDCache();
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::FlushCache()
|
||||
{
|
||||
// If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then we need
|
||||
// to flush the Dcache prior to letting DMA2D accessing it. That's done
|
||||
// using SCB_CleanInvalidateDCache().
|
||||
SCB_CleanInvalidateDCache();
|
||||
}
|
||||
|
||||
extern "C"
|
||||
{
|
||||
void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef* hltdc)
|
||||
{
|
||||
if (LTDC->LIPCR == lcd_int_active_line)
|
||||
{
|
||||
//entering active area
|
||||
HAL_LTDC_ProgramLineEvent(hltdc, lcd_int_porch_line);
|
||||
HAL::getInstance()->vSync();
|
||||
OSWrappers::signalVSync();
|
||||
// Swap frame buffers immediately instead of waiting for the task to be scheduled in.
|
||||
// Note: task will also swap when it wakes up, but that operation is guarded and will not have
|
||||
// any effect if already swapped.
|
||||
HAL::getInstance()->swapFrameBuffers();
|
||||
GPIO::set(GPIO::VSYNC_FREQ);
|
||||
}
|
||||
else
|
||||
{
|
||||
//exiting active area
|
||||
HAL_LTDC_ProgramLineEvent(hltdc, lcd_int_active_line);
|
||||
GPIO::clear(GPIO::VSYNC_FREQ);
|
||||
HAL::getInstance()->frontPorchEntered();
|
||||
}
|
||||
}
|
||||
}
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
@ -0,0 +1,168 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXGeneratedHAL.hpp
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <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
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef TouchGFXGeneratedHAL_HPP
|
||||
#define TouchGFXGeneratedHAL_HPP
|
||||
|
||||
#include <touchgfx/hal/HAL.hpp>
|
||||
/**
|
||||
* @class TouchGFXGeneratedHAL
|
||||
*
|
||||
* @brief HAL implementation for TouchGFXGenerated.
|
||||
*
|
||||
* @sa HAL
|
||||
*/
|
||||
class TouchGFXGeneratedHAL : public touchgfx::HAL
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @fn TouchGFXGeneratedHAL::TouchGFXGeneratedHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) : touchgfx::HAL(dma, display, tc, width, height)
|
||||
*
|
||||
* @brief Constructor.
|
||||
*
|
||||
* Constructor. Initializes members.
|
||||
*
|
||||
* @param [in,out] dma Reference to DMA interface.
|
||||
* @param [in,out] display Reference to LCD interface.
|
||||
* @param [in,out] tc Reference to Touch Controller driver.
|
||||
* @param width Width of the display.
|
||||
* @param height Height of the display.
|
||||
*/
|
||||
TouchGFXGeneratedHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) :
|
||||
touchgfx::HAL(dma, display, tc, width, height)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn void TouchGFXGeneratedHAL::initialize();
|
||||
*
|
||||
* @brief This function is responsible for initializing the entire framework.
|
||||
*
|
||||
* This function is responsible for initializing the entire framework.
|
||||
*/
|
||||
void initialize();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::configureInterrupts();
|
||||
*
|
||||
* @brief Sets the DMA and LCD interrupt priorities.
|
||||
*
|
||||
* Sets the DMA and LCD interrupt priorities.
|
||||
*/
|
||||
virtual void configureInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::enableInterrupts();
|
||||
*
|
||||
* @brief Enables the DMA and LCD interrupts.
|
||||
*
|
||||
* Enables the DMA and LCD interrupts.
|
||||
*/
|
||||
virtual void enableInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::disableInterrupts();
|
||||
*
|
||||
* @brief Disables the DMA and LCD interrupts.
|
||||
*
|
||||
* Disables the DMA and LCD interrupts.
|
||||
*/
|
||||
virtual void disableInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::enableLCDControllerInterrupt();
|
||||
*
|
||||
* @brief Configure the LCD controller to fire interrupts at VSYNC.
|
||||
*
|
||||
* Configure the LCD controller to fire interrupts at VSYNC. Called automatically
|
||||
* once TouchGFX initialization has completed.
|
||||
*/
|
||||
virtual void enableLCDControllerInterrupt();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::flushFrameBuffer();
|
||||
*
|
||||
* @brief This function is called whenever the framework has performed a complete draw.
|
||||
*
|
||||
* This specialization is only in place to keep compilers happy. Base impl. will call the
|
||||
* Rect version.
|
||||
* @see HAL::flushFrameBuffer
|
||||
*/
|
||||
virtual void flushFrameBuffer()
|
||||
{
|
||||
HAL::flushFrameBuffer();
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::flushFrameBuffer(const touchgfx::Rect& rect);
|
||||
*
|
||||
* @brief This function is called whenever the framework has performed a partial draw.
|
||||
*
|
||||
* This function is called whenever the framework has performed a partial draw.
|
||||
* On the STM32F7, make sure to clean and invalidate the data cache. This is to
|
||||
* ensure that LTDC sees correct data when transferring to the display.
|
||||
*
|
||||
* @param rect The area of the screen that has been drawn, expressed in absolute coordinates.
|
||||
*
|
||||
* @see flushFrameBuffer().
|
||||
*/
|
||||
virtual void flushFrameBuffer(const touchgfx::Rect& rect);
|
||||
|
||||
/**
|
||||
*
|
||||
* @fn virtual void TouchGFXGeneratedHAL::blockCopy();
|
||||
*
|
||||
* This function performs a platform-specific memcpy, if supported by the hardware.
|
||||
*
|
||||
* @param [out] dest Pointer to destination memory.
|
||||
* @param [in] src Pointer to source memory.
|
||||
* @param numBytes Number of bytes to copy.
|
||||
*
|
||||
* @return true if the copy succeeded, false if copy was not performed.
|
||||
*/
|
||||
virtual bool blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @fn virtual uint16_t* TouchGFXGeneratedHAL::getTFTFrameBuffer() const;
|
||||
*
|
||||
* @brief Gets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* Gets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @return The address of the frame buffer currently being displayed on the TFT.
|
||||
*/
|
||||
virtual uint16_t* getTFTFrameBuffer() const;
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::setTFTFrameBuffer(uint16_t* adr);
|
||||
*
|
||||
* @brief Sets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* Sets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @param [in,out] adr New frame buffer address.
|
||||
*/
|
||||
virtual void setTFTFrameBuffer(uint16_t* adr);
|
||||
|
||||
virtual void InvalidateCache();
|
||||
|
||||
virtual void FlushCache();
|
||||
|
||||
};
|
||||
#endif // TouchGFXGeneratedHAL_HPP
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
Reference in New Issue
Block a user