From: Nils Faerber Date: Sun, 19 May 2013 00:07:04 +0000 (+0200) Subject: Power saving changes, add new fonts, bitmaps and screens X-Git-Url: https://git.karo-electronics.de/?p=oswald.git;a=commitdiff_plain;h=1b5790095c23913d02531727e47b79af3568e0b1 Power saving changes, add new fonts, bitmaps and screens --- diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.c new file mode 100644 index 0000000..0b35b5c --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.c @@ -0,0 +1,127 @@ +/******************************************************************************* + * + * HAL_FLASH.c + * Flash Library for flash memory controller of MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 01/18/2011 + * + ******************************************************************************/ + +#include "msp430.h" +#include "HAL_FLASH.h" + +void Flash_SegmentErase(unsigned int *Flash_ptr) +{ + FCTL3 = FWKEY; // Clear Lock bit + FCTL1 = FWKEY + ERASE; // Set Erase bit + *Flash_ptr = 0; // Dummy write to erase Flash seg + while (FCTL3 & BUSY); // test busy + FCTL1 = FWKEY; // Clear WRT bit + FCTL3 = FWKEY + LOCK; // Set LOCK bit +} + +unsigned char Flash_EraseCheck(unsigned int *Flash_ptr, unsigned int len) +{ + unsigned int i; + + for (i = 0; i < len; i++) { // was erasing successfull? + if (*(Flash_ptr + i) != 0xFF) { + return FLASH_STATUS_ERROR; + } + } + + return FLASH_STATUS_OK; +} + +void FlashWrite_8(unsigned char *Data_ptr, unsigned char *Flash_ptr, unsigned int count) +{ + FCTL3 = FWKEY; // Clear Lock bit + FCTL1 = FWKEY+WRT; // Enable byte/word write mode + + while (count > 0) { + while (FCTL3 & BUSY); // test busy + *Flash_ptr++ = *Data_ptr++; // Write to Flash + count--; + } + + FCTL1 = FWKEY; // Clear write bit + FCTL3 = FWKEY + LOCK; // Set LOCK bit +} + +void FlashWrite_16(unsigned int *Data_ptr, unsigned int *Flash_ptr, unsigned int count) +{ + FCTL3 = FWKEY; // Clear Lock bit + FCTL1 = FWKEY+WRT; // Enable byte/word write mode + + while (count > 0) { + while (FCTL3 & BUSY); // test busy + *Flash_ptr++ = *Data_ptr++; // Write to Flash + count--; + } + + FCTL1 = FWKEY; // Clear Erase bit + FCTL3 = FWKEY + LOCK; // Set LOCK bit +} + +void FlashWrite_32(unsigned long *Data_ptr, unsigned long *Flash_ptr, unsigned int count) +{ + FCTL3 = FWKEY; // Clear Lock bit + FCTL1 = FWKEY + BLKWRT; // Enable long-word write + + while (count > 0) { + while (FCTL3 & BUSY); // test busy + *Flash_ptr++ = *Data_ptr++; // Write to Flash + count--; + } + + FCTL1 = FWKEY; // Clear Erase bit + FCTL3 = FWKEY + LOCK; // Set LOCK bit +} + +void FlashMemoryFill_32(unsigned long value, unsigned long *Flash_ptr, unsigned int count) +{ + FCTL3 = FWKEY; // Clear Lock bit + FCTL1 = FWKEY + BLKWRT; // Enable long-word write + + while (count > 0) { + while (FCTL3 & BUSY); // test busy + *Flash_ptr++ = value; // Write to Flash + count--; + } + + FCTL1 = FWKEY; // Clear Erase bit + FCTL3 = FWKEY + LOCK; // Set LOCK bit +} diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h new file mode 100644 index 0000000..9317e5b --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_FLASH.h @@ -0,0 +1,104 @@ +/******************************************************************************* + * + * HAL_FLASH.h + * Flash Library for flash memory controller of MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 01/18/2011 + * + ******************************************************************************/ + +#ifndef HAL_FLASH_H +#define HAL_FLASH_H + +//****************************************************************************** +// Defines +//****************************************************************************** + +#define FLASH_STATUS_OK 0 +#define FLASH_STATUS_ERROR 1 + +/******************************************************************************* + * \brief Erase a single segment of the flash memory + * + * \param *Flash_ptr Pointer into the flash segment to erase + ******************************************************************************/ +extern void Flash_SegmentErase(unsigned int *Flash_ptr); + +/******************************************************************************* + * \brief Erase Check of the flash memory + * + * \param *Flash_ptr Pointer into the flash segment to erase + * \param len give the len in word + ******************************************************************************/ +extern unsigned char Flash_EraseCheck(unsigned int *Flash_ptr, unsigned int len); + +/******************************************************************************* + * \brief Write data into the flash memory (Byte format) + * + * \param *Data_ptr Pointer to the Data to write + * \param *Flash_ptr Pointer into the flash to write data to + * \param count number of data to write + ******************************************************************************/ +extern void FlashWrite_8(unsigned char *Data_ptr, unsigned char *Flash_ptr, unsigned int count); + +/******************************************************************************* + * \brief Write data into the flash memory (Word format) + * + * \param *Data_ptr Pointer to the Data to write + * \param *Flash_ptr Pointer into the flash to write data to + * \param count number of data to write + ******************************************************************************/ +extern void FlashWrite_16(unsigned int *Data_ptr, unsigned int *Flash_ptr, unsigned int count); + +/******************************************************************************* + * \brief Write data into the flash memory (Long format) + * + * \param *Data_ptr Pointer to the Data to write + * \param *Flash_ptr Pointer into the flash to write data to + * \param count number of data to write + ******************************************************************************/ +extern void FlashWrite_32(unsigned long *Data_ptr, unsigned long *Flash_ptr, unsigned int count); + +/******************************************************************************* + * \brief Fill data into the flash memory (Long format) + * + * \param value Pointer to the Data to write + * \param *Flash_ptr pointer into the flash to write data to + * \param count number of data to write (= byte * 4) + ******************************************************************************/ +extern void FlashMemoryFill_32(unsigned long value, unsigned long *Flash_ptr, unsigned int count); + +#endif /* HAL_FLASH_H */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h new file mode 100644 index 0000000..398074f --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_MACROS.h @@ -0,0 +1,51 @@ +/* **************************************************************************** + * + * HAL_MACROS.h + * Flash Library for flash memory controller of MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * +******************************************************************************/ + +#ifndef HAL_MACROS_H +#define HAL_MACROS_H + +/* + * This macro is for use by other macros to form a fully valid C statement. + */ +#define st(x) do { x } while (__LINE__ == -1) + +#endif /* HAL_MACROS_H */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c new file mode 100644 index 0000000..e11c448 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.c @@ -0,0 +1,78 @@ +/******************************************************************************* + * + * HAL_PMAP.c + * Port Mapper Library for PMAP controller of MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * + ******************************************************************************/ + +#include "msp430.h" +#include "HAL_PMAP.h" +#include "portmacro.h" + +// Check and define PMAP function only if the device has port mapping capability +// Note: This macro is defined in the device-specific header file if this +// feature is available on a given MSP430. +#ifdef __MSP430_HAS_PORT_MAPPING__ + +void configure_ports(const unsigned char *port_mapping, unsigned char *PxMAPy, + unsigned char num_of_ports, unsigned char port_map_reconfig) +{ + uint16_t i; + + portENTER_CRITICAL(); + + // Get write-access to port mapping registers: + PMAPPWD = PMAPPW; + + if (port_map_reconfig) { + // Allow reconfiguration during runtime: + PMAPCTL = PMAPRECFG; + } + + // Configure Port Mapping: + for (i = 0; i < num_of_ports * 8; i++) { + PxMAPy[i] = port_mapping[i]; + } + + // Disable write-access to port mapping registers: + PMAPPWD = 0; + + portEXIT_CRITICAL(); +} + +#endif /* __MSP430_HAS_PORT_MAPPING__ */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h new file mode 100644 index 0000000..9fb7b77 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMAP.h @@ -0,0 +1,58 @@ +/******************************************************************************* + * + * HAL_PMAP.h + * Port Mapper Library for PMAP controller of MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * + ******************************************************************************/ + +#ifndef HAL_PMAP_H +#define HAL_PMAP_H + +/******************************************************************************* + * \brief Configures the MSP430 Port Mapper + * + * \param *port_mapping Pointer to init Data + * \param PxMAPy Pointer start of first Port Mapper to initialize + * \param num_of_ports Number of Ports to initialize + * \param port_map_reconfig Flag to enable/disable reconfiguration + * + ******************************************************************************/ +extern void configure_ports(const unsigned char *port_mapping, unsigned char *PxMAPy, + unsigned char num_of_ports, unsigned char port_map_reconfig); + +#endif /* HAL_PMAP_H */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c new file mode 100644 index 0000000..bf5e1e0 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.c @@ -0,0 +1,274 @@ +/******************************************************************************* + * + * HAL_PMM.c + * Power Management Module Library for MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * Modified SetVcoreUp() and SetVcoreDown() functions + * + ******************************************************************************/ + +#include "msp430.h" +#include "HAL_PMM.h" + +#define _HAL_PMM_DISABLE_SVML_ +#define _HAL_PMM_DISABLE_SVSL_ +#define _HAL_PMM_DISABLE_FULL_PERFORMANCE_ + +#ifdef _HAL_PMM_DISABLE_SVML_ +#define _HAL_PMM_SVMLE SVMLE +#else +#define _HAL_PMM_SVMLE 0 +#endif + +#ifdef _HAL_PMM_DISABLE_SVSL_ +#define _HAL_PMM_SVSLE SVSLE +#else +#define _HAL_PMM_SVSLE 0 +#endif + +#ifdef _HAL_PMM_DISABLE_FULL_PERFORMANCE_ +#define _HAL_PMM_SVSFP SVSLFP +#define _HAL_PMM_SVMFP SVMLFP +#else +#define _HAL_PMM_SVSFP 0 +#define _HAL_PMM_SVMFP 0 +#endif + +/******************************************************************************* + * \brief Increase Vcore by one level + * + * \param level Level to which Vcore needs to be increased + * \return status Success/failure + ******************************************************************************/ +static unsigned int SetVCoreUp(unsigned char level) +{ + unsigned int PMMRIE_backup, SVSMHCTL_backup, SVSMLCTL_backup; + + // The code flow for increasing the Vcore has been altered to work around + // the erratum FLASH37. + // Please refer to the Errata sheet to know if a specific device is affected + // DO NOT ALTER THIS FUNCTION + + // Open PMM registers for write access + PMMCTL0_H = 0xA5; + + // Disable dedicated Interrupts + // Backup all registers + PMMRIE_backup = PMMRIE; + PMMRIE &= ~(SVMHVLRPE | SVSHPE | SVMLVLRPE | SVSLPE | SVMHVLRIE | + SVMHIE | SVSMHDLYIE | SVMLVLRIE | SVMLIE | SVSMLDLYIE ); + SVSMHCTL_backup = SVSMHCTL; + SVSMLCTL_backup = SVSMLCTL; + + // Clear flags + PMMIFG = 0; + + // Set SVM highside to new level and check if a VCore increase is possible + SVSMHCTL = SVMHE | SVSHE | (SVSMHRRL0 * level); + + // Wait until SVM highside is settled + while ((PMMIFG & SVSMHDLYIFG) == 0); + + // Clear flag + PMMIFG &= ~SVSMHDLYIFG; + + // Check if a VCore increase is possible + if ((PMMIFG & SVMHIFG) == SVMHIFG) { // -> Vcc is too low for a Vcore increase + // recover the previous settings + PMMIFG &= ~SVSMHDLYIFG; + SVSMHCTL = SVSMHCTL_backup; + + // Wait until SVM highside is settled + while ((PMMIFG & SVSMHDLYIFG) == 0); + + // Clear all Flags + PMMIFG &= ~(SVMHVLRIFG | SVMHIFG | SVSMHDLYIFG | SVMLVLRIFG | SVMLIFG | SVSMLDLYIFG); + + PMMRIE = PMMRIE_backup; // Restore PMM interrupt enable register + PMMCTL0_H = 0x00; // Lock PMM registers for write access + return PMM_STATUS_ERROR; // return: voltage not set + } + + // Set also SVS highside to new level + // Vcc is high enough for a Vcore increase + SVSMHCTL |= (SVSHRVL0 * level); + + // Wait until SVM highside is settled + while ((PMMIFG & SVSMHDLYIFG) == 0); + + // Clear flag + PMMIFG &= ~SVSMHDLYIFG; + + // Set VCore to new level + PMMCTL0_L = PMMCOREV0 * level; + + // Set SVM, SVS low side to new level + SVSMLCTL = SVMLE | (SVSMLRRL0 * level) | SVSLE | (SVSLRVL0 * level); + + // Wait until SVM, SVS low side is settled + while ((PMMIFG & SVSMLDLYIFG) == 0); + + // Clear flag + PMMIFG &= ~SVSMLDLYIFG; + // SVS, SVM core and high side are now set to protect for the new core level + + // Restore Low side settings + // Clear all other bits _except_ level settings + SVSMLCTL &= (SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2); + + // Clear level settings in the backup register,keep all other bits + SVSMLCTL_backup &= ~(SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2); + + // Restore low-side SVS monitor settings + SVSMLCTL |= SVSMLCTL_backup; + + // Restore High side settings + // Clear all other bits except level settings + SVSMHCTL &= (SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2); + + // Clear level settings in the backup register,keep all other bits + SVSMHCTL_backup &= ~(SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2); + + // Restore backup + SVSMHCTL |= SVSMHCTL_backup; + + // Wait until high side, low side settled + while (((PMMIFG & SVSMLDLYIFG) == 0) && ((PMMIFG & SVSMHDLYIFG) == 0)); + + // Clear all Flags + PMMIFG &= ~(SVMHVLRIFG | SVMHIFG | SVSMHDLYIFG | SVMLVLRIFG | SVMLIFG | SVSMLDLYIFG); + + PMMRIE = PMMRIE_backup; // Restore PMM interrupt enable register + PMMCTL0_H = 0x00; // Lock PMM registers for write access + + return PMM_STATUS_OK; +} + +/******************************************************************************* + * \brief Decrease Vcore by one level + * + * \param level Level to which Vcore needs to be decreased + * \return status Success/failure + ******************************************************************************/ +static unsigned int SetVCoreDown(unsigned char level) +{ + unsigned int PMMRIE_backup, SVSMHCTL_backup, SVSMLCTL_backup; + + // The code flow for decreasing the Vcore has been altered to work around + // the erratum FLASH37. + // Please refer to the Errata sheet to know if a specific device is affected + // DO NOT ALTER THIS FUNCTION + + // Open PMM registers for write access + PMMCTL0_H = 0xA5; + + // Disable dedicated Interrupts + // Backup all registers + PMMRIE_backup = PMMRIE; + PMMRIE &= ~(SVMHVLRPE | SVSHPE | SVMLVLRPE | SVSLPE | SVMHVLRIE | + SVMHIE | SVSMHDLYIE | SVMLVLRIE | SVMLIE | SVSMLDLYIE ); + SVSMHCTL_backup = SVSMHCTL; + SVSMLCTL_backup = SVSMLCTL; + + // Clear flags + PMMIFG &= ~(SVMHIFG | SVSMHDLYIFG | SVMLIFG | SVSMLDLYIFG); + + // Set SVM, SVS high & low side to new settings in normal mode + SVSMHCTL = SVMHE | (SVSMHRRL0 * level) | SVSHE | (SVSHRVL0 * level); + SVSMLCTL = SVMLE | (SVSMLRRL0 * level) | SVSLE | (SVSLRVL0 * level); + + // Wait until SVM high side and SVM low side is settled + while ((PMMIFG & SVSMHDLYIFG) == 0 || (PMMIFG & SVSMLDLYIFG) == 0); + + // Clear flags + PMMIFG &= ~(SVSMHDLYIFG + SVSMLDLYIFG); + // SVS, SVM core and high side are now set to protect for the new core level + + // Set VCore to new level + PMMCTL0_L = PMMCOREV0 * level; + + // Restore Low side settings + // Clear all other bits _except_ level settings + SVSMLCTL &= (SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2); + + // Clear level settings in the backup register,keep all other bits + SVSMLCTL_backup &= ~(SVSLRVL0+SVSLRVL1+SVSMLRRL0+SVSMLRRL1+SVSMLRRL2); + + // Restore low-side SVS monitor settings + SVSMLCTL |= SVSMLCTL_backup; + + // Restore High side settings + // Clear all other bits except level settings + SVSMHCTL &= (SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2); + + // Clear level settings in the backup register, keep all other bits + SVSMHCTL_backup &= ~(SVSHRVL0+SVSHRVL1+SVSMHRRL0+SVSMHRRL1+SVSMHRRL2); + + // Restore backup + SVSMHCTL |= SVSMHCTL_backup; + + // Wait until high side, low side settled + while (((PMMIFG & SVSMLDLYIFG) == 0) && ((PMMIFG & SVSMHDLYIFG) == 0)); + + // Clear all Flags + PMMIFG &= ~(SVMHVLRIFG | SVMHIFG | SVSMHDLYIFG | SVMLVLRIFG | SVMLIFG | SVSMLDLYIFG); + + PMMRIE = PMMRIE_backup; // Restore PMM interrupt enable register + PMMCTL0_H = 0x00; // Lock PMM registers for write access + return PMM_STATUS_OK; // Return: OK +} + +unsigned int SetVCore(unsigned char level) +{ + unsigned int actlevel; + unsigned int status; + + status = 0; + level &= PMMCOREV_3; // Set Mask for Max. level + actlevel = (PMMCTL0 & PMMCOREV_3); // Get actual VCore + // step by step increase or decrease + while (((level != actlevel) && (status == 0)) || (level < actlevel)) { + if (level > actlevel) { + status = SetVCoreUp(++actlevel); + } + else { + status = SetVCoreDown(--actlevel); + } + } + + return status; +} diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d new file mode 100644 index 0000000..ebe26fa --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.d @@ -0,0 +1,7 @@ +HAL_PMM.o: F5xx_F6xx_Core_Lib/HAL_PMM.c \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430f5438a.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/iomacros.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/in430.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/intrinsics.h \ + F5xx_F6xx_Core_Lib/HAL_PMM.h F5xx_F6xx_Core_Lib/HAL_MACROS.h diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h new file mode 100644 index 0000000..c56020a --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_PMM.h @@ -0,0 +1,105 @@ +/******************************************************************************* + * + * HAL_PMM.h + * Power Management Module Library for MSP430F5xx/6xx family + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * + ******************************************************************************/ + +#ifndef HAL_PMM_H +#define HAL_PMM_H + +#include "HAL_MACROS.h" + +/******************************************************************************* + * Macros + ******************************************************************************/ +#define ENABLE_SVSL() st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVSLE; PMMCTL0_H = 0x00;) +#define DISABLE_SVSL() st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~SVSLE; PMMCTL0_H = 0x00;) +#define ENABLE_SVML() st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVMLE; PMMCTL0_H = 0x00;) +#define DISABLE_SVML() st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~SVMLE; PMMCTL0_H = 0x00;) +#define ENABLE_SVSH() st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVSHE; PMMCTL0_H = 0x00;) +#define DISABLE_SVSH() st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~SVSHE; PMMCTL0_H = 0x00;) +#define ENABLE_SVMH() st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVMHE; PMMCTL0_H = 0x00;) +#define DISABLE_SVMH() st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~SVMHE; PMMCTL0_H = 0x00;) +#define ENABLE_SVSL_SVML() st(PMMCTL0_H = 0xA5; SVSMLCTL |= (SVSLE + SVMLE); PMMCTL0_H = 0x00;) +#define DISABLE_SVSL_SVML() st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~(SVSLE + SVMLE); PMMCTL0_H = 0x00;) +#define ENABLE_SVSH_SVMH() st(PMMCTL0_H = 0xA5; SVSMHCTL |= (SVSHE + SVMHE); PMMCTL0_H = 0x00;) +#define DISABLE_SVSH_SVMH() st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~(SVSHE + SVMHE); PMMCTL0_H = 0x00;) + +#define ENABLE_SVSL_RESET() st(PMMCTL0_H = 0xA5; PMMRIE |= SVSLPE; PMMCTL0_H = 0x00;) +#define DISABLE_SVSL_RESET() st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVSLPE; PMMCTL0_H = 0x00;) +#define ENABLE_SVML_INTERRUPT() st(PMMCTL0_H = 0xA5; PMMRIE |= SVMLIE; PMMCTL0_H = 0x00;) +#define DISABLE_SVML_INTERRUPT() st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVMLIE; PMMCTL0_H = 0x00;) +#define ENABLE_SVSH_RESET() st(PMMCTL0_H = 0xA5; PMMRIE |= SVSHPE; PMMCTL0_H = 0x00;) +#define DISABLE_SVSH_RESET() st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVSHPE; PMMCTL0_H = 0x00;) +#define ENABLE_SVMH_INTERRUPT() st(PMMCTL0_H = 0xA5; PMMRIE |= SVMHIE; PMMCTL0_H = 0x00;) +#define DISABLE_SVMH_INTERRUPT() st(PMMCTL0_H = 0xA5; PMMRIE &= ~SVMHIE; PMMCTL0_H = 0x00;) +#define CLEAR_PMM_IFGS() st(PMMCTL0_H = 0xA5; PMMIFG = 0; PMMCTL0_H = 0x00;) + +// These settings use SVSH/LACE = 0 +#define SVSL_ENABLED_IN_LPM_FAST_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL |= (SVSLFP+SVSLMD); SVSMLCTL &= ~SVSMLACE; PMMCTL0_H = 0x00;) +#define SVSL_ENABLED_IN_LPM_SLOW_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVSLMD; SVSMLCTL &= ~(SVSLFP+SVSMLACE); PMMCTL0_H = 0x00;) + +#define SVSL_DISABLED_IN_LPM_FAST_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL |= SVSLFP; SVSMLCTL &= ~(SVSLMD+SVSMLACE); PMMCTL0_H = 0x00;) +#define SVSL_DISABLED_IN_LPM_SLOW_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL &= ~(SVSLFP+SVSMLACE+SVSLMD); PMMCTL0_H = 0x00;) + +#define SVSH_ENABLED_IN_LPM_NORM_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVSHMD; SVSMHCTL &= ~(SVSMHACE+SVSHFP); PMMCTL0_H = 0x00;) +#define SVSH_ENABLED_IN_LPM_FULL_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL |= (SVSHMD+SVSHFP); SVSMHCTL &= ~SVSMHACE; PMMCTL0_H = 0x00;) + +#define SVSH_DISABLED_IN_LPM_NORM_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL &= ~(SVSMHACE+SVSHFP+SVSHMD);PMMCTL0_H = 0x00;) +#define SVSH_DISABLED_IN_LPM_FULL_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL |= SVSHFP; SVSMHCTL &= ~(SVSMHACE+SVSHMD); PMMCTL0_H = 0x00;) + +// These setting use SVSH/LACE = 1 +#define SVSL_OPTIMIZED_IN_LPM_FAST_WAKE() st(PMMCTL0_H = 0xA5; SVSMLCTL |= (SVSLFP+SVSLMD+SVSMLACE); PMMCTL0_H = 0x00;) +#define SVSH_OPTIMIZED_IN_LPM_FULL_PERF() st(PMMCTL0_H = 0xA5; SVSMHCTL |= (SVSHMD+SVSHFP+SVSMHACE); PMMCTL0_H = 0x00;) + +/******************************************************************************* + * Defines + ******************************************************************************/ +#define PMM_STATUS_OK 0 +#define PMM_STATUS_ERROR 1 + +/******************************************************************************* + * \brief Set Vcore to expected level + * + * \param level Level to which Vcore needs to be increased/decreased + * \return status Success/failure + ******************************************************************************/ +extern unsigned int SetVCore(unsigned char level); + +#endif /* HAL_PMM_H */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c new file mode 100644 index 0000000..4001672 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.c @@ -0,0 +1,158 @@ +/******************************************************************************* + * + * HAL_TLV.c + * Provides Functions to Read the TLV Data Section of the MSP430 Devices + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Updated: Version 2.0 01/17/2011 + * + ******************************************************************************/ + +#include "msp430.h" +#include "HAL_TLV.h" + +void Get_TLV_Info(unsigned char tag, unsigned char instance, unsigned char *length, unsigned int **data_address) +{ + char *TLV_address = (char *)TLV_START; // TLV Structure Start Address + + while((TLV_address < (char *)TLV_END) + && ((*TLV_address != tag) || instance) // check for tag and instance + && (*TLV_address != TLV_TAGEND)) // do range check first + { + if (*TLV_address == tag) instance--; // repeat till requested instance is reached + TLV_address += *(TLV_address + 1) + 2; // add (Current TAG address + LENGTH) + 2 + } + + if (*TLV_address == tag) // Check if Tag match happened.. + { + *length = *(TLV_address + 1); // Return length = Address + 1 + *data_address = (unsigned int *)(TLV_address + 2); // Return address of first data/value info = Address + 2 + } + else // If there was no tag match and the end of TLV structure was reached.. + { + *length = 0; // Return 0 for TAG not found + *data_address = 0; // Return 0 for TAG not found + } +} + +unsigned int Get_Device_Type(void) +{ + unsigned int *pDeviceType = (unsigned int *)DEVICE_ID_0; + return pDeviceType[0]; // Return Value from TLV Table +} + +unsigned int Get_TLV_Memory(unsigned char instance) +{ + unsigned char *pPDTAG; + unsigned char bPDTAG_bytes; + unsigned int count; + + instance *= 2; // set tag for word access comparison + + // TLV access Function Call + Get_TLV_Info(TLV_PDTAG, 0, &bPDTAG_bytes, (unsigned int **)&pPDTAG); // Get Peripheral data pointer + + for (count = 0;count <= instance; count += 2) + { + if (pPDTAG[count] == 0) return 0; // Return 0 if end reached + if (count == instance) return (pPDTAG[count] | pPDTAG[count+1]<<8); + } + + return 0; // Return 0: not found +} + +unsigned int Get_TLV_Peripheral(unsigned char tag, unsigned char instance) +{ + unsigned char *pPDTAG; + unsigned char bPDTAG_bytes; + unsigned int count = 0; + unsigned int pcount = 0; + + Get_TLV_Info(TLV_PDTAG, 0, &bPDTAG_bytes, (unsigned int **)&pPDTAG); // Get Peripheral data pointer + + // read memory configuration from TLV to get offset for Peripherals + while (Get_TLV_Memory(count)) { + count++; + } + + pcount = pPDTAG[count * 2 + 1]; // get number of Peripheral entries + count++; // inc count to first Periperal + pPDTAG += count*2; // adjust point to first address of Peripheral + count = 0; // set counter back to 0 + pcount *= 2; // align pcount for work comparision + + // TLV access Function Call + for (count = 0; count <= pcount; count += 2) { + if (pPDTAG[count+1] == tag) { // test if required Peripheral is found + if (instance > 0) { // test if required instance is found + instance--; + } + else { + return (pPDTAG[count] | pPDTAG[count + 1] << 8); // Return found data + } + } + } + + return 0; // Return 0: not found +} + +unsigned char Get_TLV_Interrupt(unsigned char tag) +{ + unsigned char *pPDTAG; + unsigned char bPDTAG_bytes; + unsigned int count = 0; + unsigned int pcount = 0; + + Get_TLV_Info(TLV_PDTAG, 0, &bPDTAG_bytes, (unsigned int **)&pPDTAG); // Get Peripheral data pointer + + // read memory configuration from TLV to get offset for Peripherals + while (Get_TLV_Memory(count)) + { + count++; + } + + pcount = pPDTAG[count * 2 + 1]; + count++; // inc count to first Periperal + pPDTAG += (pcount + count) * 2; // adjust point to first address of Peripheral + count = 0; // set counter back to 0 + + // TLV access Function Call + for (count = 0; count <= tag; count += 2) + { + if (pPDTAG[count] == 0) return 0; // Return 0: not found/end of table + if (count == tag) return (pPDTAG[count]); // Return found data + } + + return 0; // Return 0: not found +} diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h new file mode 100644 index 0000000..9b616c3 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_TLV.h @@ -0,0 +1,226 @@ +/******************************************************************************* + * + * HAL_TLV.c + * Provides Functions to Read the TLV Data Section of the MSP430 Devices + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Updated: Version 2.0 01/17/2011 + * + ******************************************************************************/ + +#ifndef HAL_TLV_H +#define HAL_TLV_H + +/******************************************************************************* + * Device Descriptors - Fixed Memory Locations + ******************************************************************************/ +#define DEVICE_ID_0 (0x1A04) +#define DEVICE_ID_1 (0x1A05) + +/******************************************************************************* + * Data Types + ******************************************************************************/ +struct s_TLV_Die_Record { + unsigned char die_record[10]; +}; + +struct s_TLV_ADC_Cal_Data { + unsigned int adc_gain_factor; + unsigned int adc_offset; + unsigned int adc_ref15_30_temp; + unsigned int adc_ref15_85_temp; + unsigned int adc_ref20_30_temp; + unsigned int adc_ref20_85_temp; + unsigned int adc_ref25_30_temp; + unsigned int adc_ref25_85_temp; +}; + +struct s_TLV_Timer_D_Cal_Data { + unsigned int TDH0CTL1_64; + unsigned int TDH0CTL1_128; + unsigned int TDH0CTL1_200; + unsigned int TDH0CTL1_256; +}; + +struct s_TLV_REF_Cal_Data { + unsigned int ref_ref15; + unsigned int ref_ref20; + unsigned int adc_ref25; +}; + +/******************************************************************************* + * Tag Defines + ******************************************************************************/ +#define TLV_LDTAG (0x01) /* Legacy descriptor (1xx, 2xx, + 4xx families) */ +#define TLV_PDTAG (0x02) /* Peripheral discovery descriptor */ +#define TLV_Reserved3 (0x03) /* Future usage */ +#define TLV_Reserved4 (0x04) /* Future usage */ +#define TLV_BLANK (0x05) /* Blank descriptor */ +#define TLV_Reserved6 (0x06) /* Future usage */ +#define TLV_Reserved7 (0x07) /* Serial Number */ +#define TLV_DIERECORD (0x08) /* Die Record */ +#define TLV_ADCCAL (0x11) /* ADC12 calibration */ +#define TLV_ADC12CAL (0x11) /* ADC12 calibration */ +#define TLV_ADC10CAL (0x13) /* ADC10 calibration */ +#define TLV_REFCAL (0x12) /* REF calibration */ +#define TLV_TIMER_D_CAL (0x15) /* Timer_Dx calibration */ +#define TLV_TAGEXT (0xFE) /* Tag extender */ +#define TLV_TAGEND (0xFF) /* Tag End of Table */ + +/******************************************************************************* + * Peripheral Defines + ******************************************************************************/ +#define TLV_PID_NO_MODULE (0x00) /* No Module */ +#define TLV_PID_PORTMAPPING (0x10) /* Port Mapping */ +#define TLV_PID_MSP430CPUXV2 (0x23) /* MSP430CPUXV2 */ +#define TLV_PID_JTAG (0x09) /* JTAG */ +#define TLV_PID_SBW (0x0F) /* SBW */ +#define TLV_PID_EEM_XS (0x02) /* EEM X-Small */ +#define TLV_PID_EEM_S (0x03) /* EEM Small */ +#define TLV_PID_EEM_M (0x04) /* EEM Medium */ +#define TLV_PID_EEM_L (0x05) /* EEM Large */ +#define TLV_PID_PMM (0x30) /* PMM */ +#define TLV_PID_PMM_FR (0x32) /* PMM FRAM */ +#define TLV_PID_FCTL (0x39) /* Flash */ +#define TLV_PID_CRC16 (0x3C) /* CRC16 */ +#define TLV_PID_CRC16_RB (0x3D) /* CRC16 Reverse */ +#define TLV_PID_WDT_A (0x40) /* WDT_A */ +#define TLV_PID_SFR (0x41) /* SFR */ +#define TLV_PID_SYS (0x42) /* SYS */ +#define TLV_PID_RAMCTL (0x44) /* RAMCTL */ +#define TLV_PID_DMA_1 (0x46) /* DMA 1 */ +#define TLV_PID_DMA_3 (0x47) /* DMA 3 */ +#define TLV_PID_UCS (0x48) /* UCS */ +#define TLV_PID_DMA_6 (0x4A) /* DMA 6 */ +#define TLV_PID_DMA_2 (0x4B) /* DMA 2 */ +#define TLV_PID_PORT1_2 (0x51) /* Port 1 + 2 / A */ +#define TLV_PID_PORT3_4 (0x52) /* Port 3 + 4 / B */ +#define TLV_PID_PORT5_6 (0x53) /* Port 5 + 6 / C */ +#define TLV_PID_PORT7_8 (0x54) /* Port 7 + 8 / D */ +#define TLV_PID_PORT9_10 (0x55) /* Port 9 + 10 / E */ +#define TLV_PID_PORT11_12 (0x56) /* Port 11 + 12 / F */ +#define TLV_PID_PORTU (0x5E) /* Port U */ +#define TLV_PID_PORTJ (0x5F) /* Port J */ +#define TLV_PID_TA2 (0x60) /* Timer A2 */ +#define TLV_PID_TA3 (0x61) /* Timer A1 */ +#define TLV_PID_TA5 (0x62) /* Timer A5 */ +#define TLV_PID_TA7 (0x63) /* Timer A7 */ +#define TLV_PID_TB3 (0x65) /* Timer B3 */ +#define TLV_PID_TB5 (0x66) /* Timer B5 */ +#define TLV_PID_TB7 (0x67) /* Timer B7 */ +#define TLV_PID_RTC (0x68) /* RTC */ +#define TLV_PID_BT_RTC (0x69) /* BT + RTC */ +#define TLV_PID_BBS (0x6A) /* Battery Backup Switch */ +#define TLV_PID_RTC_B (0x6B) /* RTC_B */ +#define TLV_PID_TD2 (0x6C) /* Timer D2 */ +#define TLV_PID_TD3 (0x6D) /* Timer D1 */ +#define TLV_PID_TD5 (0x6E) /* Timer D5 */ +#define TLV_PID_TD7 (0x6F) /* Timer D7 */ +#define TLV_PID_TEC (0x70) /* Imer Event Control */ +#define TLV_PID_RTC_C (0x71) /* RTC_C */ +#define TLV_PID_AES (0x80) /* AES */ +#define TLV_PID_MPY16 (0x84) /* MPY16 */ +#define TLV_PID_MPY32 (0x85) /* MPY32 */ +#define TLV_PID_MPU (0x86) /* MPU */ +#define TLV_PID_USCI_AB (0x90) /* USCI_AB */ +#define TLV_PID_USCI_A (0x91) /* USCI_A */ +#define TLV_PID_USCI_B (0x92) /* USCI_B */ +#define TLV_PID_EUSCI_A (0x94) /* eUSCI_A */ +#define TLV_PID_EUSCI_B (0x95) /* eUSCI_B */ +#define TLV_PID_REF (0xA0) /* Shared Reference */ +#define TLV_PID_COMP_B (0xA8) /* COMP_B */ +#define TLV_PID_COMP_D (0xA9) /* COMP_D */ +#define TLV_PID_USB (0x98) /* USB */ +#define TLV_PID_LCD_B (0xB1) /* LCD_B */ +#define TLV_PID_LCD_C (0xB2) /* LCD_C */ +#define TLV_PID_DAC12_A (0xC0) /* DAC12_A */ +#define TLV_PID_SD16_B_1 (0xC8) /* SD16_B 1 Channel */ +#define TLV_PID_SD16_B_2 (0xC9) /* SD16_B 2 Channel */ +#define TLV_PID_SD16_B_3 (0xCA) /* SD16_B 3 Channel */ +#define TLV_PID_SD16_B_4 (0xCB) /* SD16_B 4 Channel */ +#define TLV_PID_SD16_B_5 (0xCC) /* SD16_B 5 Channel */ +#define TLV_PID_SD16_B_6 (0xCD) /* SD16_B 6 Channel */ +#define TLV_PID_SD16_B_7 (0xCE) /* SD16_B 7 Channel */ +#define TLV_PID_SD16_B_8 (0xCF) /* SD16_B 8 Channel */ +#define TLV_PID_ADC12_A (0xD1) /* ADC12_A */ +#define TLV_PID_ADC10_A (0xD3) /* ADC10_A */ +#define TLV_PID_ADC10_B (0xD4) /* ADC10_B */ +#define TLV_PID_SD16_A (0xD8) /* SD16_A */ +#define TLV_PID_TI_BSL (0xFC) /* BSL */ + +/******************************************************************************* + * \brief Get Information out of the TLV Table + * + * \param tag Tag of the TLV entry + * \param instance Instance of the Tag of the TLV entry + * \param *length return: Length of the information if found + * \param **data_address return: start pointer of Data + ******************************************************************************/ +void Get_TLV_Info(unsigned char tag, unsigned char instance, unsigned char *length, + unsigned int **data_address); + +/******************************************************************************* + * \brief Get Device Type out of the TLV Table + * + * \return Device dependent value + ******************************************************************************/ +unsigned int Get_Device_Type(void); + +/******************************************************************************* + * \brief Get Memory Info out of the TLV Table + * + * \param instance Index of the Instance [0..] + * \return Memory Data found + ******************************************************************************/ +unsigned int Get_TLV_Memory(unsigned char instance); + +/******************************************************************************* + * \brief Get Peripheral Info out of the TLV Table + * + * \param tag Tag of the TLV entry + * \param instance Index of the Instance [0..] + * \return Peripheral Data found + ******************************************************************************/ +unsigned int Get_TLV_Peripheral(unsigned char tag, unsigned char instance); + +/******************************************************************************* + * \brief Get Interrupt Info out of the TLV Table + * + * \param tag Tag of the TLV entry + * \return Interrupt Data found + ******************************************************************************/ +unsigned char Get_TLV_Interrupt(unsigned char tag); + +#endif /* HAL_TLV_H */ diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c new file mode 100644 index 0000000..ae015f6 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.c @@ -0,0 +1,340 @@ +/******************************************************************************* + * + * HAL_UCS.c + * Provides Functions to Initialize the UCS/FLL and clock sources + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * Added Functions: XT2_Stop() and XT1_Stop() + * Modified all functions to preserve drive settings + * + ******************************************************************************/ + +#include "msp430.h" +#include "HAL_UCS.h" +// #include "hal_calibration.h" + +/******************************************************************************* + * Check and define required Defines + ******************************************************************************/ +#ifndef XT1LFOFFG // Defines if not available in header file +#define XT1LFOFFG 0 +#endif + +#ifndef XT1HFOFFG // Defines if not available in header file +#define XT1HFOFFG 0 +#endif + +#ifndef XT2OFFG // Defines if not available in header file +#define XT2OFFG 0 +#endif + +#ifndef XTS // Defines if not available in header file +#define XTS 0 +#endif + +#ifndef XT2DRIVE_3 // Defines if not available in header file +#define XT2DRIVE_3 0 +#endif + + +/******************************************************************************* + * \brief Initializes FLL of the UCS + * + * \param fsystem Required system frequency (MCLK) in kHz + * \param ratio Ratio between fsystem and FLLREFCLK + ******************************************************************************/ +static void Init_FLL(unsigned int fsystem, unsigned int ratio); + + +#if 0 +void LFXT_Start(unsigned int xtdrive) +{ + // If the drive setting is not already set to maximum + // Set it to max for LFXT startup + if ((UCSCTL6 & XT1DRIVE_3)!= XT1DRIVE_3) { + UCSCTL6_L |= XT1DRIVE1_L + XT1DRIVE0_L; // Highest drive setting for XT1startup + } + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags fault flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } + + UCSCTL6 = (UCSCTL6 & ~(XT1DRIVE_3)) | (xtdrive); // set requested Drive mode +} +#endif + +unsigned int LFXT_Start_Timeout(unsigned int xtdrive, unsigned int timeout) +{ + // add in capacitor setting + //SetOscillatorCapacitorValues(); + + // If the drive setting is not already set to maximum + // Set it to max for LFXT startup + if ((UCSCTL6 & XT1DRIVE_3)!= XT1DRIVE_3) { + UCSCTL6_L |= XT1DRIVE1_L+XT1DRIVE0_L; // Highest drive setting for XT1startup + } + + while ((SFRIFG1 & OFIFG) && timeout--){ // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags fault flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } + + UCSCTL6 = (UCSCTL6 & ~(XT1DRIVE_3)) |(xtdrive); // set Drive mode + + // add in capacitor setting + //SetOscillatorCapacitorValues(); + + if (timeout) + return (UCS_STATUS_OK); + else + return (UCS_STATUS_ERROR); +} + +#if 0 +void XT1_Start(unsigned int xtdrive) +{ + // Check if drive value is the expected one + if ((UCSCTL6 & XT1DRIVE_3) != xtdrive) { + UCSCTL6 &= ~XT1DRIVE_3; // Clear XT1drive field + UCSCTL6 |= xtdrive; // Set requested value + } + + UCSCTL6 &= ~XT1OFF; // Enable XT1 + UCSCTL6 |= XTS; // Enable HF mode + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } +} + +unsigned int XT1_Start_Timeout(unsigned int xtdrive, unsigned int timeout) +{ + // Check if drive value is the expected one + if ((UCSCTL6 & XT1DRIVE_3) != xtdrive) { + UCSCTL6 &= ~XT1DRIVE_3; // Clear XT1drive field + UCSCTL6 |= xtdrive; // Set requested value + } + + UCSCTL6 &= ~XT1OFF; // Enable XT1 + UCSCTL6 |= XTS; // Enable HF mode + + while ((SFRIFG1 & OFIFG) && timeout--) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } + + if (timeout) { + return UCS_STATUS_OK; + } + else { + return UCS_STATUS_ERROR; + } +} + +void XT1_Bypass(void) +{ + UCSCTL6 |= XT1BYPASS; + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } +} +#endif + +void XT1_Stop(void) +{ + UCSCTL6 |= XT1OFF; // Switch off XT1 oscillator +} + +#if 0 +void XT2_Start(unsigned int xtdrive) +{ + // Check if drive value is the expected one + if ((UCSCTL6 & XT2DRIVE_3) != xtdrive) { + UCSCTL6 &= ~XT2DRIVE_3; // Clear XT2drive field + UCSCTL6 |= xtdrive; // Set requested value + } + + UCSCTL6 &= ~XT2OFF; + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } +} + +unsigned int XT2_Start_Timeout(unsigned int xtdrive, unsigned int timeout) +{ + // Check if drive value is the expected one + if ((UCSCTL6 & XT2DRIVE_3) != xtdrive) { + UCSCTL6 &= ~XT2DRIVE_3; // Clear XT2drive field + UCSCTL6 |= xtdrive; // Set requested value + } + + UCSCTL6 &= ~XT2OFF; + + while ((SFRIFG1 & OFIFG) && timeout--) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } + + if (timeout) { + return UCS_STATUS_OK; + } + else { + return UCS_STATUS_ERROR; + } +} + +void XT2_Bypass(void) +{ +#ifdef XT2BYPASS // On devices without XT2 this function will be empty + UCSCTL6 |= XT2BYPASS; + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } +#endif +} + +void XT2_Stop(void) +{ + UCSCTL6 |= XT2OFF; // Switch off XT2 oscillator +} +#endif + +void Init_FLL_Settle(unsigned int fsystem, unsigned int ratio) +{ + volatile unsigned int x; + + // x = ratio * 32; + x = ratio << 5; + Init_FLL(fsystem, ratio); + + /* from changes in Init_FLL we know that fll is now enabled */ + while (x--) { + __delay_cycles(30); + } +} + +static void Init_FLL(unsigned int fsystem, unsigned int ratio) +{ + unsigned int d, dco_div_bits; + unsigned int mode; + +#if 0 + unsigned int srRegisterState; +#endif + + mode = 0; + + /* we only run this at startup and we want the fll enabled on exit */ +#if 0 + // Save actual state of FLL loop control, then disable it. This is needed to + // prevent the FLL from acting as we are making fundamental modifications to + // the clock setup. + srRegisterState = __get_SR_register() & SCG0; +#endif + + d = ratio; + dco_div_bits = FLLD__2; // Have at least a divider of 2 + + if (fsystem > 16000) { + d >>= 1 ; + mode = 1; + } + else { + fsystem <<= 1; // fsystem = fsystem * 2 + } + + while (d > 512) { + dco_div_bits = dco_div_bits + FLLD0; // Set next higher div level + d >>= 1; + } + + // Disable FLL + __bis_SR_register(SCG0); + + UCSCTL0 = 0x0000; // Set DCO to lowest Tap + + UCSCTL2 &= ~(0x03FF); // Reset FN bits + UCSCTL2 = dco_div_bits | (d - 1); + + if (fsystem <= 630) // fsystem < 0.63MHz + UCSCTL1 = DCORSEL_0; + else if (fsystem < 1250) // 0.63MHz < fsystem < 1.25MHz + UCSCTL1 = DCORSEL_1; + else if (fsystem < 2500) // 1.25MHz < fsystem < 2.5MHz + UCSCTL1 = DCORSEL_2; + else if (fsystem < 5000) // 2.5MHz < fsystem < 5MHz + UCSCTL1 = DCORSEL_3; + else if (fsystem < 10000) // 5MHz < fsystem < 10MHz + UCSCTL1 = DCORSEL_4; + else if (fsystem < 20000) // 10MHz < fsystem < 20MHz + UCSCTL1 = DCORSEL_5; + else if (fsystem < 40000) // 20MHz < fsystem < 40MHz + UCSCTL1 = DCORSEL_6; + else + UCSCTL1 = DCORSEL_7; + + // Re-enable FLL + __bic_SR_register(SCG0); + + while (SFRIFG1 & OFIFG) { // Check OFIFG fault flag + UCSCTL7 &= ~(DCOFFG+XT1LFOFFG+XT1HFOFFG+XT2OFFG); // Clear OSC flaut Flags + SFRIFG1 &= ~OFIFG; // Clear OFIFG fault flag + } + + /* Init fll is only run at startup - We want the fll enabled when + * this function is complete (so don't save a restore setting) + */ +#if 0 + // Restore previous SCG0 + __bis_SR_register(srRegisterState); +#endif + + if (mode == 1) { // fsystem > 16000 + SELECT_MCLK_SMCLK(SELM__DCOCLK + SELS__DCOCLK); // Select DCOCLK + } + else { + SELECT_MCLK_SMCLK(SELM__DCOCLKDIV + SELS__DCOCLKDIV); // Select DCODIVCLK + } + +} diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d new file mode 100644 index 0000000..cd525bd --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.d @@ -0,0 +1,7 @@ +HAL_UCS.o: F5xx_F6xx_Core_Lib/HAL_UCS.c \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/msp430f5438a.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/iomacros.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/in430.h \ + /opt/msp430/lib/gcc/msp430/4.7.0/../../../../msp430/include/intrinsics.h \ + F5xx_F6xx_Core_Lib/HAL_UCS.h F5xx_F6xx_Core_Lib/HAL_MACROS.h diff --git a/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h new file mode 100644 index 0000000..1c5b418 --- /dev/null +++ b/metawatch/F5xx_F6xx_Core_Lib/HAL_UCS.h @@ -0,0 +1,163 @@ +/******************************************************************************* + * + * HAL_UCS.h + * Provides Functions to Initialize the UCS/FLL and clock sources + * + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Created: Version 1.0 11/24/2009 + * Updated: Version 2.0 12/15/2010 + * Added Functions: XT2_Stop() and XT1_Stop() + * + ******************************************************************************/ + +#ifndef HAL_UCS_H +#define HAL_UCS_H + +#include "HAL_MACROS.h" + +/******************************************************************************* + * Macros + ******************************************************************************/ + +/* Select source for FLLREF e.g. SELECT_FLLREF(SELREF__XT1CLK) */ +#define SELECT_FLLREF(source) st(UCSCTL3 = (UCSCTL3 & ~(SELREF_7)) | (source);) +/* Select source for ACLK e.g. SELECT_ACLK(SELA__XT1CLK) */ +#define SELECT_ACLK(source) st(UCSCTL4 = (UCSCTL4 & ~(SELA_7)) | (source);) +/* Select source for MCLK e.g. SELECT_MCLK(SELM__XT2CLK) */ +#define SELECT_MCLK(source) st(UCSCTL4 = (UCSCTL4 & ~(SELM_7)) | (source);) +/* Select source for SMCLK e.g. SELECT_SMCLK(SELS__XT2CLK) */ +#define SELECT_SMCLK(source) st(UCSCTL4 = (UCSCTL4 & ~(SELS_7)) | (source);) +/* Select source for MCLK and SMCLK e.g. SELECT_MCLK_SMCLK(SELM__DCOCLK + SELS__DCOCLK) */ +#define SELECT_MCLK_SMCLK(sources) st(UCSCTL4 = (UCSCTL4 & ~(SELM_7 + SELS_7)) | (sources);) + +/* set ACLK/x */ +#define ACLK_DIV(x) st(UCSCTL5 = (UCSCTL5 & ~(DIVA_7)) | (DIVA__##x);) +/* set MCLK/x */ +#define MCLK_DIV(x) st(UCSCTL5 = (UCSCTL5 & ~(DIVM_7)) | (DIVM__##x);) +/* set SMCLK/x */ +#define SMCLK_DIV(x) st(UCSCTL5 = (UCSCTL5 & ~(DIVS_7)) | (DIVS__##x);) +/* Select divider for FLLREF e.g. SELECT_FLLREFDIV(2) */ +#define SELECT_FLLREFDIV(x) st(UCSCTL3 = (UCSCTL3 & ~(FLLREFDIV_7))|(FLLREFDIV__##x);) + +/******************************************************************************* + * Defines + ******************************************************************************/ +#define UCS_STATUS_OK 0 +#define UCS_STATUS_ERROR 1 + +#if 0 +/******************************************************************************* + * \brief Startup routine for 32kHz Crystal on LFXT1 + * + * \param xtdrive Bits defining the LFXT drive mode after startup + ******************************************************************************/ +extern void LFXT_Start(unsigned int xtdrive); +#endif + +/******************************************************************************* + * \brief Startup routine for 32kHz Crystal on LFXT1 with timeout counter + * + * \param xtdrive Bits defining the LFXT drive mode after startup + * \param timeout Value for the timeout counter + ******************************************************************************/ +extern unsigned int LFXT_Start_Timeout(unsigned int xtdrive, unsigned int timeout); + +#if 0 +/******************************************************************************* + * \brief Startup routine for XT1 + * + * \param xtdrive Bits defining the XT drive mode + ******************************************************************************/ +extern void XT1_Start(unsigned int xtdrive); + +/******************************************************************************* + * \brief Startup routine for XT1 with timeout counter + * + * \param xtdrive Bits defining the XT drive mode + * \param timeout Value for the timeout counter + ******************************************************************************/ +extern unsigned int XT1_Start_Timeout(unsigned int xtdrive, unsigned int timeout); + +/******************************************************************************* + * \brief Use XT1 in Bypasss mode + ******************************************************************************/ +extern void XT1_Bypass(void); + +#endif + +/******************************************************************************* + * \brief Stop XT1 oscillator + ******************************************************************************/ +extern void XT1_Stop(void); + +#if 0 +/******************************************************************************* + * \brief Startup routine for XT2 + * + * \param xtdrive Bits defining the XT drive mode + ******************************************************************************/ +extern void XT2_Start(unsigned int xtdrive); + +/******************************************************************************* + * \brief Startup routine for XT2 with timeout counter + * + * \param xtdrive Bits defining the XT drive mode + * \param timeout Value for the timeout counter + ******************************************************************************/ +extern unsigned int XT2_Start_Timeout(unsigned int xtdrive, unsigned int timeout); + +/******************************************************************************* + * \brief Use XT2 in Bypasss mode for MCLK + ******************************************************************************/ +extern void XT2_Bypass(void); + +/******************************************************************************* + * \brief Stop XT2 oscillator + ******************************************************************************/ +extern void XT2_Stop(void); + +#endif + +/******************************************************************************* + * \brief Initializes FLL of the UCS and wait till settled before allowing + * code execution to resume. The use of this function is preferred + * over the use of Init_FLL(). + * + * \param fsystem Required system frequency (MCLK) in kHz + * \param ratio Ratio between fsystem and FLLREFCLK + ******************************************************************************/ +extern void Init_FLL_Settle(unsigned int fsystem, unsigned int ratio); + + +#endif /* HAL_UCS_H */ diff --git a/metawatch/Makefile b/metawatch/Makefile index 583ccb1..aadbb11 100644 --- a/metawatch/Makefile +++ b/metawatch/Makefile @@ -22,8 +22,8 @@ MEMMODEL = -mmemory-model=huge -fdata-sections -ffunction-sections # -mdata-re #APPCONFIG = -DDIGITAL -DMW_DEVBOARD_V2 -DCC256x_TRANSP APPCONFIG = -DDIGITAL -DMW_DIGITAL_V2 -BTCC256x_SCRIPT = bluetooth_init_cc2560_2.44.c -#BTCC256x_SCRIPT = bluetooth_init_cc2564_2.8.c +#BTCC256x_SCRIPT = bluetooth_init_cc2560_2.44.c +BTCC256x_SCRIPT = bluetooth_init_cc2564_2.8.c # List all the source files here # eg if you have a source file foo.c then list it here @@ -37,7 +37,9 @@ OSWALD_SRC = ../ui/oswald_main.c ../ui/oswald_screens.c \ SOURCES = mw_main.c mw_uart.c mw_lcd.c mw_adc.c mw_bt.c \ mw_acc.c $(BTCC256x_SCRIPT) \ bt_hci.c bt_l2cap.c \ - oswald_hal.c $(OSWALD_SRC) + oswald_hal.c $(OSWALD_SRC) \ + F5xx_F6xx_Core_Lib/HAL_PMM.c \ + F5xx_F6xx_Core_Lib/HAL_UCS.c # $(BT_SMALLTOOTH_SRC) # $(BT_STACK_SRC) \ diff --git a/metawatch/bt_hci.c b/metawatch/bt_hci.c index 838aafc..7bf7444 100644 --- a/metawatch/bt_hci.c +++ b/metawatch/bt_hci.c @@ -327,10 +327,14 @@ unsigned char bt_feed_packet_data(unsigned char pdata) state = HCI_PACKET_START; // disable BT UART? // mabye UCA1CTL1 = UCSWRST ? + pdata = EHCILL_GO_TO_SLEEP_ACK; mw_bt_uart_tx(&pdata, 0x01); - BT_IO_POUT |= BT_IO_RTS; // pull RTS -> stop data + // pull RTS -> stop data + BT_IO_POUT |= BT_IO_RTS; + + // enable IRQ on CTS P1IFG &= ~BT_IO_CTS; P1IE |= BT_IO_CTS; @@ -421,7 +425,7 @@ void bt_hci_cmd(const uint8_t OGF, const uint8_t OCF, const uint8_t data_len, co if (state == EHCILL_SLEEPING) { uint8_t ehcill_p = EHCILL_WAKE_UP_IND; - debug_uart_tx("HCILL wakeup\n"); + debug_uart_tx("wakeup HCILL\n"); state = HCI_PACKET_START; mw_bt_uart_tx(&ehcill_p, 1); __delay_cycles(300000); @@ -484,11 +488,12 @@ void bt_hci_init(void) void bt_hci_ehcill_wake(void) { - uint8_t ehcill_p = EHCILL_WAKE_UP_ACK; + const uint8_t ehcill_p = EHCILL_WAKE_UP_ACK; debug_uart_tx("HCILL wakeup\n"); P1IE &= ~BT_IO_CTS; + P1IFG &= ~BT_IO_CTS; state = HCI_PACKET_START; BT_IO_POUT &= ~BT_IO_RTS; // drop RTS -> start data diff --git a/metawatch/hal_devboard_v2_defs.h b/metawatch/hal_devboard_v2_defs.h index fe94d99..ef57cf2 100644 --- a/metawatch/hal_devboard_v2_defs.h +++ b/metawatch/hal_devboard_v2_defs.h @@ -328,6 +328,10 @@ // disable charging, sleep the part #define BATTERY_CHARGE_DISABLE() { BAT_CHARGE_OUT |= BAT_CHARGE_ENABLE_PIN; } +//RESET PIN NMI or RESET +#define SET_RESET_PIN_NMI() {SFRRPCR &= ~SYSRSTRE; SFRRPCR |= SYSNMI;} +#define SET_RESET_PIN_RST() {SFRRPCR |= SYSRSTRE; SFRRPCR &= ~SYSNMI;} +#define RESET_PIN (SFRRPCR & SYSNMI) // return 1 for NMI // // Ambient Light Sensor diff --git a/metawatch/hal_digital_v2_defs.h b/metawatch/hal_digital_v2_defs.h index 6b220ee..854996c 100644 --- a/metawatch/hal_digital_v2_defs.h +++ b/metawatch/hal_digital_v2_defs.h @@ -316,6 +316,10 @@ // disable charging, sleep the part #define BATTERY_CHARGE_DISABLE() { BAT_CHARGE_OUT |= BAT_CHARGE_ENABLE_PIN; } +//RESET PIN NMI or RESET +#define SET_RESET_PIN_NMI() {SFRRPCR &= ~SYSRSTRE; SFRRPCR |= SYSNMI;} +#define SET_RESET_PIN_RST() {SFRRPCR |= SYSRSTRE; SFRRPCR &= ~SYSNMI;} +#define RESET_PIN (SFRRPCR & SYSNMI) // return 1 for NMI // // Ambient Light Sensor diff --git a/metawatch/mw_acc.c b/metawatch/mw_acc.c index 0717a92..1080c3e 100644 --- a/metawatch/mw_acc.c +++ b/metawatch/mw_acc.c @@ -49,6 +49,7 @@ __interrupt void ACCERLEROMETER_I2C_ISR(void) nop(); break; case ACCELEROMETER_STPIFG: + nop(); break; case ACCELEROMETER_RXIFG: if (LengthCount > 0) { @@ -106,6 +107,8 @@ void mw_acc_disable_i2c(void) void mw_acc_i2c_write(uint8_t RegisterAddress, uint8_t *pData, uint8_t Length) { + int tmo; + if (Length == 0 || pData == 0) return; @@ -134,8 +137,15 @@ void mw_acc_i2c_write(uint8_t RegisterAddress, uint8_t *pData, uint8_t Length) ACCELEROMETER_IE |= UCTXIE; ACCELEROMETER_TXBUF = RegisterAddress; - while (AccelerometerBusy) - nop(); + tmo = 0; + while (AccelerometerBusy) { + while (tmo++ < 1000) + __delay_cycles(16000); + if (tmo >= 1000) { + debug_uart_tx("ACC I2C tx tmo\n"); + return; + } + } while (ACCELEROMETER_CTL1 & UCTXSTP) nop(); @@ -180,17 +190,21 @@ void mw_acc_i2c_read_single(const uint8_t RegisterAddress, const uint8_t *pData) * received. If this is interrupted an extra byte may be read. * however, it will be discarded during the next read */ - if ( LengthCount == 1 ) { + if (LengthCount == 1) { /* errata usci30: prevent interruption of sending stop * so that only one byte is read * this requires 62 us @ 320 kHz, 51 @ 400 kHz */ + __disable_interrupt(); + ACCELEROMETER_CTL1 |= UCTXSTT; while(ACCELEROMETER_CTL1 & UCTXSTT) nop(); ACCELEROMETER_CTL1 |= UCTXSTP; + + __enable_interrupt(); } else { ACCELEROMETER_CTL1 |= UCTXSTT; } @@ -225,7 +239,9 @@ void mw_acc_init(void) char tstr[16]; #endif + // it takes at least 20ms to power up ENABLE_ACCELEROMETER_POWER(); + __delay_cycles(320000); mw_acc_init_i2c(); @@ -350,7 +366,7 @@ void mw_acc_disable(void) ACCELEROMETER_INT_DISABLE(); mw_acc_disable_i2c(); - DISABLE_ACCELEROMETER_POWER(); + /// DISABLE_ACCELEROMETER_POWER(); AccelState = ACCEL_STATE_DISABLED; } } diff --git a/metawatch/mw_adc.c b/metawatch/mw_adc.c index 52c9e04..d5db450 100644 --- a/metawatch/mw_adc.c +++ b/metawatch/mw_adc.c @@ -82,7 +82,7 @@ uint8_t mw_get_battery_percentage_from_val(unsigned int BattVal) return (unsigned char)BattVal; } -unsigned int mw_get_amblight_adc_val(void) +uint16_t mw_get_amblight_adc_val(void) { LIGHT_SENSE_ENABLE(); diff --git a/metawatch/mw_adc.h b/metawatch/mw_adc.h index 78a45cd..8ab0511 100644 --- a/metawatch/mw_adc.h +++ b/metawatch/mw_adc.h @@ -4,7 +4,7 @@ void mw_init_adc(void); unsigned int mw_get_battery_adc_val(void); uint8_t mw_get_battery_percentage_from_val(unsigned int BatVal); -unsigned int mw_get_amblight_adc_val(void); +uint16_t mw_get_amblight_adc_val(void); #endif diff --git a/metawatch/mw_bt.c b/metawatch/mw_bt.c index 8138b1e..d5c7d26 100644 --- a/metawatch/mw_bt.c +++ b/metawatch/mw_bt.c @@ -19,16 +19,30 @@ static unsigned char bt_rx_buf_wpos = 0; static unsigned char bt_rx_buf_rpos = 0; static uint8_t mw_bt_enabled = 0; +int mw_bt_get_rxbuf_len(void) +{ + if (bt_rx_buf_rpos > bt_rx_buf_wpos) + return (BT_RX_MAX_SIZE - bt_rx_buf_rpos) + bt_rx_buf_wpos; + else + return bt_rx_buf_wpos - bt_rx_buf_rpos; +} + const unsigned char *mw_bt_get_rx_buf(unsigned char **rpos, unsigned char *len) { *rpos = &bt_rx_buf_rpos; + if (bt_rx_buf_rpos > bt_rx_buf_wpos) *len = (BT_RX_MAX_SIZE - bt_rx_buf_rpos) + bt_rx_buf_wpos; else *len = bt_rx_buf_wpos - bt_rx_buf_rpos; - if (*len > (BT_RX_MAX_SIZE-(BT_RX_MAX_SIZE/10))) + // if we reach high water mark raise RTS to stop more data + if (*len > (BT_RX_MAX_SIZE-(BT_RX_MAX_SIZE/10))) { + debug_uart_tx("BT UART RTS\n"); BT_IO_POUT |= BT_IO_RTS; // low == ready, high == !ready + } else { + BT_IO_POUT &= ~BT_IO_RTS; // low == ready, high == !ready + } return (unsigned char *)bt_rx_buf; } @@ -38,15 +52,25 @@ __interrupt void UCA1_ISR (void) { switch (UCA1IV) { case 2: // RXIFG + /* clear IRQ flag */ + //UCA1IFG &= ~UCRXIFG; /* wake up to handle the received char */ - LPM3_EXIT; + if (UCA1STAT & UCRXERR) { + debug_uart_tx("BT UART RXERR: "); + if (UCA1STAT & UCOE) + debug_uart_tx("overrun\n"); + if (UCA1STAT & UCPE) + debug_uart_tx("parity err\n"); + if (UCA1STAT & UCFE) + debug_uart_tx("frm-err\n"); + } bt_rx_buf[bt_rx_buf_wpos++] = UCA1RXBUF; - /* clear IRQ flag */ - UCA1IFG &= ~UCRXIFG; bt_rx_buf_wpos %= BT_RX_MAX_SIZE; + LPM3_EXIT; _event_src |= BT_UART_RCV_EVENT; break; case 4: // TXIFG + debug_uart_tx("BT UART TX IRQ - huh?\n"); break; default: break; @@ -56,7 +80,9 @@ __interrupt void UCA1_ISR (void) void mw_init_bt_uart(const bt_uart_baud_t baud) { UCA1CTL1 = UCSWRST; + UCA1CTL1 |= UCSSEL__SMCLK; + switch (baud) { case BT_UART_BD115200: default: @@ -65,13 +91,14 @@ void mw_init_bt_uart(const bt_uart_baud_t baud) break; }; UCA1STAT = 0; - UCA1CTL0 = UCMODE_0; // UART mode - UCA1CTL0 &= ~UC7BIT; // 8bit char + // UCA1CTL0 = UCMODE_0; // UART mode + // UCA1CTL0 &= ~UC7BIT; // 8bit char + //UCA1CTL0 |= UCRXEIE; UCA1CTL1 &= ~UCSWRST; /* clear interrup flags */ - UCA1IFG = 0; UCA1IE = UCRXIE; + UCA1IFG = 0; } #if 0 // Does never finish, presumably trigger does not trigger, unknown :( @@ -102,7 +129,12 @@ void mw_bt_uart_tx(const void *buf, const unsigned int len) pos = 0; // debug_uart_tx("BT tx: "); while (pos < len) { - while ((BT_IO_PIN & BT_IO_CTS)) // wait for CTS to go low + // wait for CTS to go low + while ((BT_IO_PIN & BT_IO_CTS)) + nop(); + + // do not start a transfer if UART is busy, e.g. rx-ing + while (UCA1STAT & UCBUSY) nop(); UCA1TXBUF = *(unsigned char *) (buf+pos); @@ -115,7 +147,6 @@ void mw_bt_uart_tx(const void *buf, const unsigned int len) } while (UCA1STAT & UCBUSY) nop(); - // debug_uart_tx("\n"); } #endif @@ -163,6 +194,9 @@ void mw_enable_bt(void) mw_init_bt_uart(BT_UART_BD115200); + bt_rx_buf_wpos = 0; + bt_rx_buf_rpos = 0; + /* release BT reset pin */ BT_ENABLE(); @@ -181,10 +215,13 @@ void mw_enable_bt(void) load_cc256x_init_script(); debug_uart_tx("init uploaded\n"); } + P1IE &= ~BT_IO_CTS; P1IES &= ~BT_IO_CTS; + bt_hci_init(); init_l2cap(); + mw_bt_enabled = 1; } diff --git a/metawatch/mw_bt.h b/metawatch/mw_bt.h index f7e5312..1569ae4 100644 --- a/metawatch/mw_bt.h +++ b/metawatch/mw_bt.h @@ -59,6 +59,7 @@ void mw_init_bt_uart(const bt_uart_baud_t baud); void mw_bt_uart_tx(const void *buf, const unsigned int len); // extern char BT_UART_RX_CHAR; +int mw_bt_get_rxbuf_len(void); const unsigned char *mw_bt_get_rx_buf(unsigned char **rpos, unsigned char *len); unsigned char bt_feed_packet_data(unsigned char pdata); uint8_t mw_bt_is_enabled(void); diff --git a/metawatch/mw_main.c b/metawatch/mw_main.c index fa1f98e..4ba6c54 100644 --- a/metawatch/mw_main.c +++ b/metawatch/mw_main.c @@ -3,6 +3,9 @@ #include #include +#include "F5xx_F6xx_Core_Lib/HAL_PMM.h" +#include "F5xx_F6xx_Core_Lib/HAL_UCS.h" + #include "mw_main.h" #include "mw_uart.h" @@ -17,10 +20,32 @@ #include "oswald_main.h" #include "oswald_hal.h" -#include "bluetooth_init_cc256x.h" uint16_t _event_src = 0; +#define HARDWARE_REVISION_ADDRESS (0x1a07) + +unsigned char GetMsp430HardwareRevision(void) +{ + unsigned char *pDeviceType = (unsigned char *)(unsigned char *)HARDWARE_REVISION_ADDRESS; + + return pDeviceType[0]+'1'; +} + +uint8_t DetermineErrata(void) +{ + unsigned char Revision = GetMsp430HardwareRevision(); + + switch (Revision) { + case 'F': + case 'H': + return 0; + break; + default: + return 1; + break; + } +} static void set16mhz(void) { @@ -46,6 +71,8 @@ static void setup_clocks(void) { unsigned long i; + SetVCore(PMMCOREV_2); + /* use external oscillator */ P7SEL |= BIT0 + BIT1; if ((UCSCTL6 & XT1DRIVE_3) != XT1DRIVE_3) { @@ -62,6 +89,34 @@ static void setup_clocks(void) UCSCTL8 |= SMCLKREQEN; + // setup for quick wake up from interrupt and + // minimal power consumption in sleep mode + DISABLE_SVSL(); // SVS Low side is turned off + DISABLE_SVSL_RESET(); + + DISABLE_SVML(); // Monitor low side is turned off + DISABLE_SVML_INTERRUPT(); + + DISABLE_SVMH(); // Monitor high side is turned off + DISABLE_SVMH_INTERRUPT(); + + ENABLE_SVSH(); // SVS High side is turned on + ENABLE_SVSH_RESET(); // Enable POR on SVS Event + + SVSH_ENABLED_IN_LPM_FULL_PERF(); // SVS high side Full perf mode, + // stays on in LPM3,enhanced protect + + // Wait until high side, low side settled + while ((PMMIFG & SVSMLDLYIFG) == 0 && (PMMIFG & SVSMHDLYIFG) == 0) + nop(); + CLEAR_PMM_IFGS(); + + // Errata PMM17 + if (DetermineErrata()) { + *(unsigned int*)(0x0110) = 0x9602; + *(unsigned int*)(0x0112) |= 0x0800; + } + /* enable oscillator fault NMI IRQ */ // SFRIE1 = OFIE; } @@ -112,7 +167,8 @@ static void setup_pins(void) DISABLE_LCD_LED(); // frontlight CONFIG_DEBUG_PINS(); CONFIG_ACCELEROMETER_PINS(); - DISABLE_ACCELEROMETER_POWER(); // starts from config 5 and later + //DISABLE_ACCELEROMETER_POWER(); // starts from config 5 and later + ENABLE_ACCELEROMETER_POWER(); // starts from config 5 and later HARDWARE_CFG_SENSE_INIT(); @@ -183,16 +239,22 @@ __interrupt void RTC_ISR (void) { switch (RTCIV) { case RTCIV_NONE: + debug_uart_tx("RTC none IRQ\n"); break; case RTCIV_RTCRDYIFG: case RTCIV_RTCTEVIFG: case RTCIV_RTCAIFG: case RTCIV_RT0PSIFG: + debug_uart_tx("RTC misc IRQ\n"); break; case RTCIV_RT1PSIFG: RTCPS1CTL &= ~RT1PSIFG; _event_src |= RTC_1HZ_EVENT; LPM3_EXIT; + nop(); +#if defined MW_DEVBOARD_V2 + LED7_TOGGLE(); +#endif break; default: break; @@ -245,7 +307,6 @@ static void dbg_out_rtc(void) char clk_str[16]; snprintf(clk_str, 16, "%02d:%02d.%02d %d\n", RTCHOUR, RTCMIN, RTCSEC, RTCDOW); debug_uart_tx(clk_str); - // bt_l2cap_send_channel(0x40, clk_str, strlen(clk_str)); } #endif @@ -392,13 +453,6 @@ static void handle_uart_rx_event(void) nop(); } else if (c == '-') { nop(); - } else if (c == 't') { - int i; - debug_uart_tx("cc256x ini content:\n"); - for (i=0; i<16; i++) { - snprintf(tstr, 16, "0x%04x 0x%02x\n", i, cc256x_init_script[i]); - debug_uart_tx(tstr); - } } else if (c == 'H') { uint8_t dclass[3]; dclass[0] = BT_MW_DEVICE_CLASS & 0xff; @@ -441,16 +495,16 @@ static void handle_uart_rx_event(void) void start_timer(int cycles) { TA0EX0 = TAIDEX_0; - TA0CTL = TASSEL_1 | TACLR | MC__STOP; // SMCLK, clear TAR - TA0CCTL0 = CCIE; // CCR0 interrupt enabled + TA0CTL = TASSEL_1 | TACLR | MC__STOP; // SMCLK, clear TAR + TA0CCTL0 = CCIE; // CCR0 interrupt enabled TA0CCR0 = cycles; - TA0CTL |= MC_1; // Start Timer_A in continuous mode + TA0CTL |= MC_1; // Start Timer_A in continuous mode } void stop_timer(void) { - TA0CCTL0 &= ~CCIE; // CCR0 interrupt enabled - TA0CTL = MC__STOP; // Start Timer_A in continuous mode + TA0CCTL0 &= ~CCIE; // CCR0 interrupt enabled + TA0CTL = MC__STOP; // Start Timer_A in continuous mode } // Timer A0 interrupt service routine @@ -483,11 +537,13 @@ uint8_t handle_event(void) oswald_one_second_tick(); #if defined MW_DEVBOARD_V2 dbg_out_rtc(); - LED7_TOGGLE(); #endif } else if (_event_src & BT_UART_RCV_EVENT) { _event_src &= ~BT_UART_RCV_EVENT; handle_bt_uart_rx_event(); + } else if (_event_src & BT_UART_WAKEUP_EVENT) { + _event_src &= ~BT_UART_WAKEUP_EVENT; + bt_hci_ehcill_wake(); } else if (_event_src & DBG_UART_RCV_EVENT) { _event_src &= ~DBG_UART_RCV_EVENT; #if defined MW_DEVBOARD_V2 @@ -518,29 +574,28 @@ uint8_t handle_event(void) #pragma vector=BUTTON_PORT_VECTOR __interrupt void BUTTON_ISR (void) { + LPM3_EXIT; BUTTON_PORT_IFG &= ~ALL_BUTTONS; // BUTTON_PORT_IE &= ~INT_EDGE_SEL_BUTTONS; _event_src |= BUTTON_EVENT; //_button_state = (BUTTON_PORT_IN & ALL_BUTTONS); - LPM3_EXIT; } #pragma vector=PORT1_VECTOR __interrupt void PORT1_GPIO_ISR (void) { if (P1IFG & BT_IO_CTS) { + LPM3_EXIT; + P1IE &= ~BT_IO_CTS; P1IFG &= ~BT_IO_CTS; - debug_uart_tx("BT CTS irq\n"); - bt_hci_ehcill_wake(); - + _event_src |= BT_UART_WAKEUP_EVENT; + // bt_hci_ehcill_wake(); + } else if (P1IFG & ACCELEROMETER_INT_PIN) { LPM3_EXIT; - }; - if (P1IFG & ACCELEROMETER_INT_PIN) { P1IFG &= ~ACCELEROMETER_INT_PIN; // debug_uart_tx("ACC irq\n"); _event_src |= ACCEL_EVENT; - LPM3_EXIT; } } @@ -556,15 +611,13 @@ __interrupt void UNEXP_ISR (void) int main(void) { - int idle = 0; - setup_wdt(); setup_pins(); setup_clocks(); setup_rtc(); /* enable interrupts, we will need them! */ - __eint(); + __enable_interrupt(); #if defined MW_DEVBOARD_V2 init_debug_uart(); @@ -578,32 +631,25 @@ int main(void) mw_init_adc(); mw_init_vibrate_pwm(); -#if 0 - RTCYEAR = (unsigned int) 2013; - RTCMON = (unsigned int) 1; - RTCDAY = (unsigned int) 1; - RTCDOW = (unsigned int) 2; - RTCHOUR = (unsigned int) 01; - RTCMIN = (unsigned int) 0; - RTCSEC = (unsigned int) 0; -#endif - oswald_set_time(RTCHOUR, RTCMIN, RTCSEC, TRUE); oswald_set_date(RTCDAY, RTCMON, RTCYEAR, TRUE); oswald_init(); while (1) { /* handle pending events */ - if (handle_event()) - idle++; - else - idle = 0; + handle_event(); /* enter LPM3 sleep mode waiting for interrupt */ - if (idle > 100) { - idle = 0; - // debug_uart_tx("z"); - LPM3; + /* errata PMM11 + PMM12 - divide MCLK before going to sleep */ + if (DetermineErrata()) { + MCLK_DIV(2); + nop(); + } + LPM3; + nop(); + if (DetermineErrata()) { + __delay_cycles(100); + MCLK_DIV(1); } }; diff --git a/metawatch/mw_main.h b/metawatch/mw_main.h index 039d402..f3e5db9 100644 --- a/metawatch/mw_main.h +++ b/metawatch/mw_main.h @@ -21,7 +21,8 @@ #define TIMER_100MS_EVENT 1 << 5 #define POWER_SRC_EVENT 1 << 6 #define BT_UART_RCV_EVENT 1 << 7 -#define ACCEL_EVENT 1 << 8 +#define BT_UART_WAKEUP_EVENT 1 << 8 +#define ACCEL_EVENT 1 << 9 extern unsigned int _event_src; diff --git a/metawatch/mw_uart.c b/metawatch/mw_uart.c index 16a1a29..79b650e 100644 --- a/metawatch/mw_uart.c +++ b/metawatch/mw_uart.c @@ -16,12 +16,20 @@ void debug_uart_tx_char(char c); #pragma vector=USCI_A3_VECTOR __interrupt void UCA_ISR (void) { - /* clear IRQ flag */ - UCA3IFG &= ~UCRXIFG; - UART_RX_CHAR = UCA3RXBUF; - _event_src |= DBG_UART_RCV_EVENT; - /* wake up to handle the received char */ - LPM3_EXIT; + switch (UCA3IV) { + case 2: // RXIFG + /* clear IRQ flag */ + UCA3IFG &= ~UCRXIFG; + UART_RX_CHAR = UCA3RXBUF; + _event_src |= DBG_UART_RCV_EVENT; + /* wake up to handle the received char */ + LPM3_EXIT; + break; + case 4: // TXIFG + break; + default: + break; + } } void init_debug_uart(void) @@ -36,7 +44,7 @@ void init_debug_uart(void) /* 16,000,000 115200 138 7 0 */ UCA3BR0 = 138; - UCA3MCTL = UCBRS_7 + UCBRF_0; + UCA3MCTL = UCBRS_7 | UCBRF_0; /* set P10.4 & P10.5 to UCA function */ P10SEL |= BIT4; @@ -55,6 +63,8 @@ void init_debug_uart(void) void debug_uart_tx_char(const char c) { + while (UCA3STAT & UCBUSY) + nop(); UCA3TXBUF = c; while ((UCA3IFG & UCTXIFG) == 0 ) nop(); diff --git a/metawatch/oswald_hal.c b/metawatch/oswald_hal.c index 528f1a6..16b1cd1 100644 --- a/metawatch/oswald_hal.c +++ b/metawatch/oswald_hal.c @@ -97,6 +97,7 @@ void hal_get_rtc(clock_state *rtc) rtc->day = RTCDAY; rtc->month = RTCMON; rtc->year = RTCYEAR; + rtc->wday = RTCDOW; } void hal_set_rtc(clock_state *rtc, boolean set_sec) @@ -263,4 +264,8 @@ void hal_accelerometer_disable(void) mw_acc_disable(); } +uint16_t hal_amblight_get_val(void) +{ + return mw_get_amblight_adc_val(); +} diff --git a/ui/bitmaps/Bluetooth_icon.xbm b/ui/bitmaps/Bluetooth_icon.xbm index 82ee5d1..ba0e1b8 100644 --- a/ui/bitmaps/Bluetooth_icon.xbm +++ b/ui/bitmaps/Bluetooth_icon.xbm @@ -1,10 +1,10 @@ #define Bluetooth_icon_width 24 #define Bluetooth_icon_height 24 static unsigned char Bluetooth_icon_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x6c, 0x00, - 0x10, 0xcc, 0x00, 0x30, 0x8c, 0x01, 0x60, 0x0c, 0x03, 0xc0, 0x0c, 0x06, - 0x80, 0x0d, 0x03, 0x00, 0x8f, 0x01, 0x00, 0xce, 0x00, 0x00, 0x7c, 0x00, - 0x00, 0x3c, 0x00, 0x00, 0x6e, 0x00, 0x00, 0xcf, 0x00, 0x80, 0x8d, 0x01, - 0xc0, 0x0c, 0x03, 0x60, 0x0c, 0x06, 0x30, 0x0c, 0x03, 0x10, 0x8c, 0x01, - 0x00, 0xcc, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x78, 0x00, 0x00, 0xd8, 0x00, 0x80, 0x98, 0x01, 0x80, 0x19, 0x03, + 0x00, 0x9b, 0x01, 0x00, 0xde, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x3c, 0x00, 0x00, 0x7e, 0x00, 0x00, 0xdb, 0x00, 0x80, 0x99, 0x01, + 0x80, 0x18, 0x03, 0x00, 0x98, 0x01, 0x00, 0xd8, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/Exit_icon.xbm b/ui/bitmaps/Exit_icon.xbm new file mode 100644 index 0000000..02d1abb --- /dev/null +++ b/ui/bitmaps/Exit_icon.xbm @@ -0,0 +1,10 @@ +#define Exit_icon_width 24 +#define Exit_icon_height 24 +static unsigned char Exit_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03, + 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x01, + 0x30, 0x0c, 0x02, 0x30, 0x0c, 0x03, 0x30, 0x8c, 0x03, 0x30, 0xcc, 0x1f, + 0x30, 0xcc, 0x1f, 0x30, 0x8c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x06, 0x02, + 0x30, 0x03, 0x01, 0xb0, 0x01, 0x03, 0xf0, 0x00, 0x03, 0x70, 0x00, 0x03, + 0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/Message_icon.xbm b/ui/bitmaps/Message_icon.xbm new file mode 100644 index 0000000..3eb7bd5 --- /dev/null +++ b/ui/bitmaps/Message_icon.xbm @@ -0,0 +1,10 @@ +#define Message_icon_width 24 +#define Message_icon_height 24 +static unsigned char Message_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x3f, + 0xfc, 0xff, 0x3f, 0x3c, 0x00, 0x3c, 0x6c, 0x00, 0x36, 0xcc, 0x00, 0x33, + 0x8c, 0x81, 0x31, 0x0c, 0xc3, 0x30, 0x0c, 0x66, 0x30, 0x0c, 0x3c, 0x30, + 0x0c, 0x18, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, + 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0xfc, 0xff, 0x3f, 0xfc, 0xff, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/acc_icon.xbm b/ui/bitmaps/acc_icon.xbm new file mode 100644 index 0000000..b8c4bb8 --- /dev/null +++ b/ui/bitmaps/acc_icon.xbm @@ -0,0 +1,10 @@ +#define acc_icon_width 24 +#define acc_icon_height 24 +static unsigned char acc_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x70, 0x00, 0x00, + 0xa8, 0xe0, 0x00, 0x20, 0x40, 0x00, 0x20, 0xe0, 0x00, 0x20, 0x0e, 0x00, + 0x20, 0x0c, 0x00, 0x20, 0x0a, 0x00, 0x20, 0x01, 0x00, 0xa0, 0x40, 0x00, + 0x60, 0x80, 0x14, 0xf8, 0xff, 0x09, 0x30, 0x80, 0x14, 0x28, 0x40, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/alarm_icon.xbm b/ui/bitmaps/alarm_icon.xbm index 2ba8cc3..24fbdab 100644 --- a/ui/bitmaps/alarm_icon.xbm +++ b/ui/bitmaps/alarm_icon.xbm @@ -1,10 +1,10 @@ #define alarm_icon_width 24 #define alarm_icon_height 24 static unsigned char alarm_icon_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, - 0x1e, 0xff, 0x78, 0xce, 0xff, 0x73, 0xe6, 0x00, 0x67, 0x70, 0x18, 0x0e, - 0x38, 0x18, 0x1c, 0x18, 0x18, 0x18, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, - 0x0c, 0x18, 0x30, 0x0c, 0xf8, 0x31, 0x0c, 0xf8, 0x31, 0x0c, 0x00, 0x30, - 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c, - 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07, 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x1e, 0xff, 0x78, 0xce, 0xff, 0x73, + 0xe6, 0x00, 0x67, 0x70, 0x18, 0x0e, 0x38, 0x18, 0x1c, 0x18, 0x18, 0x18, + 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0xf8, 0x31, + 0x0c, 0xf8, 0x31, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, + 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c, 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07, + 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/checked_icon.xbm b/ui/bitmaps/checked_icon.xbm new file mode 100644 index 0000000..ddb4610 --- /dev/null +++ b/ui/bitmaps/checked_icon.xbm @@ -0,0 +1,4 @@ +#define checked_icon_width 7 +#define checked_icon_height 7 +static unsigned char checked_icon_bits[] = { + 0x7f, 0x41, 0x5d, 0x5d, 0x5d, 0x41, 0x7f, }; diff --git a/ui/bitmaps/enterbutton_icon.xbm b/ui/bitmaps/enterbutton_icon.xbm new file mode 100644 index 0000000..a78da70 --- /dev/null +++ b/ui/bitmaps/enterbutton_icon.xbm @@ -0,0 +1,7 @@ +#define enterbutton_icon_width 15 +#define enterbutton_icon_height 20 +static unsigned char enterbutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x64, 0x00, 0x66, 0x00, 0x67, 0x80, 0x7f, 0x80, 0x7f, 0x00, 0x07, + 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/exit_icon.xbm b/ui/bitmaps/exit_icon.xbm new file mode 100644 index 0000000..18e6c46 --- /dev/null +++ b/ui/bitmaps/exit_icon.xbm @@ -0,0 +1,10 @@ +#define exit_icon_width 24 +#define exit_icon_height 24 +static unsigned char exit_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03, + 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x0c, 0x01, + 0x30, 0x0c, 0x02, 0x30, 0x0c, 0x03, 0x30, 0x8c, 0x03, 0x30, 0xcc, 0x1f, + 0x30, 0xcc, 0x1f, 0x30, 0x8c, 0x03, 0x30, 0x0c, 0x03, 0x30, 0x06, 0x02, + 0x30, 0x03, 0x01, 0xb0, 0x01, 0x03, 0xf0, 0x00, 0x03, 0x70, 0x00, 0x03, + 0xf0, 0xff, 0x03, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/info_icon.xbm b/ui/bitmaps/info_icon.xbm new file mode 100644 index 0000000..9b2c1c2 --- /dev/null +++ b/ui/bitmaps/info_icon.xbm @@ -0,0 +1,10 @@ +#define info_icon_width 24 +#define info_icon_height 24 +static unsigned char info_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xc0, 0xff, 0x03, + 0xe0, 0x00, 0x07, 0x70, 0x1c, 0x0e, 0x38, 0x1c, 0x1c, 0x18, 0x1c, 0x18, + 0x0c, 0x00, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, + 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, 0x0c, 0x1c, 0x30, + 0x18, 0x1c, 0x18, 0x38, 0x1c, 0x1c, 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07, + 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/leftbutton_icon.xbm b/ui/bitmaps/leftbutton_icon.xbm new file mode 100644 index 0000000..5853d90 --- /dev/null +++ b/ui/bitmaps/leftbutton_icon.xbm @@ -0,0 +1,7 @@ +#define leftbutton_icon_width 15 +#define leftbutton_icon_height 20 +static unsigned char leftbutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x80, 0x7f, 0x80, 0x7f, 0x00, 0x07, + 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/main_menu_icon.xbm b/ui/bitmaps/main_menu_icon.xbm new file mode 100644 index 0000000..f106a24 --- /dev/null +++ b/ui/bitmaps/main_menu_icon.xbm @@ -0,0 +1,10 @@ +#define main_menu_icon_width 24 +#define main_menu_icon_height 24 +static unsigned char main_menu_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0xfc, 0xff, 0x3f, + 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, + 0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0x0c, 0x00, 0x30, + 0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0xcc, 0xdd, 0x31, 0x0c, 0x00, 0x30, + 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0xfc, 0xff, 0x3f, + 0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/message_icon.xbm b/ui/bitmaps/message_icon.xbm new file mode 100644 index 0000000..5bff5fb --- /dev/null +++ b/ui/bitmaps/message_icon.xbm @@ -0,0 +1,10 @@ +#define message_icon_width 24 +#define message_icon_height 24 +static unsigned char message_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0x0e, 0x00, 0x70, + 0x1e, 0x00, 0x78, 0x36, 0x00, 0x6c, 0x66, 0x00, 0x66, 0xc6, 0x00, 0x63, + 0x86, 0x81, 0x61, 0x06, 0xc3, 0x60, 0x06, 0x66, 0x60, 0x06, 0x3c, 0x60, + 0x06, 0x18, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0xfe, 0xff, 0x7f, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; diff --git a/ui/bitmaps/rightbutton_icon.xbm b/ui/bitmaps/rightbutton_icon.xbm new file mode 100644 index 0000000..48f9ac5 --- /dev/null +++ b/ui/bitmaps/rightbutton_icon.xbm @@ -0,0 +1,7 @@ +#define rightbutton_icon_width 15 +#define rightbutton_icon_height 20 +static unsigned char rightbutton_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x18, 0x00, 0x38, 0x80, 0x7f, 0x80, 0x7f, 0x00, 0x38, + 0x00, 0x18, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/stopwatch_icon.xbm b/ui/bitmaps/stopwatch_icon.xbm index 9282fb2..e3aa9cf 100644 --- a/ui/bitmaps/stopwatch_icon.xbm +++ b/ui/bitmaps/stopwatch_icon.xbm @@ -1,10 +1,10 @@ #define stopwatch_icon_width 24 #define stopwatch_icon_height 24 static unsigned char stopwatch_icon_bits[] = { - 0x00, 0x18, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x18, - 0x00, 0xff, 0x3c, 0xc0, 0xff, 0x3f, 0xe0, 0x00, 0x1f, 0x70, 0x18, 0x0e, - 0x38, 0x18, 0x1c, 0x18, 0x18, 0x18, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, - 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x00, 0x30, - 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c, - 0x70, 0x00, 0x0e, 0xe0, 0x00, 0x07, 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0xff, 0x0c, + 0xc0, 0xff, 0x1f, 0xe0, 0x00, 0x1f, 0x70, 0x18, 0x0e, 0x38, 0x18, 0x1c, + 0x18, 0x18, 0x18, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, + 0x0c, 0x18, 0x30, 0x0c, 0x18, 0x30, 0x0c, 0x00, 0x30, 0x0c, 0x00, 0x30, + 0x0c, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, 0x1c, 0x70, 0x00, 0x0e, + 0xe0, 0x00, 0x07, 0xc0, 0xff, 0x03, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, }; diff --git a/ui/bitmaps/unchecked_icon.xbm b/ui/bitmaps/unchecked_icon.xbm new file mode 100644 index 0000000..f750c04 --- /dev/null +++ b/ui/bitmaps/unchecked_icon.xbm @@ -0,0 +1,4 @@ +#define unchecked_icon_width 7 +#define unchecked_icon_height 7 +static unsigned char unchecked_icon_bits[] = { + 0x7f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x7f, }; diff --git a/ui/fonts/DroidSans.h b/ui/fonts/DroidSans.h new file mode 100644 index 0000000..9f4601f --- /dev/null +++ b/ui/fonts/DroidSans.h @@ -0,0 +1,261 @@ +/* -FreeType-Droid Sans-Medium-R-Normal--8-60-96-96-P-44-ISO10646-1 */ +#define FONT_WIDTH_Droid SansMedium_13x14 13 +#define FONT_HEIGHT_Droid SansMedium_13x14 14 +const uint8_t FONT_DATA_Droid SansMedium_13x14[256][29] = { +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xc0,0x00,0xf0,0x01,0xf0,0x01,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x70,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x20,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0xb0,0x00,0xb0,0x03,0x70,0x03,0x40,0x03,0x20,0x03,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x60,0x00,0x50,0x02,0x90,0x01,0xf0,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x08,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x70,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0xe0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x30,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x60,0x00,0x50,0x00,0xf0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x00,0x70,0x00,0x50,0x00,0x50,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x50,0x00,0x50,0x00,0x70,0x00,0x40,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x30,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x60,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x10,0x02,0xd0,0x02,0xd0,0x02,0xd0,0x03,0x10,0x00,0xe0,0x01,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x10,0x00,0x10,0x00,0x90,0x01,0x10,0x01,0xe0,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0xf0,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x08,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x50,0x00,0x30,0x00,0x50,0x00,0x50,0x00,0x90,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x30,0x06,0x30,0x06,0x50,0x05,0x50,0x05,0x90,0x04,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x30,0x01,0x50,0x01,0x50,0x01,0x90,0x01,0x10,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x80,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x50,0x00,0x90,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x30,0x00,0x40,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0xa0,0x00,0xa0,0x00,0xa0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x04,0x50,0x05,0x50,0x05,0x50,0x05,0x20,0x03,0x20,0x02,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x50,0x00,0x90,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x60,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x18,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x00,0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0xe0,0x00,0x90,0x00,0x90,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x50,0x00,0x70,0x00,0xe0,0x00,0x90,0x00,0xf0,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x18,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x50,0x00,0x30,0x00,0x30,0x00,0x50,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x10,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x90,0x00,0x90,0x00,0xe0,0x00,0x80,0x00,0x80,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x30,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x01,0x50,0x01,0xb0,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x10,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x20,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x20,0x00,0x20,0x00,0x60,0x00,0x40,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x20,0x00,0x20,0x00,0x70,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x50,0x00,0x30,0x00,0x70,0x00,0x70,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x30,0x00,0x50,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0xd0,0x02,0x50,0x02,0xd0,0x02,0x10,0x02,0xe0,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x50,0x00,0x50,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0xd0,0x03,0xd0,0x02,0xd0,0x02,0x10,0x02,0xe0,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0xe0,0x00,0x40,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x20,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x40,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x10,0x00,0x10,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xb0,0x00,0xb0,0x00,0xb0,0x00,0xc0,0x00,0xc0,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0xa0,0x00,0xa0,0x00,0x50,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x00,0xa0,0x00,0x60,0x03,0xe0,0x02,0x20,0x03,0x20,0x02,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x00,0xa0,0x00,0xe0,0x03,0x60,0x02,0x20,0x01,0xa0,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x01,0x40,0x01,0xc0,0x03,0xf0,0x02,0x40,0x03,0x40,0x02,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x10,0x00,0x10,0x00,0x70,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xc0,0x00,0xa0,0x00,0xa0,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0xc0,0x00,0xa0,0x03,0xa0,0x00,0xf0,0x00,0x90,0x03,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xe0,0x00,0x80,0x00,0x80,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x90,0x00,0xb8,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0x10,0x01,0x30,0x01,0x50,0x01,0x50,0x01,0x90,0x01,0x10,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0xe0,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x90,0x01,0x50,0x01,0x50,0x01,0x30,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x88,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x50,0x00,0x50,0x00,0x90,0x00,0xd0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x70,0x00,0x40,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x03,0x80,0x03,0xf0,0x00,0x70,0x03,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x00,0x10,0x00,0x60,0x00,0x40,0x00,0x40,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x60,0x00,0xe0,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0xf0,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x80,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x60,0x00,0x90,0x00,0x90,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xd0,0x00,0xb0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xa0,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x00,0x00,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x10,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x70,0x00,0x90,0x00,0x90,0x00,0x70,0x00,0x10,0x00,0x10,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x20,0x00,0x20,0x00,0x10,0x00,}, +}; diff --git a/ui/fonts/DroidSans8x11.bdf b/ui/fonts/DroidSans8x11.bdf new file mode 100644 index 0000000..d0deeb3 --- /dev/null +++ b/ui/fonts/DroidSans8x11.bdf @@ -0,0 +1,2927 @@ +STARTFONT 2.1 +COMMENT Font converted from OTF to BDF. +FONT -FreeType-Droid Sans-Medium-R-Normal--8-60-96-96-P-44-ISO10646-1 +SIZE 6 96 96 +FONTBOUNDINGBOX 8 10 -1 -2 +STARTPROPERTIES 19 +POINT_SIZE 60 +PIXEL_SIZE 8 +RESOLUTION_X 96 +RESOLUTION_Y 96 +FONT_ASCENT 7 +FONT_DESCENT 1 +AVERAGE_WIDTH 44 +SPACING "P" +FOUNDRY "FreeType" +FAMILY_NAME "Droid Sans" +CHARSET_REGISTRY "ISO10646" +CHARSET_ENCODING "1" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +COPYRIGHT "Digitized data copyright © 2007, Google Corporation." +_TTF_PSNAME "DroidSans" +_OTF_FONTFILE "DroidSans.ttf" +_GBDFED_INFO "Edited with gbdfed 1.6." +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char1 +ENCODING 1 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char2 +ENCODING 2 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char3 +ENCODING 3 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char4 +ENCODING 4 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char5 +ENCODING 5 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char6 +ENCODING 6 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char7 +ENCODING 7 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char8 +ENCODING 8 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char9 +ENCODING 9 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char10 +ENCODING 10 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char11 +ENCODING 11 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char12 +ENCODING 12 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char13 +ENCODING 13 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char14 +ENCODING 14 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char15 +ENCODING 15 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char16 +ENCODING 16 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char17 +ENCODING 17 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char18 +ENCODING 18 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char19 +ENCODING 19 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char20 +ENCODING 20 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char21 +ENCODING 21 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char22 +ENCODING 22 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char23 +ENCODING 23 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char24 +ENCODING 24 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char25 +ENCODING 25 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char26 +ENCODING 26 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char27 +ENCODING 27 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char28 +ENCODING 28 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char29 +ENCODING 29 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char30 +ENCODING 30 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char31 +ENCODING 31 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 6 0 0 +BITMAP +80 +80 +80 +80 +00 +80 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 2 1 4 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +30 +30 +F8 +F8 +60 +60 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 8 0 -1 +BITMAP +40 +E0 +C0 +C0 +60 +60 +E0 +40 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 6 0 0 +BITMAP +C8 +D0 +DC +EC +2C +4C +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +F0 +90 +60 +A4 +98 +F8 +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 2 1 4 +BITMAP +80 +80 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 0 -1 +BITMAP +40 +80 +80 +80 +80 +80 +40 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 -1 -1 +BITMAP +80 +40 +40 +40 +40 +40 +80 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 2 +BITMAP +40 +E0 +40 +A0 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 1 1 +BITMAP +40 +40 +E0 +40 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 2 0 -1 +BITMAP +80 +80 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 1 0 1 +BITMAP +C0 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 1 0 0 +BITMAP +80 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 6 0 0 +BITMAP +20 +20 +40 +40 +80 +80 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +40 +A0 +A0 +A0 +A0 +40 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 2 6 0 0 +BITMAP +40 +C0 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +20 +20 +40 +40 +E0 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +20 +40 +20 +20 +E0 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +20 +60 +60 +A0 +F0 +20 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +80 +E0 +20 +20 +C0 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +60 +80 +E0 +A0 +A0 +60 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +20 +20 +40 +40 +40 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +A0 +A0 +40 +A0 +E0 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +C0 +A0 +A0 +E0 +20 +C0 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 4 0 0 +BITMAP +80 +00 +00 +80 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 5 0 -1 +BITMAP +80 +00 +00 +80 +80 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 1 +BITMAP +20 +40 +C0 +20 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 3 0 1 +BITMAP +E0 +00 +E0 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 1 +BITMAP +80 +40 +60 +80 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +20 +20 +40 +00 +40 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 7 0 -1 +BITMAP +78 +84 +B4 +B4 +BC +80 +78 +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +90 +F0 +90 +90 +F0 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +70 +80 +80 +80 +80 +70 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +E0 +90 +90 +90 +90 +E0 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +80 +E0 +80 +80 +E0 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +80 +E0 +80 +80 +80 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +78 +80 +80 +98 +88 +78 +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +88 +88 +F8 +88 +88 +88 +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 1 6 1 0 +BITMAP +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 8 -1 -2 +BITMAP +40 +40 +40 +40 +40 +40 +40 +80 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +A0 +C0 +A0 +A0 +90 +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +80 +80 +80 +80 +80 +F0 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 1000 0 +DWIDTH 8 0 +BBX 7 6 0 0 +BITMAP +82 +C6 +C6 +AA +AA +92 +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +88 +C8 +A8 +A8 +98 +88 +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +90 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 7 0 -1 +BITMAP +70 +88 +88 +88 +88 +70 +10 +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +90 +90 +E0 +A0 +90 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +80 +C0 +20 +20 +E0 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +88 +88 +50 +50 +50 +20 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 1000 0 +DWIDTH 8 0 +BBX 7 6 0 0 +BITMAP +92 +AA +AA +AA +4C +44 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +90 +60 +60 +60 +A0 +90 +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 5 6 -1 0 +BITMAP +88 +50 +50 +20 +20 +20 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +20 +20 +40 +40 +F0 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 1 -1 +BITMAP +C0 +80 +80 +80 +80 +80 +C0 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 6 0 0 +BITMAP +80 +80 +40 +40 +20 +20 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 -1 -1 +BITMAP +C0 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 4 0 2 +BITMAP +20 +60 +90 +90 +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 1 0 -2 +BITMAP +E0 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 2 2 2 5 +BITMAP +80 +40 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +80 +E0 +90 +90 +E0 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +60 +80 +80 +60 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +10 +10 +70 +90 +90 +70 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +E0 +E0 +80 +E0 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 6 0 0 +BITMAP +C0 +80 +C0 +80 +80 +80 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 6 0 -2 +BITMAP +F0 +A0 +E0 +70 +90 +F0 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +80 +F0 +90 +90 +90 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 6 0 0 +BITMAP +80 +00 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 8 -1 -2 +BITMAP +40 +00 +40 +40 +40 +40 +40 +C0 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +80 +80 +A0 +C0 +C0 +A0 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 6 0 0 +BITMAP +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 89 0 +DWIDTH 8 0 +BBX 7 4 0 0 +BITMAP +EE +92 +92 +92 +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +F0 +90 +90 +90 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +60 +90 +90 +60 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 -2 +BITMAP +E0 +90 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 -2 +BITMAP +70 +90 +90 +70 +10 +10 +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 4 0 0 +BITMAP +C0 +80 +80 +80 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +E0 +C0 +20 +E0 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 5 0 0 +BITMAP +80 +C0 +80 +80 +C0 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +A0 +A0 +A0 +40 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 4 0 0 +BITMAP +A8 +A8 +D0 +50 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +A0 +40 +40 +A0 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 -2 +BITMAP +A0 +A0 +A0 +40 +40 +80 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 0 +BITMAP +E0 +40 +40 +E0 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 7 0 -1 +BITMAP +40 +40 +40 +80 +40 +40 +40 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 1 8 1 -2 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 7 1 -1 +BITMAP +80 +80 +80 +40 +80 +80 +80 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 2 0 1 +BITMAP +80 +60 +ENDCHAR +STARTCHAR char127 +ENCODING 127 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char128 +ENCODING 128 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char129 +ENCODING 129 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char130 +ENCODING 130 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char131 +ENCODING 131 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char132 +ENCODING 132 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char133 +ENCODING 133 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char134 +ENCODING 134 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char135 +ENCODING 135 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char136 +ENCODING 136 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char137 +ENCODING 137 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char138 +ENCODING 138 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char139 +ENCODING 139 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char140 +ENCODING 140 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char141 +ENCODING 141 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char142 +ENCODING 142 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char143 +ENCODING 143 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char144 +ENCODING 144 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char145 +ENCODING 145 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char146 +ENCODING 146 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char147 +ENCODING 147 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char148 +ENCODING 148 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char149 +ENCODING 149 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char150 +ENCODING 150 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char151 +ENCODING 151 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char152 +ENCODING 152 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char153 +ENCODING 153 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char154 +ENCODING 154 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char155 +ENCODING 155 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char156 +ENCODING 156 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char157 +ENCODING 157 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char158 +ENCODING 158 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char159 +ENCODING 159 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 6 0 -2 +BITMAP +80 +00 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 2 6 1 0 +BITMAP +40 +C0 +80 +80 +C0 +40 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +60 +40 +40 +E0 +40 +E0 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 3 0 1 +BITMAP +E0 +A0 +E0 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 5 6 -1 0 +BITMAP +88 +50 +60 +70 +70 +20 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 1 8 1 -2 +BITMAP +80 +80 +80 +00 +00 +80 +80 +80 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +E0 +C0 +A0 +E0 +20 +E0 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 3 1 1 5 +BITMAP +A0 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 6 0 0 +BITMAP +78 +B4 +A4 +B4 +84 +78 +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 3 0 3 +BITMAP +E0 +E0 +E0 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +50 +A0 +A0 +50 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 2 0 1 +BITMAP +E0 +20 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 2 1 0 1 +BITMAP +C0 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 6 0 0 +BITMAP +78 +BC +B4 +B4 +84 +78 +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 1 0 6 +BITMAP +F0 +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 3 0 3 +BITMAP +E0 +A0 +E0 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 5 1 0 +BITMAP +40 +40 +E0 +40 +E0 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 2 +BITMAP +E0 +20 +40 +C0 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 4 0 2 +BITMAP +E0 +20 +20 +E0 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 2 2 2 5 +BITMAP +40 +80 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 -2 +BITMAP +90 +90 +90 +F0 +80 +80 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 -1 +BITMAP +F0 +D0 +D0 +D0 +30 +30 +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 1 0 2 +BITMAP +80 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 1 2 1 -2 +BITMAP +80 +80 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 2 4 0 2 +BITMAP +C0 +40 +40 +40 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 33 0 +DWIDTH 3 0 +BBX 3 3 0 3 +BITMAP +E0 +A0 +E0 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +A0 +50 +50 +A0 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +D0 +50 +6C +74 +4C +44 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +D0 +50 +7C +64 +48 +58 +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +E8 +28 +3C +F4 +2C +24 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 -2 +BITMAP +40 +00 +40 +80 +80 +E0 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +40 +20 +00 +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +10 +20 +00 +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +20 +50 +00 +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +60 +10 +00 +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +50 +00 +20 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 7 0 0 +BITMAP +30 +30 +50 +50 +70 +88 +88 +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 6 0 0 +BITMAP +3C +30 +5C +50 +F0 +9C +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 8 0 -2 +BITMAP +70 +80 +80 +80 +80 +70 +10 +10 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +40 +20 +00 +E0 +80 +E0 +80 +80 +E0 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +20 +40 +00 +E0 +80 +E0 +80 +80 +E0 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +40 +A0 +00 +E0 +80 +E0 +80 +80 +E0 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 8 0 0 +BITMAP +A0 +00 +E0 +80 +E0 +80 +80 +E0 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 2 9 0 0 +BITMAP +80 +40 +00 +40 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 2 9 1 0 +BITMAP +40 +80 +00 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +40 +A0 +00 +40 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 8 0 0 +BITMAP +A0 +00 +40 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 5 6 -1 0 +BITMAP +70 +48 +E8 +48 +48 +70 +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +60 +10 +00 +88 +C8 +A8 +A8 +98 +88 +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +40 +20 +00 +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +10 +20 +00 +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +20 +50 +00 +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +60 +10 +00 +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +50 +00 +70 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 3 1 1 +BITMAP +A0 +40 +A0 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 6 0 0 +BITMAP +70 +98 +A8 +A8 +C8 +70 +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +40 +20 +00 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +10 +20 +00 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 9 0 0 +BITMAP +20 +50 +00 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 67 0 +DWIDTH 6 0 +BBX 5 8 0 0 +BITMAP +50 +00 +88 +88 +88 +88 +88 +70 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 5 9 -1 0 +BITMAP +10 +20 +00 +88 +50 +50 +20 +20 +20 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +80 +E0 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +F0 +90 +A0 +A0 +90 +B0 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +40 +20 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +20 +40 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +40 +A0 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +C0 +20 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +A0 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +60 +60 +00 +E0 +20 +E0 +E0 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 78 0 +DWIDTH 7 0 +BBX 6 4 0 0 +BITMAP +EC +1C +F0 +EC +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 -2 +BITMAP +60 +80 +80 +60 +20 +20 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +40 +20 +00 +E0 +E0 +80 +E0 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +20 +40 +00 +E0 +E0 +80 +E0 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +40 +A0 +00 +E0 +E0 +80 +E0 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +A0 +00 +E0 +E0 +80 +E0 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 -1 0 +BITMAP +80 +40 +00 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 2 7 0 0 +BITMAP +40 +80 +00 +80 +80 +80 +80 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 3 7 -1 0 +BITMAP +40 +A0 +00 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 22 0 +DWIDTH 2 0 +BBX 3 6 -1 0 +BITMAP +A0 +00 +40 +40 +40 +40 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +50 +60 +70 +90 +90 +60 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +60 +10 +00 +F0 +90 +90 +90 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +40 +20 +00 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +10 +20 +00 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +20 +50 +00 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +60 +10 +00 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +50 +00 +60 +90 +90 +60 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 5 1 0 +BITMAP +40 +00 +E0 +00 +40 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 4 0 0 +BITMAP +60 +B0 +D0 +60 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +40 +20 +00 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +10 +20 +00 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +20 +50 +00 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 6 0 0 +BITMAP +50 +00 +90 +90 +90 +F0 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 9 0 -2 +BITMAP +20 +40 +00 +A0 +A0 +A0 +40 +40 +80 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 56 0 +DWIDTH 5 0 +BBX 4 8 0 -2 +BITMAP +80 +80 +E0 +90 +90 +E0 +80 +80 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 44 0 +DWIDTH 4 0 +BBX 3 8 0 -2 +BITMAP +A0 +00 +A0 +A0 +A0 +40 +40 +80 +ENDCHAR +ENDFONT diff --git a/ui/fonts/DroidSans8x11.h b/ui/fonts/DroidSans8x11.h new file mode 100644 index 0000000..7edc451 --- /dev/null +++ b/ui/fonts/DroidSans8x11.h @@ -0,0 +1,261 @@ +/* -FreeType-Droid Sans-Medium-R-Normal--8-60-96-96-P-44-ISO10646-1 */ +#define FONT_WIDTH_Droid_SansMedium_8x11 8 +#define FONT_HEIGHT_Droid_SansMedium_8x11 11 +const uint8_t FONT_DATA_Droid_SansMedium_8x11[256][12] = { +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x00,0x02,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x18,0x18,0x3e,0x3e,0x0c,0x0c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x04,0x0e,0x06,0x06,0x0c,0x0c,0x0e,0x04,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x26,0x16,0x76,0x6e,0x68,0x64,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1e,0x12,0x0c,0x4a,0x32,0x3e,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x02,0x01,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x0e,0x04,0x0a,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x08,0x1c,0x08,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x08,0x08,0x04,0x04,0x02,0x02,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x0a,0x0a,0x0a,0x0a,0x04,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x06,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x04,0x04,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x04,0x08,0x08,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x08,0x0c,0x0c,0x0a,0x1e,0x08,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x0e,0x08,0x08,0x06,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0c,0x02,0x0e,0x0a,0x0a,0x0c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x0a,0x0a,0x04,0x0a,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x06,0x0a,0x0a,0x0e,0x08,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x02,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x04,0x06,0x08,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x02,0x04,0x0c,0x02,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x04,0x00,0x04,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x42,0x5a,0x5a,0x7a,0x02,0x3c,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x1e,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x02,0x02,0x02,0x02,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x0e,0x12,0x12,0x12,0x12,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x0e,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x3c,0x02,0x02,0x32,0x22,0x3c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x3e,0x22,0x22,0x22,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,}, +{/*w*/5,0x00,0x00,0x00,0x12,0x0a,0x06,0x0a,0x0a,0x12,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x1e,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x82,0xc6,0xc6,0xaa,0xaa,0x92,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x26,0x2a,0x2a,0x32,0x22,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x12,0x0e,0x02,0x02,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x10,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x12,0x0e,0x0a,0x12,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x02,0x06,0x08,0x08,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x22,0x22,0x14,0x14,0x14,0x08,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x92,0xaa,0xaa,0xaa,0x64,0x44,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x12,0x0c,0x0c,0x0c,0x0a,0x12,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x11,0x0a,0x0a,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x08,0x08,0x04,0x04,0x1e,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x0c,0x04,0x04,0x04,0x04,0x04,0x0c,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x02,0x02,0x04,0x04,0x08,0x08,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x02,0x02,0x03,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x08,0x0c,0x12,0x12,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,}, +{/*w*/5,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x0e,0x12,0x12,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x02,0x02,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x10,0x10,0x1c,0x12,0x12,0x1c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x06,0x02,0x06,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x0a,0x0e,0x1c,0x12,0x1e,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x1e,0x12,0x12,0x12,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,0x02,0x03,}, +{/*w*/4,0x00,0x00,0x00,0x02,0x02,0x0a,0x06,0x06,0x0a,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0xee,0x92,0x92,0x92,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x12,0x12,0x12,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0e,0x12,0x12,0x0e,0x02,0x02,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x12,0x12,0x1c,0x10,0x10,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x06,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x06,0x08,0x0e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x02,0x06,0x02,0x02,0x06,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x0a,0x0a,0x04,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x2a,0x2a,0x16,0x14,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x04,0x04,0x0a,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x0a,0x0a,0x04,0x04,0x02,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x04,0x04,0x0e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x04,0x04,0x04,0x02,0x04,0x04,0x04,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,}, +{/*w*/3,0x00,0x00,0x00,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x0c,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x02,0x02,0x02,}, +{/*w*/4,0x00,0x00,0x00,0x08,0x0c,0x04,0x04,0x0c,0x08,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0c,0x04,0x04,0x0e,0x04,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x11,0x0a,0x06,0x0e,0x0e,0x04,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x04,0x04,0x04,0x00,0x00,0x04,0x04,0x04,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x06,0x0a,0x0e,0x08,0x0e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x5a,0x4a,0x5a,0x42,0x3c,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x0e,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x14,0x0a,0x0a,0x14,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x08,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x3c,0x7a,0x5a,0x5a,0x42,0x3c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x08,0x1c,0x08,0x1c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x04,0x06,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x08,0x08,0x0e,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x12,0x12,0x12,0x1e,0x02,0x02,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x1e,0x16,0x16,0x16,0x18,0x18,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,}, +{/*w*/4,0x00,0x00,0x00,0x06,0x04,0x04,0x04,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x0a,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0a,0x14,0x14,0x0a,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x16,0x14,0x6c,0x5c,0x64,0x44,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x16,0x14,0x7c,0x4c,0x24,0x34,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x2e,0x28,0x78,0x5e,0x68,0x48,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x02,0x02,0x0e,}, +{/*w*/6,0x04,0x08,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x10,0x08,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x08,0x14,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x0c,0x10,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x00,0x14,0x00,0x08,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x18,0x18,0x14,0x14,0x1c,0x22,0x22,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x78,0x18,0x74,0x14,0x1e,0x72,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x02,0x02,0x02,0x02,0x1c,0x10,0x10,}, +{/*w*/4,0x04,0x08,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x08,0x04,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x04,0x0a,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x0a,0x00,0x0e,0x02,0x0e,0x02,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x02,0x04,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/4,0x08,0x04,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/4,0x04,0x0a,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/4,0x00,0x0a,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x0e,0x12,0x17,0x12,0x12,0x0e,0x00,0x00,}, +{/*w*/6,0x0c,0x10,0x00,0x22,0x26,0x2a,0x2a,0x32,0x22,0x00,0x00,}, +{/*w*/6,0x04,0x08,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x10,0x08,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x08,0x14,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x0c,0x10,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x14,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x14,0x08,0x14,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x1c,0x32,0x2a,0x2a,0x26,0x1c,0x00,0x00,}, +{/*w*/6,0x04,0x08,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x10,0x08,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x08,0x14,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x14,0x00,0x22,0x22,0x22,0x22,0x22,0x1c,0x00,0x00,}, +{/*w*/4,0x08,0x04,0x00,0x11,0x0a,0x0a,0x04,0x04,0x04,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x0e,0x12,0x12,0x0e,0x02,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x12,0x0a,0x0a,0x12,0x1a,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x04,0x08,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x08,0x04,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x04,0x0a,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x06,0x08,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0a,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x0c,0x0c,0x00,0x0e,0x08,0x0e,0x0e,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x6e,0x70,0x1e,0x6e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x02,0x02,0x0c,0x08,0x08,}, +{/*w*/4,0x00,0x00,0x04,0x08,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x08,0x04,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x04,0x0a,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0a,0x00,0x0e,0x0e,0x02,0x0e,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x01,0x02,0x00,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x04,0x02,0x00,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x02,0x05,0x00,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x05,0x00,0x02,0x02,0x02,0x02,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x0c,0x1c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x0c,0x10,0x00,0x1e,0x12,0x12,0x12,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x04,0x08,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x08,0x14,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x0c,0x10,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x08,0x00,0x1c,0x00,0x08,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0c,0x1a,0x16,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x04,0x08,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x10,0x08,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x08,0x14,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x14,0x00,0x12,0x12,0x12,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x08,0x04,0x00,0x0a,0x0a,0x0a,0x04,0x04,0x02,}, +{/*w*/5,0x00,0x00,0x00,0x02,0x02,0x0e,0x12,0x12,0x0e,0x02,0x02,}, +{/*w*/4,0x00,0x00,0x00,0x0a,0x00,0x0a,0x0a,0x0a,0x04,0x04,0x02,}, +}; diff --git a/ui/fonts/DroidSansBold8x12.bdf b/ui/fonts/DroidSansBold8x12.bdf new file mode 100644 index 0000000..d32ecdf --- /dev/null +++ b/ui/fonts/DroidSansBold8x12.bdf @@ -0,0 +1,3090 @@ +STARTFONT 2.1 +COMMENT Font converted from OTF to BDF. +FONT -FreeType-Droid_Sans-Bold-R-Normal--9-70-96-96-P-49-ISO10646-1 +SIZE 7 96 96 +FONTBOUNDINGBOX 8 12 -1 -2 +STARTPROPERTIES 19 +POINT_SIZE 70 +PIXEL_SIZE 9 +RESOLUTION_X 96 +RESOLUTION_Y 96 +FONT_ASCENT 8 +FONT_DESCENT 2 +AVERAGE_WIDTH 49 +SPACING "P" +FOUNDRY "FreeType" +FAMILY_NAME "Droid_Sans" +CHARSET_REGISTRY "ISO10646" +CHARSET_ENCODING "1" +WEIGHT_NAME "Bold" +SLANT "R" +SETWIDTH_NAME "Normal" +COPYRIGHT "Digitized data copyright © 2007, Google Corporation." +_TTF_PSNAME "DroidSans" +_OTF_FONTFILE "DroidSans.ttf" +_GBDFED_INFO "Edited with gbdfed 1.6." +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 1 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 2 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 3 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 4 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 5 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 6 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 7 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 8 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 9 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 10 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 11 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 12 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 13 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 14 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 15 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 16 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 17 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 18 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 19 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 20 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 21 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 22 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 23 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 24 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 25 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 26 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 27 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 28 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 29 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 30 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 31 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 7 0 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +00 +C0 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 2 0 5 +BITMAP +F0 +F0 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 7 7 0 0 +BITMAP +3C +3C +FE +6C +FE +78 +78 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 -1 +BITMAP +30 +78 +F0 +F0 +70 +78 +78 +F0 +60 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 7 0 0 +BITMAP +F6 +FC +FC +FF +3F +3F +6F +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 7 7 0 0 +BITMAP +F8 +D8 +F0 +60 +F6 +DC +7C +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 2 0 5 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 8 0 -1 +BITMAP +60 +C0 +C0 +C0 +C0 +C0 +C0 +60 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 8 0 -1 +BITMAP +C0 +60 +60 +60 +60 +60 +60 +C0 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 4 0 3 +BITMAP +30 +FC +30 +78 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 4 0 2 +BITMAP +30 +30 +F8 +30 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 2 0 -1 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 1 0 2 +BITMAP +E0 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 1 0 0 +BITMAP +C0 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 4 7 0 0 +BITMAP +30 +30 +60 +60 +60 +C0 +C0 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +70 +D8 +D8 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 7 0 0 +BITMAP +70 +F0 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F0 +18 +18 +30 +30 +60 +F8 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +18 +18 +70 +18 +18 +F0 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 7 0 0 +BITMAP +18 +38 +78 +D8 +FC +18 +18 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +C0 +C0 +F0 +18 +18 +F0 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +C0 +C0 +F8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +18 +30 +30 +30 +60 +60 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +D8 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +70 +D8 +D8 +F8 +18 +18 +F0 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 5 0 0 +BITMAP +C0 +00 +00 +00 +C0 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 6 0 -1 +BITMAP +C0 +00 +00 +00 +C0 +C0 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 1 +BITMAP +18 +70 +C0 +70 +18 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 3 0 2 +BITMAP +F8 +00 +F8 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 1 +BITMAP +C0 +70 +18 +70 +C0 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +F0 +30 +30 +60 +60 +00 +60 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 8 0 -1 +BITMAP +3E +63 +DF +FF +FF +FE +C0 +7C +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +D8 +F0 +D8 +D8 +F0 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +C0 +C0 +C0 +C0 +C0 +78 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +F8 +CC +CC +CC +CC +DC +F8 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +C0 +C0 +F8 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +C0 +C0 +F8 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +7C +C0 +C0 +DC +CC +CC +7C +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +CC +CC +FC +CC +CC +CC +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 7 0 0 +BITMAP +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 4 9 -1 -2 +BITMAP +30 +30 +30 +30 +30 +30 +30 +30 +E0 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 7 0 0 +BITMAP +CC +D8 +F0 +F0 +F0 +D8 +CC +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 5 7 0 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 7 0 0 +BITMAP +E3 +E7 +E7 +FF +FF +FF +DB +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +EC +EC +FC +DC +DC +CC +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +D8 +F0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 9 0 -2 +BITMAP +7C +C6 +C6 +C6 +C6 +C6 +7C +0C +0C +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +D8 +F0 +F0 +D8 +D8 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +C0 +C0 +70 +18 +18 +F0 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 6 7 -1 0 +BITMAP +FC +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +CC +CC +78 +78 +78 +30 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 7 0 0 +BITMAP +DB +FB +FF +FF +FF +66 +66 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +78 +78 +30 +78 +78 +CC +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +CC +D8 +78 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +18 +30 +60 +60 +C0 +F8 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 8 0 -1 +BITMAP +E0 +C0 +C0 +C0 +C0 +C0 +C0 +E0 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 4 7 0 0 +BITMAP +C0 +C0 +60 +60 +60 +30 +30 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 8 0 -1 +BITMAP +E0 +60 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 4 0 3 +BITMAP +30 +78 +78 +CC +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 5 1 0 -2 +BITMAP +F8 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 3 2 2 6 +BITMAP +C0 +60 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +C0 +C0 +F0 +D8 +D8 +D8 +F0 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 5 0 0 +BITMAP +70 +C0 +C0 +C0 +70 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +18 +18 +78 +D8 +D8 +D8 +78 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +70 +60 +F0 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 -2 +BITMAP +F8 +F0 +F0 +60 +78 +D8 +F8 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +C0 +C0 +F8 +D8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 7 0 0 +BITMAP +C0 +00 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 3 9 -1 -2 +BITMAP +60 +00 +60 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +C0 +C0 +D8 +F0 +E0 +F0 +D8 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 7 0 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 5 0 0 +BITMAP +FF +DB +DB +DB +DB +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +F8 +D8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 -2 +BITMAP +F0 +D8 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 -2 +BITMAP +78 +D8 +D8 +D8 +78 +18 +18 +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 5 0 0 +BITMAP +F0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 5 0 0 +BITMAP +F0 +C0 +60 +30 +F0 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +60 +F0 +60 +60 +60 +70 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +D8 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +D8 +D8 +70 +70 +70 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 5 0 0 +BITMAP +FC +FC +FC +F8 +78 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +D8 +70 +60 +70 +D8 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 -2 +BITMAP +D8 +D8 +70 +70 +70 +60 +E0 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 5 0 0 +BITMAP +F0 +30 +60 +C0 +F0 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 4 8 0 -1 +BITMAP +70 +60 +60 +C0 +60 +60 +60 +70 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 2 9 2 -2 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 4 8 0 -1 +BITMAP +E0 +60 +60 +60 +30 +60 +60 +E0 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 2 0 3 +BITMAP +E0 +38 +ENDCHAR +STARTCHAR char0 +ENCODING 127 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 128 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 129 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 130 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 131 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 132 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 133 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 134 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 135 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 136 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 137 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 138 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 139 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 140 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 141 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 142 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 143 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 144 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 145 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 146 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 147 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 148 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 149 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 150 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 151 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 152 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 153 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 154 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 155 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 156 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 157 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 158 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char0 +ENCODING 159 +SWIDTH 0 0 +DWIDTH 0 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 7 0 -2 +BITMAP +C0 +00 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +30 +78 +C0 +C0 +C0 +78 +30 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +60 +60 +F0 +60 +60 +F8 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 4 0 1 +BITMAP +F8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 7 0 0 +BITMAP +CC +78 +78 +78 +30 +78 +30 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 2 9 2 -2 +BITMAP +C0 +C0 +C0 +00 +00 +00 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +F0 +C0 +F0 +F0 +70 +30 +F0 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 1 1 6 +BITMAP +F0 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +7C +C6 +FE +F6 +FE +C6 +7C +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 3 0 4 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 3 0 1 +BITMAP +78 +F0 +78 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 2 0 2 +BITMAP +F8 +18 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 321 0 +DWIDTH 3 0 +BBX 3 1 0 2 +BITMAP +E0 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +7C +C6 +FE +FE +FE +C6 +7C +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 1 0 6 +BITMAP +FC +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 3 0 4 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +30 +30 +F8 +30 +00 +F8 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 4 0 3 +BITMAP +F0 +30 +60 +F0 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 4 0 3 +BITMAP +F0 +30 +30 +F0 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 3 2 2 6 +BITMAP +60 +C0 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 -2 +BITMAP +D8 +D8 +D8 +D8 +F8 +C0 +C0 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 8 0 -1 +BITMAP +7C +FC +FC +FC +3C +3C +3C +3C +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 1 0 3 +BITMAP +C0 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 2 3 1 -2 +BITMAP +C0 +C0 +C0 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 4 0 3 +BITMAP +E0 +60 +60 +60 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 3 0 4 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 3 0 1 +BITMAP +F0 +78 +F0 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +EC +78 +78 +7E +7E +7E +C6 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +EC +78 +78 +7E +66 +6C +DE +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 7 0 0 +BITMAP +F6 +3C +3C +FF +3F +3F +63 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 -2 +BITMAP +60 +00 +60 +60 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +60 +30 +00 +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +18 +30 +00 +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +30 +78 +00 +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +7C +7C +00 +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +78 +00 +30 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +78 +78 +78 +78 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 7 0 0 +BITMAP +3F +38 +78 +7F +78 +D8 +DF +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 -2 +BITMAP +78 +C0 +C0 +C0 +C0 +C0 +78 +18 +18 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 10 0 0 +BITMAP +60 +30 +00 +F8 +C0 +C0 +F8 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 10 0 0 +BITMAP +18 +30 +00 +F8 +C0 +C0 +F8 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 10 0 0 +BITMAP +30 +78 +00 +F8 +C0 +C0 +F8 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 0 +BITMAP +78 +00 +F8 +C0 +C0 +F8 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 3 10 0 0 +BITMAP +C0 +60 +00 +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 10 0 0 +BITMAP +30 +60 +00 +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 10 0 0 +BITMAP +60 +F0 +00 +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 9 0 0 +BITMAP +F0 +00 +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 7 7 -1 0 +BITMAP +7C +66 +66 +F6 +66 +6E +7C +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +7C +7C +00 +CC +EC +EC +FC +DC +DC +CC +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 10 0 0 +BITMAP +30 +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 10 0 0 +BITMAP +0C +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 10 0 0 +BITMAP +18 +3C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 10 0 0 +BITMAP +7C +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 9 0 0 +BITMAP +3C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 4 3 1 2 +BITMAP +F0 +60 +F0 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 750 0 +DWIDTH 7 0 +BBX 7 7 0 0 +BITMAP +7C +CE +DE +DE +F6 +E6 +7C +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +60 +30 +00 +CC +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +18 +30 +00 +CC +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +30 +78 +00 +CC +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +78 +00 +CC +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 642 0 +DWIDTH 6 0 +BBX 6 10 0 0 +BITMAP +18 +30 +00 +CC +D8 +78 +30 +30 +30 +30 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +C0 +F0 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +F8 +D8 +F0 +F0 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +60 +30 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +18 +30 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +30 +78 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +F8 +F8 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 0 +BITMAP +78 +78 +78 +00 +F8 +18 +F8 +D8 +F8 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 857 0 +DWIDTH 8 0 +BBX 8 5 0 0 +BITMAP +FE +1B +FF +D8 +FF +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 428 0 +DWIDTH 4 0 +BBX 4 7 0 -2 +BITMAP +70 +C0 +C0 +C0 +70 +30 +30 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +60 +30 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +18 +30 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +30 +78 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +00 +70 +D8 +F8 +C0 +78 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 3 8 -1 0 +BITMAP +C0 +60 +00 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 3 8 0 0 +BITMAP +60 +C0 +00 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 4 8 -1 0 +BITMAP +60 +F0 +00 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 214 0 +DWIDTH 2 0 +BBX 4 7 -1 0 +BITMAP +F0 +00 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +70 +18 +78 +D8 +D8 +70 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +F8 +F8 +00 +F8 +D8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +60 +30 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +18 +30 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +30 +78 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +F8 +F8 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +00 +70 +D8 +D8 +D8 +70 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 6 5 0 1 +BITMAP +30 +00 +FC +00 +30 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 5 0 0 +BITMAP +78 +F8 +F8 +F8 +F0 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +60 +30 +00 +D8 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +18 +30 +00 +D8 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 8 0 0 +BITMAP +30 +78 +00 +D8 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +78 +00 +D8 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 10 0 -2 +BITMAP +18 +30 +00 +D8 +D8 +70 +70 +70 +60 +E0 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 -2 +BITMAP +C0 +C0 +F0 +D8 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 535 0 +DWIDTH 5 0 +BBX 5 9 0 -2 +BITMAP +78 +00 +D8 +D8 +70 +70 +70 +60 +E0 +ENDCHAR +ENDFONT diff --git a/ui/fonts/DroidSansBold8x12.h b/ui/fonts/DroidSansBold8x12.h new file mode 100644 index 0000000..1586362 --- /dev/null +++ b/ui/fonts/DroidSansBold8x12.h @@ -0,0 +1,261 @@ +/* -FreeType-Droid_Sans-Bold-R-Normal--9-70-96-96-P-49-ISO10646-1 */ +#define FONT_WIDTH_Droid_SansBold_8x12 8 +#define FONT_HEIGHT_Droid_SansBold_8x12 12 +const uint8_t FONT_DATA_Droid_SansBold_8x12[256][13] = { +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x06,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x78,0x78,0xfe,0x6c,0xfe,0x3c,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x18,0x3c,0x1e,0x1e,0x1c,0x3c,0x3c,0x1e,0x0c,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xde,0x7e,0x7e,0xfe,0xf9,0xf9,0xed,0x01,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x3e,0x36,0x1e,0x0c,0xde,0x76,0x7c,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0c,0x06,0x06,0x06,0x06,0x06,0x06,0x0c,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x06,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x06,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x18,0x7e,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x18,0x3e,0x18,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x18,0x18,0x0c,0x0c,0x0c,0x06,0x06,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x36,0x36,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x1e,0x18,0x18,0x18,0x18,0x18,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1e,0x30,0x30,0x18,0x18,0x0c,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x30,0x30,0x1c,0x30,0x30,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x30,0x38,0x3c,0x36,0x7e,0x30,0x30,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x06,0x06,0x1e,0x30,0x30,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x3e,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x30,0x18,0x18,0x18,0x0c,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1c,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x1c,0x36,0x36,0x3e,0x30,0x30,0x1e,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x06,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x1c,0x06,0x1c,0x30,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3e,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x06,0x1c,0x30,0x1c,0x06,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x18,0x18,0x0c,0x0c,0x00,0x0c,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xf8,0x8c,0xf7,0xff,0xff,0xff,0x06,0x7c,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1e,0x36,0x36,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x06,0x06,0x06,0x3c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x3e,0x66,0x66,0x66,0x66,0x76,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x7c,0x06,0x06,0x76,0x66,0x66,0x7c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x66,0x66,0x7e,0x66,0x66,0x66,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x07,}, +{/*w*/5,0x00,0x00,0x00,0x66,0x36,0x1e,0x1e,0x1e,0x36,0x66,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x8e,0xcf,0xcf,0xff,0xff,0xff,0xb7,0x01,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x6e,0x6e,0x7e,0x76,0x76,0x66,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1e,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x60,0x60,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x36,0x1e,0x1e,0x36,0x36,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x1c,0x30,0x30,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x3f,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x66,0x66,0x3c,0x3c,0x3c,0x18,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xb6,0xbf,0xff,0xff,0xff,0xcd,0xcc,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x3c,0x3c,0x18,0x3c,0x3c,0x66,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x66,0x36,0x3c,0x18,0x18,0x18,0x18,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x30,0x18,0x0c,0x0c,0x06,0x3e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x06,0x06,0x06,0x06,0x06,0x06,0x0e,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x06,0x06,0x0c,0x0c,0x0c,0x18,0x18,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x18,0x3c,0x3c,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,}, +{/*w*/5,0x00,0x00,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x1e,0x36,0x36,0x36,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1c,0x06,0x06,0x06,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x30,0x30,0x3c,0x36,0x36,0x36,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1c,0x0c,0x1e,0x0c,0x0c,0x0c,0x0c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x1e,0x1e,0x0c,0x3c,0x36,0x3e,}, +{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x3e,0x36,0x36,0x36,0x36,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x07,}, +{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x36,0x1e,0x0e,0x1e,0x36,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0xfe,0xb7,0xb7,0xb7,0xb7,0x01,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x36,0x36,0x36,0x36,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x1e,0x36,0x36,0x36,0x1e,0x06,0x06,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3c,0x36,0x36,0x36,0x3c,0x30,0x30,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x06,0x0c,0x18,0x1e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x1e,0x0c,0x0c,0x0c,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x7e,0x7e,0x7e,0x3e,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x1c,0x0c,0x1c,0x36,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x0c,0x0e,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1e,0x18,0x0c,0x06,0x1e,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x1c,0x0c,0x0c,0x06,0x0c,0x0c,0x0c,0x1c,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,}, +{/*w*/3,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x18,0x0c,0x0c,0x0e,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x0e,0x38,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x06,0x06,0x06,0x06,}, +{/*w*/5,0x00,0x00,0x00,0x18,0x3c,0x06,0x06,0x06,0x3c,0x18,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x0c,0x0c,0x1e,0x0c,0x0c,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3e,0x36,0x36,0x3e,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x66,0x3c,0x3c,0x3c,0x18,0x3c,0x18,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x18,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x18,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x06,0x1e,0x1e,0x1c,0x18,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xfe,0xde,0xfe,0xc6,0x7c,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x1e,0x3c,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x30,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x7c,0xc6,0xfe,0xfe,0xfe,0xc6,0x7c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x18,0x3e,0x18,0x00,0x3e,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x18,0x0c,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x18,0x18,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x3e,0x06,0x06,}, +{/*w*/6,0x00,0x00,0x00,0x7c,0x7e,0x7e,0x7e,0x78,0x78,0x78,0x78,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x0c,0x0c,}, +{/*w*/4,0x00,0x00,0x00,0x0e,0x0c,0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x1e,0x1e,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x3c,0x1e,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x6e,0x3c,0x3c,0xfc,0xfc,0xfc,0xc6,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x6e,0x3c,0x3c,0xfc,0xcc,0x6c,0xf6,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xde,0x78,0x78,0xfe,0xf9,0xf9,0x8d,0x01,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x0c,0x06,0x06,0x1e,}, +{/*w*/6,0x0c,0x18,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/6,0x30,0x18,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/6,0x18,0x3c,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/6,0x7c,0x7c,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/6,0x00,0x3c,0x00,0x18,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/6,0x00,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x66,0x66,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0xf8,0x39,0x3c,0xfc,0x3d,0x36,0xf6,0x01,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x06,0x06,0x06,0x06,0x06,0x3c,0x30,0x30,}, +{/*w*/5,0x0c,0x18,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/5,0x30,0x18,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/5,0x18,0x3c,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x3c,0x00,0x3e,0x06,0x06,0x3e,0x06,0x06,0x3e,0x00,0x00,}, +{/*w*/4,0x06,0x0c,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,}, +{/*w*/4,0x18,0x0c,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,}, +{/*w*/4,0x0c,0x1e,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,}, +{/*w*/4,0x00,0x1e,0x00,0x0e,0x0c,0x0c,0x0c,0x0c,0x0c,0x0e,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x3e,0x66,0x66,0x6f,0x66,0x76,0x3e,0x00,0x00,}, +{/*w*/6,0x7c,0x7c,0x00,0x66,0x6e,0x6e,0x7e,0x76,0x76,0x66,0x00,0x00,}, +{/*w*/7,0x18,0x30,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/7,0x60,0x30,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/7,0x30,0x78,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/7,0x7c,0x7c,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/7,0x00,0x78,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3c,0x18,0x3c,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x7c,0xe6,0xf6,0xf6,0xde,0xce,0x7c,0x00,0x00,}, +{/*w*/6,0x0c,0x18,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,}, +{/*w*/6,0x30,0x18,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,}, +{/*w*/6,0x18,0x3c,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,}, +{/*w*/6,0x00,0x3c,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3c,0x00,0x00,}, +{/*w*/6,0x30,0x18,0x00,0x66,0x36,0x3c,0x18,0x18,0x18,0x18,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x06,0x1e,0x36,0x36,0x1e,0x06,0x06,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3e,0x36,0x1e,0x1e,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x3e,0x3e,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x3c,0x3c,0x3c,0x00,0x3e,0x30,0x3e,0x36,0x3e,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0xfe,0xb0,0xff,0x37,0xfe,0x01,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x1c,0x06,0x06,0x06,0x1c,0x18,0x18,}, +{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x1c,0x36,0x3e,0x06,0x3c,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x03,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x0c,0x06,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x06,0x0f,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x0f,0x00,0x06,0x06,0x06,0x06,0x06,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x1c,0x30,0x3c,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x3e,0x3e,0x00,0x3e,0x36,0x36,0x36,0x36,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x3e,0x3e,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x1c,0x36,0x36,0x36,0x1c,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x7e,0x00,0x18,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x3c,0x3e,0x3e,0x3e,0x1e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x0c,0x18,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x18,0x3c,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x36,0x36,0x36,0x36,0x3e,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x30,0x18,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x0c,0x0e,}, +{/*w*/5,0x00,0x00,0x00,0x06,0x06,0x1e,0x36,0x36,0x36,0x1e,0x06,0x06,}, +{/*w*/5,0x00,0x00,0x00,0x3c,0x00,0x36,0x36,0x1c,0x1c,0x1c,0x0c,0x0e,}, +}; diff --git a/ui/fonts/DroidSansBold9x11.bdf b/ui/fonts/DroidSansBold9x11.bdf new file mode 100644 index 0000000..e3675b0 --- /dev/null +++ b/ui/fonts/DroidSansBold9x11.bdf @@ -0,0 +1,2927 @@ +STARTFONT 2.1 +COMMENT Font converted from OTF to BDF. +FONT -FreeType-Droid Sans-Bold-R-Normal--8-60-96-96-P-44-ISO10646-1 +SIZE 6 96 96 +FONTBOUNDINGBOX 8 11 -1 -2 +STARTPROPERTIES 19 +POINT_SIZE 60 +PIXEL_SIZE 8 +RESOLUTION_X 96 +RESOLUTION_Y 96 +FONT_ASCENT 7 +FONT_DESCENT 1 +AVERAGE_WIDTH 44 +SPACING "P" +FOUNDRY "FreeType" +FAMILY_NAME "Droid Sans" +CHARSET_REGISTRY "ISO10646" +CHARSET_ENCODING "1" +WEIGHT_NAME "Bold" +SLANT "R" +SETWIDTH_NAME "Normal" +COPYRIGHT "Digitized data copyright © 2007, Google Corporation." +_TTF_PSNAME "DroidSans" +_OTF_FONTFILE "DroidSans.ttf" +_GBDFED_INFO "Edited with gbdfed 1.6." +ENDPROPERTIES +CHARS 256 +STARTCHAR char0 +ENCODING 0 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char1 +ENCODING 1 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char2 +ENCODING 2 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char3 +ENCODING 3 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char4 +ENCODING 4 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char5 +ENCODING 5 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char6 +ENCODING 6 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char7 +ENCODING 7 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char8 +ENCODING 8 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char9 +ENCODING 9 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char10 +ENCODING 10 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char11 +ENCODING 11 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char12 +ENCODING 12 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char13 +ENCODING 13 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char14 +ENCODING 14 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char15 +ENCODING 15 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char16 +ENCODING 16 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char17 +ENCODING 17 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char18 +ENCODING 18 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char19 +ENCODING 19 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char20 +ENCODING 20 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char21 +ENCODING 21 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char22 +ENCODING 22 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char23 +ENCODING 23 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char24 +ENCODING 24 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char25 +ENCODING 25 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char26 +ENCODING 26 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char27 +ENCODING 27 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char28 +ENCODING 28 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char29 +ENCODING 29 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char30 +ENCODING 30 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char31 +ENCODING 31 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char32 +ENCODING 32 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char33 +ENCODING 33 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 6 0 0 +BITMAP +C0 +C0 +C0 +C0 +00 +C0 +ENDCHAR +STARTCHAR char34 +ENCODING 34 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 2 1 4 +BITMAP +E0 +E0 +ENDCHAR +STARTCHAR char35 +ENCODING 35 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 6 6 0 0 +BITMAP +38 +38 +FC +FC +70 +70 +ENDCHAR +STARTCHAR char36 +ENCODING 36 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 8 0 -1 +BITMAP +60 +F0 +E0 +E0 +70 +70 +F0 +60 +ENDCHAR +STARTCHAR char37 +ENCODING 37 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 6 0 0 +BITMAP +EC +F8 +FE +FE +3E +6E +ENDCHAR +STARTCHAR char38 +ENCODING 38 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 7 6 0 0 +BITMAP +F8 +D8 +70 +F6 +DC +FC +ENDCHAR +STARTCHAR char39 +ENCODING 39 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 2 1 4 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char40 +ENCODING 40 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 0 -1 +BITMAP +60 +C0 +C0 +C0 +C0 +C0 +60 +ENDCHAR +STARTCHAR char41 +ENCODING 41 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 -1 -1 +BITMAP +C0 +60 +60 +60 +60 +60 +C0 +ENDCHAR +STARTCHAR char42 +ENCODING 42 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 2 +BITMAP +60 +F0 +60 +F0 +ENDCHAR +STARTCHAR char43 +ENCODING 43 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 1 1 +BITMAP +60 +60 +F0 +60 +ENDCHAR +STARTCHAR char44 +ENCODING 44 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 2 0 -1 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char45 +ENCODING 45 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 1 0 1 +BITMAP +E0 +ENDCHAR +STARTCHAR char46 +ENCODING 46 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 1 0 0 +BITMAP +C0 +ENDCHAR +STARTCHAR char47 +ENCODING 47 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 6 0 0 +BITMAP +30 +30 +60 +60 +C0 +C0 +ENDCHAR +STARTCHAR char48 +ENCODING 48 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +60 +F0 +F0 +F0 +F0 +60 +ENDCHAR +STARTCHAR char49 +ENCODING 49 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 3 6 0 0 +BITMAP +60 +E0 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char50 +ENCODING 50 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +30 +30 +60 +60 +F0 +ENDCHAR +STARTCHAR char51 +ENCODING 51 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +30 +60 +30 +30 +F0 +ENDCHAR +STARTCHAR char52 +ENCODING 52 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 6 0 0 +BITMAP +30 +70 +70 +F0 +F8 +30 +ENDCHAR +STARTCHAR char53 +ENCODING 53 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +C0 +F0 +30 +30 +E0 +ENDCHAR +STARTCHAR char54 +ENCODING 54 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +70 +C0 +F0 +F0 +F0 +70 +ENDCHAR +STARTCHAR char55 +ENCODING 55 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +30 +30 +60 +60 +60 +ENDCHAR +STARTCHAR char56 +ENCODING 56 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +F0 +F0 +60 +F0 +F0 +ENDCHAR +STARTCHAR char57 +ENCODING 57 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +E0 +F0 +F0 +F0 +30 +E0 +ENDCHAR +STARTCHAR char58 +ENCODING 58 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 4 0 0 +BITMAP +C0 +00 +00 +C0 +ENDCHAR +STARTCHAR char59 +ENCODING 59 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 5 0 -1 +BITMAP +C0 +00 +00 +C0 +C0 +ENDCHAR +STARTCHAR char60 +ENCODING 60 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 1 +BITMAP +30 +60 +E0 +30 +ENDCHAR +STARTCHAR char61 +ENCODING 61 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 3 0 1 +BITMAP +F0 +00 +F0 +ENDCHAR +STARTCHAR char62 +ENCODING 62 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 1 +BITMAP +C0 +60 +70 +C0 +ENDCHAR +STARTCHAR char63 +ENCODING 63 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +30 +30 +60 +00 +60 +ENDCHAR +STARTCHAR char64 +ENCODING 64 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 7 0 -1 +BITMAP +7C +C6 +FE +FE +FE +C0 +7C +ENDCHAR +STARTCHAR char65 +ENCODING 65 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char66 +ENCODING 66 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +D8 +F8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char67 +ENCODING 67 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +78 +C0 +C0 +C0 +C0 +78 +ENDCHAR +STARTCHAR char68 +ENCODING 68 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F0 +D8 +D8 +D8 +D8 +F0 +ENDCHAR +STARTCHAR char69 +ENCODING 69 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +C0 +F0 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char70 +ENCODING 70 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +C0 +F0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char71 +ENCODING 71 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +7C +C0 +C0 +DC +CC +7C +ENDCHAR +STARTCHAR char72 +ENCODING 72 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +CC +CC +FC +CC +CC +CC +ENDCHAR +STARTCHAR char73 +ENCODING 73 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 2 6 1 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char74 +ENCODING 74 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 8 -1 -2 +BITMAP +60 +60 +60 +60 +60 +60 +60 +C0 +ENDCHAR +STARTCHAR char75 +ENCODING 75 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +D8 +F0 +E0 +F0 +F0 +D8 +ENDCHAR +STARTCHAR char76 +ENCODING 76 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 6 0 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +F8 +ENDCHAR +STARTCHAR char77 +ENCODING 77 +SWIDTH 1000 0 +DWIDTH 8 0 +BBX 8 6 0 0 +BITMAP +C3 +E7 +E7 +FF +FF +DB +ENDCHAR +STARTCHAR char78 +ENCODING 78 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +CC +EC +FC +FC +DC +CC +ENDCHAR +STARTCHAR char79 +ENCODING 79 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char80 +ENCODING 80 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char81 +ENCODING 81 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 7 0 -1 +BITMAP +78 +CC +CC +CC +CC +78 +18 +ENDCHAR +STARTCHAR char82 +ENCODING 82 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +D8 +D8 +F0 +F0 +D8 +ENDCHAR +STARTCHAR char83 +ENCODING 83 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +C0 +E0 +30 +30 +F0 +ENDCHAR +STARTCHAR char84 +ENCODING 84 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char85 +ENCODING 85 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char86 +ENCODING 86 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +CC +CC +78 +78 +78 +30 +ENDCHAR +STARTCHAR char87 +ENCODING 87 +SWIDTH 1000 0 +DWIDTH 8 0 +BBX 8 6 0 0 +BITMAP +DB +FF +FF +FF +6E +66 +ENDCHAR +STARTCHAR char88 +ENCODING 88 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +D8 +70 +70 +70 +F0 +D8 +ENDCHAR +STARTCHAR char89 +ENCODING 89 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 6 6 -1 0 +BITMAP +CC +78 +78 +30 +30 +30 +ENDCHAR +STARTCHAR char90 +ENCODING 90 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +30 +30 +60 +60 +F8 +ENDCHAR +STARTCHAR char91 +ENCODING 91 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 1 -1 +BITMAP +E0 +C0 +C0 +C0 +C0 +C0 +E0 +ENDCHAR +STARTCHAR char92 +ENCODING 92 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 6 0 0 +BITMAP +C0 +C0 +60 +60 +30 +30 +ENDCHAR +STARTCHAR char93 +ENCODING 93 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 -1 -1 +BITMAP +E0 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char94 +ENCODING 94 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 4 0 2 +BITMAP +30 +70 +D8 +D8 +ENDCHAR +STARTCHAR char95 +ENCODING 95 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 1 0 -2 +BITMAP +F0 +ENDCHAR +STARTCHAR char96 +ENCODING 96 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 3 2 2 5 +BITMAP +C0 +60 +ENDCHAR +STARTCHAR char97 +ENCODING 97 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char98 +ENCODING 98 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +C0 +C0 +F0 +D8 +D8 +F0 +ENDCHAR +STARTCHAR char99 +ENCODING 99 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +70 +C0 +C0 +70 +ENDCHAR +STARTCHAR char100 +ENCODING 100 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +18 +18 +78 +D8 +D8 +78 +ENDCHAR +STARTCHAR char101 +ENCODING 101 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +F0 +C0 +F0 +ENDCHAR +STARTCHAR char102 +ENCODING 102 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 6 0 0 +BITMAP +E0 +C0 +E0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char103 +ENCODING 103 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 6 0 -2 +BITMAP +F8 +F0 +F0 +78 +D8 +F8 +ENDCHAR +STARTCHAR char104 +ENCODING 104 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +C0 +C0 +F8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char105 +ENCODING 105 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 6 0 0 +BITMAP +C0 +00 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char106 +ENCODING 106 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 8 -1 -2 +BITMAP +60 +00 +60 +60 +60 +60 +60 +E0 +ENDCHAR +STARTCHAR char107 +ENCODING 107 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +C0 +C0 +F0 +E0 +E0 +F0 +ENDCHAR +STARTCHAR char108 +ENCODING 108 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 6 0 0 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char109 +ENCODING 109 +SWIDTH 1000 0 +DWIDTH 8 0 +BBX 8 4 0 0 +BITMAP +FF +DB +DB +DB +ENDCHAR +STARTCHAR char110 +ENCODING 110 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 4 0 0 +BITMAP +F8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char111 +ENCODING 111 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 4 0 0 +BITMAP +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char112 +ENCODING 112 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 -2 +BITMAP +F0 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char113 +ENCODING 113 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 -2 +BITMAP +78 +D8 +D8 +78 +18 +18 +ENDCHAR +STARTCHAR char114 +ENCODING 114 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 4 0 0 +BITMAP +E0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char115 +ENCODING 115 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +E0 +30 +F0 +ENDCHAR +STARTCHAR char116 +ENCODING 116 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 5 0 0 +BITMAP +C0 +E0 +C0 +C0 +E0 +ENDCHAR +STARTCHAR char117 +ENCODING 117 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 4 0 0 +BITMAP +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char118 +ENCODING 118 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +F0 +F0 +60 +ENDCHAR +STARTCHAR char119 +ENCODING 119 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 4 0 0 +BITMAP +FC +FC +F8 +78 +ENDCHAR +STARTCHAR char120 +ENCODING 120 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +60 +60 +F0 +ENDCHAR +STARTCHAR char121 +ENCODING 121 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 -2 +BITMAP +F0 +F0 +F0 +60 +60 +C0 +ENDCHAR +STARTCHAR char122 +ENCODING 122 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 0 +BITMAP +F0 +60 +60 +F0 +ENDCHAR +STARTCHAR char123 +ENCODING 123 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 7 0 -1 +BITMAP +60 +60 +60 +C0 +60 +60 +60 +ENDCHAR +STARTCHAR char124 +ENCODING 124 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 2 8 1 -2 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char125 +ENCODING 125 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 7 1 -1 +BITMAP +C0 +C0 +C0 +60 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char126 +ENCODING 126 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 2 0 1 +BITMAP +C0 +70 +ENDCHAR +STARTCHAR char127 +ENCODING 127 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char128 +ENCODING 128 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char129 +ENCODING 129 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char130 +ENCODING 130 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char131 +ENCODING 131 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char132 +ENCODING 132 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char133 +ENCODING 133 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char134 +ENCODING 134 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char135 +ENCODING 135 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char136 +ENCODING 136 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char137 +ENCODING 137 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char138 +ENCODING 138 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char139 +ENCODING 139 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char140 +ENCODING 140 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char141 +ENCODING 141 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char142 +ENCODING 142 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char143 +ENCODING 143 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char144 +ENCODING 144 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char145 +ENCODING 145 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char146 +ENCODING 146 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char147 +ENCODING 147 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char148 +ENCODING 148 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char149 +ENCODING 149 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char150 +ENCODING 150 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char151 +ENCODING 151 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char152 +ENCODING 152 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char153 +ENCODING 153 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char154 +ENCODING 154 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char155 +ENCODING 155 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char156 +ENCODING 156 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char157 +ENCODING 157 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char158 +ENCODING 158 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char159 +ENCODING 159 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char160 +ENCODING 160 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 0 0 0 0 +BITMAP +ENDCHAR +STARTCHAR char161 +ENCODING 161 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 6 0 -2 +BITMAP +C0 +00 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char162 +ENCODING 162 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 3 6 1 0 +BITMAP +60 +E0 +C0 +C0 +E0 +60 +ENDCHAR +STARTCHAR char163 +ENCODING 163 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +70 +60 +60 +F0 +60 +F0 +ENDCHAR +STARTCHAR char164 +ENCODING 164 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 3 0 1 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char165 +ENCODING 165 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 6 6 -1 0 +BITMAP +CC +78 +70 +78 +78 +30 +ENDCHAR +STARTCHAR char166 +ENCODING 166 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 2 8 1 -2 +BITMAP +C0 +C0 +C0 +00 +00 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char167 +ENCODING 167 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +E0 +F0 +F0 +30 +F0 +ENDCHAR +STARTCHAR char168 +ENCODING 168 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 4 1 1 5 +BITMAP +F0 +ENDCHAR +STARTCHAR char169 +ENCODING 169 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 6 0 0 +BITMAP +7C +FE +F6 +FE +C6 +7C +ENDCHAR +STARTCHAR char170 +ENCODING 170 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 3 0 3 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char171 +ENCODING 171 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 4 0 0 +BITMAP +78 +F0 +F0 +78 +ENDCHAR +STARTCHAR char172 +ENCODING 172 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 2 0 1 +BITMAP +F0 +30 +ENDCHAR +STARTCHAR char173 +ENCODING 173 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 3 1 0 1 +BITMAP +E0 +ENDCHAR +STARTCHAR char174 +ENCODING 174 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 6 0 0 +BITMAP +7C +FE +FE +FE +C6 +7C +ENDCHAR +STARTCHAR char175 +ENCODING 175 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 1 0 6 +BITMAP +F8 +ENDCHAR +STARTCHAR char176 +ENCODING 176 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 3 0 3 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char177 +ENCODING 177 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 5 1 0 +BITMAP +60 +60 +F0 +60 +F0 +ENDCHAR +STARTCHAR char178 +ENCODING 178 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 2 +BITMAP +F0 +30 +60 +E0 +ENDCHAR +STARTCHAR char179 +ENCODING 179 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 4 0 2 +BITMAP +F0 +30 +30 +F0 +ENDCHAR +STARTCHAR char180 +ENCODING 180 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 3 2 2 5 +BITMAP +60 +C0 +ENDCHAR +STARTCHAR char181 +ENCODING 181 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 -2 +BITMAP +D8 +D8 +D8 +F8 +C0 +C0 +ENDCHAR +STARTCHAR char182 +ENCODING 182 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 -1 +BITMAP +F8 +F8 +F8 +F8 +38 +38 +ENDCHAR +STARTCHAR char183 +ENCODING 183 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 1 0 2 +BITMAP +C0 +ENDCHAR +STARTCHAR char184 +ENCODING 184 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 2 2 1 -2 +BITMAP +C0 +C0 +ENDCHAR +STARTCHAR char185 +ENCODING 185 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 3 4 0 2 +BITMAP +E0 +60 +60 +60 +ENDCHAR +STARTCHAR char186 +ENCODING 186 +SWIDTH 375 0 +DWIDTH 3 0 +BBX 4 3 0 3 +BITMAP +F0 +F0 +F0 +ENDCHAR +STARTCHAR char187 +ENCODING 187 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 5 4 0 0 +BITMAP +F0 +78 +78 +F0 +ENDCHAR +STARTCHAR char188 +ENCODING 188 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 7 6 0 0 +BITMAP +F8 +78 +7E +7E +6E +66 +ENDCHAR +STARTCHAR char189 +ENCODING 189 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 7 6 0 0 +BITMAP +F8 +78 +7E +76 +6C +7C +ENDCHAR +STARTCHAR char190 +ENCODING 190 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 7 6 0 0 +BITMAP +FC +3C +3E +FE +3E +36 +ENDCHAR +STARTCHAR char191 +ENCODING 191 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 -2 +BITMAP +60 +00 +60 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char192 +ENCODING 192 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +60 +30 +00 +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char193 +ENCODING 193 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +18 +30 +00 +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char194 +ENCODING 194 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +30 +78 +00 +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char195 +ENCODING 195 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +70 +18 +00 +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char196 +ENCODING 196 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +78 +00 +30 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char197 +ENCODING 197 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 7 0 0 +BITMAP +38 +38 +78 +78 +78 +CC +CC +ENDCHAR +STARTCHAR char198 +ENCODING 198 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 6 0 0 +BITMAP +3E +38 +7E +78 +F8 +DE +ENDCHAR +STARTCHAR char199 +ENCODING 199 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 8 0 -2 +BITMAP +78 +C0 +C0 +C0 +C0 +78 +18 +18 +ENDCHAR +STARTCHAR char200 +ENCODING 200 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 9 0 0 +BITMAP +60 +30 +00 +F0 +C0 +F0 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char201 +ENCODING 201 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 9 0 0 +BITMAP +30 +60 +00 +F0 +C0 +F0 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char202 +ENCODING 202 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 9 0 0 +BITMAP +60 +F0 +00 +F0 +C0 +F0 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char203 +ENCODING 203 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 8 0 0 +BITMAP +F0 +00 +F0 +C0 +F0 +C0 +C0 +F0 +ENDCHAR +STARTCHAR char204 +ENCODING 204 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 3 9 0 0 +BITMAP +C0 +60 +00 +60 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char205 +ENCODING 205 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 3 9 1 0 +BITMAP +60 +C0 +00 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char206 +ENCODING 206 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 9 0 0 +BITMAP +60 +F0 +00 +60 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char207 +ENCODING 207 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 8 0 0 +BITMAP +F0 +00 +60 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char208 +ENCODING 208 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 6 6 -1 0 +BITMAP +78 +6C +FC +6C +6C +78 +ENDCHAR +STARTCHAR char209 +ENCODING 209 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +70 +18 +00 +CC +EC +FC +FC +DC +CC +ENDCHAR +STARTCHAR char210 +ENCODING 210 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +60 +30 +00 +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char211 +ENCODING 211 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +18 +30 +00 +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char212 +ENCODING 212 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +30 +78 +00 +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char213 +ENCODING 213 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +70 +18 +00 +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char214 +ENCODING 214 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +78 +00 +78 +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char215 +ENCODING 215 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 3 1 1 +BITMAP +F0 +60 +F0 +ENDCHAR +STARTCHAR char216 +ENCODING 216 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 6 0 0 +BITMAP +78 +DC +FC +FC +EC +78 +ENDCHAR +STARTCHAR char217 +ENCODING 217 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +60 +30 +00 +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char218 +ENCODING 218 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +18 +30 +00 +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char219 +ENCODING 219 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 9 0 0 +BITMAP +30 +78 +00 +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char220 +ENCODING 220 +SWIDTH 750 0 +DWIDTH 6 0 +BBX 6 8 0 0 +BITMAP +78 +00 +CC +CC +CC +CC +CC +78 +ENDCHAR +STARTCHAR char221 +ENCODING 221 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 6 9 -1 0 +BITMAP +18 +30 +00 +CC +78 +78 +30 +30 +30 +ENDCHAR +STARTCHAR char222 +ENCODING 222 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +C0 +F0 +D8 +D8 +F0 +C0 +ENDCHAR +STARTCHAR char223 +ENCODING 223 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +F8 +D8 +F0 +F0 +D8 +F8 +ENDCHAR +STARTCHAR char224 +ENCODING 224 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +60 +30 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char225 +ENCODING 225 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +30 +60 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char226 +ENCODING 226 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +60 +F0 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char227 +ENCODING 227 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +E0 +30 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char228 +ENCODING 228 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char229 +ENCODING 229 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +70 +70 +00 +F0 +30 +F0 +F0 +ENDCHAR +STARTCHAR char230 +ENCODING 230 +SWIDTH 875 0 +DWIDTH 7 0 +BBX 7 4 0 0 +BITMAP +FE +1E +F8 +FE +ENDCHAR +STARTCHAR char231 +ENCODING 231 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 -2 +BITMAP +70 +C0 +C0 +70 +30 +30 +ENDCHAR +STARTCHAR char232 +ENCODING 232 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +60 +30 +00 +F0 +F0 +C0 +F0 +ENDCHAR +STARTCHAR char233 +ENCODING 233 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +30 +60 +00 +F0 +F0 +C0 +F0 +ENDCHAR +STARTCHAR char234 +ENCODING 234 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 7 0 0 +BITMAP +60 +F0 +00 +F0 +F0 +C0 +F0 +ENDCHAR +STARTCHAR char235 +ENCODING 235 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 6 0 0 +BITMAP +F0 +00 +F0 +F0 +C0 +F0 +ENDCHAR +STARTCHAR char236 +ENCODING 236 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 -1 0 +BITMAP +C0 +60 +00 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char237 +ENCODING 237 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 3 7 0 0 +BITMAP +60 +C0 +00 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR char238 +ENCODING 238 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 4 7 -1 0 +BITMAP +60 +F0 +00 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char239 +ENCODING 239 +SWIDTH 250 0 +DWIDTH 2 0 +BBX 4 6 -1 0 +BITMAP +F0 +00 +60 +60 +60 +60 +ENDCHAR +STARTCHAR char240 +ENCODING 240 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +78 +70 +78 +D8 +D8 +70 +ENDCHAR +STARTCHAR char241 +ENCODING 241 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +70 +18 +00 +F8 +D8 +D8 +D8 +ENDCHAR +STARTCHAR char242 +ENCODING 242 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +60 +30 +00 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char243 +ENCODING 243 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +18 +30 +00 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char244 +ENCODING 244 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +30 +78 +00 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char245 +ENCODING 245 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +70 +18 +00 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char246 +ENCODING 246 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +78 +00 +70 +D8 +D8 +70 +ENDCHAR +STARTCHAR char247 +ENCODING 247 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 5 1 0 +BITMAP +60 +00 +F0 +00 +60 +ENDCHAR +STARTCHAR char248 +ENCODING 248 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 4 0 0 +BITMAP +70 +F8 +F8 +70 +ENDCHAR +STARTCHAR char249 +ENCODING 249 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +60 +30 +00 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char250 +ENCODING 250 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +18 +30 +00 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char251 +ENCODING 251 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 7 0 0 +BITMAP +30 +78 +00 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char252 +ENCODING 252 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 6 0 0 +BITMAP +78 +00 +D8 +D8 +D8 +F8 +ENDCHAR +STARTCHAR char253 +ENCODING 253 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 9 0 -2 +BITMAP +30 +60 +00 +F0 +F0 +F0 +60 +60 +C0 +ENDCHAR +STARTCHAR char254 +ENCODING 254 +SWIDTH 625 0 +DWIDTH 5 0 +BBX 5 8 0 -2 +BITMAP +C0 +C0 +F0 +D8 +D8 +F0 +C0 +C0 +ENDCHAR +STARTCHAR char255 +ENCODING 255 +SWIDTH 500 0 +DWIDTH 4 0 +BBX 4 8 0 -2 +BITMAP +F0 +00 +F0 +F0 +F0 +60 +60 +C0 +ENDCHAR +ENDFONT diff --git a/ui/fonts/DroidSansBold9x11.h b/ui/fonts/DroidSansBold9x11.h new file mode 100644 index 0000000..056eb22 --- /dev/null +++ b/ui/fonts/DroidSansBold9x11.h @@ -0,0 +1,261 @@ +/* -FreeType-Droid Sans-Bold-R-Normal--8-60-96-96-P-44-ISO10646-1 */ +#define FONT_WIDTH_Droid SansBold_9x11 9 +#define FONT_HEIGHT_Droid SansBold_9x11 11 +const uint8_t FONT_DATA_Droid SansBold_9x11[256][23] = { +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x7e,0x00,0x7e,0x00,0x1c,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x1c,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x00,0x3e,0x00,0xfe,0x00,0xfe,0x00,0xf8,0x00,0xec,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x1c,0x00,0xde,0x00,0x76,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x3c,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x0c,0x00,0x18,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x1c,0x00,0x1e,0x00,0x3e,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x06,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x18,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x0e,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0c,0x00,0x1c,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0xc6,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0x06,0x00,0x7c,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x06,0x00,0x06,0x00,0x76,0x00,0x66,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x7e,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x03,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x1e,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x01,0xce,0x01,0xce,0x01,0xfe,0x01,0xfe,0x01,0xb6,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x6e,0x00,0x7e,0x00,0x7e,0x00,0x76,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x30,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x1e,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x0e,0x00,0x18,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0xb6,0x01,0xfe,0x01,0xfe,0x01,0xfe,0x01,0xec,0x00,0xcc,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x1c,0x00,0x1c,0x00,0x1c,0x00,0x1e,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x18,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x1c,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x0c,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x06,0x00,0x06,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x3c,0x00,0x36,0x00,0x36,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x06,0x00,0x0e,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x1e,0x00,0x1e,0x00,0x3c,0x00,0x36,0x00,0x3e,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x0e,0x00,0x0e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0xb6,0x01,0xb6,0x01,0xb6,0x01,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x36,0x00,0x36,0x00,0x3c,0x00,0x30,0x00,0x30,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0e,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x7e,0x00,0x3e,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x18,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0c,0x00,0x0c,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x0c,0x00,0x0c,0x00,0x1e,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x1e,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x0e,0x00,0x1e,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0xfe,0x00,0xde,0x00,0xfe,0x00,0xc6,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x1e,0x00,0x1e,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xc6,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x3c,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x0c,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x18,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x06,0x00,0x06,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3e,0x00,0x3e,0x00,0x3e,0x00,0x38,0x00,0x38,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/3,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x3c,0x00,0x3c,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3c,0x00,0xfc,0x00,0xfc,0x00,0xec,0x00,0xcc,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x3c,0x00,0xfc,0x00,0xdc,0x00,0x6c,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x78,0x00,0xf8,0x00,0xfe,0x00,0xf8,0x00,0xd8,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,}, +{/*w*/6,0x0c,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x30,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x18,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x1c,0x00,0x30,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x3c,0x00,0x3c,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x38,0x00,0xfc,0x00,0x3c,0x00,0x3e,0x00,0xf6,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x3c,0x00,0x30,0x00,0x30,0x00,}, +{/*w*/4,0x0c,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x0c,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x06,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x18,0x00,0x0c,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x0c,0x00,0x1e,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x1e,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x36,0x00,0x3f,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x1c,0x00,0x30,0x00,0x00,0x00,0x66,0x00,0x6e,0x00,0x7e,0x00,0x7e,0x00,0x76,0x00,0x66,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x0c,0x00,0x18,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x30,0x00,0x18,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x18,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x1c,0x00,0x30,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x76,0x00,0x7e,0x00,0x7e,0x00,0x6e,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x0c,0x00,0x18,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x30,0x00,0x18,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x18,0x00,0x3c,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/6,0x00,0x00,0x3c,0x00,0x00,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x18,0x00,0x0c,0x00,0x00,0x00,0x33,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x1e,0x00,0x1e,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0e,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x1c,0x00,0x1c,0x00,0x00,0x00,0x1e,0x00,0x18,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0xf0,0x00,0x3e,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x06,0x00,0x06,0x00,0x1c,0x00,0x18,0x00,0x18,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x06,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x0c,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x06,0x00,0x0f,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/2,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x1c,0x00,0x3c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x1c,0x00,0x30,0x00,0x00,0x00,0x3e,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x1c,0x00,0x30,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x1c,0x00,0x36,0x00,0x36,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x3e,0x00,0x3e,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x36,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,}, +{/*w*/5,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x1e,0x00,0x36,0x00,0x36,0x00,0x1e,0x00,0x06,0x00,0x06,0x00,}, +{/*w*/4,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x1e,0x00,0x0c,0x00,0x0c,0x00,0x06,0x00,}, +}; diff --git a/ui/oswald-ui.c b/ui/oswald-ui.c index 5cb5437..9d7e575 100644 --- a/ui/oswald-ui.c +++ b/ui/oswald-ui.c @@ -491,6 +491,11 @@ boolean hal_vibration_get_state(void) return VibrationState; } +uint16_t hal_amblight_get_val(void) +{ + return 42; +} + int main(int argc , char ** argv) { diff --git a/ui/oswald.h b/ui/oswald.h index 8d16b2e..dd61eed 100644 --- a/ui/oswald.h +++ b/ui/oswald.h @@ -53,12 +53,15 @@ typedef struct { typedef enum { IDLE_SCREEN = 0, + MAIN_MENU_SCREEN, ALARM_SETUP_SCREEN, STOP_WATCH_SCREEN, BLUETOOTH_SCREEN, ACCEL_DISPLAY_SCREEN, + MESSAGES_SCREEN, INFO_SCREEN, LAST_SCREEN, // a marker for the last (not valid) screen) + MESSAGE_SCREEN, MENU_TEST_SCREEN, APPLICATION_SCREEN, DATETIME_SETTING_SCREEN, diff --git a/ui/oswald_fonts.c b/ui/oswald_fonts.c index 12a2a6b..7f8419c 100644 --- a/ui/oswald_fonts.c +++ b/ui/oswald_fonts.c @@ -28,7 +28,7 @@ __attribute__((__far__)) #if defined(__GNUC__) && (__MSP430X__ > 0) __attribute__((__far__)) #endif -#include "fonts/DroidSans-Bold11x14.h" +#include "fonts/DroidSansBold8x12.h" const oswald_font oswald_fonts[LAST_FONT] = { { @@ -58,8 +58,8 @@ const oswald_font oswald_fonts[LAST_FONT] = { (uint8_t *)FONT_DATA_Droid_SansMedium_8x12 }, { FONT_TYPE_PROPORTIONAL, - FONT_WIDTH_Droid_SansBold_11x14, - FONT_HEIGHT_Droid_SansBold_11x14, - (uint8_t *)FONT_DATA_Droid_SansBold_11x14 + FONT_WIDTH_Droid_SansBold_8x12, + FONT_HEIGHT_Droid_SansBold_8x12, + (uint8_t *)FONT_DATA_Droid_SansBold_8x12 }, }; diff --git a/ui/oswald_fonts.h b/ui/oswald_fonts.h index 0ca914d..0a15a5e 100644 --- a/ui/oswald_fonts.h +++ b/ui/oswald_fonts.h @@ -14,7 +14,7 @@ typedef enum { FONT_5x7, FONT_6x9, FONT_DROID8x12, - FONT_DROID11x14b, + FONT_DROID8x12b, LAST_FONT } oswald_font_face; diff --git a/ui/oswald_graphics.c b/ui/oswald_graphics.c index e64476d..651d8e8 100644 --- a/ui/oswald_graphics.c +++ b/ui/oswald_graphics.c @@ -6,12 +6,19 @@ #include "oswald_graphics.h" -void oswald_draw_pixel(const unsigned int xstart, const unsigned int ystart) +#if 0 +void oswald_draw_pixel(const unsigned int xstart, const unsigned int ystart, uint8_t color) { hal_lcd_set_pixel(xstart, ystart, TRUE); } +#endif -void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystart, const unsigned int xoff, const unsigned int yoff, const unsigned int width, const unsigned int height, const unsigned int bmp_width, const unsigned int bmp_height, const void *bmp) +void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystart, + const unsigned int xoff, const unsigned int yoff, + const unsigned int width, const unsigned int height, + const boolean invert, + const unsigned int bmp_width, const unsigned int bmp_height, + const void *bmp) { unsigned int x, y; uint8_t *cb; @@ -28,55 +35,19 @@ void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystar cb = (uint8_t *)(bmp + (y * ((bmp_width / 8) + ((bmp_width % 8) ? 1 : 0))) + (x / 8)); // g_printerr("dat %02x %02x %02x\n", (uint8_t)cb[0], (uint8_t)cb[1], (uint8_t)cb[2]); if (*cb & (1 << (x % 8))) { - hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE); + if (!invert) + hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE); // g_printerr("X"); - } /*else { - g_printerr("."); - }*/ + } else { + if (invert) + hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE); + // g_printerr("."); + } } //g_printerr("\n"); } } -#if 0 -/*inline*/ void oswald_draw_bitmap(const unsigned int xstart, const unsigned int ystart, const unsigned int width, const unsigned int height, const void *bmp) -{ - unsigned int x, y; - uint8_t *cb; - - // we only draw set pixel, unset pixel remain as they are - for (y=0; y 0 ? (8-(oswald_fonts[face].width % 8)) : 0, 0, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8, oswald_fonts[face].height, cdata); return cwidth; -#endif } -void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, char *str) +void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, char *str) { uint8_t lx, i, strl; @@ -258,12 +206,29 @@ void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_fac lx = x; for (i=0; i len) + break; + } + + return (i+1); +} + +void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const int16_t number) { uint8_t lx, i, strl; char str[8]; @@ -275,8 +240,7 @@ void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_fac lx = x; for (i=0; ievent_func(EVENT_SCREEN_DESTROY, NULL); +#if 0 // next screen OswaldState.screen_id++; if (OswaldState.screen_id >= LAST_SCREEN) { OswaldState.screen_id = IDLE_SCREEN; }; +#else + OswaldState.screen_id = IDLE_SCREEN; +#endif OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); break; @@ -170,6 +174,9 @@ void oswald_handle_comm_input(uint16_t mlen, const void *mdat) snprintf(rtime, 16, "#RTC%02d%02d%02d\n", OswaldClk.hour, OswaldClk.minute, OswaldClk.second); hal_bluetooth_send_data(rtime, strlen(rtime)); } else if (strncmp(icmd, "$SRT", 4) == 0) { // set current RTC + char rtime[16]; + snprintf(rtime, 16, "#USP\n"); + hal_bluetooth_send_data(rtime, strlen(rtime)); } else if (strncmp(icmd, "$MSG", 4) == 0) { // message on main screen char *msg = (icmd+4); mlen -= 4; @@ -181,6 +188,10 @@ void oswald_handle_comm_input(uint16_t mlen, const void *mdat) char rtime[16]; snprintf(rtime, 16, "#BAT%d,%d\n", OswaldPowerState.charge_state, OswaldPowerState.percent); hal_bluetooth_send_data(rtime, strlen(rtime)); + } else if (strncmp(icmd, "$GAL", 4) == 0) { // get ambient light value + char rtime[16]; + snprintf(rtime, 16, "#GAL%d\n", hal_amblight_get_val()); + hal_bluetooth_send_data(rtime, strlen(rtime)); } } } @@ -190,30 +201,39 @@ void oswald_init(void) OswaldScreens[IDLE_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER; OswaldScreens[IDLE_SCREEN].event_func = idle_handle_events; - OswaldScreens[ACCEL_DISPLAY_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ACCEL_UPDATE; - OswaldScreens[ACCEL_DISPLAY_SCREEN].event_func = accel_handle_events; - - OswaldScreens[DATETIME_SETTING_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER; - OswaldScreens[DATETIME_SETTING_SCREEN].event_func = datetime_setup_events; + OswaldScreens[MAIN_MENU_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER; + OswaldScreens[MAIN_MENU_SCREEN].event_func = main_menu_handle_events; OswaldScreens[ALARM_SETUP_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER; OswaldScreens[ALARM_SETUP_SCREEN].event_func = alarm_setup_events; - OswaldScreens[MENU_TEST_SCREEN].event_mask = EVENT_USER_BUTTONS; - OswaldScreens[MENU_TEST_SCREEN].event_func = test_menu_handle_events; - OswaldScreens[STOP_WATCH_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_CS_TIMER; OswaldScreens[STOP_WATCH_SCREEN].event_func = stop_watch_handle_events; OswaldScreens[BLUETOOTH_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER; OswaldScreens[BLUETOOTH_SCREEN].event_func = bluetooth_screen_events; - OswaldScreens[ALARM_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER; - OswaldScreens[ALARM_SCREEN].event_func = alarm_handle_events; + OswaldScreens[ACCEL_DISPLAY_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ACCEL_UPDATE; + OswaldScreens[ACCEL_DISPLAY_SCREEN].event_func = accel_handle_events; + + OswaldScreens[MESSAGES_SCREEN].event_mask = EVENT_USER_BUTTONS; + OswaldScreens[MESSAGES_SCREEN].event_func = messages_screen_handle_events; + + OswaldScreens[MESSAGE_SCREEN].event_mask = EVENT_USER_BUTTONS; + OswaldScreens[MESSAGE_SCREEN].event_func = message_screen_handle_events; OswaldScreens[INFO_SCREEN].event_mask = 0x00; // this one does not consume any events OswaldScreens[INFO_SCREEN].event_func = info_screen_handle_events; + OswaldScreens[DATETIME_SETTING_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER; + OswaldScreens[DATETIME_SETTING_SCREEN].event_func = datetime_setup_events; + + OswaldScreens[MENU_TEST_SCREEN].event_mask = EVENT_USER_BUTTONS; + OswaldScreens[MENU_TEST_SCREEN].event_func = test_menu_handle_events; + + OswaldScreens[ALARM_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER; + OswaldScreens[ALARM_SCREEN].event_func = alarm_handle_events; + OswaldState.screen_id = IDLE_SCREEN; OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; @@ -224,6 +244,5 @@ void oswald_init(void) OswaldAlarm.minute = 0; OswaldAlarm.wday = 0x00; - // strcpy(MainMessage, "So koennte dann eine Nachricht aussehen. Samt Text mit Unterlaengen. Und dies ist dann die letzte Zeile und mehr Text als paßt."); } diff --git a/ui/oswald_screens.c b/ui/oswald_screens.c index 5a29d39..ab71408 100644 --- a/ui/oswald_screens.c +++ b/ui/oswald_screens.c @@ -11,37 +11,67 @@ #if defined(__GNUC__) && (__MSP430X__ > 0) __attribute__((__far__)) #endif -#include "bitmaps/timesetup_icon.xbm" +#include "bitmaps/startstopbutton_icon.xbm" #if defined(__GNUC__) && (__MSP430X__ > 0) __attribute__((__far__)) #endif -#include "bitmaps/stopwatch_icon.xbm" +#include "bitmaps/lapsebutton_icon.xbm" #if defined(__GNUC__) && (__MSP430X__ > 0) __attribute__((__far__)) #endif -#include "bitmaps/alarm_icon.xbm" +#include "bitmaps/upbutton_icon.xbm" #if defined(__GNUC__) && (__MSP430X__ > 0) __attribute__((__far__)) #endif -#include "bitmaps/startstopbutton_icon.xbm" +#include "bitmaps/downbutton_icon.xbm" #if defined(__GNUC__) && (__MSP430X__ > 0) __attribute__((__far__)) #endif -#include "bitmaps/lapsebutton_icon.xbm" +#include "bitmaps/leftbutton_icon.xbm" #if defined(__GNUC__) && (__MSP430X__ > 0) __attribute__((__far__)) #endif -#include "bitmaps/upbutton_icon.xbm" +#include "bitmaps/rightbutton_icon.xbm" #if defined(__GNUC__) && (__MSP430X__ > 0) __attribute__((__far__)) #endif -#include "bitmaps/downbutton_icon.xbm" +#include "bitmaps/enterbutton_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/checked_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/unchecked_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/main_menu_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/timesetup_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/stopwatch_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/alarm_icon.xbm" #if defined(__GNUC__) && (__MSP430X__ > 0) __attribute__((__far__)) @@ -58,6 +88,15 @@ __attribute__((__far__)) #endif #include "bitmaps/acc_icon.xbm" +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/Message_icon.xbm" + +#if defined(__GNUC__) && (__MSP430X__ > 0) +__attribute__((__far__)) +#endif +#include "bitmaps/Exit_icon.xbm" /* @@ -93,7 +132,10 @@ event_ret_t idle_handle_user_buttons(watch_button button) }; break; case BUTTON_C: - return EVENT_RET_UNHANDLED; + OswaldState.screen_id = MAIN_MENU_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + return EVENT_RET_HANDLED; break; case BUTTON_F: OswaldState.screen_id = DATETIME_SETTING_SCREEN; @@ -131,6 +173,141 @@ event_ret_t idle_handle_events(uint16_t event, void *data) } +/* + * Main Menu Screen + */ +typedef struct { + int8_t pos; + uint8_t tmo; +} main_menu_data_t; +static main_menu_data_t main_menu_screen = { + ALARM_SETUP_SCREEN, + 0, +}; + +#define MAIN_MENU_GRID_PIXEL 84 +#define MAIN_MENU_GRID_X 3 +// GRID_Y is +1 since there is one empty row for title icon +#define MAIN_MENU_GRID_Y 3 +#define MAIN_MENU_GRID_SPACING 0 +#define MAIN_MENU_OFFSET_X 3 +#define MAIN_MENU_OFFSET_Y 10 + +void draw_main_menu_screen(main_menu_data_t *sdata) +{ + uint8_t pf = sdata->pos - 2; + + hal_lcd_clear_display(); + +// oswald_draw_bitmap(36, 0, main_menu_icon_width, main_menu_icon_height, main_menu_icon_bits); + + oswald_draw_bitmap(81, 6, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits); + oswald_draw_bitmap(81, 38, leftbutton_icon_width, leftbutton_icon_height, leftbutton_icon_bits); + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((0+1) * MAIN_MENU_GRID_SPACING) + (0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + alarm_icon_width, alarm_icon_height, alarm_icon_bits, (sdata->pos == ALARM_SETUP_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((1+1) * MAIN_MENU_GRID_SPACING) + (1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + stopwatch_icon_width, stopwatch_icon_height, stopwatch_icon_bits, (sdata->pos == STOP_WATCH_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((2+1) * MAIN_MENU_GRID_SPACING) + (2 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + Bluetooth_icon_width, Bluetooth_icon_height, Bluetooth_icon_bits, (sdata->pos == BLUETOOTH_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((0+1) * MAIN_MENU_GRID_SPACING) + (0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + acc_icon_width, acc_icon_height, acc_icon_bits, (sdata->pos == ACCEL_DISPLAY_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((1+1) * MAIN_MENU_GRID_SPACING) + (1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + Message_icon_width, Message_icon_height, Message_icon_bits, (sdata->pos == MESSAGES_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((2+1) * MAIN_MENU_GRID_SPACING) + (2 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(1 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + info_icon_width, info_icon_height, info_icon_bits, (sdata->pos == INFO_SCREEN)); + oswald_draw_bitmpa_invert_opt(MAIN_MENU_OFFSET_X+((0+1) * MAIN_MENU_GRID_SPACING) + (0 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+(2 * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), + Exit_icon_width, Exit_icon_height, Exit_icon_bits, (sdata->pos == LAST_SCREEN)); + + // round the corners of the inverted icon a little + hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE); + hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+23+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE); + hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+23+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE); + hal_lcd_set_pixel(MAIN_MENU_OFFSET_X+23+((pf%MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)) % (MAIN_MENU_GRID_X*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_X)), + MAIN_MENU_OFFSET_Y+23+((pf/MAIN_MENU_GRID_X) * (MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)) % (MAIN_MENU_GRID_Y*(MAIN_MENU_GRID_PIXEL / MAIN_MENU_GRID_Y)), FALSE); + + hal_lcd_update_display(); +} + +event_ret_t handle_main_menu_buttons(watch_button button, main_menu_data_t *sdata) +{ + switch (button) { + case BUTTON_A: + sdata->pos++; + if (sdata->pos > LAST_SCREEN) + sdata->pos = 2; + draw_main_menu_screen(&main_menu_screen); + return EVENT_RET_HANDLED; + break; + case BUTTON_B: + sdata->pos--; + if (sdata->pos < 2) + sdata->pos = LAST_SCREEN; + draw_main_menu_screen(&main_menu_screen); + return EVENT_RET_HANDLED; + break; + case BUTTON_C: + if (sdata->pos < LAST_SCREEN) { + OswaldState.screen_id = sdata->pos; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + } else { + OswaldState.screen_id = IDLE_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + } + return EVENT_RET_HANDLED; + break; + default: + break; + } + + return EVENT_RET_UNHANDLED; +} + +/* after MAIN_MENU_TIMEOUT seconds return to IDLE_SCREEN */ +#define MAIN_MENU_TIMEOUT 10 + +event_ret_t main_menu_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: + main_menu_screen.tmo = 0; + main_menu_screen.pos = 2; + draw_main_menu_screen(&main_menu_screen); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + main_menu_screen.tmo = 0; + return handle_main_menu_buttons(*(watch_button *)data, &main_menu_screen); + break; + case EVENT_ONE_SEC_TIMER: + main_menu_screen.tmo++; + if (main_menu_screen.tmo > MAIN_MENU_TIMEOUT) { + OswaldState.screen_id = IDLE_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + } + return EVENT_RET_HANDLED; + default: + break; + }; + return EVENT_RET_UNHANDLED; +} + + /* * Accelerometer and sensor display screen */ @@ -149,15 +326,17 @@ void draw_accel_screen(accel_data_t *accel_data) oswald_draw_bitmap(36, 0, acc_icon_width, acc_icon_height, acc_icon_bits); - oswald_write_string(1, 40, FONT_6x9, "X:"); - oswald_write_number(15, 40, FONT_6x9, accel_data->x); - oswald_write_string(1, 52, FONT_6x9, "Y:"); - oswald_write_number(15, 52, FONT_6x9, accel_data->y); - oswald_write_string(1, 64, FONT_6x9, "Z:"); - oswald_write_number(15, 64, FONT_6x9, accel_data->z); + oswald_draw_bitmap(81, 79, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + oswald_write_string(1, 40, FONT_6x9, FALSE, "X:"); + oswald_write_number(15, 40, FONT_6x9, FALSE, accel_data->x); + oswald_write_string(1, 52, FONT_6x9, FALSE, "Y:"); + oswald_write_number(15, 52, FONT_6x9, FALSE, accel_data->y); + oswald_write_string(1, 64, FONT_6x9, FALSE, "Z:"); + oswald_write_number(15, 64, FONT_6x9, FALSE, accel_data->z); - oswald_write_string(1, 85, FONT_6x9, "Light:"); - oswald_write_number(50, 85, FONT_6x9, 0); + oswald_write_string(1, 85, FONT_6x9, FALSE, "Light:"); + oswald_write_number(50, 85, FONT_6x9, FALSE, 0); oswald_draw_line(40, 30, 92, 30); oswald_draw_line(92, 30, 92, 82); @@ -166,11 +345,11 @@ void draw_accel_screen(accel_data_t *accel_data) x = 41+25+((accel_data->x * 50) / (254)); y = 31+25-((accel_data->y * 50) / (254)); - oswald_draw_pixel(x, y); - oswald_draw_pixel(x+1, y); - oswald_draw_pixel(x-1, y); - oswald_draw_pixel(x, y+1); - oswald_draw_pixel(x, y-1); + oswald_draw_pixel(x, y, TRUE); + oswald_draw_pixel(x+1, y, TRUE); + oswald_draw_pixel(x-1, y, TRUE); + oswald_draw_pixel(x, y+1, TRUE); + oswald_draw_pixel(x, y-1, TRUE); hal_lcd_update_display(); } @@ -229,53 +408,54 @@ void draw_datetime_setup_screen(datetime_setup_data_t *sdata) oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); + oswald_draw_bitmap(81, 70, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits); if ((sdata->pos == 0 && sdata->on) || sdata->pos != 0) { - oswald_write_character(2, 30, FONT_LCD13x21, (OswaldClk.hour / 10)); - oswald_write_character(15, 30, FONT_LCD13x21, (OswaldClk.hour % 10)); + oswald_write_character(2, 30, FONT_LCD13x21, FALSE, (OswaldClk.hour / 10)); + oswald_write_character(15, 30, FONT_LCD13x21, FALSE, (OswaldClk.hour % 10)); } - oswald_write_character(25, 30, FONT_LCD13x21, 10); + oswald_write_character(25, 30, FONT_LCD13x21, FALSE, 10); if ((sdata->pos == 1 && sdata->on) || sdata->pos != 1) { - oswald_write_character(34, 30, FONT_LCD13x21, (OswaldClk.minute / 10)); - oswald_write_character(47, 30, FONT_LCD13x21, (OswaldClk.minute % 10)); + oswald_write_character(34, 30, FONT_LCD13x21, FALSE, (OswaldClk.minute / 10)); + oswald_write_character(47, 30, FONT_LCD13x21, FALSE, (OswaldClk.minute % 10)); } if ((sdata->pos == 2 && sdata->on) || sdata->pos != 2) { - oswald_write_character(61, 38, FONT_LCD8x13, (OswaldClk.second / 10)); - oswald_write_character(69, 38, FONT_LCD8x13, (OswaldClk.second % 10)); + oswald_write_character(61, 38, FONT_LCD8x13, FALSE, (OswaldClk.second / 10)); + oswald_write_character(69, 38, FONT_LCD8x13, FALSE, (OswaldClk.second % 10)); } if ((sdata->pos == 3 && sdata->on) || sdata->pos != 3) { - oswald_write_number(2, 55, FONT_DROID8x12, OswaldClk.day); + oswald_write_number(2, 55, FONT_DROID8x12, FALSE, OswaldClk.day); } - oswald_write_character(15, 55, FONT_DROID8x12, '.'); + oswald_write_character(15, 55, FONT_DROID8x12, FALSE, '.'); if ((sdata->pos == 4 && sdata->on) || sdata->pos != 4) { - oswald_write_number(21, 55, FONT_DROID8x12, OswaldClk.month); + oswald_write_number(21, 55, FONT_DROID8x12, FALSE, OswaldClk.month); } - oswald_write_character(36, 55, FONT_DROID8x12, '.'); + oswald_write_character(36, 55, FONT_DROID8x12, FALSE, '.'); if ((sdata->pos == 5 && sdata->on) || sdata->pos != 5) { - oswald_write_number(43, 55, FONT_DROID8x12, OswaldClk.year); + oswald_write_number(43, 55, FONT_DROID8x12, FALSE, OswaldClk.year); } if ((sdata->pos == 6 && sdata->on) || sdata->pos != 6) { if (OswaldClk.clk24hr) { - oswald_write_character(2, 76, FONT_6x9, 'x'); + oswald_draw_bitmap(2, 76, checked_icon_width, checked_icon_height, checked_icon_bits); } else { - oswald_write_character(2, 76, FONT_6x9, '_'); + oswald_draw_bitmap(2, 76, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); } } - oswald_write_string(15, 73, FONT_DROID8x12, "24hr"); + oswald_write_string(15, 73, FONT_DROID8x12, FALSE, "24hr"); if ((sdata->pos == 7 && sdata->on) || sdata->pos != 7) { if (OswaldClk.day_first) { - oswald_write_character(2, 86, FONT_6x9, 'x'); + oswald_draw_bitmap(2, 86, checked_icon_width, checked_icon_height, checked_icon_bits); } else { - oswald_write_character(2, 86, FONT_6x9, '_'); + oswald_draw_bitmap(2, 86, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); } } - oswald_write_string(15, 83, FONT_DROID8x12, "dd.mm. mm/dd"); + oswald_write_string(15, 83, FONT_DROID8x12, FALSE, "dd.mm. mm/dd"); hal_lcd_update_display(); } @@ -427,42 +607,82 @@ void draw_alarm_setup_screen(alarm_setup_data_t *sdata) oswald_draw_bitmap(36, 0, alarm_icon_width, alarm_icon_height, alarm_icon_bits); - oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); - oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); + if (sdata->set_mode) { + oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); + oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); + oswald_draw_bitmap(81, 70, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits); + } else { + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + } if ((sdata->pos == 0 && sdata->on) || sdata->pos != 0) { - oswald_write_character(18, 30, FONT_LCD13x21, (OswaldAlarm.hour / 10)); - oswald_write_character(32, 30, FONT_LCD13x21, (OswaldAlarm.hour % 10)); + oswald_write_character(18, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.hour / 10)); + oswald_write_character(32, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.hour % 10)); } - oswald_write_character(42, 30, FONT_LCD13x21, 10); + oswald_write_character(42, 30, FONT_LCD13x21, FALSE, 10); if ((sdata->pos == 1 && sdata->on) || sdata->pos != 1) { - oswald_write_character(53, 30, FONT_LCD13x21, (OswaldAlarm.minute / 10)); - oswald_write_character(67, 30, FONT_LCD13x21, (OswaldAlarm.minute % 10)); + oswald_write_character(53, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.minute / 10)); + oswald_write_character(67, 30, FONT_LCD13x21, FALSE, (OswaldAlarm.minute % 10)); } - oswald_write_character(3, 55, FONT_6x9, 'S'); - oswald_write_character(15, 55, FONT_6x9, 'M'); - oswald_write_character(27, 55, FONT_6x9, 'T'); - oswald_write_character(39, 55, FONT_6x9, 'W'); - oswald_write_character(51, 55, FONT_6x9, 'T'); - oswald_write_character(63, 55, FONT_6x9, 'F'); - oswald_write_character(75, 55, FONT_6x9, 'S'); - - if ((sdata->pos == 2 && sdata->on) || sdata->pos != 2) - oswald_write_character(3, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SUNDAY) ? 'x' : '_'); - if ((sdata->pos == 3 && sdata->on) || sdata->pos != 3) - oswald_write_character(15, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_MONDAY) ? 'x' : '_'); - if ((sdata->pos == 4 && sdata->on) || sdata->pos != 4) - oswald_write_character(27, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_TUESDAY) ? 'x' : '_'); - if ((sdata->pos == 5 && sdata->on) || sdata->pos != 5) - oswald_write_character(39, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_WEDNESDAY) ? 'x' : '_'); - if ((sdata->pos == 6 && sdata->on) || sdata->pos != 6) - oswald_write_character(51, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_THURSDAY) ? 'x' : '_'); - if ((sdata->pos == 7 && sdata->on) || sdata->pos != 7) - oswald_write_character(63, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_FRIDAY) ? 'x' : '_'); - if ((sdata->pos == 8 && sdata->on) || sdata->pos != 8) - oswald_write_character(75, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SATURDAY) ? 'x' : '_'); + oswald_write_character(3, 55, FONT_6x9, FALSE, 'S'); + oswald_write_character(15, 55, FONT_6x9, FALSE, 'M'); + oswald_write_character(27, 55, FONT_6x9, FALSE, 'T'); + oswald_write_character(39, 55, FONT_6x9, FALSE, 'W'); + oswald_write_character(51, 55, FONT_6x9, FALSE, 'T'); + oswald_write_character(63, 55, FONT_6x9, FALSE, 'F'); + oswald_write_character(75, 55, FONT_6x9, FALSE, 'S'); + + if ((sdata->pos == 2 && sdata->on) || sdata->pos != 2) { + // oswald_write_character(3, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SUNDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_SUNDAY)) + oswald_draw_bitmap(3, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(3, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 3 && sdata->on) || sdata->pos != 3) { + // oswald_write_character(15, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_MONDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_MONDAY)) + oswald_draw_bitmap(15, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(15, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 4 && sdata->on) || sdata->pos != 4) { + // oswald_write_character(27, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_TUESDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_TUESDAY)) + oswald_draw_bitmap(27, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(27, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 5 && sdata->on) || sdata->pos != 5) { + // oswald_write_character(39, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_WEDNESDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_WEDNESDAY)) + oswald_draw_bitmap(39, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(39, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 6 && sdata->on) || sdata->pos != 6) { + // oswald_write_character(51, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_THURSDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_THURSDAY)) + oswald_draw_bitmap(51, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(51, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 7 && sdata->on) || sdata->pos != 7) { + // oswald_write_character(63, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_FRIDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_FRIDAY)) + oswald_draw_bitmap(63, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(63, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } + if ((sdata->pos == 8 && sdata->on) || sdata->pos != 8) { + // oswald_write_character(75, 65, FONT_6x9, (OswaldAlarm.wday & WDAY_SATURDAY) ? 'x' : '_'); + if ((OswaldAlarm.wday & WDAY_SATURDAY)) + oswald_draw_bitmap(75, 66, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(75, 66, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); + } hal_lcd_update_display(); } @@ -611,15 +831,15 @@ void draw_menu_test_screen(void) WriteLcdString(50, 20+(9*test_menu.menu_pos), "*"); #endif - oswald_write_string(2, 2, FONT_DROID11x14b, "Menu"); + oswald_write_string(2, 2, FONT_DROID8x12, FALSE, "Menu"); - oswald_write_string(2, 20, FONT_DROID8x12, "Item 1"); - oswald_write_string(2, 29, FONT_DROID8x12, "Item 2"); - oswald_write_string(2, 38, FONT_DROID8x12, "Item 3"); - oswald_write_string(2, 47, FONT_DROID8x12, "Item 4"); - oswald_write_string(2, 56, FONT_DROID8x12, "Item 5"); + oswald_write_string(2, 20, FONT_DROID8x12, FALSE, "Item 1"); + oswald_write_string(2, 29, FONT_DROID8x12, FALSE, "Item 2"); + oswald_write_string(2, 38, FONT_DROID8x12, FALSE, "Item 3"); + oswald_write_string(2, 47, FONT_DROID8x12, FALSE, "Item 4"); + oswald_write_string(2, 56, FONT_DROID8x12, FALSE, "Item 5"); - oswald_write_character(50, 18+(9*test_menu.menu_pos), FONT_6x9, 0x11); + oswald_write_character(50, 18+(9*test_menu.menu_pos), FONT_6x9, FALSE, 0x11); hal_lcd_update_display(); } @@ -678,29 +898,6 @@ typedef struct { } stopwatch_data_t; static stopwatch_data_t stopwatch_screen = { 0, 0, 0, 0, 0, 0, 0, 0, FALSE }; -#if 0 -static void update_stop_watch_screen(stopwatch_data_t *sdata) -{ - //char tstr[16]; -#if 0 - SetFont(MetaWatchMonospaced10); - - snprintf(tstr, 16, "%02d:%02d:%02d.%1d", sdata->hr, sdata->min, sdata->sec, sdata->csec / 10); - WriteLcdString(5, 40, tstr); - snprintf(tstr, 16, "%02d:%02d:%02d.%02d", sdata->lapse_hr, sdata->lapse_min, sdata->lapse_sec, sdata->lapse_csec); - WriteLcdString(5, 60, tstr); -#endif -#if 0 - snprintf(tstr, 16, "%02d:%02d:%02d.%1d", sdata->hr, sdata->min, sdata->sec, sdata->csec / 10); - oswald_write_string(5, 40, FONT_6x9, tstr); - - snprintf(tstr, 16, "%02d:%02d:%02d.%02d", sdata->lapse_hr, sdata->lapse_min, sdata->lapse_sec, sdata->lapse_csec); - oswald_write_string(5, 60, FONT_6x9, tstr); -#endif - - hal_lcd_update_display(); -} -#endif static void draw_stop_watch_screen(stopwatch_data_t *sdata) { @@ -710,31 +907,29 @@ static void draw_stop_watch_screen(stopwatch_data_t *sdata) hal_lcd_clear_display(); oswald_draw_bitmap(36, 0, stopwatch_icon_width, stopwatch_icon_height, stopwatch_icon_bits); + oswald_draw_bitmap(81, 6, startstopbutton_icon_width, startstopbutton_icon_height, startstopbutton_icon_bits); oswald_draw_bitmap(81, 38, lapsebutton_icon_width, lapsebutton_icon_height, lapsebutton_icon_bits); + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); -#if 0 - update_stop_watch_screen(sdata); -#else - gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->hr % 10)); - gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->min / 10)); - gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->min % 10)); - gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->sec / 10)); - gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, (sdata->sec % 10)); - gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->csec / 10)); + gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->hr % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->min / 10)); + gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->min % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->sec / 10)); + gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (sdata->sec % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->csec / 10)); gRow = 6; - gColumn = 62; - gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_hr % 10)); - gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_min / 10)); - gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_min % 10)); - gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_sec / 10)); - gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_sec % 10)); - gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_csec / 10)); - gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, (sdata->lapse_csec % 10)); + gColumn = 61; + gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_hr % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_min / 10)); + gRow += 13 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_min % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_sec / 10)); + gRow += 3 + oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_sec % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_csec / 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD8x13, FALSE, (sdata->lapse_csec % 10)); hal_lcd_update_display(); -#endif } event_ret_t handle_stop_watch_buttons(watch_button button) @@ -780,12 +975,10 @@ event_ret_t stop_watch_handle_events(uint16_t event, void *data) switch (event) { case EVENT_USER_BUTTONS: dbg_out("button event %d\n", *(int *)data); - return handle_stop_watch_buttons(*(watch_button *)data); - //update_stop_watch_screen(&stopwatch_screen); draw_stop_watch_screen(&stopwatch_screen); + return handle_stop_watch_buttons(*(watch_button *)data); break; case EVENT_SCREEN_VISIBLE: - hal_lcd_clear_display(); draw_stop_watch_screen(&stopwatch_screen); return EVENT_RET_HANDLED; break; @@ -833,6 +1026,8 @@ void draw_alarm_screen(void) oswald_draw_bitmap(36, 20, alarm_icon_width, alarm_icon_height, alarm_icon_bits); + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + hal_lcd_update_display(); } @@ -894,36 +1089,48 @@ void draw_bluetooth_screen(bluetooth_data_t *sdata) oswald_draw_bitmap(36, 0, Bluetooth_icon_width, Bluetooth_icon_height, Bluetooth_icon_bits); - oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); - oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); + if (sdata->set_mode) { + oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); + oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); + oswald_draw_bitmap(81, 70, rightbutton_icon_width, rightbutton_icon_height, rightbutton_icon_bits); + } else { + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + } - oswald_write_string(1, 30, FONT_DROID8x12, "Enable:"); + oswald_write_string(1, 30, FONT_DROID8x12, FALSE, "Enable:"); if ((sdata->pos == 0 && sdata->on) || sdata->pos != 0) { - oswald_write_character(53, 30, FONT_DROID8x12, bluetooth_screen.bt_en ? 'x' : '_'); + if (bluetooth_screen.bt_en) + oswald_draw_bitmap(53, 33, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(53, 33, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); } - oswald_write_string(1, 40, FONT_DROID8x12, "State:"); + oswald_write_string(1, 40, FONT_DROID8x12, FALSE, "State:"); switch (hal_bluetooth_get_state()) { case BLUETOOTH_OFF: - oswald_write_string(53, 40, FONT_DROID8x12, "off"); + oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "off"); break; case BLUETOOTH_ON: - oswald_write_string(53, 40, FONT_DROID8x12, "on"); + oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "on"); break; case BLUETOOTH_CONNECTED: - oswald_write_string(53, 40, FONT_DROID8x12, "conn."); + oswald_write_string(53, 40, FONT_DROID8x12, FALSE, "conn."); break; default: break; }; - oswald_write_string(1, 50, FONT_DROID8x12, "Visible:"); + oswald_write_string(1, 50, FONT_DROID8x12, FALSE, "Visible:"); if ((sdata->pos == 1 && sdata->on) || sdata->pos != 1) { - oswald_write_character(53, 50, FONT_DROID8x12, hal_bluetooth_get_visible() ? 'x' : '_'); + // oswald_write_character(53, 50, FONT_DROID8x12, hal_bluetooth_get_visible() ? 'x' : '_'); + if (hal_bluetooth_get_visible()) + oswald_draw_bitmap(53, 53, checked_icon_width, checked_icon_height, checked_icon_bits); + else + oswald_draw_bitmap(53, 53, unchecked_icon_width, unchecked_icon_height, unchecked_icon_bits); } if (hal_bluetooth_get_state() >= BLUETOOTH_ON) { bd_addr = hal_bluetooth_get_local_bdaddr(); snprintf(bstr, 20, "%02x:%02x:%02x:%02x:%02x:%02x", bd_addr[5], bd_addr[4], bd_addr[3], bd_addr[2], bd_addr[1], bd_addr[0]); - oswald_write_string(2, 85, FONT_5x7, bstr); + oswald_write_string(2, 85, FONT_5x7, FALSE, bstr); } else { } @@ -949,20 +1156,6 @@ void bluetooth_handle_updown(uint8_t pos, int8_t incr) hal_bluetooth_set_visible(FALSE); } break; - case 2: - break; - case 3: - break; - case 4: - break; - case 5: - break; - case 6: - break; - case 7: - break; - case 8: - break; default: break; }; @@ -1042,20 +1235,22 @@ event_ret_t bluetooth_screen_events(uint16_t event, void *data) /* * Info Screen */ -void draw_info_screen(accel_data_t *accel_data) +void draw_info_screen(void) { hal_lcd_clear_display(); oswald_draw_bitmap(36, 0, info_icon_width, info_icon_height, info_icon_bits); - oswald_write_string(2, 29, FONT_DROID8x12, "Oswald"); - oswald_write_string(35, 29, FONT_DROID8x12, OSWALD_VERSION); - oswald_write_string(2, 41, FONT_DROID8x12, "HAL"); - oswald_write_string(35, 41, FONT_DROID8x12, (char *)hal_get_version_string()); - oswald_write_string(2, 53, FONT_DROID8x12, "Build"); - oswald_write_string(35, 53, FONT_DROID8x12, (char *)hal_get_buildno_string()); - oswald_write_string(2, 65, FONT_DROID8x12, "Radio"); - oswald_write_string(35, 65, FONT_DROID8x12, (char *)hal_get_radio_version_string()); + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + oswald_write_string(2, 29, FONT_DROID8x12, FALSE, "Oswald"); + oswald_write_string(35, 29, FONT_DROID8x12, FALSE, OSWALD_VERSION); + oswald_write_string(2, 41, FONT_DROID8x12, FALSE, "HAL"); + oswald_write_string(35, 41, FONT_DROID8x12, FALSE, (char *)hal_get_version_string()); + oswald_write_string(2, 53, FONT_DROID8x12, FALSE, "Build"); + oswald_write_string(35, 53, FONT_DROID8x12, FALSE, (char *)hal_get_buildno_string()); + oswald_write_string(2, 65, FONT_DROID8x12, FALSE, "Radio"); + oswald_write_string(35, 65, FONT_DROID8x12, FALSE, (char *)hal_get_radio_version_string()); hal_lcd_update_display(); } @@ -1064,7 +1259,7 @@ event_ret_t info_screen_handle_events(uint16_t event, void *data) { switch (event) { case EVENT_SCREEN_VISIBLE: - draw_info_screen(&accel_screen.accdata); + draw_info_screen(); return EVENT_RET_HANDLED; break; case EVENT_USER_BUTTONS: @@ -1077,3 +1272,248 @@ event_ret_t info_screen_handle_events(uint16_t event, void *data) return EVENT_RET_UNHANDLED; } + +/* + * Messages Screens + */ +typedef struct { + int8_t pos; // marker position + int8_t offset; // offset in msg list +} messages_data_t; +static messages_data_t messages_screen = { + 0, + 0, +}; + +typedef struct { + uint8_t day; + uint8_t month; + uint8_t year; // without century, add +1900 + uint8_t hour; + uint8_t minute; +} msg_timedate_t; + +#define MSG_TYPE_READ 0 +#define MSG_TYPE_NEW 1 +#define MSG_TYPE_END 127 + +typedef struct { + uint8_t type; + msg_timedate_t td; + char *msg; +} message_t; + +uint8_t Msgs = 15; +message_t Msg[] = { + { MSG_TYPE_READ, {9,5,113,0,38}, "Testmessage with more text than fits into the menu." }, + { MSG_TYPE_NEW, {9,5,113,0,39}, "Sitting in the train waiting to arrive." }, + { MSG_TYPE_READ, {9,5,113,0,40}, "People in the train are annoying!" }, + { MSG_TYPE_READ, {9,5,113,0,40}, "Auch auf Deutsch geht das hier und Text können lang sein." }, + { MSG_TYPE_NEW, {8,5,113,0,40}, "Und hier noch eine neue Nachricht, die nun wirklich lang ist, laenger als die anderen." }, + { MSG_TYPE_READ, {9,5,113,0,38}, "Testmessage with more text than fits into the menu." }, + { MSG_TYPE_NEW, {9,5,113,0,39}, "Sitting in the train waiting to arrive." }, + { MSG_TYPE_READ, {9,5,113,0,40}, "People in the train are annoying!" }, + { MSG_TYPE_READ, {9,5,113,0,40}, "Auch auf Deutsch geht das hier und Text können lang sein." }, + { MSG_TYPE_NEW, {8,5,113,0,40}, "Und hier noch eine neue Nachricht, die nun wirklich lang ist, laenger als die anderen." }, + { MSG_TYPE_READ, {9,5,113,0,38}, "Testmessage with more text than fits into the menu." }, + { MSG_TYPE_NEW, {9,5,113,0,39}, "Sitting in the train waiting to arrive." }, + { MSG_TYPE_READ, {9,5,113,0,40}, "People in the train are annoying!" }, + { MSG_TYPE_READ, {9,5,113,0,40}, "Auch auf Deutsch geht das hier und Text können lang sein." }, + { MSG_TYPE_NEW, {8,5,113,0,40}, "Und hier noch eine neue Nachricht, die nun wirklich lang ist, laenger als die anderen." }, + { MSG_TYPE_END, {0,0,0,0,0}, "Exit" }, +}; + +void draw_message_screen(messages_data_t *sdata) +{ + char dstr[32]; + uint8_t strpos, msglen; + uint8_t line; + + hal_lcd_clear_display(); + +#if 0 + oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); + oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); +#endif + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + Msg[sdata->offset + sdata->pos].type = MSG_TYPE_READ; + snprintf(dstr, 19, "#%02d/%02d", sdata->pos + sdata->offset + 1, Msgs); + oswald_write_string(30, 0, FONT_5x7, FALSE, dstr); + oswald_draw_line(0,7,95,7); + + + // here goes the text + msglen = strlen(Msg[sdata->pos+sdata->offset].msg); + strpos=0; + line=0; + while ((strpos < msglen) && (line < 6)) { + strpos += oswald_write_string_length(4, 9+(line*12), 84, FONT_DROID8x12, FALSE, &Msg[sdata->pos+sdata->offset].msg[strpos]); + line++; + } + + + oswald_draw_line(0,87,95,87); + + if (Msg[sdata->offset + sdata->pos].type != MSG_TYPE_END) { + snprintf(dstr, 19, "%c %02d.%02d.%04d,%02d:%02d", (Msg[sdata->pos+sdata->offset].type == MSG_TYPE_NEW) ? '*':' ', Msg[sdata->pos+sdata->offset].td.day, Msg[sdata->pos+sdata->offset].td.month, Msg[sdata->pos+sdata->offset].td.year+1900, Msg[sdata->pos+sdata->offset].td.hour, Msg[sdata->pos+sdata->offset].td.minute); + oswald_write_string(2, 89, FONT_5x7, FALSE, dstr); + } + + hal_lcd_update_display(); +} + +event_ret_t handle_message_screen_buttons(watch_button button, messages_data_t *sdata) +{ + switch (button) { + case BUTTON_A: + break; + case BUTTON_B: + return EVENT_RET_HANDLED; + break; + case BUTTON_C: + // OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL); + OswaldState.screen_id = MESSAGES_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + return EVENT_RET_HANDLED; + break; + default: + break; + } + + return EVENT_RET_UNHANDLED; +} + +event_ret_t message_screen_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: + draw_message_screen(&messages_screen); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + return handle_message_screen_buttons(*(watch_button *)data, &messages_screen); + break; + default: + break; + }; + return EVENT_RET_UNHANDLED; +} + +void draw_messages_screen(messages_data_t *sdata) +{ + char dstr[32]; + int i; + + hal_lcd_clear_display(); + + // oswald_draw_bitmap(36, 0, Message_icon_width, Message_icon_height, Message_icon_bits); + + oswald_draw_bitmap(81, 6, upbutton_icon_width, upbutton_icon_height, upbutton_icon_bits); + oswald_draw_bitmap(81, 38, downbutton_icon_width, downbutton_icon_height, downbutton_icon_bits); + oswald_draw_bitmap(81, 70, enterbutton_icon_width, enterbutton_icon_height, enterbutton_icon_bits); + + if (Msg[sdata->offset + sdata->pos].type != MSG_TYPE_END) { + snprintf(dstr, 19, "#%02d/%02d", sdata->pos + sdata->offset + 1, Msgs); + oswald_write_string(30, 0, FONT_5x7, FALSE, dstr); + } + oswald_draw_line(0,7,95,7); + + for (i=0; i<6; i++) { + if (Msg[i+sdata->offset].type != MSG_TYPE_END) { + //oswald_write_string_length(4, 9+(i*12), 84, FONT_DROID8x12, (Msg[i+sdata->offset].type == MSG_TYPE_NEW), Msg[i+sdata->offset].msg); + if (Msg[i+sdata->offset].type == MSG_TYPE_NEW) + oswald_write_string_length(4, 9+(i*12), 84, FONT_DROID8x12b, (i+sdata->offset) == (sdata->offset + sdata->pos), Msg[i+sdata->offset].msg); + else + oswald_write_string_length(4, 9+(i*12), 84, FONT_DROID8x12, (i+sdata->offset) == (sdata->offset + sdata->pos), Msg[i+sdata->offset].msg); + } else { + oswald_draw_bitmap(0, 66, leftbutton_icon_width, leftbutton_icon_height, leftbutton_icon_bits); + } + } + + // marker selected msg + oswald_draw_line(1,9,1,81); + oswald_draw_line_ww(1,10+(sdata->pos*12),1,20+(sdata->pos*12),2); + + oswald_draw_line(0,87,95,87); + + if (Msg[sdata->offset + sdata->pos].type != MSG_TYPE_END) { + snprintf(dstr, 19, "%c %02d.%02d.%04d,%02d:%02d", (Msg[sdata->pos+sdata->offset].type == MSG_TYPE_NEW) ? '*':' ', Msg[sdata->pos+sdata->offset].td.day, Msg[sdata->pos+sdata->offset].td.month, Msg[sdata->pos+sdata->offset].td.year+1900, Msg[sdata->pos+sdata->offset].td.hour, Msg[sdata->pos+sdata->offset].td.minute); + oswald_write_string(2, 89, FONT_5x7, FALSE, dstr); + } + + hal_lcd_update_display(); +} + +event_ret_t handle_messages_screen_buttons(watch_button button, messages_data_t *sdata) +{ + switch (button) { + case BUTTON_A: + sdata->pos--; + if (sdata->pos < 0) { + if (sdata->offset > 0) { + sdata->pos = 0; + sdata->offset--; + if (sdata->offset < 0) + sdata->offset = 0; + } else { + sdata->pos = 5; + sdata->offset = (Msgs - 5); + if (sdata->offset < 0) + sdata->offset = 0; + } + } + draw_messages_screen(&messages_screen); + return EVENT_RET_HANDLED; + break; + case BUTTON_B: + sdata->pos++; + if (sdata->pos > 5) { + sdata->pos = 5; + sdata->offset++; + if ((sdata->offset + 5) > Msgs) { + sdata->offset = 0; + sdata->pos = 0; + } + } + draw_messages_screen(&messages_screen); + return EVENT_RET_HANDLED; + break; + case BUTTON_C: + if (Msg[sdata->offset + sdata->pos].type == MSG_TYPE_END) + return EVENT_RET_UNHANDLED; + else + // OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL); + OswaldState.screen_id = MESSAGE_SCREEN; + OswaldState.screen = &OswaldScreens[OswaldState.screen_id]; + OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL); + return EVENT_RET_HANDLED; + break; + default: + break; + } + + return EVENT_RET_UNHANDLED; +} + +event_ret_t messages_screen_handle_events(uint16_t event, void *data) +{ + switch (event) { + case EVENT_SCREEN_VISIBLE: +// messages_screen.pos = 0; +// messages_screen.offset = 0; + draw_messages_screen(&messages_screen); + return EVENT_RET_HANDLED; + break; + case EVENT_USER_BUTTONS: + dbg_out("button event %d\n", *(int *)data); + return handle_messages_screen_buttons(*(watch_button *)data, &messages_screen); + break; + default: + break; + }; + return EVENT_RET_UNHANDLED; +} + diff --git a/ui/oswald_screens.h b/ui/oswald_screens.h index 47a71e3..213b1d5 100644 --- a/ui/oswald_screens.h +++ b/ui/oswald_screens.h @@ -2,6 +2,8 @@ #define _OSWALD_SCREENS_H +event_ret_t main_menu_handle_events(uint16_t event, void *data); + event_ret_t idle_handle_events(uint16_t event, void *data); event_ret_t accel_handle_events(uint16_t event, void *data); @@ -20,4 +22,7 @@ event_ret_t bluetooth_screen_events(uint16_t event, void *data); event_ret_t info_screen_handle_events(uint16_t event, void *data); +event_ret_t messages_screen_handle_events(uint16_t event, void *data); +event_ret_t message_screen_handle_events(uint16_t event, void *data); + #endif diff --git a/ui/oswald_watch_faces.c b/ui/oswald_watch_faces.c index bfbf641..284323a 100644 --- a/ui/oswald_watch_faces.c +++ b/ui/oswald_watch_faces.c @@ -160,12 +160,7 @@ void DrawLcdAnaClock(boolean show_seconds) hal_lcd_clear_display(); snprintf(tstr, 16, "%2d", OswaldClk.day); -#if 0 - SetFont(MetaWatch16); - WriteLcdString(70, 40, tstr); -#else - oswald_write_string(70, 43, FONT_6x9, tstr); -#endif + oswald_write_string(70, 43, FONT_6x9, FALSE, tstr); // Marker // plot(R*cos(360° * i/N), R*sin(360° * i/N)) @@ -215,64 +210,6 @@ void DrawLcdDigitalClock(boolean show_seconds) char tstr[16]; int i; -#if 0 - SetFont(MetaWatchTime); - - hal_lcd_clear_display(); - //gRow += WriteLcdCharacter(ui, gRow, gColumn, TIME_CHARACTER_SPACE_INDEX); - if (OswaldClk.clk24hr) { - gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.hour / 10)); - gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.hour % 10)); - } else { - unsigned char val = OswaldClk.hour; - if (val > 12) - val -= 12; - gRow += WriteLcdCharacter(gRow, gColumn, (val / 10)); - gRow += WriteLcdCharacter(gRow, gColumn, (val % 10)); - } - gRow += WriteLcdCharacter(gRow, gColumn, TIME_CHARACTER_COLON_INDEX); - gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.minute / 10)); - gRow += WriteLcdCharacter(gRow, gColumn, (OswaldClk.minute % 10)); - - gRow += 3; - if (show_seconds) { - SetFont(MetaWatch16); - snprintf(tstr, 16, "%02d", OswaldClk.second); - WriteLcdString(gRow, 9, tstr); - }; - - SetFont(MetaWatch7); - - if (!OswaldClk.clk24hr) { - if (OswaldClk.hour > 12) { - WriteLcdString(gRow, 3, "PM"); - } else { - WriteLcdString(gRow, 3, "AM"); - } - } - - SetFont(MetaWatch16); - - if (OswaldClk.day_first) - snprintf(tstr, 16, "%d.%d.%d", OswaldClk.day, OswaldClk.month, OswaldClk.year); - else - snprintf(tstr, 16, "%d/%d %d", OswaldClk.month, OswaldClk.day, OswaldClk.year); - WriteLcdString(3, 25, tstr); - - draw_status_icons(); - - gRow = 0; - gColumn = 45; - SetFont(MetaWatch5); - for (i=0; i 90) { - gRow = 0; - gColumn += 7; - } - if (gColumn > 95) - i = 255; - } #if 0 snprintf(tstr, 16, "%d%% (%dmV)", OswaldPowerState.percent, OswaldPowerState.level); WriteLcdString(2, 48, tstr); @@ -298,42 +235,45 @@ void DrawLcdDigitalClock(boolean show_seconds) }; }; #endif -#else hal_lcd_clear_display(); if (OswaldClk.clk24hr) { - gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.hour / 10)); - gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.hour % 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.hour / 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.hour % 10)); } else { unsigned char val = OswaldClk.hour; - if (val > 12) + if (val > 12) { val -= 12; - gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (val / 10)); - gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (val % 10)); + oswald_write_string(59, 0, FONT_6x9, FALSE, "PM"); + } else { + oswald_write_string(59, 0, FONT_6x9, FALSE, "AM"); + } + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (val / 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (val % 10)); } if (OswaldClk.second % 2) - oswald_write_character(gRow-4, gColumn, FONT_LCD13x21, 10); + oswald_write_character(gRow-4, gColumn, FONT_LCD13x21, FALSE, 10); gRow += 5; - gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.minute / 10)); - gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, (OswaldClk.minute % 10)); -#endif + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.minute / 10)); + gRow += oswald_write_character(gRow, gColumn, FONT_LCD13x21, FALSE, (OswaldClk.minute % 10)); + if (show_seconds) { - oswald_write_character(59, 9, FONT_LCD8x13, (OswaldClk.second / 10)); - oswald_write_character(67, 9, FONT_LCD8x13, (OswaldClk.second % 10)); + oswald_write_character(59, 9, FONT_LCD8x13, FALSE, (OswaldClk.second / 10)); + oswald_write_character(67, 9, FONT_LCD8x13, FALSE, (OswaldClk.second % 10)); } if (OswaldClk.day_first) snprintf(tstr, 16, "%s %d.%d.%d", daynames[OswaldClk.wday], OswaldClk.day, OswaldClk.month, OswaldClk.year); else snprintf(tstr, 16, "%s %d/%d %d", daynames[OswaldClk.wday], OswaldClk.month, OswaldClk.day, OswaldClk.year); - oswald_write_string(0, 25, FONT_6x9, tstr); + oswald_write_string(0, 25, FONT_DROID8x12, FALSE, tstr); gRow = 0; gColumn = 45; for (i=0; i 90) { gRow = 0; gColumn += 9;