annotate FontPack/base_upperRegion.c @ 618:96af74455420

Development bugfix: focus state not remembered: Somehow the static in front of the focus state has disappeared. After returning it again the focus detection is available again.
author Ideenmodellierer
date Wed, 27 Jan 2021 22:04:45 +0100
parents 0172431fbad9
children 01f40cb1057e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
1 ///////////////////////////////////////////////////////////////////////////////
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
2 /// -*- coding: UTF-8 -*-
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
3 ///
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
4 /// \file FontPack/./base_upperRegion.c
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
5 /// \brief The beginning of it all. main() is part of this.
36
7801c5d8a562 Update author name for release
heinrichsweikamp
parents: 30
diff changeset
6 /// \author heinrichs weikamp gmbh
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
7 /// \date 31-August-2015
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
8 ///
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
9 /// $Id$
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
10 ///////////////////////////////////////////////////////////////////////////////
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
11 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
12 ///
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
13 /// This program is free software: you can redistribute it and/or modify
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
14 /// it under the terms of the GNU General Public License as published by
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
15 /// the Free Software Foundation, either version 3 of the License, or
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
16 /// (at your option) any later version.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
17 ///
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
18 /// This program is distributed in the hope that it will be useful,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
21 /// GNU General Public License for more details.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
22 ///
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
23 /// You should have received a copy of the GNU General Public License
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
24 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
25 //////////////////////////////////////////////////////////////////////////////
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
26 /**
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
27 @verbatim
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
28 ==============================================================================
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
29 ##### New characters in fonts #####
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
30 ==============================================================================
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
31 [..] Use font_tmore.c and add line to corresponding font like font_t54c
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
32 Don't forget to adjust the length of the font in the last line starting
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
33 const tFont .....
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
34
591
0172431fbad9 Minor: Comment translation into English
heinrichsweikamp
parents: 123
diff changeset
35 [..] last char before the big gap, as of 160217
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
36 image_data_FontT24_0x002b[364]
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
37 __attribute__((at( START_T24_FONT + (1647 * 28) ))), START_T24_FONT (0x08142F00 - MINUS_BANK)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
38
591
0172431fbad9 Minor: Comment translation into English
heinrichsweikamp
parents: 123
diff changeset
39 -> free from 0x0814E490
0172431fbad9 Minor: Comment translation into English
heinrichsweikamp
parents: 123
diff changeset
40 then the logo image_data_ostc_fuer_Tauchcomputer_240px
0172431fbad9 Minor: Comment translation into English
heinrichsweikamp
parents: 123
diff changeset
41 approx 120 kBytes free space available!
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
42
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
43 @endverbatim
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
44 ******************************************************************************
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
45 */
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
46
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
47 /* Includes ------------------------------------------------------------------*/
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
48
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
49 // From Common/Inc:
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
50 #include "FirmwareData.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
51
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
52
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
53 #ifdef DEBUG
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
54 // From AC6 support:
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
55 #include <stdio.h>
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
56 #include <stdint.h>
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
57 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
58
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
59 //////////////////////////////////////////////////////////////////////////////
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
60
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
61 const SFirmwareData font_FirmwareData __attribute__(( section(".font_firmware_data") )) =
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
62 {
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
63 .versionFirst = 1,
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
64 .versionSecond = 0,
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
65 .versionThird = 0,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
66 .versionBeta = 0,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
67
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
68 /* 4 bytes, including trailing 0 */
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
69 .signature = "im",
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
70
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
71 .release_year = 18,
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
72 .release_month = 10,
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
73 .release_day = 04,
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
74 .release_sub = 0,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
75
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
76 /* max 48, including trailing 0 */
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
77 .release_info ="FontPack extension",
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
78
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
79 /* for safety reasons and coming functions */
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
80 .magic[0] = FIRMWARE_MAGIC_FIRST,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
81 .magic[1] = FIRMWARE_MAGIC_SECOND,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
82 .magic[2] = FIRMWARE_MAGIC_FONT, /* the magic byte for fonts*/
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
83 .magic[3] = FIRMWARE_MAGIC_END
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
84 };
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
85
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
86 //////////////////////////////////////////////////////////////////////////////
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
87
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
88 #ifdef BUILD_LIBRARY
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
89 /* Fonts fixed in upper region */
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
90 #include "Fonts/font_awe48.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
91 #include "Fonts/font_T24.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
92 #include "Fonts/font_T42.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
93 #include "Fonts/font_T48_plus.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
94 #include "Fonts/font_T54.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
95 #include "Fonts/font_T84.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
96 #include "Fonts/font_T105.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
97 #include "Fonts/font_T144_plus.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
98
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
99 #include "Fonts/image_ostc.h"
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
100 #else
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
101 #include "gfx_fonts.h"
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
102 #endif
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
103
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
104 /* Images fixed in upper region */
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
105 #include "Fonts/image_battery.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
106 #include "Fonts/image_heinrichs_weikamp.h"
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
107
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
108 /////////////////////////////////////////////////////////////////////////////
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
109
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
110
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
111 #ifdef DEBUG
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
112
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
113 #define ASSERT(e) \
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
114 do { if( ! (e) ) { ++errors; printf("FAIL at %3d: %s \n", __LINE__, #e); errorflag = 1;} } while(0)
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
115
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
116 #define ASSERT_RANGE(e, min, max) ASSERT(min <= e); ASSERT( e <= max)
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
117
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
118 extern void initialise_monitor_handles(void);
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
119
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
120 static int errors = 0;
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
121 static uint8_t errorflag = 0;
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
122
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
123 int main(void)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
124 {
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
125 #if DEBUG_STLINK_V2
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
126 initialise_monitor_handles();
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
127 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
128 //---- Check the linker puts the directory at the requested address ------
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
129 ASSERT( & Awe48 == (tFont*)0x81DFE00 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
130 ASSERT( & FontT24 == (tFont*)0x81DFE0c );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
131 ASSERT( & FontT42 == (tFont*)0x81DFE18 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
132 ASSERT( & FontT48 == (tFont*)0x81DFE24 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
133 ASSERT( & FontT54 == (tFont*)0x81DFE30 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
134 ASSERT( & FontT84 == (tFont*)0x81DFE3c );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
135 ASSERT( & FontT105 == (tFont*)0x81DFE48 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
136 ASSERT( & FontT144 == (tFont*)0x81DFE54 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
137
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
138 //---- Check the linker puts the font data in the requested section ------
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
139 extern tChar __upper_font_data;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
140 extern tChar __upper_font_data_end;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
141 ASSERT( &__upper_font_data == (tChar*)0x08132040 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
142 ASSERT_RANGE( (int)&__upper_font_data_end, 0x08132040, 0x081E0000);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
143
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
144 //---- Walk through the directory data -----------------------------------
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
145 extern const tFont __font_directory;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
146 extern const tFont __font_directory_end;
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
147
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
148 ASSERT_RANGE(&ImgOSTC, (tImage*)&__upper_font_data, (tImage*)&__upper_font_data_end);
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
149
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
150 for(const tFont* font = & __font_directory; font < &__font_directory_end; ++font)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
151 {
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
152 printf("Font: %x\n",font);
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
153 // Check END-OF-DIRECTORY magic marker
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
154 if( font->length == (uint32_t)-1 )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
155 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
156 ASSERT( font == &FontT144 + 1 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
157 break;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
158 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
159
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
160 // Check font descriptors are inside a safe range.
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
161 ASSERT_RANGE( font->length, 10, 150 ); /* old 103: some fonts meanwhile contain more charactes */
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
162 ASSERT_RANGE( font->spacesize, 0, 28 ); /* old 18 : Awe40 has some size 28 characters */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
163 ASSERT_RANGE( font->spacesize2Monospaced, 13, 72 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
164 ASSERT_RANGE( font->height, 28, 108 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
165
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
166 //---- Walk through each char ----------------------------------------
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
167 for(int i = 0; i < font->length; ++i)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
168 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
169 const tChar* c = &font->chars[i];
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
170
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
171 // Check char data is indeed stored in the actual data section
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
172 ASSERT_RANGE( c, &__upper_font_data, &__upper_font_data_end);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
173
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
174 // Check char data sanity
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
175 ASSERT_RANGE( c->code, 0x0000, 0xF143);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
176
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
177 // Check image sanity
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
178 const tImage* image = c->image;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
179 ASSERT_RANGE(image, (tImage*)&__upper_font_data, (tImage*)&__upper_font_data_end);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
180 #if 0 /* common failure: root cause not clear */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
181 ASSERT_RANGE(image->width, font->spacesize, font->spacesize2Monospaced);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
182 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
183 ASSERT(image->height == font->height);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
184 if(errorflag)
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
185 {
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
186 printf("image %x: h=%d fonth=%d\n",image,image->height,font->height);
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
187 errorflag = 0;
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
188 }
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
189 // Uncompress image bytes
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
190 const uint8_t* byte = image->data;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
191 ASSERT_RANGE(byte, (uint8_t*)&__upper_font_data, (uint8_t*)&__upper_font_data_end);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
192
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
193 for(int w=0; w <image->width; ++w)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
194 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
195 // Compression: special 0x01 byte at start of column means just skip it.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
196 if( *byte++ == 0x01 )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
197 continue;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
198
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
199 int zeros = (byte[-1] == 0x00) ? 1 : 0;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
200 for(int h = 1; h < image->height; ++h)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
201 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
202 if( *byte == 0x00 )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
203 ++zeros;
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
204 #if 0 /* this rule is violated very often but does not seems to have an impact */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
205 // Other bytes cannot have the 0x01 value...
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
206 ASSERT( *byte++ != 0x01 );
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
207 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
208 }
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
209 #if 0 /* just an information, not an error => activate if interested */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
210 if( zeros == image->height )
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
211 printf("Font[%d] char[%d]: could skip column %d \n",
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
212 &__font_directory - font, i, w);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
213 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
214 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
215
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
216 #if 0 /* byte usually pints to the next char ==> not sure what the check is about */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
217 // Check the byte stream do not collide with the next char,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
218 // or with the first tImage struct of the font.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
219 if( (i+1) < font->length )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
220 ASSERT( byte < font->chars[i+1].image->data );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
221 else
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
222 ASSERT( byte < (uint8_t*)font->chars[0].image );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
223
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
224 // TODO: check image bytes are contiguous between chars.
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
225 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
226 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
227 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
228
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
229 if( errors )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
230 {
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
231 printf("Font Check: %d errors.\n", errors);
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
232 return -1;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
233 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
234
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
235 printf("Font Check: no errors.\n");
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
236 return 0;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
237 }
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
238 /*#endif*/
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
239 #else
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
240 #define ASSERT(e) \
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
241 do { if( ! (e) ) { ++errors; errorflag = 1;} } while(0)
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
242
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
243 #define ASSERT_RANGE(e, min, max) ASSERT(min <= e); ASSERT( e <= max)
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
244
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
245 uint16_t errors = 1;
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
246 static uint8_t errorflag = 0;
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
247 uint16_t CheckFontPosition()
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
248 {
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
249 uint16_t retvalue;
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
250 ASSERT( & Awe48 == (tFont*)0x81DFE00 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
251 ASSERT( & FontT24 == (tFont*)0x81DFE0c );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
252 ASSERT( & FontT42 == (tFont*)0x81DFE18 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
253 ASSERT( & FontT48 == (tFont*)0x81DFE24 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
254 ASSERT( & FontT54 == (tFont*)0x81DFE30 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
255 ASSERT( & FontT84 == (tFont*)0x81DFE3c );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
256 ASSERT( & FontT105 == (tFont*)0x81DFE48 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
257 ASSERT( & FontT144 == (tFont*)0x81DFE54 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
258 retvalue = errors;
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
259 return retvalue;
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
260 }
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
261 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
262 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/