Displays distance to start location on OLED screen.

Dependencies:   mbed

Committer:
iforce2d
Date:
Wed Mar 07 12:49:14 2018 +0000
Revision:
0:972874f31c98
First commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
iforce2d 0:972874f31c98 1 /*
iforce2d 0:972874f31c98 2
iforce2d 0:972874f31c98 3 u8g.h
iforce2d 0:972874f31c98 4
iforce2d 0:972874f31c98 5 Universal 8bit Graphics Library
iforce2d 0:972874f31c98 6
iforce2d 0:972874f31c98 7 Copyright (c) 2011, olikraus@gmail.com
iforce2d 0:972874f31c98 8 All rights reserved.
iforce2d 0:972874f31c98 9
iforce2d 0:972874f31c98 10 Redistribution and use in source and binary forms, with or without modification,
iforce2d 0:972874f31c98 11 are permitted provided that the following conditions are met:
iforce2d 0:972874f31c98 12
iforce2d 0:972874f31c98 13 * Redistributions of source code must retain the above copyright notice, this list
iforce2d 0:972874f31c98 14 of conditions and the following disclaimer.
iforce2d 0:972874f31c98 15
iforce2d 0:972874f31c98 16 * Redistributions in binary form must reproduce the above copyright notice, this
iforce2d 0:972874f31c98 17 list of conditions and the following disclaimer in the documentation and/or other
iforce2d 0:972874f31c98 18 materials provided with the distribution.
iforce2d 0:972874f31c98 19
iforce2d 0:972874f31c98 20 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
iforce2d 0:972874f31c98 21 CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
iforce2d 0:972874f31c98 22 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
iforce2d 0:972874f31c98 23 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
iforce2d 0:972874f31c98 24 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
iforce2d 0:972874f31c98 25 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
iforce2d 0:972874f31c98 26 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
iforce2d 0:972874f31c98 27 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
iforce2d 0:972874f31c98 28 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
iforce2d 0:972874f31c98 29 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
iforce2d 0:972874f31c98 30 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
iforce2d 0:972874f31c98 31 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
iforce2d 0:972874f31c98 32 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
iforce2d 0:972874f31c98 33
iforce2d 0:972874f31c98 34 */
iforce2d 0:972874f31c98 35
iforce2d 0:972874f31c98 36 #ifndef _U8G_H
iforce2d 0:972874f31c98 37 #define _U8G_H
iforce2d 0:972874f31c98 38
iforce2d 0:972874f31c98 39 /* uncomment the following line to support displays larger than 240x240 */
iforce2d 0:972874f31c98 40 //#define U8G_16BIT 1
iforce2d 0:972874f31c98 41
iforce2d 0:972874f31c98 42 /* comment the following line to generate more compact but interrupt unsafe code */
iforce2d 0:972874f31c98 43 #define U8G_INTERRUPT_SAFE 1
iforce2d 0:972874f31c98 44
iforce2d 0:972874f31c98 45
iforce2d 0:972874f31c98 46 #include <stddef.h>
iforce2d 0:972874f31c98 47
iforce2d 0:972874f31c98 48 #ifdef __18CXX
iforce2d 0:972874f31c98 49 typedef unsigned char uint8_t;
iforce2d 0:972874f31c98 50 typedef signed char int8_t;
iforce2d 0:972874f31c98 51 typedef unsigned short uint16_t;
iforce2d 0:972874f31c98 52 typedef signed short int16_t;
iforce2d 0:972874f31c98 53 #else
iforce2d 0:972874f31c98 54 #include <stdint.h>
iforce2d 0:972874f31c98 55 #endif
iforce2d 0:972874f31c98 56
iforce2d 0:972874f31c98 57 #if defined(__AVR__)
iforce2d 0:972874f31c98 58 #include <avr/pgmspace.h>
iforce2d 0:972874f31c98 59 #endif
iforce2d 0:972874f31c98 60
iforce2d 0:972874f31c98 61 /*
iforce2d 0:972874f31c98 62 use the com interface directly on any systems which are not AVR or ARDUINO
iforce2d 0:972874f31c98 63 */
iforce2d 0:972874f31c98 64 #if defined(__AVR__) || defined(ARDUINO)
iforce2d 0:972874f31c98 65 #define U8G_WITH_PINLIST
iforce2d 0:972874f31c98 66 #endif
iforce2d 0:972874f31c98 67
iforce2d 0:972874f31c98 68
iforce2d 0:972874f31c98 69 #ifdef __cplusplus
iforce2d 0:972874f31c98 70 extern "C" {
iforce2d 0:972874f31c98 71 #endif
iforce2d 0:972874f31c98 72
iforce2d 0:972874f31c98 73
iforce2d 0:972874f31c98 74 /*===============================================================*/
iforce2d 0:972874f31c98 75 #ifdef __GNUC__
iforce2d 0:972874f31c98 76 # define U8G_NOINLINE __attribute__((noinline))
iforce2d 0:972874f31c98 77 # define U8G_PURE __attribute__ ((pure))
iforce2d 0:972874f31c98 78 # define U8G_NOCOMMON __attribute__ ((nocommon))
iforce2d 0:972874f31c98 79 # define U8G_SECTION(name) __attribute__ ((section (name)))
iforce2d 0:972874f31c98 80 # if defined(__MSPGCC__)
iforce2d 0:972874f31c98 81 /* mspgcc does not have .progmem sections. Use -fdata-sections. */
iforce2d 0:972874f31c98 82 # define U8G_FONT_SECTION(name)
iforce2d 0:972874f31c98 83 # endif
iforce2d 0:972874f31c98 84 # if defined(__AVR__)
iforce2d 0:972874f31c98 85 # define U8G_FONT_SECTION(name) U8G_SECTION(".progmem." name)
iforce2d 0:972874f31c98 86 # endif
iforce2d 0:972874f31c98 87 #else
iforce2d 0:972874f31c98 88 # define U8G_NOINLINE
iforce2d 0:972874f31c98 89 # define U8G_PURE
iforce2d 0:972874f31c98 90 # define U8G_NOCOMMON
iforce2d 0:972874f31c98 91 # define U8G_SECTION(name)
iforce2d 0:972874f31c98 92 #endif
iforce2d 0:972874f31c98 93
iforce2d 0:972874f31c98 94 #ifndef U8G_FONT_SECTION
iforce2d 0:972874f31c98 95 # define U8G_FONT_SECTION(name)
iforce2d 0:972874f31c98 96 #endif
iforce2d 0:972874f31c98 97
iforce2d 0:972874f31c98 98
iforce2d 0:972874f31c98 99 /*===============================================================*/
iforce2d 0:972874f31c98 100 /* flash memory access */
iforce2d 0:972874f31c98 101
iforce2d 0:972874f31c98 102 #if defined(__AVR__)
iforce2d 0:972874f31c98 103 /* U8G_PROGMEM is used by the XBM example */
iforce2d 0:972874f31c98 104 #define U8G_PROGMEM U8G_SECTION(".progmem.data")
iforce2d 0:972874f31c98 105 typedef uint8_t PROGMEM u8g_pgm_uint8_t;
iforce2d 0:972874f31c98 106 typedef uint8_t u8g_fntpgm_uint8_t;
iforce2d 0:972874f31c98 107 #define u8g_pgm_read(adr) pgm_read_byte_near(adr)
iforce2d 0:972874f31c98 108 #define U8G_PSTR(s) ((u8g_pgm_uint8_t *)PSTR(s))
iforce2d 0:972874f31c98 109
iforce2d 0:972874f31c98 110 #else
iforce2d 0:972874f31c98 111
iforce2d 0:972874f31c98 112 #define U8G_PROGMEM
iforce2d 0:972874f31c98 113 #define PROGMEM
iforce2d 0:972874f31c98 114 typedef uint8_t u8g_pgm_uint8_t;
iforce2d 0:972874f31c98 115 typedef uint8_t u8g_fntpgm_uint8_t;
iforce2d 0:972874f31c98 116 #define u8g_pgm_read(adr) (*(const u8g_pgm_uint8_t *)(adr))
iforce2d 0:972874f31c98 117 #define U8G_PSTR(s) ((u8g_pgm_uint8_t *)(s))
iforce2d 0:972874f31c98 118
iforce2d 0:972874f31c98 119 #endif
iforce2d 0:972874f31c98 120
iforce2d 0:972874f31c98 121 /*===============================================================*/
iforce2d 0:972874f31c98 122 /* interrupt safe code */
iforce2d 0:972874f31c98 123 #if defined(U8G_INTERRUPT_SAFE)
iforce2d 0:972874f31c98 124 # if defined(__AVR__)
iforce2d 0:972874f31c98 125 extern uint8_t global_SREG_backup; /* u8g_state.c */
iforce2d 0:972874f31c98 126 # define U8G_ATOMIC_START() do { global_SREG_backup = SREG; cli(); } while(0)
iforce2d 0:972874f31c98 127 # define U8G_ATOMIC_END() SREG = global_SREG_backup
iforce2d 0:972874f31c98 128 # define U8G_ATOMIC_OR(ptr, val) do { uint8_t tmpSREG = SREG; cli(); (*(ptr) |= (val)); SREG = tmpSREG; } while(0)
iforce2d 0:972874f31c98 129 # define U8G_ATOMIC_AND(ptr, val) do { uint8_t tmpSREG = SREG; cli(); (*(ptr) &= (val)); SREG = tmpSREG; } while(0)
iforce2d 0:972874f31c98 130 # else
iforce2d 0:972874f31c98 131 # define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val))
iforce2d 0:972874f31c98 132 # define U8G_ATOMIC_AND(ptr, val) (*(ptr) &= (val))
iforce2d 0:972874f31c98 133 # define U8G_ATOMIC_START()
iforce2d 0:972874f31c98 134 # define U8G_ATOMIC_END()
iforce2d 0:972874f31c98 135 # endif /* __AVR__ */
iforce2d 0:972874f31c98 136 #else
iforce2d 0:972874f31c98 137 # define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val))
iforce2d 0:972874f31c98 138 # define U8G_ATOMIC_AND(ptr, val) (*(ptr) &= (val))
iforce2d 0:972874f31c98 139 # define U8G_ATOMIC_START()
iforce2d 0:972874f31c98 140 # define U8G_ATOMIC_END()
iforce2d 0:972874f31c98 141 #endif /* U8G_INTERRUPT_SAFE */
iforce2d 0:972874f31c98 142
iforce2d 0:972874f31c98 143
iforce2d 0:972874f31c98 144 /*===============================================================*/
iforce2d 0:972874f31c98 145 /* forward */
iforce2d 0:972874f31c98 146 typedef struct _u8g_t u8g_t;
iforce2d 0:972874f31c98 147 typedef struct _u8g_dev_t u8g_dev_t;
iforce2d 0:972874f31c98 148
iforce2d 0:972874f31c98 149 typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t;
iforce2d 0:972874f31c98 150 typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t;
iforce2d 0:972874f31c98 151 typedef struct _u8g_box_t u8g_box_t;
iforce2d 0:972874f31c98 152 typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_t;
iforce2d 0:972874f31c98 153
iforce2d 0:972874f31c98 154
iforce2d 0:972874f31c98 155 /*===============================================================*/
iforce2d 0:972874f31c98 156 /* generic */
iforce2d 0:972874f31c98 157 #if defined(U8G_16BIT)
iforce2d 0:972874f31c98 158 typedef uint16_t u8g_uint_t;
iforce2d 0:972874f31c98 159 typedef int16_t u8g_int_t;
iforce2d 0:972874f31c98 160 #else
iforce2d 0:972874f31c98 161 typedef uint8_t u8g_uint_t;
iforce2d 0:972874f31c98 162 typedef int8_t u8g_int_t;
iforce2d 0:972874f31c98 163 #endif
iforce2d 0:972874f31c98 164
iforce2d 0:972874f31c98 165 #ifdef OBSOLETE
iforce2d 0:972874f31c98 166 struct _u8g_box_t
iforce2d 0:972874f31c98 167 {
iforce2d 0:972874f31c98 168 u8g_uint_t x0, y0, x1, y1;
iforce2d 0:972874f31c98 169 };
iforce2d 0:972874f31c98 170 typedef struct _u8g_box_t u8g_box_t;
iforce2d 0:972874f31c98 171 #endif /* OBSOLETE */
iforce2d 0:972874f31c98 172
iforce2d 0:972874f31c98 173
iforce2d 0:972874f31c98 174 /*===============================================================*/
iforce2d 0:972874f31c98 175 /* device structure */
iforce2d 0:972874f31c98 176
iforce2d 0:972874f31c98 177 #ifdef __XC8
iforce2d 0:972874f31c98 178 /* device prototype */
iforce2d 0:972874f31c98 179 typedef uint8_t (*u8g_dev_fnptr)(void *u8g, void *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 180
iforce2d 0:972874f31c98 181 /* com prototype */
iforce2d 0:972874f31c98 182 typedef uint8_t (*u8g_com_fnptr)(void *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
iforce2d 0:972874f31c98 183 #else
iforce2d 0:972874f31c98 184 /* device prototype */
iforce2d 0:972874f31c98 185 typedef uint8_t (*u8g_dev_fnptr)(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 186
iforce2d 0:972874f31c98 187 /* com prototype */
iforce2d 0:972874f31c98 188 typedef uint8_t (*u8g_com_fnptr)(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
iforce2d 0:972874f31c98 189 #endif
iforce2d 0:972874f31c98 190
iforce2d 0:972874f31c98 191
iforce2d 0:972874f31c98 192
iforce2d 0:972874f31c98 193 struct _u8g_dev_t
iforce2d 0:972874f31c98 194 {
iforce2d 0:972874f31c98 195 u8g_dev_fnptr dev_fn; /* device procedure */
iforce2d 0:972874f31c98 196 void *dev_mem; /* device memory */
iforce2d 0:972874f31c98 197 u8g_com_fnptr com_fn; /* communication procedure */
iforce2d 0:972874f31c98 198 };
iforce2d 0:972874f31c98 199
iforce2d 0:972874f31c98 200
iforce2d 0:972874f31c98 201 /*===============================================================*/
iforce2d 0:972874f31c98 202 /* device list */
iforce2d 0:972874f31c98 203
iforce2d 0:972874f31c98 204 /* Size: 128x64 SDL, u8g_dev_sdl.c */
iforce2d 0:972874f31c98 205 extern u8g_dev_t u8g_dev_sdl_1bit;
iforce2d 0:972874f31c98 206 extern u8g_dev_t u8g_dev_sdl_1bit_h;
iforce2d 0:972874f31c98 207 extern u8g_dev_t u8g_dev_sdl_2bit;
iforce2d 0:972874f31c98 208 extern u8g_dev_t u8g_dev_sdl_2bit_double_mem;
iforce2d 0:972874f31c98 209 extern u8g_dev_t u8g_dev_sdl_8bit;
iforce2d 0:972874f31c98 210 extern u8g_dev_t u8g_dev_sdl_hicolor;
iforce2d 0:972874f31c98 211 extern u8g_dev_t u8g_dev_sdl_fullcolor;
iforce2d 0:972874f31c98 212 int u8g_sdl_get_key(void);
iforce2d 0:972874f31c98 213
iforce2d 0:972874f31c98 214 /* Size: 70x30 monochrom, stdout */
iforce2d 0:972874f31c98 215 extern u8g_dev_t u8g_dev_stdout;
iforce2d 0:972874f31c98 216
iforce2d 0:972874f31c98 217 /* Size: monochrom, writes "u8g.pbm" */
iforce2d 0:972874f31c98 218 extern u8g_dev_t u8g_dev_pbm;
iforce2d 0:972874f31c98 219 extern u8g_dev_t u8g_dev_pbm_8h1;
iforce2d 0:972874f31c98 220 extern u8g_dev_t u8g_dev_pbm_8h2; /* grayscale simulation */
iforce2d 0:972874f31c98 221
iforce2d 0:972874f31c98 222 /* Size: 128x64 monochrom, no output, used for performance measure */
iforce2d 0:972874f31c98 223 extern u8g_dev_t u8g_dev_gprof;
iforce2d 0:972874f31c98 224
iforce2d 0:972874f31c98 225 /* Display: EA DOGS102, Size: 102x64 monochrom */
iforce2d 0:972874f31c98 226 extern u8g_dev_t u8g_dev_uc1701_dogs102_sw_spi;
iforce2d 0:972874f31c98 227 extern u8g_dev_t u8g_dev_uc1701_dogs102_hw_spi;
iforce2d 0:972874f31c98 228
iforce2d 0:972874f31c98 229 extern u8g_dev_t u8g_dev_uc1701_dogs102_2x_sw_spi;
iforce2d 0:972874f31c98 230 extern u8g_dev_t u8g_dev_uc1701_dogs102_2x_hw_spi;
iforce2d 0:972874f31c98 231
iforce2d 0:972874f31c98 232 /* Display: Mini12864 (dealextreme), Size: 128x64 monochrom */
iforce2d 0:972874f31c98 233 extern u8g_dev_t u8g_dev_uc1701_mini12864_sw_spi;
iforce2d 0:972874f31c98 234 extern u8g_dev_t u8g_dev_uc1701_mini12864_hw_spi;
iforce2d 0:972874f31c98 235
iforce2d 0:972874f31c98 236 extern u8g_dev_t u8g_dev_uc1701_mini12864_2x_sw_spi;
iforce2d 0:972874f31c98 237 extern u8g_dev_t u8g_dev_uc1701_mini12864_2x_hw_spi;
iforce2d 0:972874f31c98 238
iforce2d 0:972874f31c98 239 /* Display: EA DOGM132, Size: 128x32 monochrom */
iforce2d 0:972874f31c98 240 extern u8g_dev_t u8g_dev_st7565_dogm132_sw_spi;
iforce2d 0:972874f31c98 241 extern u8g_dev_t u8g_dev_st7565_dogm132_hw_spi;
iforce2d 0:972874f31c98 242
iforce2d 0:972874f31c98 243 /* Display: EA DOGM128, Size: 128x64 monochrom */
iforce2d 0:972874f31c98 244 extern u8g_dev_t u8g_dev_st7565_dogm128_sw_spi;
iforce2d 0:972874f31c98 245 extern u8g_dev_t u8g_dev_st7565_dogm128_hw_spi;
iforce2d 0:972874f31c98 246 extern u8g_dev_t u8g_dev_st7565_dogm128_parallel;
iforce2d 0:972874f31c98 247
iforce2d 0:972874f31c98 248 extern u8g_dev_t u8g_dev_st7565_dogm128_2x_sw_spi;
iforce2d 0:972874f31c98 249 extern u8g_dev_t u8g_dev_st7565_dogm128_2x_hw_spi;
iforce2d 0:972874f31c98 250 extern u8g_dev_t u8g_dev_st7565_dogm128_2x_parallel;
iforce2d 0:972874f31c98 251
iforce2d 0:972874f31c98 252 /* Display: Topway LM6059 128x64 (Adafruit) */
iforce2d 0:972874f31c98 253 extern u8g_dev_t u8g_dev_st7565_lm6059_sw_spi;
iforce2d 0:972874f31c98 254 extern u8g_dev_t u8g_dev_st7565_lm6059_hw_spi;
iforce2d 0:972874f31c98 255 extern u8g_dev_t u8g_dev_st7565_lm6059_2x_sw_spi;
iforce2d 0:972874f31c98 256 extern u8g_dev_t u8g_dev_st7565_lm6059_2x_hw_spi;
iforce2d 0:972874f31c98 257 /* Display: Topway LM6063 128x64 */
iforce2d 0:972874f31c98 258 extern u8g_dev_t u8g_dev_st7565_lm6063_sw_spi;
iforce2d 0:972874f31c98 259 extern u8g_dev_t u8g_dev_st7565_lm6063_hw_spi;
iforce2d 0:972874f31c98 260 extern u8g_dev_t u8g_dev_st7565_lm6063_2x_sw_spi;
iforce2d 0:972874f31c98 261 extern u8g_dev_t u8g_dev_st7565_lm6063_2x_hw_spi;
iforce2d 0:972874f31c98 262 /* Display: Newhaven NHD-C12864 */
iforce2d 0:972874f31c98 263 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_sw_spi;
iforce2d 0:972874f31c98 264 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_hw_spi;
iforce2d 0:972874f31c98 265 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_sw_spi;
iforce2d 0:972874f31c98 266 extern u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_hw_spi;
iforce2d 0:972874f31c98 267
iforce2d 0:972874f31c98 268 /* Display: Newhaven NHD-C12832 */
iforce2d 0:972874f31c98 269 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_sw_spi;
iforce2d 0:972874f31c98 270 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_spi;
iforce2d 0:972874f31c98 271 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_parallel;
iforce2d 0:972874f31c98 272 extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_usart_spi;
iforce2d 0:972874f31c98 273
iforce2d 0:972874f31c98 274 /* Display: Displaytech 64128N */
iforce2d 0:972874f31c98 275 extern u8g_dev_t u8g_dev_st7565_64128n_sw_spi;
iforce2d 0:972874f31c98 276 extern u8g_dev_t u8g_dev_st7565_64128n_hw_spi;
iforce2d 0:972874f31c98 277 extern u8g_dev_t u8g_dev_st7565_64128n_parallel;
iforce2d 0:972874f31c98 278
iforce2d 0:972874f31c98 279 extern u8g_dev_t u8g_dev_st7565_64128n_2x_sw_spi;
iforce2d 0:972874f31c98 280 extern u8g_dev_t u8g_dev_st7565_64128n_2x_hw_spi;
iforce2d 0:972874f31c98 281 extern u8g_dev_t u8g_dev_st7565_64128n_2x_parallel;
iforce2d 0:972874f31c98 282
iforce2d 0:972874f31c98 283 /* Display: LCD-AG-C128032R-DIW W/KK E6 PBF */
iforce2d 0:972874f31c98 284 extern u8g_dev_t u8g_dev_uc1601_c128032_sw_spi;
iforce2d 0:972874f31c98 285 extern u8g_dev_t u8g_dev_uc1601_c128032_hw_spi;
iforce2d 0:972874f31c98 286
iforce2d 0:972874f31c98 287 extern u8g_dev_t u8g_dev_uc1601_c128032_2x_sw_spi;
iforce2d 0:972874f31c98 288 extern u8g_dev_t u8g_dev_uc1601_c128032_2x_hw_spi;
iforce2d 0:972874f31c98 289
iforce2d 0:972874f31c98 290 /* dfrobot 128x64 Graphic LCD (SKU:FIT0021) */
iforce2d 0:972874f31c98 291 extern u8g_dev_t u8g_dev_st7920_128x64_sw_spi;
iforce2d 0:972874f31c98 292 extern u8g_dev_t u8g_dev_st7920_128x64_hw_spi;
iforce2d 0:972874f31c98 293 extern u8g_dev_t u8g_dev_st7920_128x64_8bit;
iforce2d 0:972874f31c98 294 extern u8g_dev_t u8g_dev_st7920_128x64_custom;
iforce2d 0:972874f31c98 295
iforce2d 0:972874f31c98 296 extern u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi;
iforce2d 0:972874f31c98 297 extern u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi;
iforce2d 0:972874f31c98 298 extern u8g_dev_t u8g_dev_st7920_128x64_4x_8bit;
iforce2d 0:972874f31c98 299 extern u8g_dev_t u8g_dev_st7920_128x64_4x_custom;
iforce2d 0:972874f31c98 300
iforce2d 0:972874f31c98 301 /* NHD-19232WG */
iforce2d 0:972874f31c98 302 extern u8g_dev_t u8g_dev_st7920_192x32_sw_spi;
iforce2d 0:972874f31c98 303 extern u8g_dev_t u8g_dev_st7920_192x32_hw_spi;
iforce2d 0:972874f31c98 304 extern u8g_dev_t u8g_dev_st7920_192x32_8bit;
iforce2d 0:972874f31c98 305
iforce2d 0:972874f31c98 306 extern u8g_dev_t u8g_dev_st7920_192x32_4x_sw_spi;
iforce2d 0:972874f31c98 307 extern u8g_dev_t u8g_dev_st7920_192x32_4x_hw_spi;
iforce2d 0:972874f31c98 308 extern u8g_dev_t u8g_dev_st7920_192x32_4x_8bit;
iforce2d 0:972874f31c98 309
iforce2d 0:972874f31c98 310 /* CrystalFontz CFAG20232 */
iforce2d 0:972874f31c98 311 extern u8g_dev_t u8g_dev_st7920_202x32_sw_spi;
iforce2d 0:972874f31c98 312 extern u8g_dev_t u8g_dev_st7920_202x32_hw_spi;
iforce2d 0:972874f31c98 313 extern u8g_dev_t u8g_dev_st7920_202x32_8bit;
iforce2d 0:972874f31c98 314
iforce2d 0:972874f31c98 315 extern u8g_dev_t u8g_dev_st7920_202x32_4x_sw_spi;
iforce2d 0:972874f31c98 316 extern u8g_dev_t u8g_dev_st7920_202x32_4x_hw_spi;
iforce2d 0:972874f31c98 317 extern u8g_dev_t u8g_dev_st7920_202x32_4x_8bit;
iforce2d 0:972874f31c98 318
iforce2d 0:972874f31c98 319 /* LC7981 160x80 display */
iforce2d 0:972874f31c98 320 extern u8g_dev_t u8g_dev_lc7981_160x80_8bit;
iforce2d 0:972874f31c98 321 /* LC7981 240x64 display */
iforce2d 0:972874f31c98 322 extern u8g_dev_t u8g_dev_lc7981_240x64_8bit;
iforce2d 0:972874f31c98 323 /* LC7981 240x128 display */
iforce2d 0:972874f31c98 324 extern u8g_dev_t u8g_dev_lc7981_240x128_8bit;
iforce2d 0:972874f31c98 325 /* LC7981 320x64 display */
iforce2d 0:972874f31c98 326 extern u8g_dev_t u8g_dev_lc7981_320x64_8bit;
iforce2d 0:972874f31c98 327
iforce2d 0:972874f31c98 328 /* T6963, all t6963 devices have double page (2x) */
iforce2d 0:972874f31c98 329 extern u8g_dev_t u8g_dev_t6963_240x128_8bit;
iforce2d 0:972874f31c98 330 extern u8g_dev_t u8g_dev_t6963_240x64_8bit;
iforce2d 0:972874f31c98 331 extern u8g_dev_t u8g_dev_t6963_128x64_8bit;
iforce2d 0:972874f31c98 332
iforce2d 0:972874f31c98 333 /* Display: EA DOGXL160, Size: 160x104 monochrom & gray level */
iforce2d 0:972874f31c98 334 extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_sw_spi;
iforce2d 0:972874f31c98 335 extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_hw_spi;
iforce2d 0:972874f31c98 336 extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_sw_spi;
iforce2d 0:972874f31c98 337 extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_hw_spi;
iforce2d 0:972874f31c98 338
iforce2d 0:972874f31c98 339 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_sw_spi;
iforce2d 0:972874f31c98 340 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_hw_spi;
iforce2d 0:972874f31c98 341 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_sw_spi;
iforce2d 0:972874f31c98 342 extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_hw_spi;
iforce2d 0:972874f31c98 343
iforce2d 0:972874f31c98 344 /* Display: Generic KS0108b, Size: 128x64 monochrom */
iforce2d 0:972874f31c98 345 extern u8g_dev_t u8g_dev_ks0108_128x64; /* official Arduino Library interface */
iforce2d 0:972874f31c98 346 extern u8g_dev_t u8g_dev_ks0108_128x64_fast; /* faster, but uses private tables from the Arduino Library */
iforce2d 0:972874f31c98 347
iforce2d 0:972874f31c98 348 /* Nokia 84x48 Display with PCD8544 */
iforce2d 0:972874f31c98 349 extern u8g_dev_t u8g_dev_pcd8544_84x48_sw_spi;
iforce2d 0:972874f31c98 350 extern u8g_dev_t u8g_dev_pcd8544_84x48_hw_spi;
iforce2d 0:972874f31c98 351 extern u8g_dev_t u8g_dev_tls8204_84x48_sw_spi;
iforce2d 0:972874f31c98 352
iforce2d 0:972874f31c98 353 /* Nokia 96x65 Display with PCF8812 */
iforce2d 0:972874f31c98 354 extern u8g_dev_t u8g_dev_pcf8812_96x65_sw_spi;
iforce2d 0:972874f31c98 355 extern u8g_dev_t u8g_dev_pcf8812_96x65_hw_spi;
iforce2d 0:972874f31c98 356
iforce2d 0:972874f31c98 357 /* NHD-2.7-12864UCY3 OLED Display with SSD1325 Controller */
iforce2d 0:972874f31c98 358 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_sw_spi;
iforce2d 0:972874f31c98 359 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_hw_spi;
iforce2d 0:972874f31c98 360 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_parallel;
iforce2d 0:972874f31c98 361 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_sw_spi;
iforce2d 0:972874f31c98 362 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_hw_spi;
iforce2d 0:972874f31c98 363
iforce2d 0:972874f31c98 364 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi;
iforce2d 0:972874f31c98 365 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi;
iforce2d 0:972874f31c98 366 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel;
iforce2d 0:972874f31c98 367 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi;
iforce2d 0:972874f31c98 368 extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi;
iforce2d 0:972874f31c98 369
iforce2d 0:972874f31c98 370 /* LY120 OLED with SSD1327 Controller (tested with Seeedstudio module) */
iforce2d 0:972874f31c98 371 extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_sw_spi;
iforce2d 0:972874f31c98 372 extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_hw_spi;
iforce2d 0:972874f31c98 373 extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_i2c;
iforce2d 0:972874f31c98 374
iforce2d 0:972874f31c98 375 extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_sw_spi;
iforce2d 0:972874f31c98 376 extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_hw_spi;
iforce2d 0:972874f31c98 377 extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_i2c;
iforce2d 0:972874f31c98 378
iforce2d 0:972874f31c98 379 /* NHD-3.12-25664 OLED Display with SSD1322 Controller */
iforce2d 0:972874f31c98 380 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_sw_spi;
iforce2d 0:972874f31c98 381 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_hw_spi;
iforce2d 0:972874f31c98 382 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_parallel;
iforce2d 0:972874f31c98 383 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi;
iforce2d 0:972874f31c98 384 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi;
iforce2d 0:972874f31c98 385
iforce2d 0:972874f31c98 386 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_sw_spi;
iforce2d 0:972874f31c98 387 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_hw_spi;
iforce2d 0:972874f31c98 388 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_parallel;
iforce2d 0:972874f31c98 389 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi;
iforce2d 0:972874f31c98 390 extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi;
iforce2d 0:972874f31c98 391
iforce2d 0:972874f31c98 392 /* OLED 128x64 Display with SSD1306 Controller */
iforce2d 0:972874f31c98 393 extern u8g_dev_t u8g_dev_ssd1306_128x64_sw_spi;
iforce2d 0:972874f31c98 394 extern u8g_dev_t u8g_dev_ssd1306_128x64_hw_spi;
iforce2d 0:972874f31c98 395 extern u8g_dev_t u8g_dev_ssd1306_128x64_i2c;
iforce2d 0:972874f31c98 396
iforce2d 0:972874f31c98 397 extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_sw_spi;
iforce2d 0:972874f31c98 398 extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_hw_spi;
iforce2d 0:972874f31c98 399 extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c;
iforce2d 0:972874f31c98 400
iforce2d 0:972874f31c98 401 /* OLED 128x64 Display with SSD1309 Controller */
iforce2d 0:972874f31c98 402 extern u8g_dev_t u8g_dev_ssd1309_128x64_sw_spi;
iforce2d 0:972874f31c98 403 extern u8g_dev_t u8g_dev_ssd1309_128x64_hw_spi;
iforce2d 0:972874f31c98 404 extern u8g_dev_t u8g_dev_ssd1309_128x64_i2c;
iforce2d 0:972874f31c98 405
iforce2d 0:972874f31c98 406 /* OLED 128x32 Display with SSD1306 Controller */
iforce2d 0:972874f31c98 407 extern u8g_dev_t u8g_dev_ssd1306_128x32_sw_spi;
iforce2d 0:972874f31c98 408 extern u8g_dev_t u8g_dev_ssd1306_128x32_hw_spi;
iforce2d 0:972874f31c98 409 extern u8g_dev_t u8g_dev_ssd1306_128x32_i2c;
iforce2d 0:972874f31c98 410
iforce2d 0:972874f31c98 411 extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_sw_spi;
iforce2d 0:972874f31c98 412 extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_hw_spi;
iforce2d 0:972874f31c98 413 extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_i2c;
iforce2d 0:972874f31c98 414
iforce2d 0:972874f31c98 415 /* experimental 65K TFT with st7687 controller */
iforce2d 0:972874f31c98 416 extern u8g_dev_t u8g_dev_st7687_c144mvgd_sw_spi;
iforce2d 0:972874f31c98 417 extern u8g_dev_t u8g_dev_st7687_c144mvgd_8bit;
iforce2d 0:972874f31c98 418
iforce2d 0:972874f31c98 419 /* SBN1661/SED1520 display with 122x32 */
iforce2d 0:972874f31c98 420 extern u8g_dev_t u8g_dev_sbn1661_122x32;
iforce2d 0:972874f31c98 421
iforce2d 0:972874f31c98 422 /* flip disc matrix */
iforce2d 0:972874f31c98 423 extern u8g_dev_t u8g_dev_flipdisc_2x7;
iforce2d 0:972874f31c98 424 void u8g_SetFlipDiscCallback(u8g_t *u8g, void (*cb)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2));
iforce2d 0:972874f31c98 425
iforce2d 0:972874f31c98 426 /* ILI9325D based TFT */
iforce2d 0:972874f31c98 427 extern u8g_dev_t u8g_dev_ili9325d_320x240_8bit;
iforce2d 0:972874f31c98 428
iforce2d 0:972874f31c98 429
iforce2d 0:972874f31c98 430 /* SSD1351 OLED (breakout board from http://www.kickstarter.com/projects/ilsoftltd/colour-oled-breakout-board) */
iforce2d 0:972874f31c98 431 extern u8g_dev_t u8g_dev_ssd1351_128x128_332_sw_spi;
iforce2d 0:972874f31c98 432 extern u8g_dev_t u8g_dev_ssd1351_128x128_332_hw_spi;
iforce2d 0:972874f31c98 433 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_sw_spi;
iforce2d 0:972874f31c98 434 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_hw_spi;
iforce2d 0:972874f31c98 435 extern u8g_dev_t u8g_dev_ssd1351_128x128_idx_sw_spi;
iforce2d 0:972874f31c98 436 extern u8g_dev_t u8g_dev_ssd1351_128x128_idx_hw_spi;
iforce2d 0:972874f31c98 437 extern u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_sw_spi;
iforce2d 0:972874f31c98 438 extern u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_hw_spi;
iforce2d 0:972874f31c98 439 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi;
iforce2d 0:972874f31c98 440 extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi;
iforce2d 0:972874f31c98 441
iforce2d 0:972874f31c98 442 /* SSD1351 OLED (Freetronics, GPIOs set to high level) */
iforce2d 0:972874f31c98 443 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_332_sw_spi;
iforce2d 0:972874f31c98 444 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_332_hw_spi;
iforce2d 0:972874f31c98 445 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_sw_spi;
iforce2d 0:972874f31c98 446 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_hw_spi;
iforce2d 0:972874f31c98 447 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_sw_spi;
iforce2d 0:972874f31c98 448 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_hw_spi;
iforce2d 0:972874f31c98 449 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi;
iforce2d 0:972874f31c98 450 extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi;
iforce2d 0:972874f31c98 451
iforce2d 0:972874f31c98 452 /* HT1632 */
iforce2d 0:972874f31c98 453 extern u8g_dev_t u8g_dev_ht1632_24x16;
iforce2d 0:972874f31c98 454
iforce2d 0:972874f31c98 455 /* A2 Micro Printer */
iforce2d 0:972874f31c98 456 extern u8g_dev_t u8g_dev_a2_micro_printer_384x240;
iforce2d 0:972874f31c98 457 extern u8g_dev_t u8g_dev_a2_micro_printer_192x120_ds;
iforce2d 0:972874f31c98 458
iforce2d 0:972874f31c98 459 /* u8g_virtual_screen.c */
iforce2d 0:972874f31c98 460 extern u8g_dev_t u8g_dev_vs;
iforce2d 0:972874f31c98 461
iforce2d 0:972874f31c98 462
iforce2d 0:972874f31c98 463 /*===============================================================*/
iforce2d 0:972874f31c98 464 /* device messages */
iforce2d 0:972874f31c98 465
iforce2d 0:972874f31c98 466 struct _u8g_dev_arg_pixel_t
iforce2d 0:972874f31c98 467 {
iforce2d 0:972874f31c98 468 u8g_uint_t x, y; /* will be modified */
iforce2d 0:972874f31c98 469 uint8_t pixel; /* will be modified, pixel sequence or transparency value */
iforce2d 0:972874f31c98 470 uint8_t dir;
iforce2d 0:972874f31c98 471 uint8_t color; /* color or index value, red value for true color mode */
iforce2d 0:972874f31c98 472 uint8_t hi_color; /* high byte for 64K color mode, low byte is in "color", green value for true color mode */
iforce2d 0:972874f31c98 473 uint8_t blue; /* blue value in true color mode */
iforce2d 0:972874f31c98 474 };
iforce2d 0:972874f31c98 475 /* typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; */ /* forward decl */
iforce2d 0:972874f31c98 476
iforce2d 0:972874f31c98 477 /* range for r,g,b: 0..255 */
iforce2d 0:972874f31c98 478 #define U8G_GET_HICOLOR_BY_RGB(r,g,b) (((uint16_t)((r)&0x0f8))<<8)|(((uint16_t)((g)&0x0fc))<<3)|(((uint16_t)((b)>>3)))
iforce2d 0:972874f31c98 479
iforce2d 0:972874f31c98 480 struct _u8g_dev_arg_bbx_t
iforce2d 0:972874f31c98 481 {
iforce2d 0:972874f31c98 482 u8g_uint_t x, y, w, h;
iforce2d 0:972874f31c98 483 };
iforce2d 0:972874f31c98 484 /* typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; */ /* forward decl */
iforce2d 0:972874f31c98 485
iforce2d 0:972874f31c98 486 struct _u8g_box_t
iforce2d 0:972874f31c98 487 {
iforce2d 0:972874f31c98 488 u8g_uint_t x0, y0, x1, y1;
iforce2d 0:972874f31c98 489 };
iforce2d 0:972874f31c98 490 /* typedef struct _u8g_box_t u8g_box_t; */ /* forward decl */
iforce2d 0:972874f31c98 491
iforce2d 0:972874f31c98 492 struct _u8g_dev_arg_irgb_t
iforce2d 0:972874f31c98 493 {
iforce2d 0:972874f31c98 494 u8g_uint_t idx, r, g, b; /* index with rgb value */
iforce2d 0:972874f31c98 495 };
iforce2d 0:972874f31c98 496 /* typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_t; */ /* forward decl */
iforce2d 0:972874f31c98 497
iforce2d 0:972874f31c98 498
iforce2d 0:972874f31c98 499
iforce2d 0:972874f31c98 500 #define U8G_DEV_MSG_INIT 10
iforce2d 0:972874f31c98 501 #define U8G_DEV_MSG_STOP 11
iforce2d 0:972874f31c98 502
iforce2d 0:972874f31c98 503 /* arg: pointer to uint8_t, contranst value between 0 and 255 */
iforce2d 0:972874f31c98 504 #define U8G_DEV_MSG_CONTRAST 15
iforce2d 0:972874f31c98 505
iforce2d 0:972874f31c98 506 #define U8G_DEV_MSG_SLEEP_ON 16
iforce2d 0:972874f31c98 507 #define U8G_DEV_MSG_SLEEP_OFF 17
iforce2d 0:972874f31c98 508
iforce2d 0:972874f31c98 509 #define U8G_DEV_MSG_PAGE_FIRST 20
iforce2d 0:972874f31c98 510 #define U8G_DEV_MSG_PAGE_NEXT 21
iforce2d 0:972874f31c98 511
iforce2d 0:972874f31c98 512 /* arg: u8g_dev_arg_bbx_t * */
iforce2d 0:972874f31c98 513 /* new algorithm with U8G_DEV_MSG_GET_PAGE_BOX makes this msg obsolete */
iforce2d 0:972874f31c98 514 /* #define U8G_DEV_MSG_IS_BBX_INTERSECTION 22 */
iforce2d 0:972874f31c98 515
iforce2d 0:972874f31c98 516 /* arg: u8g_box_t *, fill structure with current page properties */
iforce2d 0:972874f31c98 517 #define U8G_DEV_MSG_GET_PAGE_BOX 23
iforce2d 0:972874f31c98 518
iforce2d 0:972874f31c98 519 /*
iforce2d 0:972874f31c98 520 #define U8G_DEV_MSG_PRIMITIVE_START 30
iforce2d 0:972874f31c98 521 #define U8G_DEV_MSG_PRIMITIVE_END 31
iforce2d 0:972874f31c98 522 */
iforce2d 0:972874f31c98 523
iforce2d 0:972874f31c98 524 /* arg: u8g_dev_arg_pixel_t * */
iforce2d 0:972874f31c98 525 #define U8G_DEV_MSG_SET_TPIXEL 44
iforce2d 0:972874f31c98 526 #define U8G_DEV_MSG_SET_4TPIXEL 45
iforce2d 0:972874f31c98 527
iforce2d 0:972874f31c98 528 #define U8G_DEV_MSG_SET_PIXEL 50
iforce2d 0:972874f31c98 529 #define U8G_DEV_MSG_SET_8PIXEL 59
iforce2d 0:972874f31c98 530
iforce2d 0:972874f31c98 531 #define U8G_DEV_MSG_SET_COLOR_ENTRY 60
iforce2d 0:972874f31c98 532
iforce2d 0:972874f31c98 533 #define U8G_DEV_MSG_SET_XY_CB 61
iforce2d 0:972874f31c98 534
iforce2d 0:972874f31c98 535 #define U8G_DEV_MSG_GET_WIDTH 70
iforce2d 0:972874f31c98 536 #define U8G_DEV_MSG_GET_HEIGHT 71
iforce2d 0:972874f31c98 537 #define U8G_DEV_MSG_GET_MODE 72
iforce2d 0:972874f31c98 538
iforce2d 0:972874f31c98 539 /*===============================================================*/
iforce2d 0:972874f31c98 540 /* device modes */
iforce2d 0:972874f31c98 541 #define U8G_MODE(is_index_mode, is_color, bits_per_pixel) (((is_index_mode)<<6) | ((is_color)<<5)|(bits_per_pixel))
iforce2d 0:972874f31c98 542
iforce2d 0:972874f31c98 543 #define U8G_MODE_UNKNOWN 0
iforce2d 0:972874f31c98 544 #define U8G_MODE_BW U8G_MODE(0, 0, 1)
iforce2d 0:972874f31c98 545 #define U8G_MODE_GRAY2BIT U8G_MODE(0, 0, 2)
iforce2d 0:972874f31c98 546 #define U8G_MODE_R3G3B2 U8G_MODE(0, 1, 8)
iforce2d 0:972874f31c98 547 #define U8G_MODE_INDEX U8G_MODE(1, 1, 8)
iforce2d 0:972874f31c98 548 /* hicolor is R5G6B5 */
iforce2d 0:972874f31c98 549 #define U8G_MODE_HICOLOR U8G_MODE(0, 1, 16)
iforce2d 0:972874f31c98 550 /* truecolor */
iforce2d 0:972874f31c98 551 #define U8G_MODE_TRUECOLOR U8G_MODE(0, 1, 24)
iforce2d 0:972874f31c98 552
iforce2d 0:972874f31c98 553
iforce2d 0:972874f31c98 554 #define U8G_MODE_GET_BITS_PER_PIXEL(mode) ((mode)&31)
iforce2d 0:972874f31c98 555 #define U8G_MODE_IS_COLOR(mode) (((mode)&32)==0?0:1)
iforce2d 0:972874f31c98 556 #define U8G_MODE_IS_INDEX_MODE(mode) (((mode)&64)==0?0:1)
iforce2d 0:972874f31c98 557
iforce2d 0:972874f31c98 558
iforce2d 0:972874f31c98 559 /*===============================================================*/
iforce2d 0:972874f31c98 560 /* com options */
iforce2d 0:972874f31c98 561
iforce2d 0:972874f31c98 562 /* uncomment the following line for Atmega HW SPI double speed, issue 89 */
iforce2d 0:972874f31c98 563 /* #define U8G_HW_SPI_2X 1 */
iforce2d 0:972874f31c98 564
iforce2d 0:972874f31c98 565 /* com messages */
iforce2d 0:972874f31c98 566
iforce2d 0:972874f31c98 567 #define U8G_COM_MSG_STOP 0
iforce2d 0:972874f31c98 568 #define U8G_COM_MSG_INIT 1
iforce2d 0:972874f31c98 569
iforce2d 0:972874f31c98 570 #define U8G_COM_MSG_ADDRESS 2
iforce2d 0:972874f31c98 571
iforce2d 0:972874f31c98 572 /* CHIP_SELECT argument: number of the chip which needs to be activated, so this is more like high active */
iforce2d 0:972874f31c98 573 #define U8G_COM_MSG_CHIP_SELECT 3
iforce2d 0:972874f31c98 574
iforce2d 0:972874f31c98 575 #define U8G_COM_MSG_RESET 4
iforce2d 0:972874f31c98 576
iforce2d 0:972874f31c98 577 #define U8G_COM_MSG_WRITE_BYTE 5
iforce2d 0:972874f31c98 578 #define U8G_COM_MSG_WRITE_SEQ 6
iforce2d 0:972874f31c98 579 #define U8G_COM_MSG_WRITE_SEQ_P 7
iforce2d 0:972874f31c98 580
iforce2d 0:972874f31c98 581
iforce2d 0:972874f31c98 582 /* com driver */
iforce2d 0:972874f31c98 583 uint8_t u8g_com_null_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_null.c */
iforce2d 0:972874f31c98 584 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 */
iforce2d 0:972874f31c98 585 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 */
iforce2d 0:972874f31c98 586 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 */
iforce2d 0:972874f31c98 587 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 */
iforce2d 0:972874f31c98 588 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 */
iforce2d 0:972874f31c98 589 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 */
iforce2d 0:972874f31c98 590 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 */
iforce2d 0:972874f31c98 591 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 */
iforce2d 0:972874f31c98 592 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 */
iforce2d 0:972874f31c98 593 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 */
iforce2d 0:972874f31c98 594 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 */
iforce2d 0:972874f31c98 595 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 */
iforce2d 0:972874f31c98 596 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 */
iforce2d 0:972874f31c98 597 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 */
iforce2d 0:972874f31c98 598
iforce2d 0:972874f31c98 599
iforce2d 0:972874f31c98 600 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 */
iforce2d 0:972874f31c98 601 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 */
iforce2d 0:972874f31c98 602 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 */
iforce2d 0:972874f31c98 603 uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
iforce2d 0:972874f31c98 604 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 */
iforce2d 0:972874f31c98 605
iforce2d 0:972874f31c98 606
iforce2d 0:972874f31c98 607 /*
iforce2d 0:972874f31c98 608 Translation of system specific com drives to generic com names
iforce2d 0:972874f31c98 609 At the moment, the following generic com drives are available
iforce2d 0:972874f31c98 610 U8G_COM_HW_SPI
iforce2d 0:972874f31c98 611 U8G_COM_SW_SPI
iforce2d 0:972874f31c98 612 U8G_COM_PARALLEL
iforce2d 0:972874f31c98 613 U8G_COM_T6963
iforce2d 0:972874f31c98 614 U8G_COM_FAST_PARALLEL
iforce2d 0:972874f31c98 615 U8G_COM_SSD_I2C
iforce2d 0:972874f31c98 616
iforce2d 0:972874f31c98 617 defined(__18CXX) || defined(__PIC32MX)
iforce2d 0:972874f31c98 618
iforce2d 0:972874f31c98 619 */
iforce2d 0:972874f31c98 620 /* ==== HW SPI, Arduino ====*/
iforce2d 0:972874f31c98 621 #if defined(ARDUINO)
iforce2d 0:972874f31c98 622 #if defined(__AVR__)
iforce2d 0:972874f31c98 623
iforce2d 0:972874f31c98 624 #if defined(__AVR_ATtiny85__)
iforce2d 0:972874f31c98 625 #define U8G_COM_HW_SPI u8g_com_arduino_ATtiny85_std_hw_spi_fn
iforce2d 0:972874f31c98 626 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
iforce2d 0:972874f31c98 627 #else
iforce2d 0:972874f31c98 628
iforce2d 0:972874f31c98 629 #define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn
iforce2d 0:972874f31c98 630 #if defined(__AVR_ATmega32U4__)
iforce2d 0:972874f31c98 631 #define U8G_COM_HW_USART_SPI u8g_com_arduino_hw_usart_spi_fn
iforce2d 0:972874f31c98 632 #endif /* __AVR_ATmega32U4__ */
iforce2d 0:972874f31c98 633 #define U8G_COM_ST7920_HW_SPI u8g_com_arduino_st7920_hw_spi_fn
iforce2d 0:972874f31c98 634 #endif /* __AVR_ATtiny85__ */
iforce2d 0:972874f31c98 635
iforce2d 0:972874f31c98 636 #elif defined(__18CXX) || defined(__PIC32MX)
iforce2d 0:972874f31c98 637 #define U8G_COM_HW_SPI u8g_com_null_fn
iforce2d 0:972874f31c98 638 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
iforce2d 0:972874f31c98 639 #elif defined(__arm__) /* Arduino Due */
iforce2d 0:972874f31c98 640 #define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn
iforce2d 0:972874f31c98 641 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
iforce2d 0:972874f31c98 642 #endif
iforce2d 0:972874f31c98 643 #endif
iforce2d 0:972874f31c98 644 /* ==== HW SPI, not Arduino ====*/
iforce2d 0:972874f31c98 645 #ifndef U8G_COM_HW_SPI
iforce2d 0:972874f31c98 646 #if defined(__AVR__)
iforce2d 0:972874f31c98 647 #define U8G_COM_HW_SPI u8g_com_atmega_hw_spi_fn
iforce2d 0:972874f31c98 648 #define U8G_COM_ST7920_HW_SPI u8g_com_atmega_st7920_hw_spi_fn
iforce2d 0:972874f31c98 649 #endif
iforce2d 0:972874f31c98 650 #endif
iforce2d 0:972874f31c98 651 #ifndef U8G_COM_HW_SPI
iforce2d 0:972874f31c98 652 #define U8G_COM_HW_SPI u8g_com_null_fn
iforce2d 0:972874f31c98 653 #define U8G_COM_ST7920_HW_SPI u8g_com_null_fn
iforce2d 0:972874f31c98 654 #endif
iforce2d 0:972874f31c98 655
iforce2d 0:972874f31c98 656 #ifndef U8G_COM_HW_USART_SPI
iforce2d 0:972874f31c98 657 #define U8G_COM_HW_USART_SPI u8g_com_null_fn
iforce2d 0:972874f31c98 658 #endif
iforce2d 0:972874f31c98 659
iforce2d 0:972874f31c98 660
iforce2d 0:972874f31c98 661 /* ==== SW SPI, Arduino ====*/
iforce2d 0:972874f31c98 662 #if defined(ARDUINO)
iforce2d 0:972874f31c98 663 #if defined(__AVR__)
iforce2d 0:972874f31c98 664 #define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn
iforce2d 0:972874f31c98 665 #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn
iforce2d 0:972874f31c98 666 #elif defined(__18CXX) || defined(__PIC32MX)
iforce2d 0:972874f31c98 667 #define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn
iforce2d 0:972874f31c98 668 #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn
iforce2d 0:972874f31c98 669 #elif defined(__arm__) /* Arduino Due */
iforce2d 0:972874f31c98 670 //#define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn
iforce2d 0:972874f31c98 671 #define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn
iforce2d 0:972874f31c98 672 #define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn
iforce2d 0:972874f31c98 673 #endif
iforce2d 0:972874f31c98 674 #endif
iforce2d 0:972874f31c98 675
iforce2d 0:972874f31c98 676 #ifndef U8G_COM_SW_SPI
iforce2d 0:972874f31c98 677 /* ==== SW SPI, not Arduino ====*/
iforce2d 0:972874f31c98 678 #if defined(__AVR__)
iforce2d 0:972874f31c98 679 #define U8G_COM_SW_SPI u8g_com_atmega_sw_spi_fn
iforce2d 0:972874f31c98 680 #define U8G_COM_ST7920_SW_SPI u8g_com_atmega_st7920_sw_spi_fn
iforce2d 0:972874f31c98 681 #endif
iforce2d 0:972874f31c98 682 #endif
iforce2d 0:972874f31c98 683 #ifndef U8G_COM_SW_SPI
iforce2d 0:972874f31c98 684 #define U8G_COM_SW_SPI u8g_com_null_fn
iforce2d 0:972874f31c98 685 #define U8G_COM_ST7920_SW_SPI u8g_com_null_fn
iforce2d 0:972874f31c98 686 #endif
iforce2d 0:972874f31c98 687
iforce2d 0:972874f31c98 688 /* ==== Parallel iinterface, Arduino ====*/
iforce2d 0:972874f31c98 689 #if defined(ARDUINO)
iforce2d 0:972874f31c98 690 #if defined(__AVR__)
iforce2d 0:972874f31c98 691 #define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn
iforce2d 0:972874f31c98 692 #define U8G_COM_FAST_PARALLEL u8g_com_arduino_fast_parallel_fn
iforce2d 0:972874f31c98 693 #define U8G_COM_T6963 u8g_com_arduino_t6963_fn
iforce2d 0:972874f31c98 694 #else /* Arduino Due, Chipkit PIC32 */
iforce2d 0:972874f31c98 695 #define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn
iforce2d 0:972874f31c98 696 #define U8G_COM_FAST_PARALLEL u8g_com_arduino_parallel_fn
iforce2d 0:972874f31c98 697 #define U8G_COM_T6963 u8g_com_null_fn
iforce2d 0:972874f31c98 698 #endif
iforce2d 0:972874f31c98 699 #endif
iforce2d 0:972874f31c98 700 #ifndef U8G_COM_PARALLEL
iforce2d 0:972874f31c98 701 #if defined(__AVR__)
iforce2d 0:972874f31c98 702 #define U8G_COM_PARALLEL u8g_com_atmega_parallel_fn
iforce2d 0:972874f31c98 703 #define U8G_COM_FAST_PARALLEL u8g_com_atmega_parallel_fn
iforce2d 0:972874f31c98 704 #define U8G_COM_T6963 u8g_com_null_fn
iforce2d 0:972874f31c98 705 #endif
iforce2d 0:972874f31c98 706 #endif
iforce2d 0:972874f31c98 707 #ifndef U8G_COM_PARALLEL
iforce2d 0:972874f31c98 708 #define U8G_COM_PARALLEL u8g_com_null_fn
iforce2d 0:972874f31c98 709 #define U8G_COM_FAST_PARALLEL u8g_com_null_fn
iforce2d 0:972874f31c98 710 #define U8G_COM_T6963 u8g_com_null_fn
iforce2d 0:972874f31c98 711 #endif
iforce2d 0:972874f31c98 712
iforce2d 0:972874f31c98 713 #if defined(ARDUINO)
iforce2d 0:972874f31c98 714 #if defined(__AVR__)
iforce2d 0:972874f31c98 715 #define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn
iforce2d 0:972874f31c98 716 #endif
iforce2d 0:972874f31c98 717 #endif
iforce2d 0:972874f31c98 718
iforce2d 0:972874f31c98 719 #ifndef U8G_COM_SSD_I2C
iforce2d 0:972874f31c98 720 #if defined(__AVR__)
iforce2d 0:972874f31c98 721 /* AVR variant can use the arduino version at the moment */
iforce2d 0:972874f31c98 722 #define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn
iforce2d 0:972874f31c98 723 #endif
iforce2d 0:972874f31c98 724 #endif
iforce2d 0:972874f31c98 725 #ifndef U8G_COM_SSD_I2C
iforce2d 0:972874f31c98 726 #define U8G_COM_SSD_I2C u8g_com_null_fn
iforce2d 0:972874f31c98 727 #endif
iforce2d 0:972874f31c98 728
iforce2d 0:972874f31c98 729
iforce2d 0:972874f31c98 730
iforce2d 0:972874f31c98 731 /*===============================================================*/
iforce2d 0:972874f31c98 732 /* com api */
iforce2d 0:972874f31c98 733
iforce2d 0:972874f31c98 734 #define U8G_SPI_CLK_CYCLE_50NS 1
iforce2d 0:972874f31c98 735 #define U8G_SPI_CLK_CYCLE_300NS 2
iforce2d 0:972874f31c98 736 #define U8G_SPI_CLK_CYCLE_400NS 3
iforce2d 0:972874f31c98 737 #define U8G_SPI_CLK_CYCLE_NONE 255
iforce2d 0:972874f31c98 738
iforce2d 0:972874f31c98 739 uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev, uint8_t clk_cycle_time);
iforce2d 0:972874f31c98 740 void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev);
iforce2d 0:972874f31c98 741 void u8g_EnableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */
iforce2d 0:972874f31c98 742 void u8g_DisableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */
iforce2d 0:972874f31c98 743 void u8g_SetChipSelect(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs);
iforce2d 0:972874f31c98 744 void u8g_SetResetLow(u8g_t *u8g, u8g_dev_t *dev);
iforce2d 0:972874f31c98 745 void u8g_SetResetHigh(u8g_t *u8g, u8g_dev_t *dev);
iforce2d 0:972874f31c98 746 void u8g_SetAddress(u8g_t *u8g, u8g_dev_t *dev, uint8_t address);
iforce2d 0:972874f31c98 747 uint8_t u8g_WriteByte(u8g_t *u8g, u8g_dev_t *dev, uint8_t val);
iforce2d 0:972874f31c98 748 uint8_t u8g_WriteSequence(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *seq);
iforce2d 0:972874f31c98 749 uint8_t u8g_WriteSequenceP(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, const uint8_t *seq);
iforce2d 0:972874f31c98 750
iforce2d 0:972874f31c98 751
iforce2d 0:972874f31c98 752
iforce2d 0:972874f31c98 753 #define U8G_ESC_DLY(x) 255, ((x) & 0x7f)
iforce2d 0:972874f31c98 754 #define U8G_ESC_CS(x) 255, (0xd0 | ((x)&0x0f))
iforce2d 0:972874f31c98 755 #define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&0x0f))
iforce2d 0:972874f31c98 756 #define U8G_ESC_RST(x) 255, (0xc0 | ((x)&0x0f))
iforce2d 0:972874f31c98 757 #define U8G_ESC_VCC(x) 255, (0xbe | ((x)&0x01))
iforce2d 0:972874f31c98 758 #define U8G_ESC_END 255, 254
iforce2d 0:972874f31c98 759 #define U8G_ESC_255 255, 255
iforce2d 0:972874f31c98 760 //uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, u8g_pgm_uint8_t *esc_seq);
iforce2d 0:972874f31c98 761 uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq);
iforce2d 0:972874f31c98 762
iforce2d 0:972874f31c98 763
iforce2d 0:972874f31c98 764 /* u8g_com_api_16gr.c */
iforce2d 0:972874f31c98 765 uint8_t u8g_WriteByteBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b);
iforce2d 0:972874f31c98 766 uint8_t u8g_WriteSequenceBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr);
iforce2d 0:972874f31c98 767 uint8_t u8g_WriteByte4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b);
iforce2d 0:972874f31c98 768 uint8_t u8g_WriteSequence4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr);
iforce2d 0:972874f31c98 769
iforce2d 0:972874f31c98 770
iforce2d 0:972874f31c98 771 /*===============================================================*/
iforce2d 0:972874f31c98 772 /* u8g_arduino_common.c */
iforce2d 0:972874f31c98 773 void u8g_com_arduino_digital_write(u8g_t *u8g, uint8_t pin_index, uint8_t value);
iforce2d 0:972874f31c98 774 void u8g_com_arduino_assign_pin_output_high(u8g_t *u8g);
iforce2d 0:972874f31c98 775
iforce2d 0:972874f31c98 776 /*===============================================================*/
iforce2d 0:972874f31c98 777 /* u8g_com_io.c */
iforce2d 0:972874f31c98 778
iforce2d 0:972874f31c98 779 /* create internal number from port and pin */
iforce2d 0:972874f31c98 780 uint8_t u8g_Pin(uint8_t port, uint8_t bitpos);
iforce2d 0:972874f31c98 781 #define PN(port,bitpos) u8g_Pin(port,bitpos)
iforce2d 0:972874f31c98 782
iforce2d 0:972874f31c98 783 /* low level procedures */
iforce2d 0:972874f31c98 784 void u8g_SetPinOutput(uint8_t internal_pin_number);
iforce2d 0:972874f31c98 785 void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level);
iforce2d 0:972874f31c98 786 void u8g_SetPinInput(uint8_t internal_pin_number);
iforce2d 0:972874f31c98 787 uint8_t u8g_GetPinLevel(uint8_t internal_pin_number);
iforce2d 0:972874f31c98 788
iforce2d 0:972874f31c98 789 /* u8g level procedures, expect U8G_PI_xxx macro */
iforce2d 0:972874f31c98 790 void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi);
iforce2d 0:972874f31c98 791 void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level);
iforce2d 0:972874f31c98 792
iforce2d 0:972874f31c98 793
iforce2d 0:972874f31c98 794 /*===============================================================*/
iforce2d 0:972874f31c98 795 /* page */
iforce2d 0:972874f31c98 796 struct _u8g_page_t
iforce2d 0:972874f31c98 797 {
iforce2d 0:972874f31c98 798 u8g_uint_t page_height;
iforce2d 0:972874f31c98 799 u8g_uint_t total_height;
iforce2d 0:972874f31c98 800 u8g_uint_t page_y0;
iforce2d 0:972874f31c98 801 u8g_uint_t page_y1;
iforce2d 0:972874f31c98 802 uint8_t page;
iforce2d 0:972874f31c98 803 };
iforce2d 0:972874f31c98 804 typedef struct _u8g_page_t u8g_page_t;
iforce2d 0:972874f31c98 805
iforce2d 0:972874f31c98 806 void u8g_page_First(u8g_page_t *p) U8G_NOINLINE; /* u8g_page.c */
iforce2d 0:972874f31c98 807 void u8g_page_Init(u8g_page_t *p, u8g_uint_t page_height, u8g_uint_t total_height ) U8G_NOINLINE; /* u8g_page.c */
iforce2d 0:972874f31c98 808 uint8_t u8g_page_Next(u8g_page_t *p) U8G_NOINLINE; /* u8g_page.c */
iforce2d 0:972874f31c98 809
iforce2d 0:972874f31c98 810 /*===============================================================*/
iforce2d 0:972874f31c98 811 /* page buffer (pb) */
iforce2d 0:972874f31c98 812
iforce2d 0:972874f31c98 813 struct _u8g_pb_t
iforce2d 0:972874f31c98 814 {
iforce2d 0:972874f31c98 815 u8g_page_t p;
iforce2d 0:972874f31c98 816 u8g_uint_t width; /* pixel width */
iforce2d 0:972874f31c98 817 void *buf;
iforce2d 0:972874f31c98 818 };
iforce2d 0:972874f31c98 819 typedef struct _u8g_pb_t u8g_pb_t;
iforce2d 0:972874f31c98 820
iforce2d 0:972874f31c98 821
iforce2d 0:972874f31c98 822 /* u8g_pb.c */
iforce2d 0:972874f31c98 823 void u8g_pb_Clear(u8g_pb_t *b);
iforce2d 0:972874f31c98 824 uint8_t u8g_pb_IsYIntersection(u8g_pb_t *pb, u8g_uint_t v0, u8g_uint_t v1);
iforce2d 0:972874f31c98 825 uint8_t u8g_pb_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1);
iforce2d 0:972874f31c98 826 uint8_t u8g_pb_IsIntersection(u8g_pb_t *pb, u8g_dev_arg_bbx_t *bbx);
iforce2d 0:972874f31c98 827 void u8g_pb_GetPageBox(u8g_pb_t *pb, u8g_box_t *box);
iforce2d 0:972874f31c98 828 uint8_t u8g_pb_Is8PixelVisible(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel);
iforce2d 0:972874f31c98 829 uint8_t u8g_pb_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev);
iforce2d 0:972874f31c98 830
iforce2d 0:972874f31c98 831 /*
iforce2d 0:972874f31c98 832 note on __attribute__ ((nocommon))
iforce2d 0:972874f31c98 833 AVR scripts often use --gc-sections on the linker to remove unused section.
iforce2d 0:972874f31c98 834 This works fine for initialed data and text sections. In principle .bss is also
iforce2d 0:972874f31c98 835 handled, but the name##_pb definition is not removed. Reason is, that
iforce2d 0:972874f31c98 836 array definitions are placed in the COMMON section, by default
iforce2d 0:972874f31c98 837 The attribute "nocommon" removes this automatic assignment to the
iforce2d 0:972874f31c98 838 COMMON section and directly puts it into .bss. As a result, if more
iforce2d 0:972874f31c98 839 than one buffer is defined in one file, then it will be removed with --gc-sections
iforce2d 0:972874f31c98 840
iforce2d 0:972874f31c98 841 .. not sure if Arduino IDE uses -fno-common... if yes, then the attribute is
iforce2d 0:972874f31c98 842 redundant.
iforce2d 0:972874f31c98 843 */
iforce2d 0:972874f31c98 844 #define U8G_PB_DEV(name, width, height, page_height, dev_fn, com_fn) \
iforce2d 0:972874f31c98 845 uint8_t name##_buf[width] U8G_NOCOMMON ; \
iforce2d 0:972874f31c98 846 u8g_pb_t name##_pb = { {page_height, height, 0, 0, 0}, width, name##_buf}; \
iforce2d 0:972874f31c98 847 u8g_dev_t name = { dev_fn, &name##_pb, com_fn }
iforce2d 0:972874f31c98 848
iforce2d 0:972874f31c98 849
iforce2d 0:972874f31c98 850 void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE;
iforce2d 0:972874f31c98 851 void u8g_pb8v1_Clear(u8g_pb_t *b) U8G_NOINLINE;
iforce2d 0:972874f31c98 852
iforce2d 0:972874f31c98 853 uint8_t u8g_pb8v1_IsYIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1);
iforce2d 0:972874f31c98 854 uint8_t u8g_pb8v1_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1);
iforce2d 0:972874f31c98 855 uint8_t u8g_pb8v1_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev);
iforce2d 0:972874f31c98 856
iforce2d 0:972874f31c98 857 uint8_t u8g_dev_pb8v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 858
iforce2d 0:972874f31c98 859 /* u8g_pb16v1.c */
iforce2d 0:972874f31c98 860 uint8_t u8g_dev_pb16v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 861
iforce2d 0:972874f31c98 862 /* u8g_pb14v1.c */
iforce2d 0:972874f31c98 863 uint8_t u8g_dev_pb14v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 864
iforce2d 0:972874f31c98 865 /* u8g_pb8v2.c */
iforce2d 0:972874f31c98 866 uint8_t u8g_dev_pb8v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 867
iforce2d 0:972874f31c98 868 /* u8g_pb16v2.c (double memory of pb8v2) */
iforce2d 0:972874f31c98 869 uint8_t u8g_dev_pb16v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 870
iforce2d 0:972874f31c98 871
iforce2d 0:972874f31c98 872 /* u8g_pb8h1.c */
iforce2d 0:972874f31c98 873 uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 874
iforce2d 0:972874f31c98 875 /* u8g_pb16h1.c */
iforce2d 0:972874f31c98 876 uint8_t u8g_dev_pb16h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 877
iforce2d 0:972874f31c98 878 /* u8g_pb32h1.c */
iforce2d 0:972874f31c98 879 uint8_t u8g_dev_pb32h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 880
iforce2d 0:972874f31c98 881
iforce2d 0:972874f31c98 882 /* u8g_pb8h2.c 8 pixel rows, byte has horzontal orientation */
iforce2d 0:972874f31c98 883 uint8_t u8g_dev_pb8h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 884
iforce2d 0:972874f31c98 885 /* u8g_pb16h2.c */
iforce2d 0:972874f31c98 886 uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 887
iforce2d 0:972874f31c98 888
iforce2d 0:972874f31c98 889
iforce2d 0:972874f31c98 890 /* u8g_pb8h1f.c */
iforce2d 0:972874f31c98 891 uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 892
iforce2d 0:972874f31c98 893 /* u8g_pb8h8.c */
iforce2d 0:972874f31c98 894 uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 895
iforce2d 0:972874f31c98 896 /* u8g_pbxh16.c */
iforce2d 0:972874f31c98 897 uint8_t u8g_dev_pbxh16_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 898
iforce2d 0:972874f31c98 899 /* u8g_pbxh24.c */
iforce2d 0:972874f31c98 900 uint8_t u8g_dev_pbxh24_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 901
iforce2d 0:972874f31c98 902
iforce2d 0:972874f31c98 903 /*===============================================================*/
iforce2d 0:972874f31c98 904 /* u8g_ll_api.c */
iforce2d 0:972874f31c98 905
iforce2d 0:972874f31c98 906 /* cursor draw callback */
iforce2d 0:972874f31c98 907 typedef void (*u8g_draw_cursor_fn)(u8g_t *u8g);
iforce2d 0:972874f31c98 908
iforce2d 0:972874f31c98 909 /* vertical reference point calculation callback */
iforce2d 0:972874f31c98 910 typedef u8g_uint_t (*u8g_font_calc_vref_fnptr)(u8g_t *u8g);
iforce2d 0:972874f31c98 911
iforce2d 0:972874f31c98 912 /* state backup and restore procedure */
iforce2d 0:972874f31c98 913 typedef void (*u8g_state_cb)(uint8_t msg);
iforce2d 0:972874f31c98 914
iforce2d 0:972874f31c98 915
iforce2d 0:972874f31c98 916 /* PI = Pin Index */
iforce2d 0:972874f31c98 917
iforce2d 0:972874f31c98 918 /* reset pin, usually optional */
iforce2d 0:972874f31c98 919 #define U8G_PI_RESET 0
iforce2d 0:972874f31c98 920
iforce2d 0:972874f31c98 921 /* address / data or instruction */
iforce2d 0:972874f31c98 922 #define U8G_PI_A0 1
iforce2d 0:972874f31c98 923 #define U8G_PI_DI 1
iforce2d 0:972874f31c98 924
iforce2d 0:972874f31c98 925 /* chip select line */
iforce2d 0:972874f31c98 926 #define U8G_PI_CS 2
iforce2d 0:972874f31c98 927 #define U8G_PI_CS1 2
iforce2d 0:972874f31c98 928 #define U8G_PI_CS2 3
iforce2d 0:972874f31c98 929 /* Feb 2013: A0 state moved from 7 to 3 for t6963 controller*/
iforce2d 0:972874f31c98 930 #define U8G_PI_A0_STATE 3
iforce2d 0:972874f31c98 931
iforce2d 0:972874f31c98 932 /* enable / clock signal */
iforce2d 0:972874f31c98 933 #define U8G_PI_EN 4
iforce2d 0:972874f31c98 934 #define U8G_PI_CS_STATE 4
iforce2d 0:972874f31c98 935 #define U8G_PI_SCK 4
iforce2d 0:972874f31c98 936 #define U8G_PI_SCL 4
iforce2d 0:972874f31c98 937 #define U8G_PI_RD 4
iforce2d 0:972874f31c98 938
iforce2d 0:972874f31c98 939
iforce2d 0:972874f31c98 940 /* data pins, shared with SPI and I2C pins */
iforce2d 0:972874f31c98 941 #define U8G_PI_D0 5
iforce2d 0:972874f31c98 942 #define U8G_PI_MOSI 5
iforce2d 0:972874f31c98 943 #define U8G_PI_SDA 5
iforce2d 0:972874f31c98 944 #define U8G_PI_D1 6
iforce2d 0:972874f31c98 945 #define U8G_PI_MISO 6
iforce2d 0:972874f31c98 946 #define U8G_PI_D2 7
iforce2d 0:972874f31c98 947 #define U8G_PI_D3 8
iforce2d 0:972874f31c98 948 #define U8G_PI_SET_A0 8
iforce2d 0:972874f31c98 949 #define U8G_PI_D4 9
iforce2d 0:972874f31c98 950 #define U8G_PI_D5 10
iforce2d 0:972874f31c98 951 #define U8G_PI_I2C_OPTION 11
iforce2d 0:972874f31c98 952 #define U8G_PI_D6 11
iforce2d 0:972874f31c98 953 #define U8G_PI_D7 12
iforce2d 0:972874f31c98 954
iforce2d 0:972874f31c98 955 /* read/write pin, must be the last pin in the list, this means U8G_PIN_LIST_LEN = U8G_PI_RW + 1*/
iforce2d 0:972874f31c98 956 #define U8G_PI_WR 13
iforce2d 0:972874f31c98 957 #define U8G_PI_RW 13
iforce2d 0:972874f31c98 958
iforce2d 0:972874f31c98 959 #define U8G_PIN_LIST_LEN 14
iforce2d 0:972874f31c98 960
iforce2d 0:972874f31c98 961
iforce2d 0:972874f31c98 962 #define U8G_PIN_DUMMY 254
iforce2d 0:972874f31c98 963 #define U8G_PIN_NONE 255
iforce2d 0:972874f31c98 964
iforce2d 0:972874f31c98 965 #define U8G_FONT_HEIGHT_MODE_TEXT 0
iforce2d 0:972874f31c98 966 #define U8G_FONT_HEIGHT_MODE_XTEXT 1
iforce2d 0:972874f31c98 967 #define U8G_FONT_HEIGHT_MODE_ALL 2
iforce2d 0:972874f31c98 968
iforce2d 0:972874f31c98 969 struct _u8g_t
iforce2d 0:972874f31c98 970 {
iforce2d 0:972874f31c98 971 u8g_uint_t width;
iforce2d 0:972874f31c98 972 u8g_uint_t height;
iforce2d 0:972874f31c98 973
iforce2d 0:972874f31c98 974
iforce2d 0:972874f31c98 975 u8g_dev_t *dev; /* first device in the device chain */
iforce2d 0:972874f31c98 976 const u8g_pgm_uint8_t *font; /* regular font for all text procedures */
iforce2d 0:972874f31c98 977 const u8g_pgm_uint8_t *cursor_font; /* special font for cursor procedures */
iforce2d 0:972874f31c98 978 uint8_t cursor_fg_color, cursor_bg_color;
iforce2d 0:972874f31c98 979 uint8_t cursor_encoding;
iforce2d 0:972874f31c98 980 uint8_t mode; /* display mode, one of U8G_MODE_xxx */
iforce2d 0:972874f31c98 981 u8g_uint_t cursor_x;
iforce2d 0:972874f31c98 982 u8g_uint_t cursor_y;
iforce2d 0:972874f31c98 983 u8g_draw_cursor_fn cursor_fn;
iforce2d 0:972874f31c98 984
iforce2d 0:972874f31c98 985 int8_t glyph_dx;
iforce2d 0:972874f31c98 986 int8_t glyph_x;
iforce2d 0:972874f31c98 987 int8_t glyph_y;
iforce2d 0:972874f31c98 988 uint8_t glyph_width;
iforce2d 0:972874f31c98 989 uint8_t glyph_height;
iforce2d 0:972874f31c98 990
iforce2d 0:972874f31c98 991 u8g_font_calc_vref_fnptr font_calc_vref;
iforce2d 0:972874f31c98 992 uint8_t font_height_mode;
iforce2d 0:972874f31c98 993 int8_t font_ref_ascent;
iforce2d 0:972874f31c98 994 int8_t font_ref_descent;
iforce2d 0:972874f31c98 995 uint8_t font_line_spacing_factor; /* line_spacing = factor * (ascent - descent) / 64 */
iforce2d 0:972874f31c98 996 uint8_t line_spacing;
iforce2d 0:972874f31c98 997
iforce2d 0:972874f31c98 998 u8g_dev_arg_pixel_t arg_pixel;
iforce2d 0:972874f31c98 999 /* uint8_t color_index; */
iforce2d 0:972874f31c98 1000
iforce2d 0:972874f31c98 1001 #ifdef U8G_WITH_PINLIST
iforce2d 0:972874f31c98 1002 uint8_t pin_list[U8G_PIN_LIST_LEN];
iforce2d 0:972874f31c98 1003 #endif
iforce2d 0:972874f31c98 1004
iforce2d 0:972874f31c98 1005 u8g_state_cb state_cb;
iforce2d 0:972874f31c98 1006
iforce2d 0:972874f31c98 1007 u8g_box_t current_page; /* current box of the visible page */
iforce2d 0:972874f31c98 1008
iforce2d 0:972874f31c98 1009 };
iforce2d 0:972874f31c98 1010
iforce2d 0:972874f31c98 1011 #define u8g_GetFontAscent(u8g) ((u8g)->font_ref_ascent)
iforce2d 0:972874f31c98 1012 #define u8g_GetFontDescent(u8g) ((u8g)->font_ref_descent)
iforce2d 0:972874f31c98 1013 #define u8g_GetFontLineSpacing(u8g) ((u8g)->line_spacing)
iforce2d 0:972874f31c98 1014
iforce2d 0:972874f31c98 1015 uint8_t u8g_call_dev_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg);
iforce2d 0:972874f31c98 1016
iforce2d 0:972874f31c98 1017 uint8_t u8g_InitLL(u8g_t *u8g, u8g_dev_t *dev);
iforce2d 0:972874f31c98 1018 void u8g_FirstPageLL(u8g_t *u8g, u8g_dev_t *dev);
iforce2d 0:972874f31c98 1019 uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev);
iforce2d 0:972874f31c98 1020 uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast);
iforce2d 0:972874f31c98 1021 void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y);
iforce2d 0:972874f31c98 1022 void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
iforce2d 0:972874f31c98 1023 void u8g_Draw4TPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
iforce2d 0:972874f31c98 1024 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 */
iforce2d 0:972874f31c98 1025 u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev);
iforce2d 0:972874f31c98 1026 u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev);
iforce2d 0:972874f31c98 1027
iforce2d 0:972874f31c98 1028 void u8g_UpdateDimension(u8g_t *u8g);
iforce2d 0:972874f31c98 1029 uint8_t u8g_Begin(u8g_t *u8g); /* reset device, put it into default state and call u8g_UpdateDimension() */
iforce2d 0:972874f31c98 1030 uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev); /* only usefull if the device only as hardcoded ports */
iforce2d 0:972874f31c98 1031 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) */
iforce2d 0:972874f31c98 1032 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);
iforce2d 0:972874f31c98 1033 uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset);
iforce2d 0:972874f31c98 1034 uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options); /* use U8G_I2C_OPT_NONE as options */
iforce2d 0:972874f31c98 1035 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);
iforce2d 0:972874f31c98 1036 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,
iforce2d 0:972874f31c98 1037 uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset);
iforce2d 0:972874f31c98 1038 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,
iforce2d 0:972874f31c98 1039 uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset);
iforce2d 0:972874f31c98 1040 void u8g_FirstPage(u8g_t *u8g);
iforce2d 0:972874f31c98 1041 uint8_t u8g_NextPage(u8g_t *u8g);
iforce2d 0:972874f31c98 1042 uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast);
iforce2d 0:972874f31c98 1043 void u8g_SleepOn(u8g_t *u8g);
iforce2d 0:972874f31c98 1044 void u8g_SleepOff(u8g_t *u8g);
iforce2d 0:972874f31c98 1045 void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y);
iforce2d 0:972874f31c98 1046 void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
iforce2d 0:972874f31c98 1047 void u8g_Draw4TPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
iforce2d 0:972874f31c98 1048
iforce2d 0:972874f31c98 1049 uint8_t u8g_Stop(u8g_t *u8g);
iforce2d 0:972874f31c98 1050 void u8g_SetColorEntry(u8g_t *u8g, uint8_t idx, uint8_t r, uint8_t g, uint8_t b);
iforce2d 0:972874f31c98 1051 void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx);
iforce2d 0:972874f31c98 1052 void u8g_SetHiColor(u8g_t *u8g, uint16_t rgb);
iforce2d 0:972874f31c98 1053 void u8g_SetHiColorByRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b);
iforce2d 0:972874f31c98 1054 void u8g_SetRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b);
iforce2d 0:972874f31c98 1055 uint8_t u8g_GetColorIndex(u8g_t *u8g);
iforce2d 0:972874f31c98 1056
iforce2d 0:972874f31c98 1057 uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g);
iforce2d 0:972874f31c98 1058 void u8g_SetDefaultForegroundColor(u8g_t *u8g);
iforce2d 0:972874f31c98 1059
iforce2d 0:972874f31c98 1060 uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g);
iforce2d 0:972874f31c98 1061 void u8g_SetDefaultBackgroundColor(u8g_t *u8g);
iforce2d 0:972874f31c98 1062
iforce2d 0:972874f31c98 1063 uint8_t u8g_GetDefaultMidColor(u8g_t *u8g);
iforce2d 0:972874f31c98 1064 void u8g_SetDefaultMidColor(u8g_t *u8g);
iforce2d 0:972874f31c98 1065
iforce2d 0:972874f31c98 1066 #define u8g_GetWidth(u8g) ((u8g)->width)
iforce2d 0:972874f31c98 1067 #define u8g_GetHeight(u8g) ((u8g)->height)
iforce2d 0:972874f31c98 1068 #define u8g_GetMode(u8g) ((u8g)->mode)
iforce2d 0:972874f31c98 1069 /*
iforce2d 0:972874f31c98 1070 U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(u8g))
iforce2d 0:972874f31c98 1071 U8G_MODE_IS_COLOR(u8g_GetMode(u8g))
iforce2d 0:972874f31c98 1072 */
iforce2d 0:972874f31c98 1073
iforce2d 0:972874f31c98 1074 /* u8g_state.c */
iforce2d 0:972874f31c98 1075 #define U8G_STATE_ENV_IDX 0
iforce2d 0:972874f31c98 1076 #define U8G_STATE_U8G_IDX 1
iforce2d 0:972874f31c98 1077 #define U8G_STATE_RESTORE 0
iforce2d 0:972874f31c98 1078 #define U8G_STATE_BACKUP 1
iforce2d 0:972874f31c98 1079 #define U8G_STATE_MSG_COMPOSE(cmd,idx) (((cmd)<<1) | (idx))
iforce2d 0:972874f31c98 1080
iforce2d 0:972874f31c98 1081 #define U8G_STATE_MSG_RESTORE_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_ENV_IDX)
iforce2d 0:972874f31c98 1082 #define U8G_STATE_MSG_BACKUP_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_ENV_IDX)
iforce2d 0:972874f31c98 1083 #define U8G_STATE_MSG_RESTORE_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_U8G_IDX)
iforce2d 0:972874f31c98 1084 #define U8G_STATE_MSG_BACKUP_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_U8G_IDX)
iforce2d 0:972874f31c98 1085
iforce2d 0:972874f31c98 1086 #define U8G_STATE_MSG_GET_IDX(msg) ((msg)&1)
iforce2d 0:972874f31c98 1087 #define U8G_STATE_MSG_IS_BACKUP(msg) ((msg)&2)
iforce2d 0:972874f31c98 1088
iforce2d 0:972874f31c98 1089
iforce2d 0:972874f31c98 1090
iforce2d 0:972874f31c98 1091 void u8g_state_dummy_cb(uint8_t msg);
iforce2d 0:972874f31c98 1092 void u8g_backup_spi(uint8_t msg); /* backup SPI state controller */
iforce2d 0:972874f31c98 1093 /* backward compatible definition */
iforce2d 0:972874f31c98 1094 #define u8g_backup_avr_spi u8g_backup_spi
iforce2d 0:972874f31c98 1095
iforce2d 0:972874f31c98 1096 void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb);
iforce2d 0:972874f31c98 1097
iforce2d 0:972874f31c98 1098 /* u8g_clip.c */
iforce2d 0:972874f31c98 1099
iforce2d 0:972874f31c98 1100 uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);
iforce2d 0:972874f31c98 1101
iforce2d 0:972874f31c98 1102
iforce2d 0:972874f31c98 1103 /* u8g_rot.c */
iforce2d 0:972874f31c98 1104
iforce2d 0:972874f31c98 1105 void u8g_UndoRotation(u8g_t *u8g);
iforce2d 0:972874f31c98 1106 void u8g_SetRot90(u8g_t *u8g);
iforce2d 0:972874f31c98 1107 void u8g_SetRot180(u8g_t *u8g);
iforce2d 0:972874f31c98 1108 void u8g_SetRot270(u8g_t *u8g);
iforce2d 0:972874f31c98 1109
iforce2d 0:972874f31c98 1110 /* u8g_scale.c */
iforce2d 0:972874f31c98 1111
iforce2d 0:972874f31c98 1112 void u8g_UndoScale(u8g_t *u8g);
iforce2d 0:972874f31c98 1113 void u8g_SetScale2x2(u8g_t *u8g);
iforce2d 0:972874f31c98 1114
iforce2d 0:972874f31c98 1115
iforce2d 0:972874f31c98 1116 /* u8g_font.c */
iforce2d 0:972874f31c98 1117
iforce2d 0:972874f31c98 1118 size_t u8g_font_GetSize(const void *font);
iforce2d 0:972874f31c98 1119 uint8_t u8g_font_GetFontStartEncoding(const void *font) U8G_NOINLINE;
iforce2d 0:972874f31c98 1120 uint8_t u8g_font_GetFontEndEncoding(const void *font) U8G_NOINLINE;
iforce2d 0:972874f31c98 1121
iforce2d 0:972874f31c98 1122 void u8g_SetFont(u8g_t *u8g, const u8g_fntpgm_uint8_t *font);
iforce2d 0:972874f31c98 1123
iforce2d 0:972874f31c98 1124 uint8_t u8g_GetFontBBXWidth(u8g_t *u8g);
iforce2d 0:972874f31c98 1125 uint8_t u8g_GetFontBBXHeight(u8g_t *u8g);
iforce2d 0:972874f31c98 1126 int8_t u8g_GetFontBBXOffX(u8g_t *u8g);
iforce2d 0:972874f31c98 1127 int8_t u8g_GetFontBBXOffY(u8g_t *u8g);
iforce2d 0:972874f31c98 1128 uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g);
iforce2d 0:972874f31c98 1129
iforce2d 0:972874f31c98 1130 uint8_t u8g_IsGlyph(u8g_t *u8g, uint8_t requested_encoding);
iforce2d 0:972874f31c98 1131 int8_t u8g_GetGlyphDeltaX(u8g_t *u8g, uint8_t requested_encoding);
iforce2d 0:972874f31c98 1132
iforce2d 0:972874f31c98 1133 int8_t u8g_draw_glyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); /* used by u8g_cursor.c */
iforce2d 0:972874f31c98 1134
iforce2d 0:972874f31c98 1135 int8_t u8g_DrawGlyphDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding);
iforce2d 0:972874f31c98 1136 int8_t u8g_DrawGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
iforce2d 0:972874f31c98 1137 int8_t u8g_DrawGlyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
iforce2d 0:972874f31c98 1138 int8_t u8g_DrawGlyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
iforce2d 0:972874f31c98 1139 int8_t u8g_DrawGlyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
iforce2d 0:972874f31c98 1140 int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding);
iforce2d 0:972874f31c98 1141
iforce2d 0:972874f31c98 1142 u8g_uint_t u8g_DrawStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
iforce2d 0:972874f31c98 1143 u8g_uint_t u8g_DrawStr90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
iforce2d 0:972874f31c98 1144 u8g_uint_t u8g_DrawStr180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
iforce2d 0:972874f31c98 1145 u8g_uint_t u8g_DrawStr270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
iforce2d 0:972874f31c98 1146
iforce2d 0:972874f31c98 1147 u8g_uint_t u8g_DrawStrDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s);
iforce2d 0:972874f31c98 1148
iforce2d 0:972874f31c98 1149
iforce2d 0:972874f31c98 1150 u8g_uint_t u8g_DrawStrP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
iforce2d 0:972874f31c98 1151 u8g_uint_t u8g_DrawStr90P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
iforce2d 0:972874f31c98 1152 u8g_uint_t u8g_DrawStr180P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
iforce2d 0:972874f31c98 1153 u8g_uint_t u8g_DrawStr270P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s);
iforce2d 0:972874f31c98 1154
iforce2d 0:972874f31c98 1155
iforce2d 0:972874f31c98 1156 void u8g_SetFontRefHeightText(u8g_t *u8g);
iforce2d 0:972874f31c98 1157 void u8g_SetFontRefHeightExtendedText(u8g_t *u8g);
iforce2d 0:972874f31c98 1158 void u8g_SetFontRefHeightAll(u8g_t *u8g);
iforce2d 0:972874f31c98 1159 void u8g_SetFontLineSpacingFactor(u8g_t *u8g, uint8_t factor);
iforce2d 0:972874f31c98 1160
iforce2d 0:972874f31c98 1161 u8g_uint_t u8g_font_calc_vref_font(u8g_t *u8g);
iforce2d 0:972874f31c98 1162 u8g_uint_t u8g_font_calc_vref_bottom(u8g_t *u8g);
iforce2d 0:972874f31c98 1163 u8g_uint_t u8g_font_calc_vref_top(u8g_t *u8g);
iforce2d 0:972874f31c98 1164 u8g_uint_t u8g_font_calc_vref_center(u8g_t *u8g);
iforce2d 0:972874f31c98 1165
iforce2d 0:972874f31c98 1166 void u8g_SetFontPosBaseline(u8g_t *u8g);
iforce2d 0:972874f31c98 1167 void u8g_SetFontPosBottom(u8g_t *u8g);
iforce2d 0:972874f31c98 1168 void u8g_SetFontPosCenter(u8g_t *u8g);
iforce2d 0:972874f31c98 1169 void u8g_SetFontPosTop(u8g_t *u8g);
iforce2d 0:972874f31c98 1170
iforce2d 0:972874f31c98 1171
iforce2d 0:972874f31c98 1172 u8g_uint_t u8g_GetStrPixelWidth(u8g_t *u8g, const char *s);
iforce2d 0:972874f31c98 1173 u8g_uint_t u8g_GetStrPixelWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s);
iforce2d 0:972874f31c98 1174 int8_t u8g_GetStrX(u8g_t *u8g, const char *s);
iforce2d 0:972874f31c98 1175 int8_t u8g_GetStrXP(u8g_t *u8g, const u8g_pgm_uint8_t *s);
iforce2d 0:972874f31c98 1176 u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s);
iforce2d 0:972874f31c98 1177 u8g_uint_t u8g_GetStrWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s);
iforce2d 0:972874f31c98 1178
iforce2d 0:972874f31c98 1179 u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s);
iforce2d 0:972874f31c98 1180
iforce2d 0:972874f31c98 1181 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);
iforce2d 0:972874f31c98 1182 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);
iforce2d 0:972874f31c98 1183
iforce2d 0:972874f31c98 1184
iforce2d 0:972874f31c98 1185 u8g_uint_t u8g_DrawAAStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s);
iforce2d 0:972874f31c98 1186
iforce2d 0:972874f31c98 1187 /* u8g_rect.c */
iforce2d 0:972874f31c98 1188
iforce2d 0:972874f31c98 1189 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;
iforce2d 0:972874f31c98 1190
iforce2d 0:972874f31c98 1191 void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w);
iforce2d 0:972874f31c98 1192 void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w);
iforce2d 0:972874f31c98 1193 void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);
iforce2d 0:972874f31c98 1194 void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);
iforce2d 0:972874f31c98 1195
iforce2d 0:972874f31c98 1196 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);
iforce2d 0:972874f31c98 1197 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);
iforce2d 0:972874f31c98 1198
iforce2d 0:972874f31c98 1199 /* u8g_bitmap.c */
iforce2d 0:972874f31c98 1200
iforce2d 0:972874f31c98 1201 void u8g_DrawHBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const uint8_t *bitmap);
iforce2d 0:972874f31c98 1202 void u8g_DrawHBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const u8g_pgm_uint8_t *bitmap);
iforce2d 0:972874f31c98 1203 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);
iforce2d 0:972874f31c98 1204 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);
iforce2d 0:972874f31c98 1205
iforce2d 0:972874f31c98 1206 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);
iforce2d 0:972874f31c98 1207 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);
iforce2d 0:972874f31c98 1208
iforce2d 0:972874f31c98 1209
iforce2d 0:972874f31c98 1210 /* u8g_line.c */
iforce2d 0:972874f31c98 1211 void u8g_DrawLine(u8g_t *u8g, u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2);
iforce2d 0:972874f31c98 1212
iforce2d 0:972874f31c98 1213
iforce2d 0:972874f31c98 1214 /* u8g_circle.c */
iforce2d 0:972874f31c98 1215
iforce2d 0:972874f31c98 1216 /* the following, commented code has been rewritten or is not yet finished
iforce2d 0:972874f31c98 1217 #define U8G_CIRC_UPPER_RIGHT 0x01
iforce2d 0:972874f31c98 1218 #define U8G_CIRC_UPPER_LEFT 0x02
iforce2d 0:972874f31c98 1219 #define U8G_CIRC_LOWER_LEFT 0x04
iforce2d 0:972874f31c98 1220 #define U8G_CIRC_LOWER_RIGHT 0x08
iforce2d 0:972874f31c98 1221 #define U8G_CIRC_ALL (U8G_CIRC_UPPER_RIGHT|U8G_CIRC_UPPER_LEFT|U8G_CIRC_LOWER_RIGHT|U8G_CIRC_LOWER_LEFT)
iforce2d 0:972874f31c98 1222 void u8g_DrawEmpCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
iforce2d 0:972874f31c98 1223 void u8g_DrawFillCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
iforce2d 0:972874f31c98 1224 void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1);
iforce2d 0:972874f31c98 1225 */
iforce2d 0:972874f31c98 1226
iforce2d 0:972874f31c98 1227 #define U8G_DRAW_UPPER_RIGHT 0x01
iforce2d 0:972874f31c98 1228 #define U8G_DRAW_UPPER_LEFT 0x02
iforce2d 0:972874f31c98 1229 #define U8G_DRAW_LOWER_LEFT 0x04
iforce2d 0:972874f31c98 1230 #define U8G_DRAW_LOWER_RIGHT 0x08
iforce2d 0:972874f31c98 1231 #define U8G_DRAW_ALL (U8G_DRAW_UPPER_RIGHT|U8G_DRAW_UPPER_LEFT|U8G_DRAW_LOWER_RIGHT|U8G_DRAW_LOWER_LEFT)
iforce2d 0:972874f31c98 1232
iforce2d 0:972874f31c98 1233 void u8g_draw_circle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE;
iforce2d 0:972874f31c98 1234 void u8g_draw_disc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE;
iforce2d 0:972874f31c98 1235
iforce2d 0:972874f31c98 1236 void u8g_DrawCircle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
iforce2d 0:972874f31c98 1237 void u8g_DrawDisc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
iforce2d 0:972874f31c98 1238
iforce2d 0:972874f31c98 1239 /* u8g_ellipse.c */
iforce2d 0:972874f31c98 1240 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);
iforce2d 0:972874f31c98 1241 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);
iforce2d 0:972874f31c98 1242
iforce2d 0:972874f31c98 1243 /* u8g_clip.c */
iforce2d 0:972874f31c98 1244 uint8_t u8g_is_box_bbx_intersection(u8g_box_t *box, u8g_dev_arg_bbx_t *bbx);
iforce2d 0:972874f31c98 1245
iforce2d 0:972874f31c98 1246
iforce2d 0:972874f31c98 1247 /* u8g_cursor.c */
iforce2d 0:972874f31c98 1248 void u8g_SetCursorFont(u8g_t *u8g, const u8g_pgm_uint8_t *cursor_font);
iforce2d 0:972874f31c98 1249 void u8g_SetCursorStyle(u8g_t *u8g, uint8_t encoding);
iforce2d 0:972874f31c98 1250 void u8g_SetCursorPos(u8g_t *u8g, u8g_uint_t cursor_x, u8g_uint_t cursor_y);
iforce2d 0:972874f31c98 1251 void u8g_SetCursorColor(u8g_t *u8g, uint8_t fg, uint8_t bg);
iforce2d 0:972874f31c98 1252 void u8g_EnableCursor(u8g_t *u8g);
iforce2d 0:972874f31c98 1253 void u8g_DisableCursor(u8g_t *u8g);
iforce2d 0:972874f31c98 1254 void u8g_DrawCursor(u8g_t *u8g);
iforce2d 0:972874f31c98 1255
iforce2d 0:972874f31c98 1256
iforce2d 0:972874f31c98 1257
iforce2d 0:972874f31c98 1258 /*===============================================================*/
iforce2d 0:972874f31c98 1259 /* u8g_virtual_screen.c */
iforce2d 0:972874f31c98 1260 void u8g_SetVirtualScreenDimension(u8g_t *vs_u8g, u8g_uint_t width, u8g_uint_t height);
iforce2d 0:972874f31c98 1261 uint8_t u8g_AddToVirtualScreen(u8g_t *vs_u8g, u8g_uint_t x, u8g_uint_t y, u8g_t *child_u8g);
iforce2d 0:972874f31c98 1262
iforce2d 0:972874f31c98 1263 /*===============================================================*/
iforce2d 0:972874f31c98 1264 void st_Draw(uint8_t fps);
iforce2d 0:972874f31c98 1265 void st_Step(uint8_t player_pos, uint8_t is_auto_fire, uint8_t is_fire);
iforce2d 0:972874f31c98 1266
iforce2d 0:972874f31c98 1267 /*===============================================================*/
iforce2d 0:972874f31c98 1268 /* u8g_com_i2c.c */
iforce2d 0:972874f31c98 1269
iforce2d 0:972874f31c98 1270 /* options for u8g_i2c_init() */
iforce2d 0:972874f31c98 1271 #define U8G_I2C_OPT_NONE 0
iforce2d 0:972874f31c98 1272
iforce2d 0:972874f31c98 1273 /* retrun values from u8g_twi_get_error() */
iforce2d 0:972874f31c98 1274 #define U8G_I2C_ERR_NONE 0x00
iforce2d 0:972874f31c98 1275 /* the following values are bit masks */
iforce2d 0:972874f31c98 1276 #define U8G_I2C_ERR_TIMEOUT 0x01
iforce2d 0:972874f31c98 1277 #define U8G_I2C_ERR_BUS 0x02
iforce2d 0:972874f31c98 1278
iforce2d 0:972874f31c98 1279 void u8g_i2c_clear_error(void) U8G_NOINLINE;
iforce2d 0:972874f31c98 1280 uint8_t u8g_i2c_get_error(void) U8G_NOINLINE;
iforce2d 0:972874f31c98 1281 uint8_t u8g_i2c_get_err_pos(void) U8G_NOINLINE;
iforce2d 0:972874f31c98 1282 void u8g_i2c_init(uint8_t options) U8G_NOINLINE; /* use U8G_I2C_OPT_NONE as options */
iforce2d 0:972874f31c98 1283 uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) U8G_NOINLINE;
iforce2d 0:972874f31c98 1284 uint8_t u8g_i2c_start(uint8_t sla) U8G_NOINLINE;
iforce2d 0:972874f31c98 1285 uint8_t u8g_i2c_send_byte(uint8_t data) U8G_NOINLINE;
iforce2d 0:972874f31c98 1286 void u8g_i2c_stop(void) U8G_NOINLINE;
iforce2d 0:972874f31c98 1287
iforce2d 0:972874f31c98 1288
iforce2d 0:972874f31c98 1289 /*===============================================================*/
iforce2d 0:972874f31c98 1290 /* u8g_u8toa.c */
iforce2d 0:972874f31c98 1291 /* v = value, d = number of digits */
iforce2d 0:972874f31c98 1292 const char *u8g_u8toa(uint8_t v, uint8_t d);
iforce2d 0:972874f31c98 1293
iforce2d 0:972874f31c98 1294 /* u8g_u8toa.c */
iforce2d 0:972874f31c98 1295 /* v = value, d = number of digits */
iforce2d 0:972874f31c98 1296 const char *u8g_u16toa(uint16_t v, uint8_t d);
iforce2d 0:972874f31c98 1297
iforce2d 0:972874f31c98 1298 /*===============================================================*/
iforce2d 0:972874f31c98 1299 /* u8g_delay.c */
iforce2d 0:972874f31c98 1300
iforce2d 0:972874f31c98 1301 /* delay by the specified number of milliseconds */
iforce2d 0:972874f31c98 1302 void u8g_Delay(uint16_t val);
iforce2d 0:972874f31c98 1303
iforce2d 0:972874f31c98 1304 /* delay by one microsecond */
iforce2d 0:972874f31c98 1305 void u8g_MicroDelay(void);
iforce2d 0:972874f31c98 1306
iforce2d 0:972874f31c98 1307 /* delay by 10 microseconds */
iforce2d 0:972874f31c98 1308 void u8g_10MicroDelay(void);
iforce2d 0:972874f31c98 1309
iforce2d 0:972874f31c98 1310 /*===============================================================*/
iforce2d 0:972874f31c98 1311 /* chessengine.c */
iforce2d 0:972874f31c98 1312 #define CHESS_KEY_NONE 0
iforce2d 0:972874f31c98 1313 #define CHESS_KEY_NEXT 1
iforce2d 0:972874f31c98 1314 #define CHESS_KEY_PREV 2
iforce2d 0:972874f31c98 1315 #define CHESS_KEY_SELECT 3
iforce2d 0:972874f31c98 1316 #define CHESS_KEY_BACK 4
iforce2d 0:972874f31c98 1317
iforce2d 0:972874f31c98 1318 void chess_Init(u8g_t *u8g, uint8_t empty_body_color);
iforce2d 0:972874f31c98 1319 void chess_Draw(void);
iforce2d 0:972874f31c98 1320 void chess_Step(uint8_t keycode);
iforce2d 0:972874f31c98 1321
iforce2d 0:972874f31c98 1322 /*===============================================================*/
iforce2d 0:972874f31c98 1323 /* font definitions */
iforce2d 0:972874f31c98 1324 extern const u8g_fntpgm_uint8_t u8g_font_m2icon_5[] U8G_FONT_SECTION("u8g_font_m2icon_5");
iforce2d 0:972874f31c98 1325 extern const u8g_fntpgm_uint8_t u8g_font_m2icon_7[] U8G_FONT_SECTION("u8g_font_m2icon_7");
iforce2d 0:972874f31c98 1326 extern const u8g_fntpgm_uint8_t u8g_font_m2icon_9[] U8G_FONT_SECTION("u8g_font_m2icon_9");
iforce2d 0:972874f31c98 1327
iforce2d 0:972874f31c98 1328 extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4[] U8G_FONT_SECTION("u8g_font_u8glib_4");
iforce2d 0:972874f31c98 1329 extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[] U8G_FONT_SECTION("u8g_font_u8glib_4r");
iforce2d 0:972874f31c98 1330
iforce2d 0:972874f31c98 1331
iforce2d 0:972874f31c98 1332 extern const u8g_fntpgm_uint8_t u8g_font_6x12_75r[] U8G_FONT_SECTION("u8g_font_6x12_75r");
iforce2d 0:972874f31c98 1333 extern const u8g_fntpgm_uint8_t u8g_font_6x13_75r[] U8G_FONT_SECTION("u8g_font_6x13_75r");
iforce2d 0:972874f31c98 1334 extern const u8g_fntpgm_uint8_t u8g_font_7x13_75r[] U8G_FONT_SECTION("u8g_font_7x13_75r");
iforce2d 0:972874f31c98 1335 extern const u8g_fntpgm_uint8_t u8g_font_8x13_75r[] U8G_FONT_SECTION("u8g_font_8x13_75r");
iforce2d 0:972874f31c98 1336 extern const u8g_fntpgm_uint8_t u8g_font_9x15_75r[] U8G_FONT_SECTION("u8g_font_9x15_75r");
iforce2d 0:972874f31c98 1337 extern const u8g_fntpgm_uint8_t u8g_font_9x18_75r[] U8G_FONT_SECTION("u8g_font_9x18_75r");
iforce2d 0:972874f31c98 1338 extern const u8g_fntpgm_uint8_t u8g_font_cu12_75r[] U8G_FONT_SECTION("u8g_font_cu12_75r");
iforce2d 0:972874f31c98 1339 extern const u8g_fntpgm_uint8_t u8g_font_unifont_75r[] U8G_FONT_SECTION("u8g_font_unifont_75r");
iforce2d 0:972874f31c98 1340 extern const u8g_fntpgm_uint8_t u8g_font_10x20_75r[] U8G_FONT_SECTION("u8g_font_10x20_75r");
iforce2d 0:972874f31c98 1341
iforce2d 0:972874f31c98 1342 extern const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[] U8G_FONT_SECTION("u8g_font_10x20_67_75");
iforce2d 0:972874f31c98 1343 extern const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[] U8G_FONT_SECTION("u8g_font_10x20_78_79");
iforce2d 0:972874f31c98 1344 extern const u8g_fntpgm_uint8_t u8g_font_10x20[] U8G_FONT_SECTION("u8g_font_10x20");
iforce2d 0:972874f31c98 1345 extern const u8g_fntpgm_uint8_t u8g_font_10x20r[] U8G_FONT_SECTION("u8g_font_10x20r");
iforce2d 0:972874f31c98 1346 extern const u8g_fntpgm_uint8_t u8g_font_4x6[] U8G_FONT_SECTION("u8g_font_4x6");
iforce2d 0:972874f31c98 1347 extern const u8g_fntpgm_uint8_t u8g_font_4x6r[] U8G_FONT_SECTION("u8g_font_4x6r");
iforce2d 0:972874f31c98 1348 //extern const u8g_fntpgm_uint8_t u8g_font_4x6n[] U8G_FONT_SECTION("u8g_font_4x6n");
iforce2d 0:972874f31c98 1349 extern const u8g_fntpgm_uint8_t u8g_font_5x7[] U8G_FONT_SECTION("u8g_font_5x7");
iforce2d 0:972874f31c98 1350 extern const u8g_fntpgm_uint8_t u8g_font_5x7r[] U8G_FONT_SECTION("u8g_font_5x7r");
iforce2d 0:972874f31c98 1351 extern const u8g_fntpgm_uint8_t u8g_font_5x8[] U8G_FONT_SECTION("u8g_font_5x8");
iforce2d 0:972874f31c98 1352 extern const u8g_fntpgm_uint8_t u8g_font_5x8r[] U8G_FONT_SECTION("u8g_font_5x8r");
iforce2d 0:972874f31c98 1353 extern const u8g_fntpgm_uint8_t u8g_font_6x10[] U8G_FONT_SECTION("u8g_font_6x10");
iforce2d 0:972874f31c98 1354 extern const u8g_fntpgm_uint8_t u8g_font_6x10r[] U8G_FONT_SECTION("u8g_font_6x10r");
iforce2d 0:972874f31c98 1355 extern const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[] U8G_FONT_SECTION("u8g_font_6x12_67_75");
iforce2d 0:972874f31c98 1356 extern const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[] U8G_FONT_SECTION("u8g_font_6x12_78_79");
iforce2d 0:972874f31c98 1357 extern const u8g_fntpgm_uint8_t u8g_font_6x12[] U8G_FONT_SECTION("u8g_font_6x12");
iforce2d 0:972874f31c98 1358 extern const u8g_fntpgm_uint8_t u8g_font_6x12r[] U8G_FONT_SECTION("u8g_font_6x12r");
iforce2d 0:972874f31c98 1359 extern const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[] U8G_FONT_SECTION("u8g_font_6x13_67_75");
iforce2d 0:972874f31c98 1360 extern const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[] U8G_FONT_SECTION("u8g_font_6x13_78_79");
iforce2d 0:972874f31c98 1361 extern const u8g_fntpgm_uint8_t u8g_font_6x13B[] U8G_FONT_SECTION("u8g_font_6x13B");
iforce2d 0:972874f31c98 1362 extern const u8g_fntpgm_uint8_t u8g_font_6x13Br[] U8G_FONT_SECTION("u8g_font_6x13Br");
iforce2d 0:972874f31c98 1363 extern const u8g_fntpgm_uint8_t u8g_font_6x13[] U8G_FONT_SECTION("u8g_font_6x13");
iforce2d 0:972874f31c98 1364 extern const u8g_fntpgm_uint8_t u8g_font_6x13r[] U8G_FONT_SECTION("u8g_font_6x13r");
iforce2d 0:972874f31c98 1365 extern const u8g_fntpgm_uint8_t u8g_font_6x13O[] U8G_FONT_SECTION("u8g_font_6x13O");
iforce2d 0:972874f31c98 1366 extern const u8g_fntpgm_uint8_t u8g_font_6x13Or[] U8G_FONT_SECTION("u8g_font_6x13Or");
iforce2d 0:972874f31c98 1367 extern const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[] U8G_FONT_SECTION("u8g_font_7x13_67_75");
iforce2d 0:972874f31c98 1368 extern const u8g_fntpgm_uint8_t u8g_font_7x13_78_79[] U8G_FONT_SECTION("u8g_font_7x13_78_79");
iforce2d 0:972874f31c98 1369 extern const u8g_fntpgm_uint8_t u8g_font_7x13B[] U8G_FONT_SECTION("u8g_font_7x13B");
iforce2d 0:972874f31c98 1370 extern const u8g_fntpgm_uint8_t u8g_font_7x13Br[] U8G_FONT_SECTION("u8g_font_7x13Br");
iforce2d 0:972874f31c98 1371 extern const u8g_fntpgm_uint8_t u8g_font_7x13[] U8G_FONT_SECTION("u8g_font_7x13");
iforce2d 0:972874f31c98 1372 extern const u8g_fntpgm_uint8_t u8g_font_7x13r[] U8G_FONT_SECTION("u8g_font_7x13r");
iforce2d 0:972874f31c98 1373 extern const u8g_fntpgm_uint8_t u8g_font_7x13O[] U8G_FONT_SECTION("u8g_font_7x13O");
iforce2d 0:972874f31c98 1374 extern const u8g_fntpgm_uint8_t u8g_font_7x13Or[] U8G_FONT_SECTION("u8g_font_7x13Or");
iforce2d 0:972874f31c98 1375 extern const u8g_fntpgm_uint8_t u8g_font_7x14B[] U8G_FONT_SECTION("u8g_font_7x14B");
iforce2d 0:972874f31c98 1376 extern const u8g_fntpgm_uint8_t u8g_font_7x14Br[] U8G_FONT_SECTION("u8g_font_7x14Br");
iforce2d 0:972874f31c98 1377 extern const u8g_fntpgm_uint8_t u8g_font_7x14[] U8G_FONT_SECTION("u8g_font_7x14");
iforce2d 0:972874f31c98 1378 extern const u8g_fntpgm_uint8_t u8g_font_7x14r[] U8G_FONT_SECTION("u8g_font_7x14r");
iforce2d 0:972874f31c98 1379 extern const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[] U8G_FONT_SECTION("u8g_font_8x13_67_75");
iforce2d 0:972874f31c98 1380 extern const u8g_fntpgm_uint8_t u8g_font_8x13B[] U8G_FONT_SECTION("u8g_font_8x13B");
iforce2d 0:972874f31c98 1381 extern const u8g_fntpgm_uint8_t u8g_font_8x13Br[] U8G_FONT_SECTION("u8g_font_8x13Br");
iforce2d 0:972874f31c98 1382 extern const u8g_fntpgm_uint8_t u8g_font_8x13[] U8G_FONT_SECTION("u8g_font_8x13");
iforce2d 0:972874f31c98 1383 extern const u8g_fntpgm_uint8_t u8g_font_8x13r[] U8G_FONT_SECTION("u8g_font_8x13r");
iforce2d 0:972874f31c98 1384 extern const u8g_fntpgm_uint8_t u8g_font_8x13O[] U8G_FONT_SECTION("u8g_font_8x13O");
iforce2d 0:972874f31c98 1385 extern const u8g_fntpgm_uint8_t u8g_font_8x13Or[] U8G_FONT_SECTION("u8g_font_8x13Or");
iforce2d 0:972874f31c98 1386
iforce2d 0:972874f31c98 1387 extern const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[] U8G_FONT_SECTION("u8g_font_9x15_67_75");
iforce2d 0:972874f31c98 1388 extern const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[] U8G_FONT_SECTION("u8g_font_9x15_78_79");
iforce2d 0:972874f31c98 1389 extern const u8g_fntpgm_uint8_t u8g_font_9x15B[] U8G_FONT_SECTION("u8g_font_9x15B");
iforce2d 0:972874f31c98 1390 extern const u8g_fntpgm_uint8_t u8g_font_9x15Br[] U8G_FONT_SECTION("u8g_font_9x15Br");
iforce2d 0:972874f31c98 1391 extern const u8g_fntpgm_uint8_t u8g_font_9x15[] U8G_FONT_SECTION("u8g_font_9x15");
iforce2d 0:972874f31c98 1392 extern const u8g_fntpgm_uint8_t u8g_font_9x15r[] U8G_FONT_SECTION("u8g_font_9x15r");
iforce2d 0:972874f31c98 1393
iforce2d 0:972874f31c98 1394 extern const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[] U8G_FONT_SECTION("u8g_font_9x18_67_75");
iforce2d 0:972874f31c98 1395 extern const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[] U8G_FONT_SECTION("u8g_font_9x18_78_79");
iforce2d 0:972874f31c98 1396 extern const u8g_fntpgm_uint8_t u8g_font_9x18B[] U8G_FONT_SECTION("u8g_font_9x18B");
iforce2d 0:972874f31c98 1397 extern const u8g_fntpgm_uint8_t u8g_font_9x18[] U8G_FONT_SECTION("u8g_font_9x18");
iforce2d 0:972874f31c98 1398 extern const u8g_fntpgm_uint8_t u8g_font_9x18Br[] U8G_FONT_SECTION("u8g_font_9x18Br");
iforce2d 0:972874f31c98 1399 extern const u8g_fntpgm_uint8_t u8g_font_9x18r[] U8G_FONT_SECTION("u8g_font_9x18r");
iforce2d 0:972874f31c98 1400
iforce2d 0:972874f31c98 1401 extern const u8g_fntpgm_uint8_t u8g_font_cursor[] U8G_FONT_SECTION("u8g_font_cursor");
iforce2d 0:972874f31c98 1402 extern const u8g_fntpgm_uint8_t u8g_font_cursorr[] U8G_FONT_SECTION("u8g_font_cursorr");
iforce2d 0:972874f31c98 1403 extern const u8g_fntpgm_uint8_t u8g_font_micro[] U8G_FONT_SECTION("u8g_font_micro");
iforce2d 0:972874f31c98 1404
iforce2d 0:972874f31c98 1405 extern const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[] U8G_FONT_SECTION("u8g_font_cu12_67_75");
iforce2d 0:972874f31c98 1406 extern const u8g_fntpgm_uint8_t u8g_font_cu12_78_79[] U8G_FONT_SECTION("u8g_font_cu12_78_79");
iforce2d 0:972874f31c98 1407 extern const u8g_fntpgm_uint8_t u8g_font_cu12[] U8G_FONT_SECTION("u8g_font_cu12");
iforce2d 0:972874f31c98 1408
iforce2d 0:972874f31c98 1409 /*
iforce2d 0:972874f31c98 1410 Free-Universal Bold
iforce2d 0:972874f31c98 1411 r: Reduced char set (codes 32 - 128)
iforce2d 0:972874f31c98 1412 n: Numbers (codes 42 - 57)
iforce2d 0:972874f31c98 1413 no char: Full set (codes 32 - 255)
iforce2d 0:972874f31c98 1414 */
iforce2d 0:972874f31c98 1415
iforce2d 0:972874f31c98 1416 extern const u8g_fntpgm_uint8_t u8g_font_fub11[] U8G_FONT_SECTION("u8g_font_fub11");
iforce2d 0:972874f31c98 1417 extern const u8g_fntpgm_uint8_t u8g_font_fub11r[] U8G_FONT_SECTION("u8g_font_fub11r");
iforce2d 0:972874f31c98 1418 extern const u8g_fntpgm_uint8_t u8g_font_fub11n[] U8G_FONT_SECTION("u8g_font_fub11n");
iforce2d 0:972874f31c98 1419 extern const u8g_fntpgm_uint8_t u8g_font_fub14[] U8G_FONT_SECTION("u8g_font_fub14");
iforce2d 0:972874f31c98 1420 extern const u8g_fntpgm_uint8_t u8g_font_fub14r[] U8G_FONT_SECTION("u8g_font_fub14r");
iforce2d 0:972874f31c98 1421 extern const u8g_fntpgm_uint8_t u8g_font_fub14n[] U8G_FONT_SECTION("u8g_font_fub14n");
iforce2d 0:972874f31c98 1422 extern const u8g_fntpgm_uint8_t u8g_font_fub17[] U8G_FONT_SECTION("u8g_font_fub17");
iforce2d 0:972874f31c98 1423 extern const u8g_fntpgm_uint8_t u8g_font_fub17r[] U8G_FONT_SECTION("u8g_font_fub17r");
iforce2d 0:972874f31c98 1424 extern const u8g_fntpgm_uint8_t u8g_font_fub17n[] U8G_FONT_SECTION("u8g_font_fub17n");
iforce2d 0:972874f31c98 1425 extern const u8g_fntpgm_uint8_t u8g_font_fub20[] U8G_FONT_SECTION("u8g_font_fub20");
iforce2d 0:972874f31c98 1426 extern const u8g_fntpgm_uint8_t u8g_font_fub20r[] U8G_FONT_SECTION("u8g_font_fub20r");
iforce2d 0:972874f31c98 1427 extern const u8g_fntpgm_uint8_t u8g_font_fub20n[] U8G_FONT_SECTION("u8g_font_fub20n");
iforce2d 0:972874f31c98 1428 extern const u8g_fntpgm_uint8_t u8g_font_fub25[] U8G_FONT_SECTION("u8g_font_fub25");
iforce2d 0:972874f31c98 1429 extern const u8g_fntpgm_uint8_t u8g_font_fub25r[] U8G_FONT_SECTION("u8g_font_fub25r");
iforce2d 0:972874f31c98 1430 extern const u8g_fntpgm_uint8_t u8g_font_fub25n[] U8G_FONT_SECTION("u8g_font_fub25n");
iforce2d 0:972874f31c98 1431 extern const u8g_fntpgm_uint8_t u8g_font_fub30[] U8G_FONT_SECTION("u8g_font_fub30");
iforce2d 0:972874f31c98 1432 extern const u8g_fntpgm_uint8_t u8g_font_fub30r[] U8G_FONT_SECTION("u8g_font_fub30r");
iforce2d 0:972874f31c98 1433 extern const u8g_fntpgm_uint8_t u8g_font_fub30n[] U8G_FONT_SECTION("u8g_font_fub30n");
iforce2d 0:972874f31c98 1434 extern const u8g_fntpgm_uint8_t u8g_font_fub35n[] U8G_FONT_SECTION("u8g_font_fub35n");
iforce2d 0:972874f31c98 1435 extern const u8g_fntpgm_uint8_t u8g_font_fub42n[] U8G_FONT_SECTION("u8g_font_fub42n");
iforce2d 0:972874f31c98 1436 extern const u8g_fntpgm_uint8_t u8g_font_fub49n[] U8G_FONT_SECTION("u8g_font_fub49n");
iforce2d 0:972874f31c98 1437
iforce2d 0:972874f31c98 1438 /*
iforce2d 0:972874f31c98 1439 Free-Universal Regular
iforce2d 0:972874f31c98 1440 r: Reduced char set (codes 32 - 128)
iforce2d 0:972874f31c98 1441 n: Numbers (codes 42 - 57)
iforce2d 0:972874f31c98 1442 no char: Full set (codes 32 - 255)
iforce2d 0:972874f31c98 1443 */
iforce2d 0:972874f31c98 1444
iforce2d 0:972874f31c98 1445 extern const u8g_fntpgm_uint8_t u8g_font_fur11[] U8G_FONT_SECTION("u8g_font_fur11");
iforce2d 0:972874f31c98 1446 extern const u8g_fntpgm_uint8_t u8g_font_fur11r[] U8G_FONT_SECTION("u8g_font_fur11r");
iforce2d 0:972874f31c98 1447 extern const u8g_fntpgm_uint8_t u8g_font_fur11n[] U8G_FONT_SECTION("u8g_font_fur11n");
iforce2d 0:972874f31c98 1448 extern const u8g_fntpgm_uint8_t u8g_font_fur14[] U8G_FONT_SECTION("u8g_font_fur14");
iforce2d 0:972874f31c98 1449 extern const u8g_fntpgm_uint8_t u8g_font_fur14r[] U8G_FONT_SECTION("u8g_font_fur14r");
iforce2d 0:972874f31c98 1450 extern const u8g_fntpgm_uint8_t u8g_font_fur14n[] U8G_FONT_SECTION("u8g_font_fur14n");
iforce2d 0:972874f31c98 1451 extern const u8g_fntpgm_uint8_t u8g_font_fur17[] U8G_FONT_SECTION("u8g_font_fur17");
iforce2d 0:972874f31c98 1452 extern const u8g_fntpgm_uint8_t u8g_font_fur17r[] U8G_FONT_SECTION("u8g_font_fur17r");
iforce2d 0:972874f31c98 1453 extern const u8g_fntpgm_uint8_t u8g_font_fur17n[] U8G_FONT_SECTION("u8g_font_fur17n");
iforce2d 0:972874f31c98 1454 extern const u8g_fntpgm_uint8_t u8g_font_fur20[] U8G_FONT_SECTION("u8g_font_fur20");
iforce2d 0:972874f31c98 1455 extern const u8g_fntpgm_uint8_t u8g_font_fur20r[] U8G_FONT_SECTION("u8g_font_fur20r");
iforce2d 0:972874f31c98 1456 extern const u8g_fntpgm_uint8_t u8g_font_fur20n[] U8G_FONT_SECTION("u8g_font_fur20n");
iforce2d 0:972874f31c98 1457 extern const u8g_fntpgm_uint8_t u8g_font_fur25[] U8G_FONT_SECTION("u8g_font_fur25");
iforce2d 0:972874f31c98 1458 extern const u8g_fntpgm_uint8_t u8g_font_fur25r[] U8G_FONT_SECTION("u8g_font_fur25r");
iforce2d 0:972874f31c98 1459 extern const u8g_fntpgm_uint8_t u8g_font_fur25n[] U8G_FONT_SECTION("u8g_font_fur25n");
iforce2d 0:972874f31c98 1460 extern const u8g_fntpgm_uint8_t u8g_font_fur30[] U8G_FONT_SECTION("u8g_font_fur30");
iforce2d 0:972874f31c98 1461 extern const u8g_fntpgm_uint8_t u8g_font_fur30r[] U8G_FONT_SECTION("u8g_font_fur30r");
iforce2d 0:972874f31c98 1462 extern const u8g_fntpgm_uint8_t u8g_font_fur30n[] U8G_FONT_SECTION("u8g_font_fur30n");
iforce2d 0:972874f31c98 1463 extern const u8g_fntpgm_uint8_t u8g_font_fur35n[] U8G_FONT_SECTION("u8g_font_fur35n");
iforce2d 0:972874f31c98 1464 extern const u8g_fntpgm_uint8_t u8g_font_fur42n[] U8G_FONT_SECTION("u8g_font_fur42n");
iforce2d 0:972874f31c98 1465 extern const u8g_fntpgm_uint8_t u8g_font_fur49n[] U8G_FONT_SECTION("u8g_font_fur49n");
iforce2d 0:972874f31c98 1466
iforce2d 0:972874f31c98 1467 /*
iforce2d 0:972874f31c98 1468 Gentium Bold
iforce2d 0:972874f31c98 1469 r: Reduced char set (codes 32 - 128)
iforce2d 0:972874f31c98 1470 n: Numbers (codes 42 - 57)
iforce2d 0:972874f31c98 1471 no char: Full set (codes 32 - 255)
iforce2d 0:972874f31c98 1472 */
iforce2d 0:972874f31c98 1473
iforce2d 0:972874f31c98 1474 extern const u8g_fntpgm_uint8_t u8g_font_gdb11[] U8G_FONT_SECTION("u8g_font_gdb11");
iforce2d 0:972874f31c98 1475 extern const u8g_fntpgm_uint8_t u8g_font_gdb12[] U8G_FONT_SECTION("u8g_font_gdb12");
iforce2d 0:972874f31c98 1476 extern const u8g_fntpgm_uint8_t u8g_font_gdb14[] U8G_FONT_SECTION("u8g_font_gdb14");
iforce2d 0:972874f31c98 1477 extern const u8g_fntpgm_uint8_t u8g_font_gdb17[] U8G_FONT_SECTION("u8g_font_gdb17");
iforce2d 0:972874f31c98 1478 extern const u8g_fntpgm_uint8_t u8g_font_gdb20[] U8G_FONT_SECTION("u8g_font_gdb20");
iforce2d 0:972874f31c98 1479 extern const u8g_fntpgm_uint8_t u8g_font_gdb25[] U8G_FONT_SECTION("u8g_font_gdb25");
iforce2d 0:972874f31c98 1480 extern const u8g_fntpgm_uint8_t u8g_font_gdb30[] U8G_FONT_SECTION("u8g_font_gdb30");
iforce2d 0:972874f31c98 1481
iforce2d 0:972874f31c98 1482 extern const u8g_fntpgm_uint8_t u8g_font_gdb11r[] U8G_FONT_SECTION("u8g_font_gdb11r");
iforce2d 0:972874f31c98 1483 extern const u8g_fntpgm_uint8_t u8g_font_gdb12r[] U8G_FONT_SECTION("u8g_font_gdb12r");
iforce2d 0:972874f31c98 1484 extern const u8g_fntpgm_uint8_t u8g_font_gdb14r[] U8G_FONT_SECTION("u8g_font_gdb14r");
iforce2d 0:972874f31c98 1485 extern const u8g_fntpgm_uint8_t u8g_font_gdb17r[] U8G_FONT_SECTION("u8g_font_gdb17r");
iforce2d 0:972874f31c98 1486 extern const u8g_fntpgm_uint8_t u8g_font_gdb20r[] U8G_FONT_SECTION("u8g_font_gdb20r");
iforce2d 0:972874f31c98 1487 extern const u8g_fntpgm_uint8_t u8g_font_gdb25r[] U8G_FONT_SECTION("u8g_font_gdb25r");
iforce2d 0:972874f31c98 1488 extern const u8g_fntpgm_uint8_t u8g_font_gdb30r[] U8G_FONT_SECTION("u8g_font_gdb30r");
iforce2d 0:972874f31c98 1489
iforce2d 0:972874f31c98 1490 extern const u8g_fntpgm_uint8_t u8g_font_gdb11n[] U8G_FONT_SECTION("u8g_font_gdb11n");
iforce2d 0:972874f31c98 1491 extern const u8g_fntpgm_uint8_t u8g_font_gdb12n[] U8G_FONT_SECTION("u8g_font_gdb12n");
iforce2d 0:972874f31c98 1492 extern const u8g_fntpgm_uint8_t u8g_font_gdb14n[] U8G_FONT_SECTION("u8g_font_gdb14n");
iforce2d 0:972874f31c98 1493 extern const u8g_fntpgm_uint8_t u8g_font_gdb17n[] U8G_FONT_SECTION("u8g_font_gdb17n");
iforce2d 0:972874f31c98 1494 extern const u8g_fntpgm_uint8_t u8g_font_gdb20n[] U8G_FONT_SECTION("u8g_font_gdb20n");
iforce2d 0:972874f31c98 1495 extern const u8g_fntpgm_uint8_t u8g_font_gdb25n[] U8G_FONT_SECTION("u8g_font_gdb25n");
iforce2d 0:972874f31c98 1496 extern const u8g_fntpgm_uint8_t u8g_font_gdb30n[] U8G_FONT_SECTION("u8g_font_gdb30n");
iforce2d 0:972874f31c98 1497
iforce2d 0:972874f31c98 1498 /*
iforce2d 0:972874f31c98 1499 Gentium Regular
iforce2d 0:972874f31c98 1500 r: Reduced char set (codes 32 - 128)
iforce2d 0:972874f31c98 1501 n: Numbers (codes 42 - 57)
iforce2d 0:972874f31c98 1502 no char: Full set (codes 32 - 255)
iforce2d 0:972874f31c98 1503 */
iforce2d 0:972874f31c98 1504
iforce2d 0:972874f31c98 1505 extern const u8g_fntpgm_uint8_t u8g_font_gdr9[] U8G_FONT_SECTION("u8g_font_gdr9");
iforce2d 0:972874f31c98 1506 extern const u8g_fntpgm_uint8_t u8g_font_gdr10[] U8G_FONT_SECTION("u8g_font_gdr10");
iforce2d 0:972874f31c98 1507 extern const u8g_fntpgm_uint8_t u8g_font_gdr11[] U8G_FONT_SECTION("u8g_font_gdr11");
iforce2d 0:972874f31c98 1508 extern const u8g_fntpgm_uint8_t u8g_font_gdr12[] U8G_FONT_SECTION("u8g_font_gdr12");
iforce2d 0:972874f31c98 1509 extern const u8g_fntpgm_uint8_t u8g_font_gdr14[] U8G_FONT_SECTION("u8g_font_gdr14");
iforce2d 0:972874f31c98 1510 extern const u8g_fntpgm_uint8_t u8g_font_gdr17[] U8G_FONT_SECTION("u8g_font_gdr17");
iforce2d 0:972874f31c98 1511 extern const u8g_fntpgm_uint8_t u8g_font_gdr20[] U8G_FONT_SECTION("u8g_font_gdr20");
iforce2d 0:972874f31c98 1512 extern const u8g_fntpgm_uint8_t u8g_font_gdr25[] U8G_FONT_SECTION("u8g_font_gdr25");
iforce2d 0:972874f31c98 1513 extern const u8g_fntpgm_uint8_t u8g_font_gdr30[] U8G_FONT_SECTION("u8g_font_gdr30");
iforce2d 0:972874f31c98 1514
iforce2d 0:972874f31c98 1515 extern const u8g_fntpgm_uint8_t u8g_font_gdr9r[] U8G_FONT_SECTION("u8g_font_gdr9r");
iforce2d 0:972874f31c98 1516 extern const u8g_fntpgm_uint8_t u8g_font_gdr10r[] U8G_FONT_SECTION("u8g_font_gdr10r");
iforce2d 0:972874f31c98 1517 extern const u8g_fntpgm_uint8_t u8g_font_gdr11r[] U8G_FONT_SECTION("u8g_font_gdr11r");
iforce2d 0:972874f31c98 1518 extern const u8g_fntpgm_uint8_t u8g_font_gdr12r[] U8G_FONT_SECTION("u8g_font_gdr12r");
iforce2d 0:972874f31c98 1519 extern const u8g_fntpgm_uint8_t u8g_font_gdr14r[] U8G_FONT_SECTION("u8g_font_gdr14r");
iforce2d 0:972874f31c98 1520 extern const u8g_fntpgm_uint8_t u8g_font_gdr17r[] U8G_FONT_SECTION("u8g_font_gdr17r");
iforce2d 0:972874f31c98 1521 extern const u8g_fntpgm_uint8_t u8g_font_gdr20r[] U8G_FONT_SECTION("u8g_font_gdr20r");
iforce2d 0:972874f31c98 1522 extern const u8g_fntpgm_uint8_t u8g_font_gdr25r[] U8G_FONT_SECTION("u8g_font_gdr25r");
iforce2d 0:972874f31c98 1523 extern const u8g_fntpgm_uint8_t u8g_font_gdr30r[] U8G_FONT_SECTION("u8g_font_gdr30r");
iforce2d 0:972874f31c98 1524
iforce2d 0:972874f31c98 1525 extern const u8g_fntpgm_uint8_t u8g_font_gdr9n[] U8G_FONT_SECTION("u8g_font_gdr9n");
iforce2d 0:972874f31c98 1526 extern const u8g_fntpgm_uint8_t u8g_font_gdr10n[] U8G_FONT_SECTION("u8g_font_gdr10n");
iforce2d 0:972874f31c98 1527 extern const u8g_fntpgm_uint8_t u8g_font_gdr11n[] U8G_FONT_SECTION("u8g_font_gdr11n");
iforce2d 0:972874f31c98 1528 extern const u8g_fntpgm_uint8_t u8g_font_gdr12n[] U8G_FONT_SECTION("u8g_font_gdr12n");
iforce2d 0:972874f31c98 1529 extern const u8g_fntpgm_uint8_t u8g_font_gdr14n[] U8G_FONT_SECTION("u8g_font_gdr14n");
iforce2d 0:972874f31c98 1530 extern const u8g_fntpgm_uint8_t u8g_font_gdr17n[] U8G_FONT_SECTION("u8g_font_gdr17n");
iforce2d 0:972874f31c98 1531 extern const u8g_fntpgm_uint8_t u8g_font_gdr20n[] U8G_FONT_SECTION("u8g_font_gdr20n");
iforce2d 0:972874f31c98 1532 extern const u8g_fntpgm_uint8_t u8g_font_gdr25n[] U8G_FONT_SECTION("u8g_font_gdr25n");
iforce2d 0:972874f31c98 1533 extern const u8g_fntpgm_uint8_t u8g_font_gdr30n[] U8G_FONT_SECTION("u8g_font_gdr30n");
iforce2d 0:972874f31c98 1534
iforce2d 0:972874f31c98 1535 /*
iforce2d 0:972874f31c98 1536 Old-Standard Bold
iforce2d 0:972874f31c98 1537 r: Reduced char set (codes 32 - 128)
iforce2d 0:972874f31c98 1538 n: Numbers (codes 42 - 57)
iforce2d 0:972874f31c98 1539 no char: Full set (codes 32 - 255)
iforce2d 0:972874f31c98 1540 */
iforce2d 0:972874f31c98 1541
iforce2d 0:972874f31c98 1542 extern const u8g_fntpgm_uint8_t u8g_font_osb18[] U8G_FONT_SECTION("u8g_font_osb18");
iforce2d 0:972874f31c98 1543 extern const u8g_fntpgm_uint8_t u8g_font_osb21[] U8G_FONT_SECTION("u8g_font_osb21");
iforce2d 0:972874f31c98 1544 extern const u8g_fntpgm_uint8_t u8g_font_osb26[] U8G_FONT_SECTION("u8g_font_osb26");
iforce2d 0:972874f31c98 1545 extern const u8g_fntpgm_uint8_t u8g_font_osb29[] U8G_FONT_SECTION("u8g_font_osb29");
iforce2d 0:972874f31c98 1546 extern const u8g_fntpgm_uint8_t u8g_font_osb35[] U8G_FONT_SECTION("u8g_font_osb35");
iforce2d 0:972874f31c98 1547
iforce2d 0:972874f31c98 1548 extern const u8g_fntpgm_uint8_t u8g_font_osb18r[] U8G_FONT_SECTION("u8g_font_osb18r");
iforce2d 0:972874f31c98 1549 extern const u8g_fntpgm_uint8_t u8g_font_osb21r[] U8G_FONT_SECTION("u8g_font_osb21r");
iforce2d 0:972874f31c98 1550 extern const u8g_fntpgm_uint8_t u8g_font_osb26r[] U8G_FONT_SECTION("u8g_font_osb26r");
iforce2d 0:972874f31c98 1551 extern const u8g_fntpgm_uint8_t u8g_font_osb29r[] U8G_FONT_SECTION("u8g_font_osb29r");
iforce2d 0:972874f31c98 1552 extern const u8g_fntpgm_uint8_t u8g_font_osb35r[] U8G_FONT_SECTION("u8g_font_osb35r");
iforce2d 0:972874f31c98 1553
iforce2d 0:972874f31c98 1554 extern const u8g_fntpgm_uint8_t u8g_font_osb18n[] U8G_FONT_SECTION("u8g_font_osb18n");
iforce2d 0:972874f31c98 1555 extern const u8g_fntpgm_uint8_t u8g_font_osb21n[] U8G_FONT_SECTION("u8g_font_osb21n");
iforce2d 0:972874f31c98 1556 extern const u8g_fntpgm_uint8_t u8g_font_osb26n[] U8G_FONT_SECTION("u8g_font_osb26n");
iforce2d 0:972874f31c98 1557 extern const u8g_fntpgm_uint8_t u8g_font_osb29n[] U8G_FONT_SECTION("u8g_font_osb29n");
iforce2d 0:972874f31c98 1558 extern const u8g_fntpgm_uint8_t u8g_font_osb35n[] U8G_FONT_SECTION("u8g_font_osb35n");
iforce2d 0:972874f31c98 1559
iforce2d 0:972874f31c98 1560 /*
iforce2d 0:972874f31c98 1561 Old-Standard Regular
iforce2d 0:972874f31c98 1562 r: Reduced char set (codes 32 - 128)
iforce2d 0:972874f31c98 1563 n: Numbers (codes 42 - 57)
iforce2d 0:972874f31c98 1564 no char: Full set (codes 32 - 255)
iforce2d 0:972874f31c98 1565 */
iforce2d 0:972874f31c98 1566
iforce2d 0:972874f31c98 1567 extern const u8g_fntpgm_uint8_t u8g_font_osr18[] U8G_FONT_SECTION("u8g_font_osr18");
iforce2d 0:972874f31c98 1568 extern const u8g_fntpgm_uint8_t u8g_font_osr21[] U8G_FONT_SECTION("u8g_font_osr21");
iforce2d 0:972874f31c98 1569 extern const u8g_fntpgm_uint8_t u8g_font_osr26[] U8G_FONT_SECTION("u8g_font_osr26");
iforce2d 0:972874f31c98 1570 extern const u8g_fntpgm_uint8_t u8g_font_osr29[] U8G_FONT_SECTION("u8g_font_osr29");
iforce2d 0:972874f31c98 1571 extern const u8g_fntpgm_uint8_t u8g_font_osr35[] U8G_FONT_SECTION("u8g_font_osr35");
iforce2d 0:972874f31c98 1572
iforce2d 0:972874f31c98 1573 extern const u8g_fntpgm_uint8_t u8g_font_osr18r[] U8G_FONT_SECTION("u8g_font_osr18r");
iforce2d 0:972874f31c98 1574 extern const u8g_fntpgm_uint8_t u8g_font_osr21r[] U8G_FONT_SECTION("u8g_font_osr21r");
iforce2d 0:972874f31c98 1575 extern const u8g_fntpgm_uint8_t u8g_font_osr26r[] U8G_FONT_SECTION("u8g_font_osr26r");
iforce2d 0:972874f31c98 1576 extern const u8g_fntpgm_uint8_t u8g_font_osr29r[] U8G_FONT_SECTION("u8g_font_osr29r");
iforce2d 0:972874f31c98 1577 extern const u8g_fntpgm_uint8_t u8g_font_osr35r[] U8G_FONT_SECTION("u8g_font_osr35r");
iforce2d 0:972874f31c98 1578
iforce2d 0:972874f31c98 1579 extern const u8g_fntpgm_uint8_t u8g_font_osr18n[] U8G_FONT_SECTION("u8g_font_osr18n");
iforce2d 0:972874f31c98 1580 extern const u8g_fntpgm_uint8_t u8g_font_osr21n[] U8G_FONT_SECTION("u8g_font_osr21n");
iforce2d 0:972874f31c98 1581 extern const u8g_fntpgm_uint8_t u8g_font_osr26n[] U8G_FONT_SECTION("u8g_font_osr26n");
iforce2d 0:972874f31c98 1582 extern const u8g_fntpgm_uint8_t u8g_font_osr29n[] U8G_FONT_SECTION("u8g_font_osr29n");
iforce2d 0:972874f31c98 1583 extern const u8g_fntpgm_uint8_t u8g_font_osr35n[] U8G_FONT_SECTION("u8g_font_osr35n");
iforce2d 0:972874f31c98 1584
iforce2d 0:972874f31c98 1585 //extern const u8g_fntpgm_uint8_t u8g_font_osr41[] U8G_FONT_SECTION("u8g_font_osr41");
iforce2d 0:972874f31c98 1586
iforce2d 0:972874f31c98 1587 /* GNU unifont */
iforce2d 0:972874f31c98 1588
iforce2d 0:972874f31c98 1589 extern const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[] U8G_FONT_SECTION("u8g_font_unifont_18_19");
iforce2d 0:972874f31c98 1590 extern const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[] U8G_FONT_SECTION("u8g_font_unifont_72_73");
iforce2d 0:972874f31c98 1591 extern const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[] U8G_FONT_SECTION("u8g_font_unifont_67_75");
iforce2d 0:972874f31c98 1592 extern const u8g_fntpgm_uint8_t u8g_font_unifont_76[] U8G_FONT_SECTION("u8g_font_unifont_76");
iforce2d 0:972874f31c98 1593 extern const u8g_fntpgm_uint8_t u8g_font_unifont_77[] U8G_FONT_SECTION("u8g_font_unifont_77");
iforce2d 0:972874f31c98 1594 extern const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[] U8G_FONT_SECTION("u8g_font_unifont_78_79");
iforce2d 0:972874f31c98 1595 extern const u8g_fntpgm_uint8_t u8g_font_unifont_86[] U8G_FONT_SECTION("u8g_font_unifont_86");
iforce2d 0:972874f31c98 1596 extern const u8g_fntpgm_uint8_t u8g_font_unifont[] U8G_FONT_SECTION("u8g_font_unifont");
iforce2d 0:972874f31c98 1597 extern const u8g_fntpgm_uint8_t u8g_font_unifontr[] U8G_FONT_SECTION("u8g_font_unifontr");
iforce2d 0:972874f31c98 1598 extern const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[] U8G_FONT_SECTION("u8g_font_unifont_0_8");
iforce2d 0:972874f31c98 1599 extern const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[] U8G_FONT_SECTION("u8g_font_unifont_2_3");
iforce2d 0:972874f31c98 1600 extern const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[] U8G_FONT_SECTION("u8g_font_unifont_4_5");
iforce2d 0:972874f31c98 1601 extern const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[] U8G_FONT_SECTION("u8g_font_unifont_8_9");
iforce2d 0:972874f31c98 1602 extern const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[] U8G_FONT_SECTION("u8g_font_unifont_12_13");
iforce2d 0:972874f31c98 1603
iforce2d 0:972874f31c98 1604
iforce2d 0:972874f31c98 1605 /* 04b fonts */
iforce2d 0:972874f31c98 1606
iforce2d 0:972874f31c98 1607 extern const u8g_fntpgm_uint8_t u8g_font_04b_03b[] U8G_FONT_SECTION("u8g_font_04b_03b");
iforce2d 0:972874f31c98 1608 extern const u8g_fntpgm_uint8_t u8g_font_04b_03bn[] U8G_FONT_SECTION("u8g_font_04b_03bn");
iforce2d 0:972874f31c98 1609 extern const u8g_fntpgm_uint8_t u8g_font_04b_03br[] U8G_FONT_SECTION("u8g_font_04b_03br");
iforce2d 0:972874f31c98 1610 extern const u8g_fntpgm_uint8_t u8g_font_04b_03[] U8G_FONT_SECTION("u8g_font_04b_03");
iforce2d 0:972874f31c98 1611 extern const u8g_fntpgm_uint8_t u8g_font_04b_03n[] U8G_FONT_SECTION("u8g_font_04b_03n");
iforce2d 0:972874f31c98 1612 extern const u8g_fntpgm_uint8_t u8g_font_04b_03r[] U8G_FONT_SECTION("u8g_font_04b_03r");
iforce2d 0:972874f31c98 1613 extern const u8g_fntpgm_uint8_t u8g_font_04b_24[] U8G_FONT_SECTION("u8g_font_04b_24");
iforce2d 0:972874f31c98 1614 extern const u8g_fntpgm_uint8_t u8g_font_04b_24n[] U8G_FONT_SECTION("u8g_font_04b_24n");
iforce2d 0:972874f31c98 1615 extern const u8g_fntpgm_uint8_t u8g_font_04b_24r[] U8G_FONT_SECTION("u8g_font_04b_24r");
iforce2d 0:972874f31c98 1616
iforce2d 0:972874f31c98 1617 /* orgdot fonts */
iforce2d 0:972874f31c98 1618
iforce2d 0:972874f31c98 1619 extern const u8g_fntpgm_uint8_t u8g_font_orgv01[] U8G_FONT_SECTION("u8g_font_orgv01");
iforce2d 0:972874f31c98 1620 extern const u8g_fntpgm_uint8_t u8g_font_orgv01r[] U8G_FONT_SECTION("u8g_font_orgv01r");
iforce2d 0:972874f31c98 1621 extern const u8g_fntpgm_uint8_t u8g_font_orgv01n[] U8G_FONT_SECTION("u8g_font_orgv01n");
iforce2d 0:972874f31c98 1622
iforce2d 0:972874f31c98 1623 extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0[] U8G_FONT_SECTION("u8g_font_fixed_v0");
iforce2d 0:972874f31c98 1624 extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[] U8G_FONT_SECTION("u8g_font_fixed_v0r");
iforce2d 0:972874f31c98 1625 extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[] U8G_FONT_SECTION("u8g_font_fixed_v0n");
iforce2d 0:972874f31c98 1626
iforce2d 0:972874f31c98 1627 extern const u8g_fntpgm_uint8_t u8g_font_tpssb[] U8G_FONT_SECTION("u8g_font_tpssb");
iforce2d 0:972874f31c98 1628 extern const u8g_fntpgm_uint8_t u8g_font_tpssbr[] U8G_FONT_SECTION("u8g_font_tpssbr");
iforce2d 0:972874f31c98 1629 extern const u8g_fntpgm_uint8_t u8g_font_tpssbn[] U8G_FONT_SECTION("u8g_font_tpssbn");
iforce2d 0:972874f31c98 1630
iforce2d 0:972874f31c98 1631 extern const u8g_fntpgm_uint8_t u8g_font_tpss[] U8G_FONT_SECTION("u8g_font_tpss");
iforce2d 0:972874f31c98 1632 extern const u8g_fntpgm_uint8_t u8g_font_tpssr[] U8G_FONT_SECTION("u8g_font_tpssr");
iforce2d 0:972874f31c98 1633 extern const u8g_fntpgm_uint8_t u8g_font_tpssn[] U8G_FONT_SECTION("u8g_font_tpssn");
iforce2d 0:972874f31c98 1634
iforce2d 0:972874f31c98 1635 /* contributed */
iforce2d 0:972874f31c98 1636
iforce2d 0:972874f31c98 1637 extern const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[] U8G_FONT_SECTION("u8g_font_freedoomr25n");
iforce2d 0:972874f31c98 1638 extern const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[] U8G_FONT_SECTION("u8g_font_freedoomr10r");
iforce2d 0:972874f31c98 1639
iforce2d 0:972874f31c98 1640 /* adobe X11 */
iforce2d 0:972874f31c98 1641 extern const u8g_fntpgm_uint8_t u8g_font_courB08[] U8G_FONT_SECTION("u8g_font_courB08");
iforce2d 0:972874f31c98 1642 extern const u8g_fntpgm_uint8_t u8g_font_courB08r[] U8G_FONT_SECTION("u8g_font_courB08r");
iforce2d 0:972874f31c98 1643 extern const u8g_fntpgm_uint8_t u8g_font_courB10[] U8G_FONT_SECTION("u8g_font_courB10");
iforce2d 0:972874f31c98 1644 extern const u8g_fntpgm_uint8_t u8g_font_courB10r[] U8G_FONT_SECTION("u8g_font_courB10r");
iforce2d 0:972874f31c98 1645 extern const u8g_fntpgm_uint8_t u8g_font_courB12[] U8G_FONT_SECTION("u8g_font_courB12");
iforce2d 0:972874f31c98 1646 extern const u8g_fntpgm_uint8_t u8g_font_courB12r[] U8G_FONT_SECTION("u8g_font_courB12r");
iforce2d 0:972874f31c98 1647 extern const u8g_fntpgm_uint8_t u8g_font_courB14[] U8G_FONT_SECTION("u8g_font_courB14");
iforce2d 0:972874f31c98 1648 extern const u8g_fntpgm_uint8_t u8g_font_courB14r[] U8G_FONT_SECTION("u8g_font_courB14r");
iforce2d 0:972874f31c98 1649 extern const u8g_fntpgm_uint8_t u8g_font_courB18[] U8G_FONT_SECTION("u8g_font_courB18");
iforce2d 0:972874f31c98 1650 extern const u8g_fntpgm_uint8_t u8g_font_courB18r[] U8G_FONT_SECTION("u8g_font_courB18r");
iforce2d 0:972874f31c98 1651 extern const u8g_fntpgm_uint8_t u8g_font_courB24[] U8G_FONT_SECTION("u8g_font_courB24");
iforce2d 0:972874f31c98 1652 extern const u8g_fntpgm_uint8_t u8g_font_courB24r[] U8G_FONT_SECTION("u8g_font_courB24r");
iforce2d 0:972874f31c98 1653 extern const u8g_fntpgm_uint8_t u8g_font_courB24n[] U8G_FONT_SECTION("u8g_font_courB24n");
iforce2d 0:972874f31c98 1654
iforce2d 0:972874f31c98 1655 extern const u8g_fntpgm_uint8_t u8g_font_courR08[] U8G_FONT_SECTION("u8g_font_courR08");
iforce2d 0:972874f31c98 1656 extern const u8g_fntpgm_uint8_t u8g_font_courR08r[] U8G_FONT_SECTION("u8g_font_courR08r");
iforce2d 0:972874f31c98 1657 extern const u8g_fntpgm_uint8_t u8g_font_courR10[] U8G_FONT_SECTION("u8g_font_courR10");
iforce2d 0:972874f31c98 1658 extern const u8g_fntpgm_uint8_t u8g_font_courR10r[] U8G_FONT_SECTION("u8g_font_courR10r");
iforce2d 0:972874f31c98 1659 extern const u8g_fntpgm_uint8_t u8g_font_courR12[] U8G_FONT_SECTION("u8g_font_courR12");
iforce2d 0:972874f31c98 1660 extern const u8g_fntpgm_uint8_t u8g_font_courR12r[] U8G_FONT_SECTION("u8g_font_courR12r");
iforce2d 0:972874f31c98 1661 extern const u8g_fntpgm_uint8_t u8g_font_courR14[] U8G_FONT_SECTION("u8g_font_courR14");
iforce2d 0:972874f31c98 1662 extern const u8g_fntpgm_uint8_t u8g_font_courR14r[] U8G_FONT_SECTION("u8g_font_courR14r");
iforce2d 0:972874f31c98 1663 extern const u8g_fntpgm_uint8_t u8g_font_courR18[] U8G_FONT_SECTION("u8g_font_courR18");
iforce2d 0:972874f31c98 1664 extern const u8g_fntpgm_uint8_t u8g_font_courR18r[] U8G_FONT_SECTION("u8g_font_courR18r");
iforce2d 0:972874f31c98 1665 extern const u8g_fntpgm_uint8_t u8g_font_courR24[] U8G_FONT_SECTION("u8g_font_courR24");
iforce2d 0:972874f31c98 1666 extern const u8g_fntpgm_uint8_t u8g_font_courR24r[] U8G_FONT_SECTION("u8g_font_courR24r");
iforce2d 0:972874f31c98 1667 extern const u8g_fntpgm_uint8_t u8g_font_courR24n[] U8G_FONT_SECTION("u8g_font_courR24n");
iforce2d 0:972874f31c98 1668
iforce2d 0:972874f31c98 1669 extern const u8g_fntpgm_uint8_t u8g_font_helvB08[] U8G_FONT_SECTION("u8g_font_helvB08");
iforce2d 0:972874f31c98 1670 extern const u8g_fntpgm_uint8_t u8g_font_helvB08r[] U8G_FONT_SECTION("u8g_font_helvB08r");
iforce2d 0:972874f31c98 1671 extern const u8g_fntpgm_uint8_t u8g_font_helvB10[] U8G_FONT_SECTION("u8g_font_helvB10");
iforce2d 0:972874f31c98 1672 extern const u8g_fntpgm_uint8_t u8g_font_helvB10r[] U8G_FONT_SECTION("u8g_font_helvB10r");
iforce2d 0:972874f31c98 1673 extern const u8g_fntpgm_uint8_t u8g_font_helvB12[] U8G_FONT_SECTION("u8g_font_helvB12");
iforce2d 0:972874f31c98 1674 extern const u8g_fntpgm_uint8_t u8g_font_helvB12r[] U8G_FONT_SECTION("u8g_font_helvB12r");
iforce2d 0:972874f31c98 1675 extern const u8g_fntpgm_uint8_t u8g_font_helvB14[] U8G_FONT_SECTION("u8g_font_helvB14");
iforce2d 0:972874f31c98 1676 extern const u8g_fntpgm_uint8_t u8g_font_helvB14r[] U8G_FONT_SECTION("u8g_font_helvB14r");
iforce2d 0:972874f31c98 1677 extern const u8g_fntpgm_uint8_t u8g_font_helvB18[] U8G_FONT_SECTION("u8g_font_helvB18");
iforce2d 0:972874f31c98 1678 extern const u8g_fntpgm_uint8_t u8g_font_helvB18r[] U8G_FONT_SECTION("u8g_font_helvB18r");
iforce2d 0:972874f31c98 1679 extern const u8g_fntpgm_uint8_t u8g_font_helvB24[] U8G_FONT_SECTION("u8g_font_helvB24");
iforce2d 0:972874f31c98 1680 extern const u8g_fntpgm_uint8_t u8g_font_helvB24r[] U8G_FONT_SECTION("u8g_font_helvB24r");
iforce2d 0:972874f31c98 1681 extern const u8g_fntpgm_uint8_t u8g_font_helvB24n[] U8G_FONT_SECTION("u8g_font_helvB24n");
iforce2d 0:972874f31c98 1682
iforce2d 0:972874f31c98 1683 extern const u8g_fntpgm_uint8_t u8g_font_helvR08[] U8G_FONT_SECTION("u8g_font_helvR08");
iforce2d 0:972874f31c98 1684 extern const u8g_fntpgm_uint8_t u8g_font_helvR08r[] U8G_FONT_SECTION("u8g_font_helvR08r");
iforce2d 0:972874f31c98 1685 extern const u8g_fntpgm_uint8_t u8g_font_helvR10[] U8G_FONT_SECTION("u8g_font_helvR10");
iforce2d 0:972874f31c98 1686 extern const u8g_fntpgm_uint8_t u8g_font_helvR10r[] U8G_FONT_SECTION("u8g_font_helvR10r");
iforce2d 0:972874f31c98 1687 extern const u8g_fntpgm_uint8_t u8g_font_helvR12[] U8G_FONT_SECTION("u8g_font_helvR12");
iforce2d 0:972874f31c98 1688 extern const u8g_fntpgm_uint8_t u8g_font_helvR12r[] U8G_FONT_SECTION("u8g_font_helvR12r");
iforce2d 0:972874f31c98 1689 extern const u8g_fntpgm_uint8_t u8g_font_helvR14[] U8G_FONT_SECTION("u8g_font_helvR14");
iforce2d 0:972874f31c98 1690 extern const u8g_fntpgm_uint8_t u8g_font_helvR14r[] U8G_FONT_SECTION("u8g_font_helvR14r");
iforce2d 0:972874f31c98 1691 extern const u8g_fntpgm_uint8_t u8g_font_helvR18[] U8G_FONT_SECTION("u8g_font_helvR18");
iforce2d 0:972874f31c98 1692 extern const u8g_fntpgm_uint8_t u8g_font_helvR18r[] U8G_FONT_SECTION("u8g_font_helvR18r");
iforce2d 0:972874f31c98 1693 extern const u8g_fntpgm_uint8_t u8g_font_helvR24[] U8G_FONT_SECTION("u8g_font_helvR24");
iforce2d 0:972874f31c98 1694 extern const u8g_fntpgm_uint8_t u8g_font_helvR24r[] U8G_FONT_SECTION("u8g_font_helvR24r");
iforce2d 0:972874f31c98 1695 extern const u8g_fntpgm_uint8_t u8g_font_helvR24n[] U8G_FONT_SECTION("u8g_font_helvR24n");
iforce2d 0:972874f31c98 1696
iforce2d 0:972874f31c98 1697 extern const u8g_fntpgm_uint8_t u8g_font_ncenB08[] U8G_FONT_SECTION("u8g_font_ncenB08");
iforce2d 0:972874f31c98 1698 extern const u8g_fntpgm_uint8_t u8g_font_ncenB08r[] U8G_FONT_SECTION("u8g_font_ncenB08r");
iforce2d 0:972874f31c98 1699 extern const u8g_fntpgm_uint8_t u8g_font_ncenB10[] U8G_FONT_SECTION("u8g_font_ncenB10");
iforce2d 0:972874f31c98 1700 extern const u8g_fntpgm_uint8_t u8g_font_ncenB10r[] U8G_FONT_SECTION("u8g_font_ncenB10r");
iforce2d 0:972874f31c98 1701 extern const u8g_fntpgm_uint8_t u8g_font_ncenB12[] U8G_FONT_SECTION("u8g_font_ncenB12");
iforce2d 0:972874f31c98 1702 extern const u8g_fntpgm_uint8_t u8g_font_ncenB12r[] U8G_FONT_SECTION("u8g_font_ncenB12r");
iforce2d 0:972874f31c98 1703 extern const u8g_fntpgm_uint8_t u8g_font_ncenB14[] U8G_FONT_SECTION("u8g_font_ncenB14");
iforce2d 0:972874f31c98 1704 extern const u8g_fntpgm_uint8_t u8g_font_ncenB14r[] U8G_FONT_SECTION("u8g_font_ncenB14r");
iforce2d 0:972874f31c98 1705 extern const u8g_fntpgm_uint8_t u8g_font_ncenB18[] U8G_FONT_SECTION("u8g_font_ncenB18");
iforce2d 0:972874f31c98 1706 extern const u8g_fntpgm_uint8_t u8g_font_ncenB18r[] U8G_FONT_SECTION("u8g_font_ncenB18r");
iforce2d 0:972874f31c98 1707 extern const u8g_fntpgm_uint8_t u8g_font_ncenB24[] U8G_FONT_SECTION("u8g_font_ncenB24");
iforce2d 0:972874f31c98 1708 extern const u8g_fntpgm_uint8_t u8g_font_ncenB24r[] U8G_FONT_SECTION("u8g_font_ncenB24r");
iforce2d 0:972874f31c98 1709 extern const u8g_fntpgm_uint8_t u8g_font_ncenB24n[] U8G_FONT_SECTION("u8g_font_ncenB24n");
iforce2d 0:972874f31c98 1710
iforce2d 0:972874f31c98 1711 extern const u8g_fntpgm_uint8_t u8g_font_ncenR08[] U8G_FONT_SECTION("u8g_font_ncenR08");
iforce2d 0:972874f31c98 1712 extern const u8g_fntpgm_uint8_t u8g_font_ncenR08r[] U8G_FONT_SECTION("u8g_font_ncenR08r");
iforce2d 0:972874f31c98 1713 extern const u8g_fntpgm_uint8_t u8g_font_ncenR10[] U8G_FONT_SECTION("u8g_font_ncenR10");
iforce2d 0:972874f31c98 1714 extern const u8g_fntpgm_uint8_t u8g_font_ncenR10r[] U8G_FONT_SECTION("u8g_font_ncenR10r");
iforce2d 0:972874f31c98 1715 extern const u8g_fntpgm_uint8_t u8g_font_ncenR12[] U8G_FONT_SECTION("u8g_font_ncenR12");
iforce2d 0:972874f31c98 1716 extern const u8g_fntpgm_uint8_t u8g_font_ncenR12r[] U8G_FONT_SECTION("u8g_font_ncenR12r");
iforce2d 0:972874f31c98 1717 extern const u8g_fntpgm_uint8_t u8g_font_ncenR14[] U8G_FONT_SECTION("u8g_font_ncenR14");
iforce2d 0:972874f31c98 1718 extern const u8g_fntpgm_uint8_t u8g_font_ncenR14r[] U8G_FONT_SECTION("u8g_font_ncenR14r");
iforce2d 0:972874f31c98 1719 extern const u8g_fntpgm_uint8_t u8g_font_ncenR18[] U8G_FONT_SECTION("u8g_font_ncenR18");
iforce2d 0:972874f31c98 1720 extern const u8g_fntpgm_uint8_t u8g_font_ncenR18r[] U8G_FONT_SECTION("u8g_font_ncenR18r");
iforce2d 0:972874f31c98 1721 extern const u8g_fntpgm_uint8_t u8g_font_ncenR24[] U8G_FONT_SECTION("u8g_font_ncenR24");
iforce2d 0:972874f31c98 1722 extern const u8g_fntpgm_uint8_t u8g_font_ncenR24r[] U8G_FONT_SECTION("u8g_font_ncenR24r");
iforce2d 0:972874f31c98 1723 extern const u8g_fntpgm_uint8_t u8g_font_ncenR24n[] U8G_FONT_SECTION("u8g_font_ncenR24n");
iforce2d 0:972874f31c98 1724
iforce2d 0:972874f31c98 1725 extern const u8g_fntpgm_uint8_t u8g_font_symb08[] U8G_FONT_SECTION("u8g_font_symb08");
iforce2d 0:972874f31c98 1726 extern const u8g_fntpgm_uint8_t u8g_font_symb08r[] U8G_FONT_SECTION("u8g_font_symb08r");
iforce2d 0:972874f31c98 1727 extern const u8g_fntpgm_uint8_t u8g_font_symb10[] U8G_FONT_SECTION("u8g_font_symb10");
iforce2d 0:972874f31c98 1728 extern const u8g_fntpgm_uint8_t u8g_font_symb10r[] U8G_FONT_SECTION("u8g_font_symb10r");
iforce2d 0:972874f31c98 1729 extern const u8g_fntpgm_uint8_t u8g_font_symb12[] U8G_FONT_SECTION("u8g_font_symb12");
iforce2d 0:972874f31c98 1730 extern const u8g_fntpgm_uint8_t u8g_font_symb12r[] U8G_FONT_SECTION("u8g_font_symb12r");
iforce2d 0:972874f31c98 1731 extern const u8g_fntpgm_uint8_t u8g_font_symb14[] U8G_FONT_SECTION("u8g_font_symb14");
iforce2d 0:972874f31c98 1732 extern const u8g_fntpgm_uint8_t u8g_font_symb14r[] U8G_FONT_SECTION("u8g_font_symb14r");
iforce2d 0:972874f31c98 1733 extern const u8g_fntpgm_uint8_t u8g_font_symb18[] U8G_FONT_SECTION("u8g_font_symb18");
iforce2d 0:972874f31c98 1734 extern const u8g_fntpgm_uint8_t u8g_font_symb18r[] U8G_FONT_SECTION("u8g_font_symb18r");
iforce2d 0:972874f31c98 1735 extern const u8g_fntpgm_uint8_t u8g_font_symb24[] U8G_FONT_SECTION("u8g_font_symb24");
iforce2d 0:972874f31c98 1736 extern const u8g_fntpgm_uint8_t u8g_font_symb24r[] U8G_FONT_SECTION("u8g_font_symb24r");
iforce2d 0:972874f31c98 1737
iforce2d 0:972874f31c98 1738 extern const u8g_fntpgm_uint8_t u8g_font_timB08[] U8G_FONT_SECTION("u8g_font_timB08");
iforce2d 0:972874f31c98 1739 extern const u8g_fntpgm_uint8_t u8g_font_timB08r[] U8G_FONT_SECTION("u8g_font_timB08r");
iforce2d 0:972874f31c98 1740 extern const u8g_fntpgm_uint8_t u8g_font_timB10[] U8G_FONT_SECTION("u8g_font_timB10");
iforce2d 0:972874f31c98 1741 extern const u8g_fntpgm_uint8_t u8g_font_timB10r[] U8G_FONT_SECTION("u8g_font_timB10r");
iforce2d 0:972874f31c98 1742 extern const u8g_fntpgm_uint8_t u8g_font_timB12[] U8G_FONT_SECTION("u8g_font_timB12");
iforce2d 0:972874f31c98 1743 extern const u8g_fntpgm_uint8_t u8g_font_timB12r[] U8G_FONT_SECTION("u8g_font_timB12r");
iforce2d 0:972874f31c98 1744 extern const u8g_fntpgm_uint8_t u8g_font_timB14[] U8G_FONT_SECTION("u8g_font_timB14");
iforce2d 0:972874f31c98 1745 extern const u8g_fntpgm_uint8_t u8g_font_timB14r[] U8G_FONT_SECTION("u8g_font_timB14r");
iforce2d 0:972874f31c98 1746 extern const u8g_fntpgm_uint8_t u8g_font_timB18[] U8G_FONT_SECTION("u8g_font_timB18");
iforce2d 0:972874f31c98 1747 extern const u8g_fntpgm_uint8_t u8g_font_timB18r[] U8G_FONT_SECTION("u8g_font_timB18r");
iforce2d 0:972874f31c98 1748 extern const u8g_fntpgm_uint8_t u8g_font_timB24[] U8G_FONT_SECTION("u8g_font_timB24");
iforce2d 0:972874f31c98 1749 extern const u8g_fntpgm_uint8_t u8g_font_timB24r[] U8G_FONT_SECTION("u8g_font_timB24r");
iforce2d 0:972874f31c98 1750 extern const u8g_fntpgm_uint8_t u8g_font_timB24n[] U8G_FONT_SECTION("u8g_font_timB24n");
iforce2d 0:972874f31c98 1751
iforce2d 0:972874f31c98 1752 extern const u8g_fntpgm_uint8_t u8g_font_timR08[] U8G_FONT_SECTION("u8g_font_timR08");
iforce2d 0:972874f31c98 1753 extern const u8g_fntpgm_uint8_t u8g_font_timR08r[] U8G_FONT_SECTION("u8g_font_timR08r");
iforce2d 0:972874f31c98 1754 extern const u8g_fntpgm_uint8_t u8g_font_timR10[] U8G_FONT_SECTION("u8g_font_timR10");
iforce2d 0:972874f31c98 1755 extern const u8g_fntpgm_uint8_t u8g_font_timR10r[] U8G_FONT_SECTION("u8g_font_timR10r");
iforce2d 0:972874f31c98 1756 extern const u8g_fntpgm_uint8_t u8g_font_timR12[] U8G_FONT_SECTION("u8g_font_timR12");
iforce2d 0:972874f31c98 1757 extern const u8g_fntpgm_uint8_t u8g_font_timR12r[] U8G_FONT_SECTION("u8g_font_timR12r");
iforce2d 0:972874f31c98 1758 extern const u8g_fntpgm_uint8_t u8g_font_timR14[] U8G_FONT_SECTION("u8g_font_timR14");
iforce2d 0:972874f31c98 1759 extern const u8g_fntpgm_uint8_t u8g_font_timR14r[] U8G_FONT_SECTION("u8g_font_timR14r");
iforce2d 0:972874f31c98 1760 extern const u8g_fntpgm_uint8_t u8g_font_timR18[] U8G_FONT_SECTION("u8g_font_timR18");
iforce2d 0:972874f31c98 1761 extern const u8g_fntpgm_uint8_t u8g_font_timR18r[] U8G_FONT_SECTION("u8g_font_timR18r");
iforce2d 0:972874f31c98 1762 extern const u8g_fntpgm_uint8_t u8g_font_timR24[] U8G_FONT_SECTION("u8g_font_timR24");
iforce2d 0:972874f31c98 1763 extern const u8g_fntpgm_uint8_t u8g_font_timR24r[] U8G_FONT_SECTION("u8g_font_timR24r");
iforce2d 0:972874f31c98 1764 extern const u8g_fntpgm_uint8_t u8g_font_timR24n[] U8G_FONT_SECTION("u8g_font_timR24n");
iforce2d 0:972874f31c98 1765
iforce2d 0:972874f31c98 1766 /* fontstruct */
iforce2d 0:972874f31c98 1767
iforce2d 0:972874f31c98 1768 extern const u8g_fntpgm_uint8_t u8g_font_p01type[] U8G_FONT_SECTION("u8g_font_p01type");
iforce2d 0:972874f31c98 1769 extern const u8g_fntpgm_uint8_t u8g_font_p01typer[] U8G_FONT_SECTION("u8g_font_p01typer");
iforce2d 0:972874f31c98 1770 extern const u8g_fntpgm_uint8_t u8g_font_p01typen[] U8G_FONT_SECTION("u8g_font_p01typen");
iforce2d 0:972874f31c98 1771
iforce2d 0:972874f31c98 1772 extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[] U8G_FONT_SECTION("u8g_font_lucasfont_alternate");
iforce2d 0:972874f31c98 1773 extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[] U8G_FONT_SECTION("u8g_font_lucasfont_alternater");
iforce2d 0:972874f31c98 1774 extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[] U8G_FONT_SECTION("u8g_font_lucasfont_alternaten");
iforce2d 0:972874f31c98 1775
iforce2d 0:972874f31c98 1776 extern const u8g_fntpgm_uint8_t u8g_font_chikita[] U8G_FONT_SECTION("u8g_font_chikita");
iforce2d 0:972874f31c98 1777 extern const u8g_fntpgm_uint8_t u8g_font_chikitar[] U8G_FONT_SECTION("u8g_font_chikitar");
iforce2d 0:972874f31c98 1778 extern const u8g_fntpgm_uint8_t u8g_font_chikitan[] U8G_FONT_SECTION("u8g_font_chikitan");
iforce2d 0:972874f31c98 1779
iforce2d 0:972874f31c98 1780 extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[] U8G_FONT_SECTION("u8g_font_pixelle_micro");
iforce2d 0:972874f31c98 1781 extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[] U8G_FONT_SECTION("u8g_font_pixelle_micror");
iforce2d 0:972874f31c98 1782 extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[] U8G_FONT_SECTION("u8g_font_pixelle_micron");
iforce2d 0:972874f31c98 1783
iforce2d 0:972874f31c98 1784 extern const u8g_fntpgm_uint8_t u8g_font_trixel_square[] U8G_FONT_SECTION("u8g_font_trixel_square");
iforce2d 0:972874f31c98 1785 extern const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[] U8G_FONT_SECTION("u8g_font_trixel_squarer");
iforce2d 0:972874f31c98 1786 extern const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[] U8G_FONT_SECTION("u8g_font_trixel_squaren");
iforce2d 0:972874f31c98 1787
iforce2d 0:972874f31c98 1788 extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[] U8G_FONT_SECTION("u8g_font_robot_de_niro");
iforce2d 0:972874f31c98 1789 extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[] U8G_FONT_SECTION("u8g_font_robot_de_niror");
iforce2d 0:972874f31c98 1790 extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[] U8G_FONT_SECTION("u8g_font_robot_de_niron");
iforce2d 0:972874f31c98 1791
iforce2d 0:972874f31c98 1792 extern const u8g_fntpgm_uint8_t u8g_font_baby[] U8G_FONT_SECTION("u8g_font_baby");
iforce2d 0:972874f31c98 1793 extern const u8g_fntpgm_uint8_t u8g_font_babyr[] U8G_FONT_SECTION("u8g_font_babyr");
iforce2d 0:972874f31c98 1794 extern const u8g_fntpgm_uint8_t u8g_font_babyn[] U8G_FONT_SECTION("u8g_font_babyn");
iforce2d 0:972874f31c98 1795
iforce2d 0:972874f31c98 1796 extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07[] U8G_FONT_SECTION("u8g_font_blipfest_07");
iforce2d 0:972874f31c98 1797 extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[] U8G_FONT_SECTION("u8g_font_blipfest_07r");
iforce2d 0:972874f31c98 1798 extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[] U8G_FONT_SECTION("u8g_font_blipfest_07n");
iforce2d 0:972874f31c98 1799
iforce2d 0:972874f31c98 1800
iforce2d 0:972874f31c98 1801
iforce2d 0:972874f31c98 1802 #ifdef __cplusplus
iforce2d 0:972874f31c98 1803 }
iforce2d 0:972874f31c98 1804 #endif
iforce2d 0:972874f31c98 1805
iforce2d 0:972874f31c98 1806 #endif /* _U8G_H */
iforce2d 0:972874f31c98 1807
iforce2d 0:972874f31c98 1808