Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
Generated on Tue Jul 12 2022 17:30:57 by
1.7.2