Mercurial > public > ostc4
annotate FontPack/base_upperRegion.c @ 491:9b7e3ebce463
Added tag v1.5.4 release for changeset e9ca66ce36e5
author | heinrichsweikamp |
---|---|
date | Mon, 10 Aug 2020 15:53:45 +0200 |
parents | a984d87a1ec0 |
children | 0172431fbad9 |
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 | |
35 [..] last char vor der gro�en L�cke, Stand 160217 | |
36 image_data_FontT24_0x002b[364] | |
37 __attribute__((at( START_T24_FONT + (1647 * 28) ))), START_T24_FONT (0x08142F00 - MINUS_BANK) | |
38 | |
39 -> frei ab 0x0814E490 | |
40 geht dann weiter mit image_data_ostc_fuer_Tauchcomputer_240px | |
41 sind ca. 120 kByte frei! | |
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 |
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 | 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 | 123 int main(void) |
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 | 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 | 138 //---- Check the linker puts the font data in the requested section ------ |
139 extern tChar __upper_font_data; | |
140 extern tChar __upper_font_data_end; | |
141 ASSERT( &__upper_font_data == (tChar*)0x08132040 ); | |
142 ASSERT_RANGE( (int)&__upper_font_data_end, 0x08132040, 0x081E0000); | |
143 | |
144 //---- Walk through the directory data ----------------------------------- | |
145 extern const tFont __font_directory; | |
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 | 150 for(const tFont* font = & __font_directory; font < &__font_directory_end; ++font) |
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 | 153 // Check END-OF-DIRECTORY magic marker |
154 if( font->length == (uint32_t)-1 ) | |
155 { | |
156 ASSERT( font == &FontT144 + 1 ); | |
157 break; | |
158 } | |
159 | |
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 | 163 ASSERT_RANGE( font->spacesize2Monospaced, 13, 72 ); |
164 ASSERT_RANGE( font->height, 28, 108 ); | |
165 | |
166 //---- Walk through each char ---------------------------------------- | |
167 for(int i = 0; i < font->length; ++i) | |
168 { | |
169 const tChar* c = &font->chars[i]; | |
170 | |
171 // Check char data is indeed stored in the actual data section | |
172 ASSERT_RANGE( c, &__upper_font_data, &__upper_font_data_end); | |
173 | |
174 // Check char data sanity | |
175 ASSERT_RANGE( c->code, 0x0000, 0xF143); | |
176 | |
177 // Check image sanity | |
178 const tImage* image = c->image; | |
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 | 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 | 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 | 189 // Uncompress image bytes |
190 const uint8_t* byte = image->data; | |
191 ASSERT_RANGE(byte, (uint8_t*)&__upper_font_data, (uint8_t*)&__upper_font_data_end); | |
192 | |
193 for(int w=0; w <image->width; ++w) | |
194 { | |
195 // Compression: special 0x01 byte at start of column means just skip it. | |
196 if( *byte++ == 0x01 ) | |
197 continue; | |
198 | |
199 int zeros = (byte[-1] == 0x00) ? 1 : 0; | |
200 for(int h = 1; h < image->height; ++h) | |
201 { | |
202 if( *byte == 0x00 ) | |
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 | 205 // Other bytes cannot have the 0x01 value... |
206 ASSERT( *byte++ != 0x01 ); | |
76
51e2734895a3
Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents:
36
diff
changeset
|
207 #endif |
30 | 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 | 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 | 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 | 214 } |
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 | 217 // Check the byte stream do not collide with the next char, |
218 // or with the first tImage struct of the font. | |
219 if( (i+1) < font->length ) | |
220 ASSERT( byte < font->chars[i+1].image->data ); | |
221 else | |
222 ASSERT( byte < (uint8_t*)font->chars[0].image ); | |
223 | |
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 | 226 } |
227 } | |
228 | |
229 if( errors ) | |
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 | 232 return -1; |
233 } | |
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 | 236 return 0; |
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 | 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 | 262 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/ |