annotate Discovery/Inc/gfx.h @ 1016:0dd92e9b70a2 BootloaderOstc5

Bootloader use compressed fonts: The previous Bootloader was larger than 128k => not fitting into the first sectors of the second flash bank. Most memory is occupied by the two fonts in use. In order to make the bootloader small enough for the bootloader update function the fonts need to be compressed. To avoid code changes in visualization functions the compressed fonts are decompressed into RAM and then used in the same way as before.
author Ideenmodellierer
date Wed, 28 May 2025 17:20:44 +0200
parents 5f11787b4f42
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1 ///////////////////////////////////////////////////////////////////////////////
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2 /// -*- coding: UTF-8 -*-
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
4 /// \file Discovery/Inc/gfx.h
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
5 /// \brief Header file for common GFX files
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
6 /// \author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
7 /// \date 07-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
8 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
9 /// $Id$
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
10 ///////////////////////////////////////////////////////////////////////////////
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
11 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
12 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
13 /// This program is free software: you can redistribute it and/or modify
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
14 /// it under the terms of the GNU General Public License as published by
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
15 /// the Free Software Foundation, either version 3 of the License, or
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
16 /// (at your option) any later version.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
17 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
18 /// This program is distributed in the hope that it will be useful,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
21 /// GNU General Public License for more details.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
22 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
23 /// You should have received a copy of the GNU General Public License
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
24 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
25 //////////////////////////////////////////////////////////////////////////////
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
26
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
27 /* Define to prevent recursive inclusion -------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
28 #ifndef GFX_H
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
29 #define GFX_H
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
30
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
31 /* Includes ------------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
32
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
33 #include <stdint.h>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
34
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
35 /* Exported types ------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
36
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
37 typedef struct {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
38 const uint8_t *data;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
39 uint16_t width;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
40 uint16_t height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
41 } tImage;
1016
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
42 typedef struct {
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
43 uint8_t *data;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
44 const uint8_t *dataComp;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
45 uint16_t sizeComp;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
46 uint16_t width;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
47 uint16_t height;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
48 } tImageComp;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
49
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
50 typedef struct {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
51 long int code;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
52 const tImage *image;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
53 } tChar;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
54
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
55 typedef struct {
1016
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
56 long int code;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
57 const tImageComp *image;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
58 } tCharComp;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
59
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
60
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
61 typedef struct {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
62 uint32_t length;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
63 const tChar *chars;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
64 uint8_t spacesize;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
65 uint8_t spacesize2Monospaced;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
66 uint8_t height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
67 } tFont;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
68
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
69 typedef struct {
1016
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
70 uint32_t length;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
71 const tCharComp *chars;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
72 uint8_t spacesize;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
73 uint8_t spacesize2Monospaced;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
74 uint8_t height;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
75 } tFontComp;
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
76
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
77
0dd92e9b70a2 Bootloader use compressed fonts:
Ideenmodellierer
parents: 38
diff changeset
78 typedef struct {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
79 uint32_t x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
80 uint32_t y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
81 } point_t;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
82
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
83 typedef struct {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
84 int16_t x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
85 int16_t y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
86 } int16_Point_t;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
87
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
88 typedef union {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
89 uint32_t i[6];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
90 point_t p[3];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
91 } bezier_t;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
92
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
93 typedef struct {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
94 const bezier_t* data;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
95 uint8_t datalen;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
96 } path_t;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
97
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
98 #endif // GFX_H