Mercurial > public > ostc4
annotate FontPack/base_upperRegion.c @ 842:c3dd461ca3f9 Evo_2_23
Migrated Sentinel protocol to new UART structure:
The Sentinel protocol had not been migrated to the new UART structure which was introduced with the introduction of the UART MUX. The Sentinel is now supported by autodetection again (development version only)
author | Ideenmodellierer |
---|---|
date | Mon, 15 Jan 2024 21:44:18 +0100 |
parents | 01f40cb1057e |
children |
rev | line source |
---|---|
30 | 1 /////////////////////////////////////////////////////////////////////////////// |
2 /// -*- coding: UTF-8 -*- | |
3 /// | |
4 /// \file FontPack/./base_upperRegion.c | |
5 /// \brief The beginning of it all. main() is part of this. | |
36 | 6 /// \author heinrichs weikamp gmbh |
30 | 7 /// \date 31-August-2015 |
8 /// | |
9 /// $Id$ | |
10 /////////////////////////////////////////////////////////////////////////////// | |
11 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh | |
12 /// | |
13 /// This program is free software: you can redistribute it and/or modify | |
14 /// it under the terms of the GNU General Public License as published by | |
15 /// the Free Software Foundation, either version 3 of the License, or | |
16 /// (at your option) any later version. | |
17 /// | |
18 /// This program is distributed in the hope that it will be useful, | |
19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 /// GNU General Public License for more details. | |
22 /// | |
23 /// You should have received a copy of the GNU General Public License | |
24 /// along with this program. If not, see <http://www.gnu.org/licenses/>. | |
25 ////////////////////////////////////////////////////////////////////////////// | |
26 /** | |
27 @verbatim | |
28 ============================================================================== | |
29 ##### New characters in fonts ##### | |
30 ============================================================================== | |
31 [..] Use font_tmore.c and add line to corresponding font like font_t54c | |
32 Don't forget to adjust the length of the font in the last line starting | |
33 const tFont ..... | |
34 | |
591 | 35 [..] last char before the big gap, as of 160217 |
30 | 36 image_data_FontT24_0x002b[364] |
37 __attribute__((at( START_T24_FONT + (1647 * 28) ))), START_T24_FONT (0x08142F00 - MINUS_BANK) | |
38 | |
591 | 39 -> free from 0x0814E490 |
40 then the logo image_data_ostc_fuer_Tauchcomputer_240px | |
41 approx 120 kBytes free space available! | |
30 | 42 |
43 @endverbatim | |
44 ****************************************************************************** | |
45 */ | |
46 | |
47 /* Includes ------------------------------------------------------------------*/ | |
48 | |
49 // From Common/Inc: | |
50 #include "FirmwareData.h" | |
51 | |
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 | 54 // From AC6 support: |
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 | 58 |
59 ////////////////////////////////////////////////////////////////////////////// | |
60 | |
61 const SFirmwareData font_FirmwareData __attribute__(( section(".font_firmware_data") )) = | |
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 | 65 .versionThird = 0, |
66 .versionBeta = 0, | |
67 | |
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 | 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 | 74 .release_sub = 0, |
75 | |
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 | 78 |
79 /* for safety reasons and coming functions */ | |
80 .magic[0] = FIRMWARE_MAGIC_FIRST, | |
81 .magic[1] = FIRMWARE_MAGIC_SECOND, | |
82 .magic[2] = FIRMWARE_MAGIC_FONT, /* the magic byte for fonts*/ | |
83 .magic[3] = FIRMWARE_MAGIC_END | |
84 }; | |
85 | |
86 ////////////////////////////////////////////////////////////////////////////// | |
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 | 89 /* Fonts fixed in upper region */ |
90 #include "Fonts/font_awe48.h" | |
91 #include "Fonts/font_T24.h" | |
92 #include "Fonts/font_T42.h" | |
93 #include "Fonts/font_T48_plus.h" | |
94 #include "Fonts/font_T54.h" | |
95 #include "Fonts/font_T84.h" | |
96 #include "Fonts/font_T105.h" | |
97 #include "Fonts/font_T144_plus.h" | |
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 | 104 /* Images fixed in upper region */ |
105 #include "Fonts/image_battery.h" | |
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 | 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 | 117 |
699 | 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 | 120 #endif |
76
51e2734895a3
Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents:
36
diff
changeset
|
121 |
30 | 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 | 125 int main(void) |
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 | 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 | 140 //---- Check the linker puts the font data in the requested section ------ |
141 extern tChar __upper_font_data; | |
142 extern tChar __upper_font_data_end; | |
143 ASSERT( &__upper_font_data == (tChar*)0x08132040 ); | |
144 ASSERT_RANGE( (int)&__upper_font_data_end, 0x08132040, 0x081E0000); | |
145 | |
146 //---- Walk through the directory data ----------------------------------- | |
147 extern const tFont __font_directory; | |
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 | 152 for(const tFont* font = & __font_directory; font < &__font_directory_end; ++font) |
153 { | |
699 | 154 printf("Font: %x\n",(unsigned int)font); |
30 | 155 // Check END-OF-DIRECTORY magic marker |
156 if( font->length == (uint32_t)-1 ) | |
157 { | |
158 ASSERT( font == &FontT144 + 1 ); | |
159 break; | |
160 } | |
161 | |
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 | 165 ASSERT_RANGE( font->spacesize2Monospaced, 13, 72 ); |
166 ASSERT_RANGE( font->height, 28, 108 ); | |
167 | |
168 //---- Walk through each char ---------------------------------------- | |
169 for(int i = 0; i < font->length; ++i) | |
170 { | |
171 const tChar* c = &font->chars[i]; | |
172 | |
173 // Check char data is indeed stored in the actual data section | |
174 ASSERT_RANGE( c, &__upper_font_data, &__upper_font_data_end); | |
175 | |
176 // Check char data sanity | |
177 ASSERT_RANGE( c->code, 0x0000, 0xF143); | |
178 | |
179 // Check image sanity | |
180 const tImage* image = c->image; | |
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 | 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 | 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 | 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 | 191 // Uncompress image bytes |
192 const uint8_t* byte = image->data; | |
193 ASSERT_RANGE(byte, (uint8_t*)&__upper_font_data, (uint8_t*)&__upper_font_data_end); | |
194 | |
195 for(int w=0; w <image->width; ++w) | |
196 { | |
197 // Compression: special 0x01 byte at start of column means just skip it. | |
198 if( *byte++ == 0x01 ) | |
199 continue; | |
200 | |
201 int zeros = (byte[-1] == 0x00) ? 1 : 0; | |
202 for(int h = 1; h < image->height; ++h) | |
203 { | |
204 if( *byte == 0x00 ) | |
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 | 207 // Other bytes cannot have the 0x01 value... |
208 ASSERT( *byte++ != 0x01 ); | |
76
51e2734895a3
Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents:
36
diff
changeset
|
209 #endif |
30 | 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 | 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 | 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 | 216 } |
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 | 219 // Check the byte stream do not collide with the next char, |
220 // or with the first tImage struct of the font. | |
221 if( (i+1) < font->length ) | |
222 ASSERT( byte < font->chars[i+1].image->data ); | |
223 else | |
224 ASSERT( byte < (uint8_t*)font->chars[0].image ); | |
225 | |
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 | 228 } |
229 } | |
230 | |
231 if( errors ) | |
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 | 234 return -1; |
235 } | |
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 | 238 return 0; |
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 | 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 | 264 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/ |