iforce2d Chris / Mbed 2 deprecated ubxDistanceMeter

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers u8g.h Source File

u8g.h

00001 /*
00002 
00003   u8g.h
00004   
00005   Universal 8bit Graphics Library
00006   
00007   Copyright (c) 2011, olikraus@gmail.com
00008   All rights reserved.
00009 
00010   Redistribution and use in source and binary forms, with or without modification, 
00011   are permitted provided that the following conditions are met:
00012 
00013   * Redistributions of source code must retain the above copyright notice, this list 
00014     of conditions and the following disclaimer.
00015     
00016   * Redistributions in binary form must reproduce the above copyright notice, this 
00017     list of conditions and the following disclaimer in the documentation and/or other 
00018     materials provided with the distribution.
00019 
00020   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
00021   CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
00022   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
00023   MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
00024   DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
00025   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
00026   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
00027   NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
00028   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
00029   CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
00030   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
00031   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
00032   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
00033   
00034 */
00035 
00036 #ifndef _U8G_H
00037 #define _U8G_H
00038 
00039 /* uncomment the following line to support displays larger than 240x240 */
00040 //#define U8G_16BIT 1
00041 
00042 /* comment the following line to generate more compact but interrupt unsafe code */
00043 #define U8G_INTERRUPT_SAFE 1
00044 
00045 
00046 #include <stddef.h>
00047 
00048 #ifdef __18CXX
00049 typedef unsigned char uint8_t;
00050 typedef signed char int8_t;
00051 typedef unsigned short uint16_t;
00052 typedef signed short int16_t;
00053 #else
00054 #include <stdint.h>
00055 #endif
00056 
00057 #if defined(__AVR__)
00058 #include <avr/pgmspace.h>
00059 #endif 
00060 
00061 /* 
00062   use the com interface directly on any systems which are not AVR or ARDUINO 
00063 */
00064 #if defined(__AVR__) || defined(ARDUINO)
00065 #define U8G_WITH_PINLIST
00066 #endif
00067 
00068 
00069 #ifdef __cplusplus
00070 extern "C" {
00071 #endif
00072 
00073   
00074 /*===============================================================*/
00075 #ifdef __GNUC__
00076 #  define U8G_NOINLINE __attribute__((noinline))
00077 #  define U8G_PURE  __attribute__ ((pure))
00078 #  define U8G_NOCOMMON __attribute__ ((nocommon))
00079 #  define U8G_SECTION(name) __attribute__ ((section (name)))
00080 #  if defined(__MSPGCC__)
00081 /* mspgcc does not have .progmem sections. Use -fdata-sections. */
00082 #    define U8G_FONT_SECTION(name)
00083 #  endif
00084 #  if defined(__AVR__)
00085 #    define U8G_FONT_SECTION(name) U8G_SECTION(".progmem." name)
00086 #  endif
00087 #else
00088 #  define U8G_NOINLINE
00089 #  define U8G_PURE
00090 #  define U8G_NOCOMMON
00091 #  define U8G_SECTION(name)
00092 #endif
00093 
00094 #ifndef U8G_FONT_SECTION
00095 #  define U8G_FONT_SECTION(name)
00096 #endif
00097 
00098 
00099 /*===============================================================*/
00100 /* flash memory access */
00101 
00102 #if defined(__AVR__)
00103 /* U8G_PROGMEM is used by the XBM example */
00104 #define U8G_PROGMEM U8G_SECTION(".progmem.data")
00105 typedef uint8_t PROGMEM u8g_pgm_uint8_t;
00106 typedef uint8_t u8g_fntpgm_uint8_t;
00107 #define u8g_pgm_read(adr) pgm_read_byte_near(adr)
00108 #define U8G_PSTR(s) ((u8g_pgm_uint8_t *)PSTR(s))
00109 
00110 #else
00111 
00112 #define U8G_PROGMEM
00113 #define PROGMEM
00114 typedef uint8_t u8g_pgm_uint8_t;
00115 typedef uint8_t u8g_fntpgm_uint8_t;
00116 #define u8g_pgm_read(adr) (*(const u8g_pgm_uint8_t *)(adr)) 
00117 #define U8G_PSTR(s) ((u8g_pgm_uint8_t *)(s))
00118 
00119 #endif
00120   
00121 /*===============================================================*/
00122 /* interrupt safe code */
00123 #if defined(U8G_INTERRUPT_SAFE)
00124 #  if defined(__AVR__)
00125 extern uint8_t global_SREG_backup;  /* u8g_state.c */
00126 #    define U8G_ATOMIC_START()      do { global_SREG_backup = SREG; cli(); } while(0)
00127 #    define U8G_ATOMIC_END()            SREG = global_SREG_backup
00128 #    define U8G_ATOMIC_OR(ptr, val)     do { uint8_t tmpSREG = SREG; cli(); (*(ptr) |= (val)); SREG = tmpSREG; } while(0)
00129 #    define U8G_ATOMIC_AND(ptr, val)    do { uint8_t tmpSREG = SREG; cli(); (*(ptr) &= (val)); SREG = tmpSREG; } while(0)
00130 #  else
00131 #    define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val))
00132 #    define U8G_ATOMIC_AND(ptr, val) (*(ptr) &= (val))
00133 #    define U8G_ATOMIC_START()
00134 #    define U8G_ATOMIC_END()
00135 #  endif /* __AVR__ */
00136 #else
00137 #  define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val))
00138 #  define U8G_ATOMIC_AND(ptr, val) (*(ptr) &= (val))
00139 #  define U8G_ATOMIC_START()
00140 #  define U8G_ATOMIC_END()
00141 #endif /* U8G_INTERRUPT_SAFE */
00142   
00143   
00144 /*===============================================================*/
00145 /* forward */
00146 typedef struct _u8g_t u8g_t;
00147 typedef struct _u8g_dev_t u8g_dev_t;
00148 
00149 typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t;
00150 typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t;
00151 typedef struct _u8g_box_t u8g_box_t;
00152 typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_t;
00153 
00154 
00155 /*===============================================================*/
00156 /* generic */
00157 #if defined(U8G_16BIT)
00158 typedef uint16_t u8g_uint_t;
00159 typedef int16_t u8g_int_t;
00160 #else
00161 typedef uint8_t u8g_uint_t;
00162 typedef int8_t u8g_int_t;
00163 #endif
00164 
00165 #ifdef OBSOLETE
00166 struct _u8g_box_t
00167 {
00168   u8g_uint_t x0, y0, x1, y1;  
00169 };
00170 typedef struct _u8g_box_t u8g_box_t;
00171 #endif /* OBSOLETE */
00172 
00173 
00174 /*===============================================================*/
00175 /* device structure */
00176 
00177 #ifdef __XC8
00178 /* device prototype */
00179 typedef uint8_t (*u8g_dev_fnptr)(void *u8g, void *dev, uint8_t msg, void *arg);
00180 
00181 /* com prototype */
00182 typedef uint8_t (*u8g_com_fnptr)(void *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
00183 #else
00184 /* device prototype */
00185 typedef uint8_t (*u8g_dev_fnptr)(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00186 
00187 /* com prototype */
00188 typedef uint8_t (*u8g_com_fnptr)(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
00189 #endif
00190 
00191 
00192 
00193 struct _u8g_dev_t
00194 {
00195   u8g_dev_fnptr dev_fn;         /* device procedure */
00196   void *dev_mem;                /* device memory */
00197   u8g_com_fnptr com_fn;         /* communication procedure */
00198 };
00199 
00200 
00201 /*===============================================================*/
00202 /* device list */
00203 
00204 /* Size: 128x64 SDL, u8g_dev_sdl.c */
00205 extern u8g_dev_t u8g_dev_sdl_1bit;
00206 extern u8g_dev_t u8g_dev_sdl_1bit_h;
00207 extern u8g_dev_t u8g_dev_sdl_2bit;
00208 extern u8g_dev_t u8g_dev_sdl_2bit_double_mem;
00209 extern u8g_dev_t u8g_dev_sdl_8bit;
00210 extern u8g_dev_t u8g_dev_sdl_hicolor;
00211 extern u8g_dev_t u8g_dev_sdl_fullcolor;
00212 int u8g_sdl_get_key(void);
00213 
00214 /* Size: 70x30 monochrom, stdout */
00215 extern u8g_dev_t u8g_dev_stdout;
00216 
00217 /* Size: monochrom, writes "u8g.pbm" */
00218 extern u8g_dev_t u8g_dev_pbm;
00219 extern u8g_dev_t u8g_dev_pbm_8h1;
00220 extern u8g_dev_t u8g_dev_pbm_8h2;   /* grayscale simulation */
00221 
00222 /* Size: 128x64 monochrom, no output, used for performance measure */
00223 extern u8g_dev_t u8g_dev_gprof;
00224 
00225 /* Display: EA DOGS102, Size: 102x64 monochrom */
00226 extern u8g_dev_t u8g_dev_uc1701_dogs102_sw_spi;
00227 extern u8g_dev_t u8g_dev_uc1701_dogs102_hw_spi;
00228 
00229 extern u8g_dev_t u8g_dev_uc1701_dogs102_2x_sw_spi;
00230 extern u8g_dev_t u8g_dev_uc1701_dogs102_2x_hw_spi;
00231 
00232 /* Display: Mini12864 (dealextreme), Size: 128x64 monochrom */
00233 extern u8g_dev_t u8g_dev_uc1701_mini12864_sw_spi;
00234 extern u8g_dev_t u8g_dev_uc1701_mini12864_hw_spi;
00235 
00236 extern u8g_dev_t u8g_dev_uc1701_mini12864_2x_sw_spi;
00237 extern u8g_dev_t u8g_dev_uc1701_mini12864_2x_hw_spi;
00238 
00239 /* Display: EA DOGM132, Size: 128x32 monochrom */
00240 extern u8g_dev_t u8g_dev_st7565_dogm132_sw_spi;
00241 extern u8g_dev_t u8g_dev_st7565_dogm132_hw_spi;
00242 
00243 /* Display: EA DOGM128, Size: 128x64 monochrom */
00244 extern u8g_dev_t u8g_dev_st7565_dogm128_sw_spi;
00245 extern u8g_dev_t u8g_dev_st7565_dogm128_hw_spi;
00246 extern u8g_dev_t u8g_dev_st7565_dogm128_parallel;
00247 
00248 extern u8g_dev_t u8g_dev_st7565_dogm128_2x_sw_spi;
00249 extern u8g_dev_t u8g_dev_st7565_dogm128_2x_hw_spi;
00250 extern u8g_dev_t u8g_dev_st7565_dogm128_2x_parallel;
00251 
00252 /* Display: Topway LM6059 128x64 (Adafruit) */
00253 extern u8g_dev_t u8g_dev_st7565_lm6059_sw_spi;
00254 extern u8g_dev_t u8g_dev_st7565_lm6059_hw_spi;
00255 extern u8g_dev_t u8g_dev_st7565_lm6059_2x_sw_spi;
00256 extern u8g_dev_t u8g_dev_st7565_lm6059_2x_hw_spi;
00257 /* Display: Topway LM6063 128x64 */
00258 extern u8g_dev_t u8g_dev_st7565_lm6063_sw_spi;
00259 extern u8g_dev_t u8g_dev_st7565_lm6063_hw_spi;
00260 extern u8g_dev_t u8g_dev_st7565_lm6063_2x_sw_spi;
00261 extern u8g_dev_t u8g_dev_st7565_lm6063_2x_hw_spi;
00262 /* Display: Newhaven NHD-C12864 */
00263 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_sw_spi;
00264 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_hw_spi;
00265 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_sw_spi;
00266 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_hw_spi;
00267 
00268 /* Display: Newhaven NHD-C12832 */
00269 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_sw_spi;
00270 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_spi;
00271 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_parallel;
00272 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_usart_spi;
00273 
00274 /* Display: Displaytech 64128N */
00275 extern u8g_dev_t u8g_dev_st7565_64128n_sw_spi;
00276 extern u8g_dev_t u8g_dev_st7565_64128n_hw_spi;
00277 extern u8g_dev_t u8g_dev_st7565_64128n_parallel;
00278 
00279 extern u8g_dev_t u8g_dev_st7565_64128n_2x_sw_spi;
00280 extern u8g_dev_t u8g_dev_st7565_64128n_2x_hw_spi;
00281 extern u8g_dev_t u8g_dev_st7565_64128n_2x_parallel;
00282 
00283 /* Display: LCD-AG-C128032R-DIW W/KK E6 PBF */
00284 extern u8g_dev_t u8g_dev_uc1601_c128032_sw_spi;
00285 extern u8g_dev_t u8g_dev_uc1601_c128032_hw_spi;
00286 
00287 extern u8g_dev_t u8g_dev_uc1601_c128032_2x_sw_spi;
00288 extern u8g_dev_t u8g_dev_uc1601_c128032_2x_hw_spi;
00289 
00290 /* dfrobot 128x64 Graphic LCD (SKU:FIT0021) */
00291 extern u8g_dev_t u8g_dev_st7920_128x64_sw_spi;
00292 extern u8g_dev_t u8g_dev_st7920_128x64_hw_spi;
00293 extern u8g_dev_t u8g_dev_st7920_128x64_8bit;
00294 extern u8g_dev_t u8g_dev_st7920_128x64_custom;
00295 
00296 extern u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi;
00297 extern u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi;
00298 extern u8g_dev_t u8g_dev_st7920_128x64_4x_8bit;
00299 extern u8g_dev_t u8g_dev_st7920_128x64_4x_custom;
00300 
00301 /* NHD-19232WG */
00302 extern u8g_dev_t u8g_dev_st7920_192x32_sw_spi;
00303 extern u8g_dev_t u8g_dev_st7920_192x32_hw_spi;
00304 extern u8g_dev_t u8g_dev_st7920_192x32_8bit;
00305 
00306 extern u8g_dev_t u8g_dev_st7920_192x32_4x_sw_spi;
00307 extern u8g_dev_t u8g_dev_st7920_192x32_4x_hw_spi;
00308 extern u8g_dev_t u8g_dev_st7920_192x32_4x_8bit;
00309 
00310 /* CrystalFontz CFAG20232 */
00311 extern u8g_dev_t u8g_dev_st7920_202x32_sw_spi;
00312 extern u8g_dev_t u8g_dev_st7920_202x32_hw_spi;
00313 extern u8g_dev_t u8g_dev_st7920_202x32_8bit;
00314 
00315 extern u8g_dev_t u8g_dev_st7920_202x32_4x_sw_spi;
00316 extern u8g_dev_t u8g_dev_st7920_202x32_4x_hw_spi;
00317 extern u8g_dev_t u8g_dev_st7920_202x32_4x_8bit;
00318 
00319 /* LC7981 160x80 display */
00320 extern u8g_dev_t u8g_dev_lc7981_160x80_8bit;
00321 /* LC7981 240x64 display */
00322 extern u8g_dev_t u8g_dev_lc7981_240x64_8bit;
00323 /* LC7981 240x128 display */
00324 extern u8g_dev_t u8g_dev_lc7981_240x128_8bit;
00325 /* LC7981 320x64 display */
00326 extern u8g_dev_t u8g_dev_lc7981_320x64_8bit;
00327 
00328 /* T6963, all t6963 devices have double page (2x) */
00329 extern u8g_dev_t u8g_dev_t6963_240x128_8bit;
00330 extern u8g_dev_t u8g_dev_t6963_240x64_8bit;
00331 extern u8g_dev_t u8g_dev_t6963_128x64_8bit;
00332 
00333 /* Display: EA DOGXL160, Size: 160x104 monochrom & gray level */
00334 extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_sw_spi;
00335 extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_hw_spi;
00336 extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_sw_spi;
00337 extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_hw_spi;
00338 
00339 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_sw_spi;
00340 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_hw_spi;
00341 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_sw_spi;
00342 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_hw_spi;
00343 
00344 /* Display: Generic KS0108b, Size: 128x64 monochrom */
00345 extern u8g_dev_t u8g_dev_ks0108_128x64;         /* official Arduino Library interface */
00346 extern u8g_dev_t u8g_dev_ks0108_128x64_fast;    /* faster, but uses private tables from the Arduino Library */
00347 
00348 /* Nokia 84x48 Display with PCD8544 */
00349 extern u8g_dev_t u8g_dev_pcd8544_84x48_sw_spi;
00350 extern u8g_dev_t u8g_dev_pcd8544_84x48_hw_spi;
00351 extern u8g_dev_t u8g_dev_tls8204_84x48_sw_spi;
00352 
00353 /* Nokia 96x65 Display with PCF8812 */
00354 extern u8g_dev_t u8g_dev_pcf8812_96x65_sw_spi;
00355 extern u8g_dev_t u8g_dev_pcf8812_96x65_hw_spi;
00356 
00357 /* NHD-2.7-12864UCY3 OLED Display with SSD1325 Controller */
00358 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_sw_spi;
00359 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_hw_spi;
00360 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_parallel;
00361 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_sw_spi;
00362 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_hw_spi;
00363 
00364 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi;
00365 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi;
00366 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel;
00367 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi;
00368 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi;
00369 
00370 /* LY120 OLED with SSD1327 Controller (tested with Seeedstudio module) */
00371 extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_sw_spi;
00372 extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_hw_spi;
00373 extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_i2c;
00374 
00375 extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_sw_spi;
00376 extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_hw_spi;
00377 extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_i2c;
00378 
00379 /* NHD-3.12-25664 OLED Display with SSD1322 Controller */
00380 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_sw_spi;
00381 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_hw_spi;
00382 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_parallel;
00383 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi;
00384 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi;
00385 
00386 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_sw_spi;
00387 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_hw_spi;
00388 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_parallel;
00389 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi;
00390 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi;
00391 
00392 /* OLED 128x64 Display with SSD1306 Controller */
00393 extern u8g_dev_t u8g_dev_ssd1306_128x64_sw_spi;
00394 extern u8g_dev_t u8g_dev_ssd1306_128x64_hw_spi;
00395 extern u8g_dev_t u8g_dev_ssd1306_128x64_i2c;
00396 
00397 extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_sw_spi;
00398 extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_hw_spi;
00399 extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c;
00400 
00401 /* OLED 128x64 Display with SSD1309 Controller */
00402 extern u8g_dev_t u8g_dev_ssd1309_128x64_sw_spi;
00403 extern u8g_dev_t u8g_dev_ssd1309_128x64_hw_spi;
00404 extern u8g_dev_t u8g_dev_ssd1309_128x64_i2c;
00405 
00406 /* OLED 128x32 Display with SSD1306 Controller */
00407 extern u8g_dev_t u8g_dev_ssd1306_128x32_sw_spi;
00408 extern u8g_dev_t u8g_dev_ssd1306_128x32_hw_spi;
00409 extern u8g_dev_t u8g_dev_ssd1306_128x32_i2c;
00410 
00411 extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_sw_spi;
00412 extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_hw_spi;
00413 extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_i2c;
00414 
00415 /* experimental 65K TFT with st7687 controller */
00416 extern u8g_dev_t u8g_dev_st7687_c144mvgd_sw_spi;
00417 extern u8g_dev_t u8g_dev_st7687_c144mvgd_8bit;
00418 
00419 /* SBN1661/SED1520 display with 122x32 */
00420 extern u8g_dev_t u8g_dev_sbn1661_122x32;
00421 
00422 /* flip disc matrix */
00423 extern u8g_dev_t u8g_dev_flipdisc_2x7;
00424 void u8g_SetFlipDiscCallback(u8g_t *u8g, void (*cb)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2));
00425 
00426 /* ILI9325D based TFT */
00427 extern u8g_dev_t u8g_dev_ili9325d_320x240_8bit;
00428 
00429 
00430 /* SSD1351 OLED (breakout board from http://www.kickstarter.com/projects/ilsoftltd/colour-oled-breakout-board) */
00431 extern u8g_dev_t u8g_dev_ssd1351_128x128_332_sw_spi;
00432 extern u8g_dev_t u8g_dev_ssd1351_128x128_332_hw_spi;
00433 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_sw_spi;
00434 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_hw_spi;
00435 extern u8g_dev_t u8g_dev_ssd1351_128x128_idx_sw_spi;
00436 extern u8g_dev_t u8g_dev_ssd1351_128x128_idx_hw_spi;
00437 extern u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_sw_spi;
00438 extern u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_hw_spi;
00439 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi;
00440 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi;
00441 
00442 /* SSD1351 OLED (Freetronics, GPIOs set to high level) */
00443 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_332_sw_spi;
00444 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_332_hw_spi;
00445 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_sw_spi;
00446 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_hw_spi;
00447 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_sw_spi;
00448 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_hw_spi;
00449 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi;
00450 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi;
00451 
00452 /* HT1632 */
00453 extern u8g_dev_t u8g_dev_ht1632_24x16;
00454 
00455 /* A2 Micro Printer */
00456 extern u8g_dev_t u8g_dev_a2_micro_printer_384x240;
00457 extern u8g_dev_t u8g_dev_a2_micro_printer_192x120_ds;
00458 
00459 /* u8g_virtual_screen.c  */
00460 extern u8g_dev_t u8g_dev_vs;
00461 
00462 
00463 /*===============================================================*/
00464 /* device messages */
00465 
00466 struct _u8g_dev_arg_pixel_t
00467 {
00468   u8g_uint_t x, y;              /* will be modified */
00469   uint8_t pixel;                  /* will be modified, pixel sequence or transparency value */
00470   uint8_t dir;
00471   uint8_t color;            /* color or index value, red value for true color mode */
00472   uint8_t hi_color;     /* high byte for 64K color mode, low byte is in "color", green value for true color mode */
00473   uint8_t blue;         /* blue value in true color mode */
00474 };
00475 /* typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; */ /* forward decl */
00476 
00477 /* range for r,g,b: 0..255 */
00478 #define U8G_GET_HICOLOR_BY_RGB(r,g,b) (((uint16_t)((r)&0x0f8))<<8)|(((uint16_t)((g)&0x0fc))<<3)|(((uint16_t)((b)>>3)))
00479 
00480 struct _u8g_dev_arg_bbx_t
00481 {
00482   u8g_uint_t x, y, w, h;
00483 };
00484 /* typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; */ /* forward decl */
00485 
00486 struct _u8g_box_t
00487 {
00488   u8g_uint_t x0, y0, x1, y1;
00489 };
00490 /* typedef struct _u8g_box_t u8g_box_t; */ /* forward decl */
00491 
00492 struct _u8g_dev_arg_irgb_t
00493 {
00494   u8g_uint_t idx, r, g, b;      /* index with rgb value */
00495 };
00496 /* typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_t; */ /* forward decl */
00497 
00498 
00499 
00500 #define U8G_DEV_MSG_INIT                10
00501 #define U8G_DEV_MSG_STOP                  11
00502 
00503 /* arg: pointer to uint8_t, contranst value between 0 and 255 */
00504 #define U8G_DEV_MSG_CONTRAST            15
00505 
00506 #define U8G_DEV_MSG_SLEEP_ON            16
00507 #define U8G_DEV_MSG_SLEEP_OFF            17
00508 
00509 #define U8G_DEV_MSG_PAGE_FIRST                  20
00510 #define U8G_DEV_MSG_PAGE_NEXT                    21
00511 
00512 /* arg: u8g_dev_arg_bbx_t * */
00513 /* new algorithm with U8G_DEV_MSG_GET_PAGE_BOX makes this msg obsolete */
00514 /* #define U8G_DEV_MSG_IS_BBX_INTERSECTION 22 */
00515 
00516 /* arg: u8g_box_t *, fill structure with current page properties */
00517 #define U8G_DEV_MSG_GET_PAGE_BOX 23
00518 
00519 /*
00520 #define U8G_DEV_MSG_PRIMITIVE_START             30
00521 #define U8G_DEV_MSG_PRIMITIVE_END               31
00522 */
00523 
00524 /* arg: u8g_dev_arg_pixel_t * */
00525 #define U8G_DEV_MSG_SET_TPIXEL              44
00526 #define U8G_DEV_MSG_SET_4TPIXEL         45
00527 
00528 #define U8G_DEV_MSG_SET_PIXEL                           50
00529 #define U8G_DEV_MSG_SET_8PIXEL                          59
00530 
00531 #define U8G_DEV_MSG_SET_COLOR_ENTRY                60
00532 
00533 #define U8G_DEV_MSG_SET_XY_CB                           61
00534 
00535 #define U8G_DEV_MSG_GET_WIDTH                           70
00536 #define U8G_DEV_MSG_GET_HEIGHT                           71
00537 #define U8G_DEV_MSG_GET_MODE                  72
00538 
00539 /*===============================================================*/
00540 /* device modes */
00541 #define U8G_MODE(is_index_mode, is_color, bits_per_pixel) (((is_index_mode)<<6) | ((is_color)<<5)|(bits_per_pixel))
00542 
00543 #define U8G_MODE_UNKNOWN     0
00544 #define U8G_MODE_BW     U8G_MODE(0, 0, 1)
00545 #define U8G_MODE_GRAY2BIT     U8G_MODE(0, 0, 2)
00546 #define U8G_MODE_R3G3B2  U8G_MODE(0, 1, 8)
00547 #define U8G_MODE_INDEX  U8G_MODE(1, 1, 8)
00548 /* hicolor is R5G6B5 */
00549 #define U8G_MODE_HICOLOR  U8G_MODE(0, 1, 16)
00550 /* truecolor  */
00551 #define U8G_MODE_TRUECOLOR  U8G_MODE(0, 1, 24)
00552 
00553 
00554 #define U8G_MODE_GET_BITS_PER_PIXEL(mode) ((mode)&31)
00555 #define U8G_MODE_IS_COLOR(mode) (((mode)&32)==0?0:1)
00556 #define U8G_MODE_IS_INDEX_MODE(mode) (((mode)&64)==0?0:1)
00557 
00558 
00559 /*===============================================================*/
00560 /* com options */
00561 
00562 /* uncomment the following line for Atmega HW SPI double speed, issue 89 */
00563 /* #define U8G_HW_SPI_2X 1 */
00564 
00565 /* com messages */
00566 
00567 #define U8G_COM_MSG_STOP        0
00568 #define U8G_COM_MSG_INIT        1
00569 
00570 #define U8G_COM_MSG_ADDRESS 2
00571 
00572 /* CHIP_SELECT argument: number of the chip which needs to be activated, so this is more like high active */
00573 #define U8G_COM_MSG_CHIP_SELECT 3
00574 
00575 #define U8G_COM_MSG_RESET 4
00576 
00577 #define U8G_COM_MSG_WRITE_BYTE 5
00578 #define U8G_COM_MSG_WRITE_SEQ 6
00579 #define U8G_COM_MSG_WRITE_SEQ_P 7
00580 
00581 
00582 /* com driver */
00583 uint8_t u8g_com_null_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);               /* u8g_com_null.c */
00584 uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);        /* u8g_com_arduino_std_sw_spi.c */
00585 uint8_t u8g_com_arduino_hw_usart_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);      /* u8g_com_atmega_hw_usart_spi.c */
00586 uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);        /* u8g_com_arduino_sw_spi.c */
00587 uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);          /* u8g_com_arduino_hw_spi.c */
00588 uint8_t u8g_com_arduino_ATtiny85_std_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);          /* u8g_arduino_ATTiny85_std_hw_spi.c */
00589 uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);  /* u8g_com_arduino_st7920_spi.c */
00590 uint8_t u8g_com_arduino_st7920_custom_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_custom.c */
00591 uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);  /* u8g_com_arduino_st7920_hw_spi.c */
00592 uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);           /* u8g_com_arduino_parallel.c */
00593 uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);      /* u8g_com_arduino_fast_parallel.c */
00594 uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);       /* u8g_com_arduino_port_d_wr.c */
00595 uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_no_en_parallel.c */      
00596 uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);        /* u8g_com_arduino_ssd_i2c.c */
00597 uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);          /* u8g_com_arduino_t6963.c */
00598 
00599 
00600 uint8_t u8g_com_atmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);      /* u8g_com_atmega_hw_spi.c */
00601 uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);      /* u8g_com_atmega_sw_spi.c */
00602 uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);   /* u8g_com_atmega_st7920_spi.c */
00603 uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
00604 uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);    /* u8g_com_atmega_parallel.c */
00605 
00606 
00607 /* 
00608   Translation of system specific com drives to generic com names
00609   At the moment, the following generic com drives are available
00610   U8G_COM_HW_SPI
00611   U8G_COM_SW_SPI
00612   U8G_COM_PARALLEL
00613   U8G_COM_T6963
00614   U8G_COM_FAST_PARALLEL
00615   U8G_COM_SSD_I2C
00616   
00617 defined(__18CXX) || defined(__PIC32MX)  
00618 
00619 */
00620 /* ==== HW SPI, Arduino ====*/
00621 #if defined(ARDUINO)
00622 #if defined(__AVR__)
00623 
00624 #if defined(__AVR_ATtiny85__)
00625 #define U8G_COM_HW_SPI u8g_com_arduino_ATtiny85_std_hw_spi_fn
00626 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
00627 #else
00628 
00629 #define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn
00630 #if defined(__AVR_ATmega32U4__)
00631 #define U8G_COM_HW_USART_SPI u8g_com_arduino_hw_usart_spi_fn
00632 #endif /* __AVR_ATmega32U4__ */
00633 #define U8G_COM_ST7920_HW_SPI u8g_com_arduino_st7920_hw_spi_fn
00634 #endif /* __AVR_ATtiny85__ */
00635 
00636 #elif defined(__18CXX) || defined(__PIC32MX)
00637 #define U8G_COM_HW_SPI u8g_com_null_fn
00638 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
00639 #elif defined(__arm__)   /* Arduino Due */
00640 #define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn
00641 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
00642 #endif
00643 #endif
00644 /* ==== HW SPI, not Arduino ====*/
00645 #ifndef U8G_COM_HW_SPI
00646 #if defined(__AVR__)
00647 #define U8G_COM_HW_SPI u8g_com_atmega_hw_spi_fn
00648 #define U8G_COM_ST7920_HW_SPI u8g_com_atmega_st7920_hw_spi_fn
00649 #endif
00650 #endif
00651 #ifndef U8G_COM_HW_SPI
00652 #define U8G_COM_HW_SPI u8g_com_null_fn
00653 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
00654 #endif
00655 
00656 #ifndef U8G_COM_HW_USART_SPI
00657 #define U8G_COM_HW_USART_SPI u8g_com_null_fn
00658 #endif
00659 
00660 
00661 /* ==== SW SPI, Arduino ====*/
00662 #if defined(ARDUINO)
00663 #if defined(__AVR__)
00664 #define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn
00665 #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn
00666 #elif defined(__18CXX) || defined(__PIC32MX)
00667 #define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn
00668 #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn
00669 #elif defined(__arm__)   /* Arduino Due */
00670 //#define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn
00671 #define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn
00672 #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn
00673 #endif
00674 #endif
00675 
00676 #ifndef U8G_COM_SW_SPI
00677 /* ==== SW SPI, not Arduino ====*/
00678 #if defined(__AVR__)
00679 #define U8G_COM_SW_SPI u8g_com_atmega_sw_spi_fn
00680 #define U8G_COM_ST7920_SW_SPI u8g_com_atmega_st7920_sw_spi_fn
00681 #endif
00682 #endif
00683 #ifndef U8G_COM_SW_SPI
00684 #define U8G_COM_SW_SPI u8g_com_null_fn
00685 #define U8G_COM_ST7920_SW_SPI u8g_com_null_fn
00686 #endif
00687 
00688 /* ==== Parallel iinterface, Arduino ====*/
00689 #if defined(ARDUINO)
00690 #if defined(__AVR__)
00691 #define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn
00692 #define U8G_COM_FAST_PARALLEL u8g_com_arduino_fast_parallel_fn
00693 #define U8G_COM_T6963  u8g_com_arduino_t6963_fn
00694 #else /* Arduino Due, Chipkit PIC32 */
00695 #define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn
00696 #define U8G_COM_FAST_PARALLEL u8g_com_arduino_parallel_fn
00697 #define U8G_COM_T6963  u8g_com_null_fn
00698 #endif
00699 #endif
00700 #ifndef U8G_COM_PARALLEL
00701 #if defined(__AVR__)
00702 #define U8G_COM_PARALLEL u8g_com_atmega_parallel_fn
00703 #define U8G_COM_FAST_PARALLEL u8g_com_atmega_parallel_fn
00704 #define U8G_COM_T6963  u8g_com_null_fn
00705 #endif
00706 #endif
00707 #ifndef U8G_COM_PARALLEL
00708 #define U8G_COM_PARALLEL u8g_com_null_fn
00709 #define U8G_COM_FAST_PARALLEL u8g_com_null_fn
00710 #define U8G_COM_T6963  u8g_com_null_fn
00711 #endif
00712 
00713 #if defined(ARDUINO)
00714 #if defined(__AVR__)
00715 #define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn
00716 #endif
00717 #endif
00718 
00719 #ifndef U8G_COM_SSD_I2C
00720 #if defined(__AVR__)
00721 /* AVR variant can use the arduino version at the moment */
00722 #define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn
00723 #endif
00724 #endif
00725 #ifndef U8G_COM_SSD_I2C
00726 #define U8G_COM_SSD_I2C u8g_com_null_fn
00727 #endif
00728 
00729 
00730 
00731 /*===============================================================*/
00732 /* com api */
00733 
00734 #define U8G_SPI_CLK_CYCLE_50NS 1
00735 #define U8G_SPI_CLK_CYCLE_300NS 2
00736 #define U8G_SPI_CLK_CYCLE_400NS 3
00737 #define U8G_SPI_CLK_CYCLE_NONE 255
00738 
00739 uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev, uint8_t clk_cycle_time);
00740 void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev);
00741 void u8g_EnableCom(u8g_t *u8g, u8g_dev_t *dev);         /* obsolete */
00742 void u8g_DisableCom(u8g_t *u8g, u8g_dev_t *dev);        /* obsolete */
00743 void u8g_SetChipSelect(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs);
00744 void u8g_SetResetLow(u8g_t *u8g, u8g_dev_t *dev);
00745 void u8g_SetResetHigh(u8g_t *u8g, u8g_dev_t *dev);
00746 void u8g_SetAddress(u8g_t *u8g, u8g_dev_t *dev, uint8_t address);
00747 uint8_t u8g_WriteByte(u8g_t *u8g, u8g_dev_t *dev, uint8_t val);
00748 uint8_t u8g_WriteSequence(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *seq);
00749 uint8_t u8g_WriteSequenceP(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, const uint8_t *seq);
00750 
00751 
00752 
00753 #define U8G_ESC_DLY(x) 255, ((x) & 0x7f)
00754 #define U8G_ESC_CS(x) 255, (0xd0 | ((x)&0x0f))
00755 #define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&0x0f))
00756 #define U8G_ESC_RST(x) 255, (0xc0 | ((x)&0x0f))
00757 #define U8G_ESC_VCC(x) 255, (0xbe | ((x)&0x01))
00758 #define U8G_ESC_END 255, 254
00759 #define U8G_ESC_255 255, 255
00760 //uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, u8g_pgm_uint8_t *esc_seq);
00761 uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq);
00762 
00763 
00764 /* u8g_com_api_16gr.c */
00765 uint8_t u8g_WriteByteBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b);
00766 uint8_t u8g_WriteSequenceBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr);
00767 uint8_t u8g_WriteByte4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b);
00768 uint8_t u8g_WriteSequence4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr);
00769 
00770 
00771 /*===============================================================*/
00772 /* u8g_arduino_common.c */
00773 void u8g_com_arduino_digital_write(u8g_t *u8g, uint8_t pin_index, uint8_t value);
00774 void u8g_com_arduino_assign_pin_output_high(u8g_t *u8g);
00775 
00776 /*===============================================================*/
00777 /* u8g_com_io.c */
00778 
00779 /* create internal number from port and pin */
00780 uint8_t u8g_Pin(uint8_t port, uint8_t bitpos);
00781 #define PN(port,bitpos) u8g_Pin(port,bitpos)
00782 
00783 /* low level procedures */
00784 void u8g_SetPinOutput(uint8_t internal_pin_number);
00785 void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level);
00786 void u8g_SetPinInput(uint8_t internal_pin_number);
00787 uint8_t u8g_GetPinLevel(uint8_t internal_pin_number);
00788 
00789 /* u8g level procedures, expect U8G_PI_xxx macro */
00790 void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi);
00791 void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level);
00792 
00793 
00794 /*===============================================================*/
00795 /* page */
00796 struct _u8g_page_t
00797 {
00798   u8g_uint_t page_height;
00799   u8g_uint_t total_height;
00800   u8g_uint_t page_y0;
00801   u8g_uint_t page_y1;
00802   uint8_t page;
00803 };
00804 typedef struct _u8g_page_t u8g_page_t;
00805 
00806 void u8g_page_First(u8g_page_t *p) U8G_NOINLINE;                                                                                        /* u8g_page.c */
00807 void u8g_page_Init(u8g_page_t *p, u8g_uint_t page_height, u8g_uint_t total_height ) U8G_NOINLINE;            /* u8g_page.c */
00808 uint8_t u8g_page_Next(u8g_page_t *p) U8G_NOINLINE;                                                                                   /* u8g_page.c */
00809 
00810 /*===============================================================*/
00811 /* page buffer (pb) */
00812 
00813 struct _u8g_pb_t
00814 {
00815   u8g_page_t p;
00816   u8g_uint_t width;     /* pixel width */
00817   void *buf;
00818 };
00819 typedef struct _u8g_pb_t u8g_pb_t;
00820 
00821 
00822 /* u8g_pb.c */
00823 void u8g_pb_Clear(u8g_pb_t *b);
00824 uint8_t u8g_pb_IsYIntersection(u8g_pb_t *pb, u8g_uint_t v0, u8g_uint_t v1);
00825 uint8_t u8g_pb_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1);
00826 uint8_t u8g_pb_IsIntersection(u8g_pb_t *pb, u8g_dev_arg_bbx_t *bbx);
00827 void u8g_pb_GetPageBox(u8g_pb_t *pb, u8g_box_t *box);
00828 uint8_t u8g_pb_Is8PixelVisible(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel);
00829 uint8_t u8g_pb_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev);
00830 
00831 /*
00832   note on __attribute__ ((nocommon))
00833     AVR scripts often use  --gc-sections on the linker to remove unused section.
00834     This works fine for initialed data and text sections. In principle .bss is also
00835     handled, but the name##_pb definition is not removed. Reason is, that
00836     array definitions are placed in the COMMON section, by default
00837     The attribute "nocommon" removes this automatic assignment to the
00838     COMMON section and directly puts it into .bss. As a result, if more
00839     than one buffer is defined in one file, then it will be removed with --gc-sections
00840 
00841     .. not sure if Arduino IDE uses -fno-common... if yes, then the attribute is
00842     redundant.
00843 */
00844 #define U8G_PB_DEV(name, width, height, page_height, dev_fn, com_fn) \
00845 uint8_t name##_buf[width] U8G_NOCOMMON ; \
00846 u8g_pb_t name##_pb = { {page_height, height, 0, 0, 0},  width, name##_buf}; \
00847 u8g_dev_t name = { dev_fn, &name##_pb, com_fn }
00848 
00849 
00850 void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width)   U8G_NOINLINE;
00851 void u8g_pb8v1_Clear(u8g_pb_t *b) U8G_NOINLINE;
00852 
00853 uint8_t u8g_pb8v1_IsYIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1);
00854 uint8_t u8g_pb8v1_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1);
00855 uint8_t u8g_pb8v1_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev);
00856 
00857 uint8_t u8g_dev_pb8v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00858 
00859 /* u8g_pb16v1.c */
00860 uint8_t u8g_dev_pb16v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00861 
00862 /* u8g_pb14v1.c */
00863 uint8_t u8g_dev_pb14v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00864 
00865 /* u8g_pb8v2.c */
00866 uint8_t u8g_dev_pb8v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00867 
00868 /* u8g_pb16v2.c (double memory of pb8v2) */
00869 uint8_t u8g_dev_pb16v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00870 
00871 
00872 /* u8g_pb8h1.c */
00873 uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00874 
00875 /* u8g_pb16h1.c */
00876 uint8_t u8g_dev_pb16h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00877 
00878 /* u8g_pb32h1.c */
00879 uint8_t u8g_dev_pb32h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00880 
00881 
00882 /* u8g_pb8h2.c 8 pixel rows, byte has horzontal orientation */
00883 uint8_t u8g_dev_pb8h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00884 
00885 /* u8g_pb16h2.c */
00886 uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00887 
00888 
00889 
00890 /* u8g_pb8h1f.c */
00891 uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00892 
00893 /* u8g_pb8h8.c */
00894 uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00895 
00896 /* u8g_pbxh16.c */
00897 uint8_t u8g_dev_pbxh16_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00898 
00899 /* u8g_pbxh24.c */
00900 uint8_t u8g_dev_pbxh24_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
00901 
00902 
00903 /*===============================================================*/
00904 /* u8g_ll_api.c */
00905 
00906 /* cursor draw callback */
00907 typedef void (*u8g_draw_cursor_fn)(u8g_t *u8g);
00908 
00909 /* vertical reference point calculation callback */
00910 typedef u8g_uint_t (*u8g_font_calc_vref_fnptr)(u8g_t *u8g);
00911 
00912 /* state backup and restore procedure */
00913 typedef void (*u8g_state_cb)(uint8_t msg);
00914 
00915 
00916 /* PI = Pin Index */
00917 
00918 /* reset pin, usually optional */
00919 #define U8G_PI_RESET 0
00920 
00921 /* address / data or instruction */
00922 #define U8G_PI_A0 1
00923 #define U8G_PI_DI 1
00924 
00925 /* chip select line */
00926 #define U8G_PI_CS 2
00927 #define U8G_PI_CS1 2
00928 #define U8G_PI_CS2 3
00929 /* Feb 2013: A0 state moved from 7 to 3 for t6963 controller*/
00930 #define U8G_PI_A0_STATE 3
00931 
00932 /* enable / clock signal */
00933 #define U8G_PI_EN 4
00934 #define U8G_PI_CS_STATE 4
00935 #define U8G_PI_SCK 4
00936 #define U8G_PI_SCL 4
00937 #define U8G_PI_RD 4
00938 
00939 
00940 /* data pins, shared with SPI and I2C pins */
00941 #define U8G_PI_D0 5
00942 #define U8G_PI_MOSI 5
00943 #define U8G_PI_SDA 5
00944 #define U8G_PI_D1 6
00945 #define U8G_PI_MISO 6
00946 #define U8G_PI_D2 7
00947 #define U8G_PI_D3 8
00948 #define U8G_PI_SET_A0 8
00949 #define U8G_PI_D4 9
00950 #define U8G_PI_D5 10
00951 #define U8G_PI_I2C_OPTION 11
00952 #define U8G_PI_D6 11
00953 #define U8G_PI_D7 12
00954 
00955 /* read/write pin, must be the last pin in the list, this means U8G_PIN_LIST_LEN =  U8G_PI_RW + 1*/
00956 #define U8G_PI_WR 13
00957 #define U8G_PI_RW 13 
00958 
00959 #define U8G_PIN_LIST_LEN 14
00960 
00961 
00962 #define U8G_PIN_DUMMY 254
00963 #define U8G_PIN_NONE 255
00964 
00965 #define U8G_FONT_HEIGHT_MODE_TEXT 0
00966 #define U8G_FONT_HEIGHT_MODE_XTEXT 1
00967 #define U8G_FONT_HEIGHT_MODE_ALL 2
00968 
00969 struct _u8g_t
00970 {
00971   u8g_uint_t width;
00972   u8g_uint_t height;
00973   
00974   
00975   u8g_dev_t *dev;               /* first device in the device chain */
00976   const u8g_pgm_uint8_t *font;             /* regular font for all text procedures */
00977   const u8g_pgm_uint8_t *cursor_font;  /* special font for cursor procedures */
00978   uint8_t cursor_fg_color, cursor_bg_color;
00979   uint8_t cursor_encoding;
00980   uint8_t mode;                         /* display mode, one of U8G_MODE_xxx */
00981   u8g_uint_t cursor_x;
00982   u8g_uint_t cursor_y;
00983   u8g_draw_cursor_fn cursor_fn;
00984   
00985   int8_t glyph_dx;
00986   int8_t glyph_x;
00987   int8_t glyph_y;
00988   uint8_t glyph_width;
00989   uint8_t glyph_height;
00990   
00991   u8g_font_calc_vref_fnptr font_calc_vref;
00992   uint8_t font_height_mode;
00993   int8_t font_ref_ascent;
00994   int8_t font_ref_descent;
00995   uint8_t font_line_spacing_factor;     /* line_spacing = factor * (ascent - descent) / 64 */
00996   uint8_t line_spacing;
00997   
00998   u8g_dev_arg_pixel_t arg_pixel;
00999   /* uint8_t color_index; */
01000 
01001 #ifdef U8G_WITH_PINLIST
01002   uint8_t pin_list[U8G_PIN_LIST_LEN];
01003 #endif
01004   
01005   u8g_state_cb state_cb;
01006   
01007   u8g_box_t current_page;       /* current box of the visible page */
01008 
01009 };
01010 
01011 #define u8g_GetFontAscent(u8g) ((u8g)->font_ref_ascent)
01012 #define u8g_GetFontDescent(u8g) ((u8g)->font_ref_descent)
01013 #define u8g_GetFontLineSpacing(u8g) ((u8g)->line_spacing)
01014 
01015 uint8_t u8g_call_dev_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
01016 
01017 uint8_t u8g_InitLL(u8g_t *u8g, u8g_dev_t *dev);
01018 void u8g_FirstPageLL(u8g_t *u8g, u8g_dev_t *dev);
01019 uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev);
01020 uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast);
01021 void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y);
01022 void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
01023 void u8g_Draw4TPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
01024 uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);    /* obsolete */
01025 u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev);
01026 u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev);
01027 
01028 void u8g_UpdateDimension(u8g_t *u8g);
01029 uint8_t u8g_Begin(u8g_t *u8g);              /* reset device, put it into default state and call u8g_UpdateDimension() */
01030 uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev);   /* only usefull if the device only as hardcoded ports */
01031 uint8_t u8g_InitComFn(u8g_t *u8g, u8g_dev_t *dev, u8g_com_fnptr com_fn);    /* Init procedure for anything which is not Arduino or AVR (e.g. ARM, but not Due, which is Arduino) */
01032 uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset);
01033 uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset);
01034 uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options);   /* use U8G_I2C_OPT_NONE as options */
01035 uint8_t u8g_Init8BitFixedPort(u8g_t *u8g, u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset);
01036 uint8_t u8g_Init8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, 
01037   uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset);
01038 uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, 
01039   uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset);
01040 void u8g_FirstPage(u8g_t *u8g);
01041 uint8_t u8g_NextPage(u8g_t *u8g);
01042 uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast);
01043 void u8g_SleepOn(u8g_t *u8g);
01044 void u8g_SleepOff(u8g_t *u8g);
01045 void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y);
01046 void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
01047 void u8g_Draw4TPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
01048 
01049 uint8_t u8g_Stop(u8g_t *u8g);
01050 void u8g_SetColorEntry(u8g_t *u8g, uint8_t idx, uint8_t r, uint8_t g, uint8_t b);
01051 void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx);
01052 void u8g_SetHiColor(u8g_t *u8g, uint16_t rgb);
01053 void u8g_SetHiColorByRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b);
01054 void u8g_SetRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b);
01055 uint8_t u8g_GetColorIndex(u8g_t *u8g);
01056 
01057 uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g);
01058 void u8g_SetDefaultForegroundColor(u8g_t *u8g);
01059 
01060 uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g);
01061 void u8g_SetDefaultBackgroundColor(u8g_t *u8g);
01062 
01063 uint8_t u8g_GetDefaultMidColor(u8g_t *u8g);
01064 void u8g_SetDefaultMidColor(u8g_t *u8g);
01065 
01066 #define u8g_GetWidth(u8g) ((u8g)->width)
01067 #define u8g_GetHeight(u8g) ((u8g)->height)
01068 #define u8g_GetMode(u8g) ((u8g)->mode)
01069 /*
01070   U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(u8g))
01071   U8G_MODE_IS_COLOR(u8g_GetMode(u8g)) 
01072 */
01073 
01074 /* u8g_state.c */
01075 #define U8G_STATE_ENV_IDX 0
01076 #define U8G_STATE_U8G_IDX 1
01077 #define U8G_STATE_RESTORE 0
01078 #define U8G_STATE_BACKUP 1
01079 #define U8G_STATE_MSG_COMPOSE(cmd,idx) (((cmd)<<1) | (idx))
01080 
01081 #define U8G_STATE_MSG_RESTORE_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_ENV_IDX)
01082 #define U8G_STATE_MSG_BACKUP_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_ENV_IDX)
01083 #define U8G_STATE_MSG_RESTORE_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_U8G_IDX)
01084 #define U8G_STATE_MSG_BACKUP_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_U8G_IDX)
01085 
01086 #define U8G_STATE_MSG_GET_IDX(msg) ((msg)&1)
01087 #define U8G_STATE_MSG_IS_BACKUP(msg) ((msg)&2)
01088 
01089 
01090 
01091 void u8g_state_dummy_cb(uint8_t msg);
01092 void u8g_backup_spi(uint8_t msg);       /* backup SPI state controller */
01093 /* backward compatible definition */
01094 #define u8g_backup_avr_spi u8g_backup_spi
01095 
01096 void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb);
01097 
01098 /* u8g_clip.c */
01099 
01100 uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);
01101 
01102 
01103 /* u8g_rot.c */
01104 
01105 void u8g_UndoRotation(u8g_t *u8g);
01106 void u8g_SetRot90(u8g_t *u8g);
01107 void u8g_SetRot180(u8g_t *u8g);
01108 void u8g_SetRot270(u8g_t *u8g);
01109 
01110 /* u8g_scale.c */
01111 
01112 void u8g_UndoScale(u8g_t *u8g);
01113 void u8g_SetScale2x2(u8g_t *u8g);
01114 
01115 
01116 /* u8g_font.c */
01117 
01118 size_t u8g_font_GetSize(const void *font);
01119 uint8_t u8g_font_GetFontStartEncoding(const void *font) U8G_NOINLINE;
01120 uint8_t u8g_font_GetFontEndEncoding(const void *font) U8G_NOINLINE;
01121 
01122 void u8g_SetFont(u8g_t *u8g, const u8g_fntpgm_uint8_t *font);
01123 
01124 uint8_t u8g_GetFontBBXWidth(u8g_t *u8g);
01125 uint8_t u8g_GetFontBBXHeight(u8g_t *u8g);
01126 int8_t u8g_GetFontBBXOffX(u8g_t *u8g);
01127 int8_t u8g_GetFontBBXOffY(u8g_t *u8g);
01128 uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g);
01129 
01130 uint8_t u8g_IsGlyph(u8g_t *u8g, uint8_t requested_encoding);
01131 int8_t u8g_GetGlyphDeltaX(u8g_t *u8g, uint8_t requested_encoding);
01132 
01133 int8_t u8g_draw_glyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); /* used by u8g_cursor.c */
01134 
01135 int8_t u8g_DrawGlyphDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding);
01136 int8_t u8g_DrawGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
01137 int8_t u8g_DrawGlyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
01138 int8_t u8g_DrawGlyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
01139 int8_t u8g_DrawGlyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
01140 int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding);
01141 
01142 u8g_uint_t u8g_DrawStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
01143 u8g_uint_t u8g_DrawStr90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
01144 u8g_uint_t u8g_DrawStr180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
01145 u8g_uint_t u8g_DrawStr270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
01146 
01147 u8g_uint_t u8g_DrawStrDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s);
01148 
01149 
01150 u8g_uint_t u8g_DrawStrP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
01151 u8g_uint_t u8g_DrawStr90P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
01152 u8g_uint_t u8g_DrawStr180P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
01153 u8g_uint_t u8g_DrawStr270P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
01154 
01155 
01156 void u8g_SetFontRefHeightText(u8g_t *u8g);
01157 void u8g_SetFontRefHeightExtendedText(u8g_t *u8g);
01158 void u8g_SetFontRefHeightAll(u8g_t *u8g);
01159 void u8g_SetFontLineSpacingFactor(u8g_t *u8g, uint8_t factor);
01160 
01161 u8g_uint_t u8g_font_calc_vref_font(u8g_t *u8g);
01162 u8g_uint_t u8g_font_calc_vref_bottom(u8g_t *u8g);
01163 u8g_uint_t u8g_font_calc_vref_top(u8g_t *u8g);
01164 u8g_uint_t u8g_font_calc_vref_center(u8g_t *u8g);
01165 
01166 void u8g_SetFontPosBaseline(u8g_t *u8g);
01167 void u8g_SetFontPosBottom(u8g_t *u8g);
01168 void u8g_SetFontPosCenter(u8g_t *u8g);
01169 void u8g_SetFontPosTop(u8g_t *u8g);
01170 
01171 
01172 u8g_uint_t u8g_GetStrPixelWidth(u8g_t *u8g, const char *s);
01173 u8g_uint_t u8g_GetStrPixelWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s);
01174 int8_t u8g_GetStrX(u8g_t *u8g, const char *s);
01175 int8_t u8g_GetStrXP(u8g_t *u8g, const u8g_pgm_uint8_t *s);
01176 u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s);
01177 u8g_uint_t u8g_GetStrWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s);
01178 
01179 u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s);
01180 
01181 void u8g_GetStrMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height);
01182 void u8g_GetStrAMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height);
01183 
01184 
01185 u8g_uint_t u8g_DrawAAStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
01186 
01187 /* u8g_rect.c */
01188 
01189 void u8g_draw_box(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE; 
01190 
01191 void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w);
01192 void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w);
01193 void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);
01194 void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);
01195 
01196 void u8g_DrawRFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r);
01197 void u8g_DrawRBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r);
01198 
01199 /* u8g_bitmap.c */
01200 
01201 void u8g_DrawHBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const uint8_t *bitmap);
01202 void u8g_DrawHBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const u8g_pgm_uint8_t *bitmap);
01203 void u8g_DrawBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap);
01204 void u8g_DrawBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap);
01205 
01206 void u8g_DrawXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap);
01207 void u8g_DrawXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap);
01208 
01209 
01210 /* u8g_line.c */
01211 void u8g_DrawLine(u8g_t *u8g, u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2);
01212 
01213 
01214 /* u8g_circle.c */
01215 
01216 /* the following, commented code has been rewritten or is not yet finished
01217 #define U8G_CIRC_UPPER_RIGHT 0x01
01218 #define U8G_CIRC_UPPER_LEFT  0x02
01219 #define U8G_CIRC_LOWER_LEFT 0x04
01220 #define U8G_CIRC_LOWER_RIGHT  0x08
01221 #define U8G_CIRC_ALL (U8G_CIRC_UPPER_RIGHT|U8G_CIRC_UPPER_LEFT|U8G_CIRC_LOWER_RIGHT|U8G_CIRC_LOWER_LEFT)
01222 void u8g_DrawEmpCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
01223 void u8g_DrawFillCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
01224 void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1);
01225 */
01226 
01227 #define U8G_DRAW_UPPER_RIGHT 0x01
01228 #define U8G_DRAW_UPPER_LEFT  0x02
01229 #define U8G_DRAW_LOWER_LEFT 0x04
01230 #define U8G_DRAW_LOWER_RIGHT  0x08
01231 #define U8G_DRAW_ALL (U8G_DRAW_UPPER_RIGHT|U8G_DRAW_UPPER_LEFT|U8G_DRAW_LOWER_RIGHT|U8G_DRAW_LOWER_LEFT)
01232 
01233 void u8g_draw_circle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE;
01234 void u8g_draw_disc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE;
01235 
01236 void u8g_DrawCircle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
01237 void u8g_DrawDisc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
01238 
01239 /* u8g_ellipse.c */
01240 void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option);
01241 void u8g_DrawFilledEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option);
01242 
01243 /* u8g_clip.c */
01244 uint8_t u8g_is_box_bbx_intersection(u8g_box_t *box, u8g_dev_arg_bbx_t *bbx);
01245 
01246 
01247 /* u8g_cursor.c */
01248 void u8g_SetCursorFont(u8g_t *u8g, const u8g_pgm_uint8_t *cursor_font);
01249 void u8g_SetCursorStyle(u8g_t *u8g, uint8_t encoding);
01250 void u8g_SetCursorPos(u8g_t *u8g, u8g_uint_t cursor_x, u8g_uint_t cursor_y);
01251 void u8g_SetCursorColor(u8g_t *u8g, uint8_t fg, uint8_t bg);
01252 void u8g_EnableCursor(u8g_t *u8g);
01253 void u8g_DisableCursor(u8g_t *u8g);
01254 void u8g_DrawCursor(u8g_t *u8g);
01255 
01256 
01257 
01258 /*===============================================================*/
01259 /* u8g_virtual_screen.c */
01260 void u8g_SetVirtualScreenDimension(u8g_t *vs_u8g, u8g_uint_t width, u8g_uint_t height);
01261 uint8_t u8g_AddToVirtualScreen(u8g_t *vs_u8g, u8g_uint_t x, u8g_uint_t y, u8g_t *child_u8g);
01262 
01263 /*===============================================================*/
01264 void st_Draw(uint8_t fps);
01265 void st_Step(uint8_t player_pos, uint8_t is_auto_fire, uint8_t is_fire);
01266 
01267 /*===============================================================*/
01268 /* u8g_com_i2c.c */
01269 
01270 /* options for u8g_i2c_init() */
01271 #define U8G_I2C_OPT_NONE 0
01272 
01273 /* retrun values from u8g_twi_get_error() */
01274 #define U8G_I2C_ERR_NONE 0x00
01275 /* the following values are bit masks */
01276 #define U8G_I2C_ERR_TIMEOUT 0x01
01277 #define U8G_I2C_ERR_BUS 0x02
01278 
01279 void u8g_i2c_clear_error(void) U8G_NOINLINE;
01280 uint8_t  u8g_i2c_get_error(void) U8G_NOINLINE;
01281 uint8_t u8g_i2c_get_err_pos(void) U8G_NOINLINE;
01282 void u8g_i2c_init(uint8_t options) U8G_NOINLINE;        /* use U8G_I2C_OPT_NONE as options */
01283 uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) U8G_NOINLINE;
01284 uint8_t u8g_i2c_start(uint8_t sla) U8G_NOINLINE;
01285 uint8_t u8g_i2c_send_byte(uint8_t data) U8G_NOINLINE;
01286 void u8g_i2c_stop(void) U8G_NOINLINE;
01287 
01288 
01289 /*===============================================================*/
01290 /* u8g_u8toa.c */
01291 /* v = value, d = number of digits */
01292 const char *u8g_u8toa(uint8_t v, uint8_t d);
01293 
01294 /* u8g_u8toa.c */
01295 /* v = value, d = number of digits */
01296 const char *u8g_u16toa(uint16_t v, uint8_t d);
01297 
01298 /*===============================================================*/
01299 /* u8g_delay.c */
01300 
01301 /* delay by the specified number of milliseconds */
01302 void u8g_Delay(uint16_t val);
01303 
01304 /* delay by one microsecond */
01305 void u8g_MicroDelay(void);
01306 
01307 /* delay by 10 microseconds */
01308 void u8g_10MicroDelay(void);
01309 
01310 /*===============================================================*/
01311 /* chessengine.c */
01312 #define CHESS_KEY_NONE 0
01313 #define CHESS_KEY_NEXT 1
01314 #define CHESS_KEY_PREV 2
01315 #define CHESS_KEY_SELECT 3
01316 #define CHESS_KEY_BACK 4
01317 
01318 void chess_Init(u8g_t *u8g, uint8_t empty_body_color);
01319 void chess_Draw(void);
01320 void chess_Step(uint8_t keycode);
01321 
01322 /*===============================================================*/
01323 /* font definitions */
01324 extern const u8g_fntpgm_uint8_t u8g_font_m2icon_5[] U8G_FONT_SECTION("u8g_font_m2icon_5");
01325 extern const u8g_fntpgm_uint8_t u8g_font_m2icon_7[] U8G_FONT_SECTION("u8g_font_m2icon_7");
01326 extern const u8g_fntpgm_uint8_t u8g_font_m2icon_9[] U8G_FONT_SECTION("u8g_font_m2icon_9");
01327 
01328 extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4[] U8G_FONT_SECTION("u8g_font_u8glib_4");
01329 extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[] U8G_FONT_SECTION("u8g_font_u8glib_4r");
01330 
01331 
01332 extern const u8g_fntpgm_uint8_t u8g_font_6x12_75r[] U8G_FONT_SECTION("u8g_font_6x12_75r");
01333 extern const u8g_fntpgm_uint8_t u8g_font_6x13_75r[] U8G_FONT_SECTION("u8g_font_6x13_75r");
01334 extern const u8g_fntpgm_uint8_t u8g_font_7x13_75r[] U8G_FONT_SECTION("u8g_font_7x13_75r");
01335 extern const u8g_fntpgm_uint8_t u8g_font_8x13_75r[] U8G_FONT_SECTION("u8g_font_8x13_75r");
01336 extern const u8g_fntpgm_uint8_t u8g_font_9x15_75r[] U8G_FONT_SECTION("u8g_font_9x15_75r");
01337 extern const u8g_fntpgm_uint8_t u8g_font_9x18_75r[] U8G_FONT_SECTION("u8g_font_9x18_75r");
01338 extern const u8g_fntpgm_uint8_t u8g_font_cu12_75r[] U8G_FONT_SECTION("u8g_font_cu12_75r");
01339 extern const u8g_fntpgm_uint8_t u8g_font_unifont_75r[] U8G_FONT_SECTION("u8g_font_unifont_75r");
01340 extern const u8g_fntpgm_uint8_t u8g_font_10x20_75r[] U8G_FONT_SECTION("u8g_font_10x20_75r");
01341 
01342 extern const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[] U8G_FONT_SECTION("u8g_font_10x20_67_75");
01343 extern const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[] U8G_FONT_SECTION("u8g_font_10x20_78_79");
01344 extern const u8g_fntpgm_uint8_t u8g_font_10x20[] U8G_FONT_SECTION("u8g_font_10x20");
01345 extern const u8g_fntpgm_uint8_t u8g_font_10x20r[] U8G_FONT_SECTION("u8g_font_10x20r");
01346 extern const u8g_fntpgm_uint8_t u8g_font_4x6[] U8G_FONT_SECTION("u8g_font_4x6");
01347 extern const u8g_fntpgm_uint8_t u8g_font_4x6r[] U8G_FONT_SECTION("u8g_font_4x6r");
01348 //extern const u8g_fntpgm_uint8_t u8g_font_4x6n[] U8G_FONT_SECTION("u8g_font_4x6n");
01349 extern const u8g_fntpgm_uint8_t u8g_font_5x7[] U8G_FONT_SECTION("u8g_font_5x7");
01350 extern const u8g_fntpgm_uint8_t u8g_font_5x7r[] U8G_FONT_SECTION("u8g_font_5x7r");
01351 extern const u8g_fntpgm_uint8_t u8g_font_5x8[] U8G_FONT_SECTION("u8g_font_5x8");
01352 extern const u8g_fntpgm_uint8_t u8g_font_5x8r[] U8G_FONT_SECTION("u8g_font_5x8r");
01353 extern const u8g_fntpgm_uint8_t u8g_font_6x10[] U8G_FONT_SECTION("u8g_font_6x10");
01354 extern const u8g_fntpgm_uint8_t u8g_font_6x10r[] U8G_FONT_SECTION("u8g_font_6x10r");
01355 extern const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[] U8G_FONT_SECTION("u8g_font_6x12_67_75");
01356 extern const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[] U8G_FONT_SECTION("u8g_font_6x12_78_79");
01357 extern const u8g_fntpgm_uint8_t u8g_font_6x12[] U8G_FONT_SECTION("u8g_font_6x12");
01358 extern const u8g_fntpgm_uint8_t u8g_font_6x12r[] U8G_FONT_SECTION("u8g_font_6x12r");
01359 extern const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[] U8G_FONT_SECTION("u8g_font_6x13_67_75");
01360 extern const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[] U8G_FONT_SECTION("u8g_font_6x13_78_79");
01361 extern const u8g_fntpgm_uint8_t u8g_font_6x13B[] U8G_FONT_SECTION("u8g_font_6x13B");
01362 extern const u8g_fntpgm_uint8_t u8g_font_6x13Br[] U8G_FONT_SECTION("u8g_font_6x13Br");
01363 extern const u8g_fntpgm_uint8_t u8g_font_6x13[] U8G_FONT_SECTION("u8g_font_6x13");
01364 extern const u8g_fntpgm_uint8_t u8g_font_6x13r[] U8G_FONT_SECTION("u8g_font_6x13r");
01365 extern const u8g_fntpgm_uint8_t u8g_font_6x13O[] U8G_FONT_SECTION("u8g_font_6x13O");
01366 extern const u8g_fntpgm_uint8_t u8g_font_6x13Or[] U8G_FONT_SECTION("u8g_font_6x13Or");
01367 extern const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[] U8G_FONT_SECTION("u8g_font_7x13_67_75");
01368 extern const u8g_fntpgm_uint8_t u8g_font_7x13_78_79[] U8G_FONT_SECTION("u8g_font_7x13_78_79");
01369 extern const u8g_fntpgm_uint8_t u8g_font_7x13B[] U8G_FONT_SECTION("u8g_font_7x13B");
01370 extern const u8g_fntpgm_uint8_t u8g_font_7x13Br[] U8G_FONT_SECTION("u8g_font_7x13Br");
01371 extern const u8g_fntpgm_uint8_t u8g_font_7x13[] U8G_FONT_SECTION("u8g_font_7x13");
01372 extern const u8g_fntpgm_uint8_t u8g_font_7x13r[] U8G_FONT_SECTION("u8g_font_7x13r");
01373 extern const u8g_fntpgm_uint8_t u8g_font_7x13O[] U8G_FONT_SECTION("u8g_font_7x13O");
01374 extern const u8g_fntpgm_uint8_t u8g_font_7x13Or[] U8G_FONT_SECTION("u8g_font_7x13Or");
01375 extern const u8g_fntpgm_uint8_t u8g_font_7x14B[] U8G_FONT_SECTION("u8g_font_7x14B");
01376 extern const u8g_fntpgm_uint8_t u8g_font_7x14Br[] U8G_FONT_SECTION("u8g_font_7x14Br");
01377 extern const u8g_fntpgm_uint8_t u8g_font_7x14[] U8G_FONT_SECTION("u8g_font_7x14");
01378 extern const u8g_fntpgm_uint8_t u8g_font_7x14r[] U8G_FONT_SECTION("u8g_font_7x14r");
01379 extern const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[] U8G_FONT_SECTION("u8g_font_8x13_67_75");
01380 extern const u8g_fntpgm_uint8_t u8g_font_8x13B[] U8G_FONT_SECTION("u8g_font_8x13B");
01381 extern const u8g_fntpgm_uint8_t u8g_font_8x13Br[] U8G_FONT_SECTION("u8g_font_8x13Br");
01382 extern const u8g_fntpgm_uint8_t u8g_font_8x13[] U8G_FONT_SECTION("u8g_font_8x13");
01383 extern const u8g_fntpgm_uint8_t u8g_font_8x13r[] U8G_FONT_SECTION("u8g_font_8x13r");
01384 extern const u8g_fntpgm_uint8_t u8g_font_8x13O[] U8G_FONT_SECTION("u8g_font_8x13O");
01385 extern const u8g_fntpgm_uint8_t u8g_font_8x13Or[] U8G_FONT_SECTION("u8g_font_8x13Or");
01386 
01387 extern const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[] U8G_FONT_SECTION("u8g_font_9x15_67_75");
01388 extern const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[] U8G_FONT_SECTION("u8g_font_9x15_78_79");
01389 extern const u8g_fntpgm_uint8_t u8g_font_9x15B[] U8G_FONT_SECTION("u8g_font_9x15B");
01390 extern const u8g_fntpgm_uint8_t u8g_font_9x15Br[] U8G_FONT_SECTION("u8g_font_9x15Br");
01391 extern const u8g_fntpgm_uint8_t u8g_font_9x15[] U8G_FONT_SECTION("u8g_font_9x15");
01392 extern const u8g_fntpgm_uint8_t u8g_font_9x15r[] U8G_FONT_SECTION("u8g_font_9x15r");
01393 
01394 extern const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[] U8G_FONT_SECTION("u8g_font_9x18_67_75");
01395 extern const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[] U8G_FONT_SECTION("u8g_font_9x18_78_79");
01396 extern const u8g_fntpgm_uint8_t u8g_font_9x18B[] U8G_FONT_SECTION("u8g_font_9x18B");
01397 extern const u8g_fntpgm_uint8_t u8g_font_9x18[] U8G_FONT_SECTION("u8g_font_9x18");
01398 extern const u8g_fntpgm_uint8_t u8g_font_9x18Br[] U8G_FONT_SECTION("u8g_font_9x18Br");
01399 extern const u8g_fntpgm_uint8_t u8g_font_9x18r[] U8G_FONT_SECTION("u8g_font_9x18r");
01400 
01401 extern const u8g_fntpgm_uint8_t u8g_font_cursor[] U8G_FONT_SECTION("u8g_font_cursor");
01402 extern const u8g_fntpgm_uint8_t u8g_font_cursorr[] U8G_FONT_SECTION("u8g_font_cursorr");
01403 extern const u8g_fntpgm_uint8_t u8g_font_micro[] U8G_FONT_SECTION("u8g_font_micro");
01404 
01405 extern const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[] U8G_FONT_SECTION("u8g_font_cu12_67_75");
01406 extern const u8g_fntpgm_uint8_t u8g_font_cu12_78_79[] U8G_FONT_SECTION("u8g_font_cu12_78_79");
01407 extern const u8g_fntpgm_uint8_t u8g_font_cu12[] U8G_FONT_SECTION("u8g_font_cu12");
01408 
01409 /* 
01410   Free-Universal Bold 
01411   r: Reduced char set (codes 32 - 128)
01412   n: Numbers (codes 42 - 57)
01413   no char: Full set (codes 32 - 255)
01414 */
01415 
01416 extern const u8g_fntpgm_uint8_t u8g_font_fub11[] U8G_FONT_SECTION("u8g_font_fub11");
01417 extern const u8g_fntpgm_uint8_t u8g_font_fub11r[] U8G_FONT_SECTION("u8g_font_fub11r");
01418 extern const u8g_fntpgm_uint8_t u8g_font_fub11n[] U8G_FONT_SECTION("u8g_font_fub11n");
01419 extern const u8g_fntpgm_uint8_t u8g_font_fub14[] U8G_FONT_SECTION("u8g_font_fub14");
01420 extern const u8g_fntpgm_uint8_t u8g_font_fub14r[] U8G_FONT_SECTION("u8g_font_fub14r");
01421 extern const u8g_fntpgm_uint8_t u8g_font_fub14n[] U8G_FONT_SECTION("u8g_font_fub14n");
01422 extern const u8g_fntpgm_uint8_t u8g_font_fub17[] U8G_FONT_SECTION("u8g_font_fub17");
01423 extern const u8g_fntpgm_uint8_t u8g_font_fub17r[] U8G_FONT_SECTION("u8g_font_fub17r");
01424 extern const u8g_fntpgm_uint8_t u8g_font_fub17n[] U8G_FONT_SECTION("u8g_font_fub17n");
01425 extern const u8g_fntpgm_uint8_t u8g_font_fub20[] U8G_FONT_SECTION("u8g_font_fub20");
01426 extern const u8g_fntpgm_uint8_t u8g_font_fub20r[] U8G_FONT_SECTION("u8g_font_fub20r");
01427 extern const u8g_fntpgm_uint8_t u8g_font_fub20n[] U8G_FONT_SECTION("u8g_font_fub20n");
01428 extern const u8g_fntpgm_uint8_t u8g_font_fub25[] U8G_FONT_SECTION("u8g_font_fub25");
01429 extern const u8g_fntpgm_uint8_t u8g_font_fub25r[] U8G_FONT_SECTION("u8g_font_fub25r");
01430 extern const u8g_fntpgm_uint8_t u8g_font_fub25n[] U8G_FONT_SECTION("u8g_font_fub25n");
01431 extern const u8g_fntpgm_uint8_t u8g_font_fub30[] U8G_FONT_SECTION("u8g_font_fub30");
01432 extern const u8g_fntpgm_uint8_t u8g_font_fub30r[] U8G_FONT_SECTION("u8g_font_fub30r");
01433 extern const u8g_fntpgm_uint8_t u8g_font_fub30n[] U8G_FONT_SECTION("u8g_font_fub30n");
01434 extern const u8g_fntpgm_uint8_t u8g_font_fub35n[] U8G_FONT_SECTION("u8g_font_fub35n");
01435 extern const u8g_fntpgm_uint8_t u8g_font_fub42n[] U8G_FONT_SECTION("u8g_font_fub42n");
01436 extern const u8g_fntpgm_uint8_t u8g_font_fub49n[] U8G_FONT_SECTION("u8g_font_fub49n");
01437 
01438 /* 
01439   Free-Universal Regular
01440   r: Reduced char set (codes 32 - 128)
01441   n: Numbers (codes 42 - 57)
01442   no char: Full set (codes 32 - 255)
01443 */
01444 
01445 extern const u8g_fntpgm_uint8_t u8g_font_fur11[] U8G_FONT_SECTION("u8g_font_fur11");
01446 extern const u8g_fntpgm_uint8_t u8g_font_fur11r[] U8G_FONT_SECTION("u8g_font_fur11r");
01447 extern const u8g_fntpgm_uint8_t u8g_font_fur11n[] U8G_FONT_SECTION("u8g_font_fur11n");
01448 extern const u8g_fntpgm_uint8_t u8g_font_fur14[] U8G_FONT_SECTION("u8g_font_fur14");
01449 extern const u8g_fntpgm_uint8_t u8g_font_fur14r[] U8G_FONT_SECTION("u8g_font_fur14r");
01450 extern const u8g_fntpgm_uint8_t u8g_font_fur14n[] U8G_FONT_SECTION("u8g_font_fur14n");
01451 extern const u8g_fntpgm_uint8_t u8g_font_fur17[] U8G_FONT_SECTION("u8g_font_fur17");
01452 extern const u8g_fntpgm_uint8_t u8g_font_fur17r[] U8G_FONT_SECTION("u8g_font_fur17r");
01453 extern const u8g_fntpgm_uint8_t u8g_font_fur17n[] U8G_FONT_SECTION("u8g_font_fur17n");
01454 extern const u8g_fntpgm_uint8_t u8g_font_fur20[] U8G_FONT_SECTION("u8g_font_fur20");
01455 extern const u8g_fntpgm_uint8_t u8g_font_fur20r[] U8G_FONT_SECTION("u8g_font_fur20r");
01456 extern const u8g_fntpgm_uint8_t u8g_font_fur20n[] U8G_FONT_SECTION("u8g_font_fur20n");
01457 extern const u8g_fntpgm_uint8_t u8g_font_fur25[] U8G_FONT_SECTION("u8g_font_fur25");
01458 extern const u8g_fntpgm_uint8_t u8g_font_fur25r[] U8G_FONT_SECTION("u8g_font_fur25r");
01459 extern const u8g_fntpgm_uint8_t u8g_font_fur25n[] U8G_FONT_SECTION("u8g_font_fur25n");
01460 extern const u8g_fntpgm_uint8_t u8g_font_fur30[] U8G_FONT_SECTION("u8g_font_fur30");
01461 extern const u8g_fntpgm_uint8_t u8g_font_fur30r[] U8G_FONT_SECTION("u8g_font_fur30r");
01462 extern const u8g_fntpgm_uint8_t u8g_font_fur30n[] U8G_FONT_SECTION("u8g_font_fur30n");
01463 extern const u8g_fntpgm_uint8_t u8g_font_fur35n[] U8G_FONT_SECTION("u8g_font_fur35n");
01464 extern const u8g_fntpgm_uint8_t u8g_font_fur42n[] U8G_FONT_SECTION("u8g_font_fur42n");
01465 extern const u8g_fntpgm_uint8_t u8g_font_fur49n[] U8G_FONT_SECTION("u8g_font_fur49n");
01466 
01467 /* 
01468   Gentium Bold
01469   r: Reduced char set (codes 32 - 128)
01470   n: Numbers (codes 42 - 57)
01471   no char: Full set (codes 32 - 255)
01472 */
01473 
01474 extern const u8g_fntpgm_uint8_t u8g_font_gdb11[] U8G_FONT_SECTION("u8g_font_gdb11");
01475 extern const u8g_fntpgm_uint8_t u8g_font_gdb12[] U8G_FONT_SECTION("u8g_font_gdb12");
01476 extern const u8g_fntpgm_uint8_t u8g_font_gdb14[] U8G_FONT_SECTION("u8g_font_gdb14");
01477 extern const u8g_fntpgm_uint8_t u8g_font_gdb17[] U8G_FONT_SECTION("u8g_font_gdb17");
01478 extern const u8g_fntpgm_uint8_t u8g_font_gdb20[] U8G_FONT_SECTION("u8g_font_gdb20");
01479 extern const u8g_fntpgm_uint8_t u8g_font_gdb25[] U8G_FONT_SECTION("u8g_font_gdb25");
01480 extern const u8g_fntpgm_uint8_t u8g_font_gdb30[] U8G_FONT_SECTION("u8g_font_gdb30");
01481 
01482 extern const u8g_fntpgm_uint8_t u8g_font_gdb11r[] U8G_FONT_SECTION("u8g_font_gdb11r");
01483 extern const u8g_fntpgm_uint8_t u8g_font_gdb12r[] U8G_FONT_SECTION("u8g_font_gdb12r");
01484 extern const u8g_fntpgm_uint8_t u8g_font_gdb14r[] U8G_FONT_SECTION("u8g_font_gdb14r");
01485 extern const u8g_fntpgm_uint8_t u8g_font_gdb17r[] U8G_FONT_SECTION("u8g_font_gdb17r");
01486 extern const u8g_fntpgm_uint8_t u8g_font_gdb20r[] U8G_FONT_SECTION("u8g_font_gdb20r");
01487 extern const u8g_fntpgm_uint8_t u8g_font_gdb25r[] U8G_FONT_SECTION("u8g_font_gdb25r");
01488 extern const u8g_fntpgm_uint8_t u8g_font_gdb30r[] U8G_FONT_SECTION("u8g_font_gdb30r");
01489 
01490 extern const u8g_fntpgm_uint8_t u8g_font_gdb11n[] U8G_FONT_SECTION("u8g_font_gdb11n");
01491 extern const u8g_fntpgm_uint8_t u8g_font_gdb12n[] U8G_FONT_SECTION("u8g_font_gdb12n");
01492 extern const u8g_fntpgm_uint8_t u8g_font_gdb14n[] U8G_FONT_SECTION("u8g_font_gdb14n");
01493 extern const u8g_fntpgm_uint8_t u8g_font_gdb17n[] U8G_FONT_SECTION("u8g_font_gdb17n");
01494 extern const u8g_fntpgm_uint8_t u8g_font_gdb20n[] U8G_FONT_SECTION("u8g_font_gdb20n");
01495 extern const u8g_fntpgm_uint8_t u8g_font_gdb25n[] U8G_FONT_SECTION("u8g_font_gdb25n");
01496 extern const u8g_fntpgm_uint8_t u8g_font_gdb30n[] U8G_FONT_SECTION("u8g_font_gdb30n");
01497 
01498 /* 
01499   Gentium Regular
01500   r: Reduced char set (codes 32 - 128)
01501   n: Numbers (codes 42 - 57)
01502   no char: Full set (codes 32 - 255)
01503 */
01504 
01505 extern const u8g_fntpgm_uint8_t u8g_font_gdr9[] U8G_FONT_SECTION("u8g_font_gdr9");
01506 extern const u8g_fntpgm_uint8_t u8g_font_gdr10[] U8G_FONT_SECTION("u8g_font_gdr10");
01507 extern const u8g_fntpgm_uint8_t u8g_font_gdr11[] U8G_FONT_SECTION("u8g_font_gdr11");
01508 extern const u8g_fntpgm_uint8_t u8g_font_gdr12[] U8G_FONT_SECTION("u8g_font_gdr12");
01509 extern const u8g_fntpgm_uint8_t u8g_font_gdr14[] U8G_FONT_SECTION("u8g_font_gdr14");
01510 extern const u8g_fntpgm_uint8_t u8g_font_gdr17[] U8G_FONT_SECTION("u8g_font_gdr17");
01511 extern const u8g_fntpgm_uint8_t u8g_font_gdr20[] U8G_FONT_SECTION("u8g_font_gdr20");
01512 extern const u8g_fntpgm_uint8_t u8g_font_gdr25[] U8G_FONT_SECTION("u8g_font_gdr25");
01513 extern const u8g_fntpgm_uint8_t u8g_font_gdr30[] U8G_FONT_SECTION("u8g_font_gdr30");
01514 
01515 extern const u8g_fntpgm_uint8_t u8g_font_gdr9r[] U8G_FONT_SECTION("u8g_font_gdr9r");
01516 extern const u8g_fntpgm_uint8_t u8g_font_gdr10r[] U8G_FONT_SECTION("u8g_font_gdr10r");
01517 extern const u8g_fntpgm_uint8_t u8g_font_gdr11r[] U8G_FONT_SECTION("u8g_font_gdr11r");
01518 extern const u8g_fntpgm_uint8_t u8g_font_gdr12r[] U8G_FONT_SECTION("u8g_font_gdr12r");
01519 extern const u8g_fntpgm_uint8_t u8g_font_gdr14r[] U8G_FONT_SECTION("u8g_font_gdr14r");
01520 extern const u8g_fntpgm_uint8_t u8g_font_gdr17r[] U8G_FONT_SECTION("u8g_font_gdr17r");
01521 extern const u8g_fntpgm_uint8_t u8g_font_gdr20r[] U8G_FONT_SECTION("u8g_font_gdr20r");
01522 extern const u8g_fntpgm_uint8_t u8g_font_gdr25r[] U8G_FONT_SECTION("u8g_font_gdr25r");
01523 extern const u8g_fntpgm_uint8_t u8g_font_gdr30r[] U8G_FONT_SECTION("u8g_font_gdr30r");
01524 
01525 extern const u8g_fntpgm_uint8_t u8g_font_gdr9n[] U8G_FONT_SECTION("u8g_font_gdr9n");
01526 extern const u8g_fntpgm_uint8_t u8g_font_gdr10n[] U8G_FONT_SECTION("u8g_font_gdr10n");
01527 extern const u8g_fntpgm_uint8_t u8g_font_gdr11n[] U8G_FONT_SECTION("u8g_font_gdr11n");
01528 extern const u8g_fntpgm_uint8_t u8g_font_gdr12n[] U8G_FONT_SECTION("u8g_font_gdr12n");
01529 extern const u8g_fntpgm_uint8_t u8g_font_gdr14n[] U8G_FONT_SECTION("u8g_font_gdr14n");
01530 extern const u8g_fntpgm_uint8_t u8g_font_gdr17n[] U8G_FONT_SECTION("u8g_font_gdr17n");
01531 extern const u8g_fntpgm_uint8_t u8g_font_gdr20n[] U8G_FONT_SECTION("u8g_font_gdr20n");
01532 extern const u8g_fntpgm_uint8_t u8g_font_gdr25n[] U8G_FONT_SECTION("u8g_font_gdr25n");
01533 extern const u8g_fntpgm_uint8_t u8g_font_gdr30n[] U8G_FONT_SECTION("u8g_font_gdr30n");
01534 
01535 /* 
01536   Old-Standard Bold
01537   r: Reduced char set (codes 32 - 128)
01538   n: Numbers (codes 42 - 57)
01539   no char: Full set (codes 32 - 255)
01540 */
01541 
01542 extern const u8g_fntpgm_uint8_t u8g_font_osb18[] U8G_FONT_SECTION("u8g_font_osb18");
01543 extern const u8g_fntpgm_uint8_t u8g_font_osb21[] U8G_FONT_SECTION("u8g_font_osb21");
01544 extern const u8g_fntpgm_uint8_t u8g_font_osb26[] U8G_FONT_SECTION("u8g_font_osb26");
01545 extern const u8g_fntpgm_uint8_t u8g_font_osb29[] U8G_FONT_SECTION("u8g_font_osb29");
01546 extern const u8g_fntpgm_uint8_t u8g_font_osb35[] U8G_FONT_SECTION("u8g_font_osb35");
01547 
01548 extern const u8g_fntpgm_uint8_t u8g_font_osb18r[] U8G_FONT_SECTION("u8g_font_osb18r");
01549 extern const u8g_fntpgm_uint8_t u8g_font_osb21r[] U8G_FONT_SECTION("u8g_font_osb21r");
01550 extern const u8g_fntpgm_uint8_t u8g_font_osb26r[] U8G_FONT_SECTION("u8g_font_osb26r");
01551 extern const u8g_fntpgm_uint8_t u8g_font_osb29r[] U8G_FONT_SECTION("u8g_font_osb29r");
01552 extern const u8g_fntpgm_uint8_t u8g_font_osb35r[] U8G_FONT_SECTION("u8g_font_osb35r");
01553 
01554 extern const u8g_fntpgm_uint8_t u8g_font_osb18n[] U8G_FONT_SECTION("u8g_font_osb18n");
01555 extern const u8g_fntpgm_uint8_t u8g_font_osb21n[] U8G_FONT_SECTION("u8g_font_osb21n");
01556 extern const u8g_fntpgm_uint8_t u8g_font_osb26n[] U8G_FONT_SECTION("u8g_font_osb26n");
01557 extern const u8g_fntpgm_uint8_t u8g_font_osb29n[] U8G_FONT_SECTION("u8g_font_osb29n");
01558 extern const u8g_fntpgm_uint8_t u8g_font_osb35n[] U8G_FONT_SECTION("u8g_font_osb35n");
01559 
01560 /* 
01561   Old-Standard Regular
01562   r: Reduced char set (codes 32 - 128)
01563   n: Numbers (codes 42 - 57)
01564   no char: Full set (codes 32 - 255)
01565 */
01566 
01567 extern const u8g_fntpgm_uint8_t u8g_font_osr18[] U8G_FONT_SECTION("u8g_font_osr18");
01568 extern const u8g_fntpgm_uint8_t u8g_font_osr21[] U8G_FONT_SECTION("u8g_font_osr21");
01569 extern const u8g_fntpgm_uint8_t u8g_font_osr26[] U8G_FONT_SECTION("u8g_font_osr26");
01570 extern const u8g_fntpgm_uint8_t u8g_font_osr29[] U8G_FONT_SECTION("u8g_font_osr29");
01571 extern const u8g_fntpgm_uint8_t u8g_font_osr35[] U8G_FONT_SECTION("u8g_font_osr35");
01572 
01573 extern const u8g_fntpgm_uint8_t u8g_font_osr18r[] U8G_FONT_SECTION("u8g_font_osr18r");
01574 extern const u8g_fntpgm_uint8_t u8g_font_osr21r[] U8G_FONT_SECTION("u8g_font_osr21r");
01575 extern const u8g_fntpgm_uint8_t u8g_font_osr26r[] U8G_FONT_SECTION("u8g_font_osr26r");
01576 extern const u8g_fntpgm_uint8_t u8g_font_osr29r[] U8G_FONT_SECTION("u8g_font_osr29r");
01577 extern const u8g_fntpgm_uint8_t u8g_font_osr35r[] U8G_FONT_SECTION("u8g_font_osr35r");
01578 
01579 extern const u8g_fntpgm_uint8_t u8g_font_osr18n[] U8G_FONT_SECTION("u8g_font_osr18n");
01580 extern const u8g_fntpgm_uint8_t u8g_font_osr21n[] U8G_FONT_SECTION("u8g_font_osr21n");
01581 extern const u8g_fntpgm_uint8_t u8g_font_osr26n[] U8G_FONT_SECTION("u8g_font_osr26n");
01582 extern const u8g_fntpgm_uint8_t u8g_font_osr29n[] U8G_FONT_SECTION("u8g_font_osr29n");
01583 extern const u8g_fntpgm_uint8_t u8g_font_osr35n[] U8G_FONT_SECTION("u8g_font_osr35n");
01584 
01585 //extern const u8g_fntpgm_uint8_t u8g_font_osr41[] U8G_FONT_SECTION("u8g_font_osr41");
01586 
01587 /* GNU unifont */
01588 
01589 extern const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[] U8G_FONT_SECTION("u8g_font_unifont_18_19");
01590 extern const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[] U8G_FONT_SECTION("u8g_font_unifont_72_73");
01591 extern const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[] U8G_FONT_SECTION("u8g_font_unifont_67_75");
01592 extern const u8g_fntpgm_uint8_t u8g_font_unifont_76[] U8G_FONT_SECTION("u8g_font_unifont_76");
01593 extern const u8g_fntpgm_uint8_t u8g_font_unifont_77[] U8G_FONT_SECTION("u8g_font_unifont_77");
01594 extern const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[] U8G_FONT_SECTION("u8g_font_unifont_78_79");
01595 extern const u8g_fntpgm_uint8_t u8g_font_unifont_86[] U8G_FONT_SECTION("u8g_font_unifont_86");
01596 extern const u8g_fntpgm_uint8_t u8g_font_unifont[] U8G_FONT_SECTION("u8g_font_unifont");
01597 extern const u8g_fntpgm_uint8_t u8g_font_unifontr[] U8G_FONT_SECTION("u8g_font_unifontr");
01598 extern const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[] U8G_FONT_SECTION("u8g_font_unifont_0_8");
01599 extern const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[] U8G_FONT_SECTION("u8g_font_unifont_2_3");
01600 extern const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[] U8G_FONT_SECTION("u8g_font_unifont_4_5");
01601 extern const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[] U8G_FONT_SECTION("u8g_font_unifont_8_9");
01602 extern const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[] U8G_FONT_SECTION("u8g_font_unifont_12_13");
01603 
01604 
01605 /* 04b fonts */
01606 
01607 extern const u8g_fntpgm_uint8_t u8g_font_04b_03b[] U8G_FONT_SECTION("u8g_font_04b_03b"); 
01608 extern const u8g_fntpgm_uint8_t u8g_font_04b_03bn[] U8G_FONT_SECTION("u8g_font_04b_03bn");
01609 extern const u8g_fntpgm_uint8_t u8g_font_04b_03br[] U8G_FONT_SECTION("u8g_font_04b_03br");
01610 extern const u8g_fntpgm_uint8_t u8g_font_04b_03[] U8G_FONT_SECTION("u8g_font_04b_03");
01611 extern const u8g_fntpgm_uint8_t u8g_font_04b_03n[] U8G_FONT_SECTION("u8g_font_04b_03n");
01612 extern const u8g_fntpgm_uint8_t u8g_font_04b_03r[] U8G_FONT_SECTION("u8g_font_04b_03r");
01613 extern const u8g_fntpgm_uint8_t u8g_font_04b_24[] U8G_FONT_SECTION("u8g_font_04b_24");
01614 extern const u8g_fntpgm_uint8_t u8g_font_04b_24n[] U8G_FONT_SECTION("u8g_font_04b_24n");
01615 extern const u8g_fntpgm_uint8_t u8g_font_04b_24r[] U8G_FONT_SECTION("u8g_font_04b_24r");
01616 
01617 /* orgdot fonts */
01618 
01619 extern const u8g_fntpgm_uint8_t u8g_font_orgv01[] U8G_FONT_SECTION("u8g_font_orgv01");
01620 extern const u8g_fntpgm_uint8_t u8g_font_orgv01r[] U8G_FONT_SECTION("u8g_font_orgv01r");
01621 extern const u8g_fntpgm_uint8_t u8g_font_orgv01n[] U8G_FONT_SECTION("u8g_font_orgv01n");
01622 
01623 extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0[] U8G_FONT_SECTION("u8g_font_fixed_v0");
01624 extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[] U8G_FONT_SECTION("u8g_font_fixed_v0r");
01625 extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[] U8G_FONT_SECTION("u8g_font_fixed_v0n");
01626 
01627 extern const u8g_fntpgm_uint8_t u8g_font_tpssb[] U8G_FONT_SECTION("u8g_font_tpssb");
01628 extern const u8g_fntpgm_uint8_t u8g_font_tpssbr[] U8G_FONT_SECTION("u8g_font_tpssbr");
01629 extern const u8g_fntpgm_uint8_t u8g_font_tpssbn[] U8G_FONT_SECTION("u8g_font_tpssbn");
01630 
01631 extern const u8g_fntpgm_uint8_t u8g_font_tpss[] U8G_FONT_SECTION("u8g_font_tpss");
01632 extern const u8g_fntpgm_uint8_t u8g_font_tpssr[] U8G_FONT_SECTION("u8g_font_tpssr");
01633 extern const u8g_fntpgm_uint8_t u8g_font_tpssn[] U8G_FONT_SECTION("u8g_font_tpssn");
01634 
01635 /* contributed */
01636 
01637 extern const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[] U8G_FONT_SECTION("u8g_font_freedoomr25n");
01638 extern const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[] U8G_FONT_SECTION("u8g_font_freedoomr10r");
01639 
01640 /* adobe X11 */
01641 extern const u8g_fntpgm_uint8_t u8g_font_courB08[] U8G_FONT_SECTION("u8g_font_courB08");
01642 extern const u8g_fntpgm_uint8_t u8g_font_courB08r[] U8G_FONT_SECTION("u8g_font_courB08r");
01643 extern const u8g_fntpgm_uint8_t u8g_font_courB10[] U8G_FONT_SECTION("u8g_font_courB10");
01644 extern const u8g_fntpgm_uint8_t u8g_font_courB10r[] U8G_FONT_SECTION("u8g_font_courB10r");
01645 extern const u8g_fntpgm_uint8_t u8g_font_courB12[] U8G_FONT_SECTION("u8g_font_courB12");
01646 extern const u8g_fntpgm_uint8_t u8g_font_courB12r[] U8G_FONT_SECTION("u8g_font_courB12r");
01647 extern const u8g_fntpgm_uint8_t u8g_font_courB14[] U8G_FONT_SECTION("u8g_font_courB14");
01648 extern const u8g_fntpgm_uint8_t u8g_font_courB14r[] U8G_FONT_SECTION("u8g_font_courB14r");
01649 extern const u8g_fntpgm_uint8_t u8g_font_courB18[] U8G_FONT_SECTION("u8g_font_courB18");
01650 extern const u8g_fntpgm_uint8_t u8g_font_courB18r[] U8G_FONT_SECTION("u8g_font_courB18r");
01651 extern const u8g_fntpgm_uint8_t u8g_font_courB24[] U8G_FONT_SECTION("u8g_font_courB24");
01652 extern const u8g_fntpgm_uint8_t u8g_font_courB24r[] U8G_FONT_SECTION("u8g_font_courB24r");
01653 extern const u8g_fntpgm_uint8_t u8g_font_courB24n[] U8G_FONT_SECTION("u8g_font_courB24n");
01654 
01655 extern const u8g_fntpgm_uint8_t u8g_font_courR08[] U8G_FONT_SECTION("u8g_font_courR08");
01656 extern const u8g_fntpgm_uint8_t u8g_font_courR08r[] U8G_FONT_SECTION("u8g_font_courR08r");
01657 extern const u8g_fntpgm_uint8_t u8g_font_courR10[] U8G_FONT_SECTION("u8g_font_courR10");
01658 extern const u8g_fntpgm_uint8_t u8g_font_courR10r[] U8G_FONT_SECTION("u8g_font_courR10r");
01659 extern const u8g_fntpgm_uint8_t u8g_font_courR12[] U8G_FONT_SECTION("u8g_font_courR12");
01660 extern const u8g_fntpgm_uint8_t u8g_font_courR12r[] U8G_FONT_SECTION("u8g_font_courR12r");
01661 extern const u8g_fntpgm_uint8_t u8g_font_courR14[] U8G_FONT_SECTION("u8g_font_courR14");
01662 extern const u8g_fntpgm_uint8_t u8g_font_courR14r[] U8G_FONT_SECTION("u8g_font_courR14r");
01663 extern const u8g_fntpgm_uint8_t u8g_font_courR18[] U8G_FONT_SECTION("u8g_font_courR18");
01664 extern const u8g_fntpgm_uint8_t u8g_font_courR18r[] U8G_FONT_SECTION("u8g_font_courR18r");
01665 extern const u8g_fntpgm_uint8_t u8g_font_courR24[] U8G_FONT_SECTION("u8g_font_courR24");
01666 extern const u8g_fntpgm_uint8_t u8g_font_courR24r[] U8G_FONT_SECTION("u8g_font_courR24r");
01667 extern const u8g_fntpgm_uint8_t u8g_font_courR24n[] U8G_FONT_SECTION("u8g_font_courR24n");
01668 
01669 extern const u8g_fntpgm_uint8_t u8g_font_helvB08[] U8G_FONT_SECTION("u8g_font_helvB08");
01670 extern const u8g_fntpgm_uint8_t u8g_font_helvB08r[] U8G_FONT_SECTION("u8g_font_helvB08r");
01671 extern const u8g_fntpgm_uint8_t u8g_font_helvB10[] U8G_FONT_SECTION("u8g_font_helvB10");
01672 extern const u8g_fntpgm_uint8_t u8g_font_helvB10r[] U8G_FONT_SECTION("u8g_font_helvB10r");
01673 extern const u8g_fntpgm_uint8_t u8g_font_helvB12[] U8G_FONT_SECTION("u8g_font_helvB12");
01674 extern const u8g_fntpgm_uint8_t u8g_font_helvB12r[] U8G_FONT_SECTION("u8g_font_helvB12r");
01675 extern const u8g_fntpgm_uint8_t u8g_font_helvB14[] U8G_FONT_SECTION("u8g_font_helvB14");
01676 extern const u8g_fntpgm_uint8_t u8g_font_helvB14r[] U8G_FONT_SECTION("u8g_font_helvB14r");
01677 extern const u8g_fntpgm_uint8_t u8g_font_helvB18[] U8G_FONT_SECTION("u8g_font_helvB18");
01678 extern const u8g_fntpgm_uint8_t u8g_font_helvB18r[] U8G_FONT_SECTION("u8g_font_helvB18r");
01679 extern const u8g_fntpgm_uint8_t u8g_font_helvB24[] U8G_FONT_SECTION("u8g_font_helvB24");
01680 extern const u8g_fntpgm_uint8_t u8g_font_helvB24r[] U8G_FONT_SECTION("u8g_font_helvB24r");
01681 extern const u8g_fntpgm_uint8_t u8g_font_helvB24n[] U8G_FONT_SECTION("u8g_font_helvB24n");
01682 
01683 extern const u8g_fntpgm_uint8_t u8g_font_helvR08[] U8G_FONT_SECTION("u8g_font_helvR08");
01684 extern const u8g_fntpgm_uint8_t u8g_font_helvR08r[] U8G_FONT_SECTION("u8g_font_helvR08r");
01685 extern const u8g_fntpgm_uint8_t u8g_font_helvR10[] U8G_FONT_SECTION("u8g_font_helvR10");
01686 extern const u8g_fntpgm_uint8_t u8g_font_helvR10r[] U8G_FONT_SECTION("u8g_font_helvR10r");
01687 extern const u8g_fntpgm_uint8_t u8g_font_helvR12[] U8G_FONT_SECTION("u8g_font_helvR12");
01688 extern const u8g_fntpgm_uint8_t u8g_font_helvR12r[] U8G_FONT_SECTION("u8g_font_helvR12r");
01689 extern const u8g_fntpgm_uint8_t u8g_font_helvR14[] U8G_FONT_SECTION("u8g_font_helvR14");
01690 extern const u8g_fntpgm_uint8_t u8g_font_helvR14r[] U8G_FONT_SECTION("u8g_font_helvR14r");
01691 extern const u8g_fntpgm_uint8_t u8g_font_helvR18[] U8G_FONT_SECTION("u8g_font_helvR18");
01692 extern const u8g_fntpgm_uint8_t u8g_font_helvR18r[] U8G_FONT_SECTION("u8g_font_helvR18r");
01693 extern const u8g_fntpgm_uint8_t u8g_font_helvR24[] U8G_FONT_SECTION("u8g_font_helvR24");
01694 extern const u8g_fntpgm_uint8_t u8g_font_helvR24r[] U8G_FONT_SECTION("u8g_font_helvR24r");
01695 extern const u8g_fntpgm_uint8_t u8g_font_helvR24n[] U8G_FONT_SECTION("u8g_font_helvR24n");
01696 
01697 extern const u8g_fntpgm_uint8_t u8g_font_ncenB08[] U8G_FONT_SECTION("u8g_font_ncenB08");
01698 extern const u8g_fntpgm_uint8_t u8g_font_ncenB08r[] U8G_FONT_SECTION("u8g_font_ncenB08r");
01699 extern const u8g_fntpgm_uint8_t u8g_font_ncenB10[] U8G_FONT_SECTION("u8g_font_ncenB10");
01700 extern const u8g_fntpgm_uint8_t u8g_font_ncenB10r[] U8G_FONT_SECTION("u8g_font_ncenB10r");
01701 extern const u8g_fntpgm_uint8_t u8g_font_ncenB12[] U8G_FONT_SECTION("u8g_font_ncenB12");
01702 extern const u8g_fntpgm_uint8_t u8g_font_ncenB12r[] U8G_FONT_SECTION("u8g_font_ncenB12r");
01703 extern const u8g_fntpgm_uint8_t u8g_font_ncenB14[] U8G_FONT_SECTION("u8g_font_ncenB14");
01704 extern const u8g_fntpgm_uint8_t u8g_font_ncenB14r[] U8G_FONT_SECTION("u8g_font_ncenB14r");
01705 extern const u8g_fntpgm_uint8_t u8g_font_ncenB18[] U8G_FONT_SECTION("u8g_font_ncenB18");
01706 extern const u8g_fntpgm_uint8_t u8g_font_ncenB18r[] U8G_FONT_SECTION("u8g_font_ncenB18r");
01707 extern const u8g_fntpgm_uint8_t u8g_font_ncenB24[] U8G_FONT_SECTION("u8g_font_ncenB24");
01708 extern const u8g_fntpgm_uint8_t u8g_font_ncenB24r[] U8G_FONT_SECTION("u8g_font_ncenB24r");
01709 extern const u8g_fntpgm_uint8_t u8g_font_ncenB24n[] U8G_FONT_SECTION("u8g_font_ncenB24n");
01710 
01711 extern const u8g_fntpgm_uint8_t u8g_font_ncenR08[] U8G_FONT_SECTION("u8g_font_ncenR08");
01712 extern const u8g_fntpgm_uint8_t u8g_font_ncenR08r[] U8G_FONT_SECTION("u8g_font_ncenR08r");
01713 extern const u8g_fntpgm_uint8_t u8g_font_ncenR10[] U8G_FONT_SECTION("u8g_font_ncenR10");
01714 extern const u8g_fntpgm_uint8_t u8g_font_ncenR10r[] U8G_FONT_SECTION("u8g_font_ncenR10r");
01715 extern const u8g_fntpgm_uint8_t u8g_font_ncenR12[] U8G_FONT_SECTION("u8g_font_ncenR12");
01716 extern const u8g_fntpgm_uint8_t u8g_font_ncenR12r[] U8G_FONT_SECTION("u8g_font_ncenR12r");
01717 extern const u8g_fntpgm_uint8_t u8g_font_ncenR14[] U8G_FONT_SECTION("u8g_font_ncenR14");
01718 extern const u8g_fntpgm_uint8_t u8g_font_ncenR14r[] U8G_FONT_SECTION("u8g_font_ncenR14r");
01719 extern const u8g_fntpgm_uint8_t u8g_font_ncenR18[] U8G_FONT_SECTION("u8g_font_ncenR18");
01720 extern const u8g_fntpgm_uint8_t u8g_font_ncenR18r[] U8G_FONT_SECTION("u8g_font_ncenR18r");
01721 extern const u8g_fntpgm_uint8_t u8g_font_ncenR24[] U8G_FONT_SECTION("u8g_font_ncenR24");
01722 extern const u8g_fntpgm_uint8_t u8g_font_ncenR24r[] U8G_FONT_SECTION("u8g_font_ncenR24r");
01723 extern const u8g_fntpgm_uint8_t u8g_font_ncenR24n[] U8G_FONT_SECTION("u8g_font_ncenR24n");
01724 
01725 extern const u8g_fntpgm_uint8_t u8g_font_symb08[] U8G_FONT_SECTION("u8g_font_symb08");
01726 extern const u8g_fntpgm_uint8_t u8g_font_symb08r[] U8G_FONT_SECTION("u8g_font_symb08r");
01727 extern const u8g_fntpgm_uint8_t u8g_font_symb10[] U8G_FONT_SECTION("u8g_font_symb10");
01728 extern const u8g_fntpgm_uint8_t u8g_font_symb10r[] U8G_FONT_SECTION("u8g_font_symb10r");
01729 extern const u8g_fntpgm_uint8_t u8g_font_symb12[] U8G_FONT_SECTION("u8g_font_symb12");
01730 extern const u8g_fntpgm_uint8_t u8g_font_symb12r[] U8G_FONT_SECTION("u8g_font_symb12r");
01731 extern const u8g_fntpgm_uint8_t u8g_font_symb14[] U8G_FONT_SECTION("u8g_font_symb14");
01732 extern const u8g_fntpgm_uint8_t u8g_font_symb14r[] U8G_FONT_SECTION("u8g_font_symb14r");
01733 extern const u8g_fntpgm_uint8_t u8g_font_symb18[] U8G_FONT_SECTION("u8g_font_symb18");
01734 extern const u8g_fntpgm_uint8_t u8g_font_symb18r[] U8G_FONT_SECTION("u8g_font_symb18r");
01735 extern const u8g_fntpgm_uint8_t u8g_font_symb24[] U8G_FONT_SECTION("u8g_font_symb24");
01736 extern const u8g_fntpgm_uint8_t u8g_font_symb24r[] U8G_FONT_SECTION("u8g_font_symb24r");
01737 
01738 extern const u8g_fntpgm_uint8_t u8g_font_timB08[] U8G_FONT_SECTION("u8g_font_timB08");
01739 extern const u8g_fntpgm_uint8_t u8g_font_timB08r[] U8G_FONT_SECTION("u8g_font_timB08r");
01740 extern const u8g_fntpgm_uint8_t u8g_font_timB10[] U8G_FONT_SECTION("u8g_font_timB10");
01741 extern const u8g_fntpgm_uint8_t u8g_font_timB10r[] U8G_FONT_SECTION("u8g_font_timB10r");
01742 extern const u8g_fntpgm_uint8_t u8g_font_timB12[] U8G_FONT_SECTION("u8g_font_timB12");
01743 extern const u8g_fntpgm_uint8_t u8g_font_timB12r[] U8G_FONT_SECTION("u8g_font_timB12r");
01744 extern const u8g_fntpgm_uint8_t u8g_font_timB14[] U8G_FONT_SECTION("u8g_font_timB14");
01745 extern const u8g_fntpgm_uint8_t u8g_font_timB14r[] U8G_FONT_SECTION("u8g_font_timB14r");
01746 extern const u8g_fntpgm_uint8_t u8g_font_timB18[] U8G_FONT_SECTION("u8g_font_timB18");
01747 extern const u8g_fntpgm_uint8_t u8g_font_timB18r[] U8G_FONT_SECTION("u8g_font_timB18r");
01748 extern const u8g_fntpgm_uint8_t u8g_font_timB24[] U8G_FONT_SECTION("u8g_font_timB24");
01749 extern const u8g_fntpgm_uint8_t u8g_font_timB24r[] U8G_FONT_SECTION("u8g_font_timB24r");
01750 extern const u8g_fntpgm_uint8_t u8g_font_timB24n[] U8G_FONT_SECTION("u8g_font_timB24n");
01751 
01752 extern const u8g_fntpgm_uint8_t u8g_font_timR08[] U8G_FONT_SECTION("u8g_font_timR08");
01753 extern const u8g_fntpgm_uint8_t u8g_font_timR08r[] U8G_FONT_SECTION("u8g_font_timR08r");
01754 extern const u8g_fntpgm_uint8_t u8g_font_timR10[] U8G_FONT_SECTION("u8g_font_timR10");
01755 extern const u8g_fntpgm_uint8_t u8g_font_timR10r[] U8G_FONT_SECTION("u8g_font_timR10r");
01756 extern const u8g_fntpgm_uint8_t u8g_font_timR12[] U8G_FONT_SECTION("u8g_font_timR12");
01757 extern const u8g_fntpgm_uint8_t u8g_font_timR12r[] U8G_FONT_SECTION("u8g_font_timR12r");
01758 extern const u8g_fntpgm_uint8_t u8g_font_timR14[] U8G_FONT_SECTION("u8g_font_timR14");
01759 extern const u8g_fntpgm_uint8_t u8g_font_timR14r[] U8G_FONT_SECTION("u8g_font_timR14r");
01760 extern const u8g_fntpgm_uint8_t u8g_font_timR18[] U8G_FONT_SECTION("u8g_font_timR18");
01761 extern const u8g_fntpgm_uint8_t u8g_font_timR18r[] U8G_FONT_SECTION("u8g_font_timR18r");
01762 extern const u8g_fntpgm_uint8_t u8g_font_timR24[] U8G_FONT_SECTION("u8g_font_timR24");
01763 extern const u8g_fntpgm_uint8_t u8g_font_timR24r[] U8G_FONT_SECTION("u8g_font_timR24r");
01764 extern const u8g_fntpgm_uint8_t u8g_font_timR24n[] U8G_FONT_SECTION("u8g_font_timR24n");
01765 
01766 /* fontstruct */
01767 
01768 extern const u8g_fntpgm_uint8_t u8g_font_p01type[] U8G_FONT_SECTION("u8g_font_p01type");
01769 extern const u8g_fntpgm_uint8_t u8g_font_p01typer[] U8G_FONT_SECTION("u8g_font_p01typer");
01770 extern const u8g_fntpgm_uint8_t u8g_font_p01typen[] U8G_FONT_SECTION("u8g_font_p01typen");
01771 
01772 extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[] U8G_FONT_SECTION("u8g_font_lucasfont_alternate");
01773 extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[] U8G_FONT_SECTION("u8g_font_lucasfont_alternater");
01774 extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[] U8G_FONT_SECTION("u8g_font_lucasfont_alternaten");
01775 
01776 extern const u8g_fntpgm_uint8_t u8g_font_chikita[] U8G_FONT_SECTION("u8g_font_chikita");
01777 extern const u8g_fntpgm_uint8_t u8g_font_chikitar[] U8G_FONT_SECTION("u8g_font_chikitar");
01778 extern const u8g_fntpgm_uint8_t u8g_font_chikitan[] U8G_FONT_SECTION("u8g_font_chikitan");
01779 
01780 extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[] U8G_FONT_SECTION("u8g_font_pixelle_micro");
01781 extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[] U8G_FONT_SECTION("u8g_font_pixelle_micror");
01782 extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[] U8G_FONT_SECTION("u8g_font_pixelle_micron");
01783 
01784 extern const u8g_fntpgm_uint8_t u8g_font_trixel_square[] U8G_FONT_SECTION("u8g_font_trixel_square");
01785 extern const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[] U8G_FONT_SECTION("u8g_font_trixel_squarer");
01786 extern const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[] U8G_FONT_SECTION("u8g_font_trixel_squaren");
01787 
01788 extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[] U8G_FONT_SECTION("u8g_font_robot_de_niro");
01789 extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[] U8G_FONT_SECTION("u8g_font_robot_de_niror");
01790 extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[] U8G_FONT_SECTION("u8g_font_robot_de_niron");
01791 
01792 extern const u8g_fntpgm_uint8_t u8g_font_baby[] U8G_FONT_SECTION("u8g_font_baby");
01793 extern const u8g_fntpgm_uint8_t u8g_font_babyr[] U8G_FONT_SECTION("u8g_font_babyr");
01794 extern const u8g_fntpgm_uint8_t u8g_font_babyn[] U8G_FONT_SECTION("u8g_font_babyn");
01795 
01796 extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07[] U8G_FONT_SECTION("u8g_font_blipfest_07");
01797 extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[] U8G_FONT_SECTION("u8g_font_blipfest_07r");
01798 extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[] U8G_FONT_SECTION("u8g_font_blipfest_07n");
01799 
01800 
01801 
01802 #ifdef __cplusplus
01803 }
01804 #endif
01805 
01806 #endif /* _U8G_H */
01807 
01808