annotate FontPack/base_upperRegion.c @ 891:a7f4451ba69e Evo_2_23

Added hysteresis for ascent speed coloring: In the previous version acenting with a speed close to the color limits caused a fast changing of the color for depth visiualization. To avoid this "blinking" a hysteresis has been added to the speed evaluation function.
author ideenmodellierer
date Tue, 10 Sep 2024 21:16:32 +0200
parents 01f40cb1057e
children
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
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 591
diff changeset
118 #if DEBUG_STLINK_V2
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
119 extern void initialise_monitor_handles(void);
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 591
diff changeset
120 #endif
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
121
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
122 static int errors = 0;
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
123 static uint8_t errorflag = 0;
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
124
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
125 int main(void)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
126 {
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
127 #if DEBUG_STLINK_V2
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
128 initialise_monitor_handles();
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
129 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
130 //---- 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
131 ASSERT( & Awe48 == (tFont*)0x81DFE00 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
132 ASSERT( & FontT24 == (tFont*)0x81DFE0c );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
133 ASSERT( & FontT42 == (tFont*)0x81DFE18 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
134 ASSERT( & FontT48 == (tFont*)0x81DFE24 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
135 ASSERT( & FontT54 == (tFont*)0x81DFE30 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
136 ASSERT( & FontT84 == (tFont*)0x81DFE3c );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
137 ASSERT( & FontT105 == (tFont*)0x81DFE48 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
138 ASSERT( & FontT144 == (tFont*)0x81DFE54 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
139
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
140 //---- Check the linker puts the font data in the requested section ------
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
141 extern tChar __upper_font_data;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
142 extern tChar __upper_font_data_end;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
143 ASSERT( &__upper_font_data == (tChar*)0x08132040 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
144 ASSERT_RANGE( (int)&__upper_font_data_end, 0x08132040, 0x081E0000);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
145
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
146 //---- Walk through the directory data -----------------------------------
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
147 extern const tFont __font_directory;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
148 extern const tFont __font_directory_end;
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
149
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
150 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
151
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
152 for(const tFont* font = & __font_directory; font < &__font_directory_end; ++font)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
153 {
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 591
diff changeset
154 printf("Font: %x\n",(unsigned int)font);
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
155 // Check END-OF-DIRECTORY magic marker
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
156 if( font->length == (uint32_t)-1 )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
157 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
158 ASSERT( font == &FontT144 + 1 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
159 break;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
160 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
161
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
162 // 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
163 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
164 ASSERT_RANGE( font->spacesize, 0, 28 ); /* old 18 : Awe40 has some size 28 characters */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
165 ASSERT_RANGE( font->spacesize2Monospaced, 13, 72 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
166 ASSERT_RANGE( font->height, 28, 108 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
167
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
168 //---- Walk through each char ----------------------------------------
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
169 for(int i = 0; i < font->length; ++i)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
170 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
171 const tChar* c = &font->chars[i];
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
172
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
173 // Check char data is indeed stored in the actual data section
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
174 ASSERT_RANGE( c, &__upper_font_data, &__upper_font_data_end);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
175
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
176 // Check char data sanity
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
177 ASSERT_RANGE( c->code, 0x0000, 0xF143);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
178
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
179 // Check image sanity
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
180 const tImage* image = c->image;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
181 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
182 #if 0 /* common failure: root cause not clear */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
183 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
184 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
185 ASSERT(image->height == font->height);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
186 if(errorflag)
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
187 {
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 591
diff changeset
188 printf("image %x: h=%d fonth=%d\n",(unsigned int)image,image->height,font->height);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
189 errorflag = 0;
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
190 }
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
191 // Uncompress image bytes
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
192 const uint8_t* byte = image->data;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
193 ASSERT_RANGE(byte, (uint8_t*)&__upper_font_data, (uint8_t*)&__upper_font_data_end);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
194
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
195 for(int w=0; w <image->width; ++w)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
196 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
197 // Compression: special 0x01 byte at start of column means just skip it.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
198 if( *byte++ == 0x01 )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
199 continue;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
200
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
201 int zeros = (byte[-1] == 0x00) ? 1 : 0;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
202 for(int h = 1; h < image->height; ++h)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
203 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
204 if( *byte == 0x00 )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
205 ++zeros;
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
206 #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
207 // Other bytes cannot have the 0x01 value...
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
208 ASSERT( *byte++ != 0x01 );
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
209 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
210 }
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
211 #if 0 /* just an information, not an error => activate if interested */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
212 if( zeros == image->height )
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
213 printf("Font[%d] char[%d]: could skip column %d \n",
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
214 &__font_directory - font, i, w);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
215 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
216 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
217
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
218 #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
219 // Check the byte stream do not collide with the next char,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
220 // or with the first tImage struct of the font.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
221 if( (i+1) < font->length )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
222 ASSERT( byte < font->chars[i+1].image->data );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
223 else
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
224 ASSERT( byte < (uint8_t*)font->chars[0].image );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
225
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
226 // 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
227 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
228 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
229 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
230
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
231 if( errors )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
232 {
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
233 printf("Font Check: %d errors.\n", errors);
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
234 return -1;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
235 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
236
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
237 printf("Font Check: no errors.\n");
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
238 return 0;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
239 }
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
240 /*#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
241 #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
242 #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
243 do { if( ! (e) ) { ++errors; errorflag = 1;} } while(0)
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
244
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
245 #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
246
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 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
248 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
249 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
250 {
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 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
252 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
253 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
254 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
255 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
256 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
257 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
258 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
259 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
260 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
261 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
262 }
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
263 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
264 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/