diff --git a/bsp/allwinner_tina/.config b/bsp/allwinner_tina/.config index 0d06a6d220..3a40f9d566 100644 --- a/bsp/allwinner_tina/.config +++ b/bsp/allwinner_tina/.config @@ -166,7 +166,7 @@ CONFIG_RT_USING_POSIX=y # # RT-Thread UI Engine # -# CONFIG_RT_USING_GUIENGINE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # VBUS(Virtual Software BUS) diff --git a/bsp/allwinner_tina/rtconfig.h b/bsp/allwinner_tina/rtconfig.h index ea0bbf8deb..2fb7c07df3 100644 --- a/bsp/allwinner_tina/rtconfig.h +++ b/bsp/allwinner_tina/rtconfig.h @@ -150,7 +150,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* VBUS(Virtual Software BUS) */ diff --git a/bsp/apollo2/rtconfig.h b/bsp/apollo2/rtconfig.h index 0059edf3a4..5f94db4eff 100644 --- a/bsp/apollo2/rtconfig.h +++ b/bsp/apollo2/rtconfig.h @@ -138,7 +138,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* VBUS(Virtual Software BUS) */ diff --git a/bsp/asm9260t/.config b/bsp/asm9260t/.config index dcd4f9638d..ed77c0678d 100644 --- a/bsp/asm9260t/.config +++ b/bsp/asm9260t/.config @@ -120,7 +120,7 @@ CONFIG_RT_USING_LIBC=y # # RT-Thread UI Engine # -# CONFIG_RT_USING_GUIENGINE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # RT-Thread online packages diff --git a/bsp/asm9260t/rtconfig.h b/bsp/asm9260t/rtconfig.h index 946f2ea78f..def7f36a71 100644 --- a/bsp/asm9260t/rtconfig.h +++ b/bsp/asm9260t/rtconfig.h @@ -106,7 +106,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* RT-Thread online packages */ diff --git a/bsp/gd32450z-eval/applications/application.c b/bsp/gd32450z-eval/applications/application.c index d733738bc0..e39574f2c8 100644 --- a/bsp/gd32450z-eval/applications/application.c +++ b/bsp/gd32450z-eval/applications/application.c @@ -17,7 +17,7 @@ #include #include -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include "rtgui_demo.h" #include #endif @@ -41,7 +41,7 @@ void rt_init_thread_entry(void* parameter) rt_components_init(); #endif -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE { rt_device_t device; diff --git a/bsp/gd32450z-eval/applications/rtgui_demo.c b/bsp/gd32450z-eval/applications/rtgui_demo.c index 534cbe795d..1a4885fe94 100644 --- a/bsp/gd32450z-eval/applications/rtgui_demo.c +++ b/bsp/gd32450z-eval/applications/rtgui_demo.c @@ -23,7 +23,7 @@ #define DEBUG_PRINTF(...) #endif -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include #include @@ -122,4 +122,4 @@ int rt_gui_demo_init(void) return 0; } -#endif /* RT_USING_GUIENGINE */ +#endif /* PKG_USING_GUIENGINE */ diff --git a/bsp/gd32450z-eval/drivers/SConscript b/bsp/gd32450z-eval/drivers/SConscript index 40107508d7..7a169def54 100644 --- a/bsp/gd32450z-eval/drivers/SConscript +++ b/bsp/gd32450z-eval/drivers/SConscript @@ -18,7 +18,7 @@ if GetDepend('RT_USING_LWIP'): src += ['drv_enet.c', 'synopsys_emac.c'] # add lcd drivers. -if GetDepend('RT_USING_GUIENGINE'): +if GetDepend('PKG_USING_GUIENGINE'): src += ['drv_lcd.c', 'gd32f450z_lcd_eval.c'] # add spi flash drivers. diff --git a/bsp/gd32450z-eval/drivers/drv_lcd.c b/bsp/gd32450z-eval/drivers/drv_lcd.c index b7f97bd146..50d5c685c5 100644 --- a/bsp/gd32450z-eval/drivers/drv_lcd.c +++ b/bsp/gd32450z-eval/drivers/drv_lcd.c @@ -18,7 +18,7 @@ #include #include -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #define RT_HW_LCD_WIDTH ((uint16_t)320) /* LCD PIXEL WIDTH */ diff --git a/bsp/gd32450z-eval/rtconfig.h b/bsp/gd32450z-eval/rtconfig.h index 074a5a9fe4..79c95e8a2c 100644 --- a/bsp/gd32450z-eval/rtconfig.h +++ b/bsp/gd32450z-eval/rtconfig.h @@ -67,7 +67,7 @@ /* SECTION: RTGUI support */ /* using RTGUI support */ -#define RT_USING_GUIENGINE +// #define PKG_USING_GUIENGINE /* name length of RTGUI object */ #define RTGUI_NAME_MAX 16 diff --git a/bsp/imxrt1052-evk/.config b/bsp/imxrt1052-evk/.config index f0fd2f8ccf..c87ac99395 100644 --- a/bsp/imxrt1052-evk/.config +++ b/bsp/imxrt1052-evk/.config @@ -60,6 +60,7 @@ CONFIG_ARCH_ARM_CORTEX_M7=y # CONFIG_RT_USING_COMPONENTS_INIT=y CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 # # C++ features @@ -197,34 +198,14 @@ CONFIG_SO_REUSE=1 CONFIG_LWIP_SO_RCVTIMEO=1 CONFIG_LWIP_SO_SNDTIMEO=1 CONFIG_LWIP_SO_RCVBUF=1 +# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=0 # # Modbus master and slave stack # # CONFIG_RT_USING_MODBUS is not set # CONFIG_LWIP_USING_DHCPD is not set -# CONFIG_RT_USING_NETUTILS is not set - -# -# RT-Thread UI Engine -# -CONFIG_RT_USING_GUIENGINE=y -CONFIG_RTGUI_NAME_MAX=16 -CONFIG_RTGUI_USING_TTF=y -CONFIG_UTF8_TO_UNICODE=y -CONFIG_RTGUI_USING_FONT16=y -CONFIG_RTGUI_USING_FONT12=y -# CONFIG_RTGUI_USING_FONTHZ is not set -# CONFIG_RTGUI_IMAGE_XPM is not set -CONFIG_RTGUI_IMAGE_JPEG_NONE=y -# CONFIG_RTGUI_IMAGE_JPEG is not set -# CONFIG_RTGUI_IMAGE_TJPGD is not set -# CONFIG_RTGUI_IMAGE_PNG_NONE is not set -# CONFIG_RTGUI_IMAGE_PNG is not set -CONFIG_RTGUI_IMAGE_LODEPNG=y -# CONFIG_RTGUI_IMAGE_BMP is not set -CONFIG_RTGUI_IMAGE_CONTAINER=y -# CONFIG_RTGUI_USING_DEMO is not set # # VBUS(Virtual Software BUS) @@ -250,8 +231,22 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y # # system packages # -# CONFIG_PKG_USING_PARTITION is not set + +# +# RT-Thread GUI Engine +# +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_GUIENGINE_IMAGE_JPEG_NONE is not set +# CONFIG_GUIENGINE_IMAGE_JPEG is not set +# CONFIG_GUIENGINE_IMAGE_TJPGD is not set +# CONFIG_GUIENGINE_IMAGE_PNG_NONE is not set +# CONFIG_GUIENGINE_IMAGE_PNG is not set +# CONFIG_GUIENGINE_IMAGE_LODEPNG is not set +# CONFIG_PKG_USING_GUIENGINE_V200 is not set +# CONFIG_PKG_USING_GUIENGINE_LATEST_VERSION is not set # CONFIG_PKG_USING_PERSIMMON is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_PARTITION is not set # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set @@ -282,6 +277,7 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y # # CONFIG_PKG_USING_WLAN_WICED is not set # CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set # # security packages @@ -314,11 +310,13 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y # # CONFIG_PKG_USING_FASTLZ is not set # CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set # # example package: hello # # CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set CONFIG_SOC_IMXRT1052=y CONFIG_RT_USING_UART=y CONFIG_RT_USING_UART1=y diff --git a/bsp/imxrt1052-evk/BuildLog.log b/bsp/imxrt1052-evk/BuildLog.log deleted file mode 100644 index 5f282702bb..0000000000 --- a/bsp/imxrt1052-evk/BuildLog.log +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/bsp/imxrt1052-evk/drivers/SConscript b/bsp/imxrt1052-evk/drivers/SConscript index 6b15f249ea..d5264e5388 100644 --- a/bsp/imxrt1052-evk/drivers/SConscript +++ b/bsp/imxrt1052-evk/drivers/SConscript @@ -22,7 +22,7 @@ if GetDepend('RT_USING_LWIP'): if GetDepend('RT_USING_SDIO'): src += ['drv_sdio.c'] -if GetDepend('RT_USING_RTGUI') or GetDepend('RT_USING_GUIENGINE'): +if GetDepend('RT_USING_RTGUI') or GetDepend('PKG_USING_GUIENGINE'): src += ['drv_lcd.c', 'drv_ft5406.c', 'drv_i2c.c'] group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES) diff --git a/bsp/imxrt1052-evk/drivers/board.c b/bsp/imxrt1052-evk/drivers/board.c index e5d192f962..5cb875827a 100644 --- a/bsp/imxrt1052-evk/drivers/board.c +++ b/bsp/imxrt1052-evk/drivers/board.c @@ -192,7 +192,7 @@ void rt_hw_board_init() #endif } -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include #include "drv_lcd.h" diff --git a/bsp/imxrt1052-evk/drivers/drv_lcd.c b/bsp/imxrt1052-evk/drivers/drv_lcd.c index c6644844ca..4636bc6c41 100644 --- a/bsp/imxrt1052-evk/drivers/drv_lcd.c +++ b/bsp/imxrt1052-evk/drivers/drv_lcd.c @@ -21,7 +21,7 @@ //#define LCD_DEBUG -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #define APP_HSW 41 #define APP_HFP 4 diff --git a/bsp/imxrt1052-evk/rtconfig.h b/bsp/imxrt1052-evk/rtconfig.h index ccb32ff81d..ed53d867c9 100644 --- a/bsp/imxrt1052-evk/rtconfig.h +++ b/bsp/imxrt1052-evk/rtconfig.h @@ -56,6 +56,7 @@ #define RT_USING_COMPONENTS_INIT #define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 /* C++ features */ @@ -182,32 +183,13 @@ #define LWIP_SO_RCVTIMEO 1 #define LWIP_SO_SNDTIMEO 1 #define LWIP_SO_RCVBUF 1 +/* RT_LWIP_NETIF_LOOPBACK is not set */ +#define LWIP_NETIF_LOOPBACK 0 /* Modbus master and slave stack */ /* RT_USING_MODBUS is not set */ /* LWIP_USING_DHCPD is not set */ -/* RT_USING_NETUTILS is not set */ - -/* RT-Thread UI Engine */ - -#define RT_USING_GUIENGINE -#define RTGUI_NAME_MAX 16 -#define RTGUI_USING_TTF -#define UTF8_TO_UNICODE -#define RTGUI_USING_FONT16 -#define RTGUI_USING_FONT12 -/* RTGUI_USING_FONTHZ is not set */ -/* RTGUI_IMAGE_XPM is not set */ -#define RTGUI_IMAGE_JPEG_NONE -/* RTGUI_IMAGE_JPEG is not set */ -/* RTGUI_IMAGE_TJPGD is not set */ -/* RTGUI_IMAGE_PNG_NONE is not set */ -/* RTGUI_IMAGE_PNG is not set */ -#define RTGUI_IMAGE_LODEPNG -/* RTGUI_IMAGE_BMP is not set */ -#define RTGUI_IMAGE_CONTAINER -/* RTGUI_USING_DEMO is not set */ /* VBUS(Virtual Software BUS) */ @@ -227,8 +209,20 @@ /* system packages */ -/* PKG_USING_PARTITION is not set */ +/* RT-Thread GUI Engine */ + +/* PKG_USING_GUIENGINE is not set */ +/* GUIENGINE_IMAGE_JPEG_NONE is not set */ +/* GUIENGINE_IMAGE_JPEG is not set */ +/* GUIENGINE_IMAGE_TJPGD is not set */ +/* GUIENGINE_IMAGE_PNG_NONE is not set */ +/* GUIENGINE_IMAGE_PNG is not set */ +/* GUIENGINE_IMAGE_LODEPNG is not set */ +/* PKG_USING_GUIENGINE_V200 is not set */ +/* PKG_USING_GUIENGINE_LATEST_VERSION is not set */ /* PKG_USING_PERSIMMON is not set */ +/* PKG_USING_LWEXT4 is not set */ +/* PKG_USING_PARTITION is not set */ /* PKG_USING_SQLITE is not set */ /* PKG_USING_RTI is not set */ @@ -254,6 +248,7 @@ /* PKG_USING_WLAN_WICED is not set */ /* PKG_USING_COAP is not set */ +/* PKG_USING_NOPOLL is not set */ /* security packages */ @@ -281,10 +276,12 @@ /* PKG_USING_FASTLZ is not set */ /* PKG_USING_MINILZO is not set */ +/* PKG_USING_QUICKLZ is not set */ /* example package: hello */ /* PKG_USING_HELLO is not set */ +/* PKG_USING_MULTIBUTTON is not set */ #define SOC_IMXRT1052 #define RT_USING_UART #define RT_USING_UART1 diff --git a/bsp/lpc54608-LPCXpresso/.config b/bsp/lpc54608-LPCXpresso/.config index 32a3443c99..d068098ac8 100644 --- a/bsp/lpc54608-LPCXpresso/.config +++ b/bsp/lpc54608-LPCXpresso/.config @@ -203,7 +203,7 @@ CONFIG_LWIP_SO_RCVBUF=1 # # RT-Thread UI Engine # -# CONFIG_RT_USING_GUIENGINE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # VBUS(Virtual Software BUS) diff --git a/bsp/lpc54608-LPCXpresso/drivers/board.c b/bsp/lpc54608-LPCXpresso/drivers/board.c index 4dbf510c16..d2cec9a4fa 100644 --- a/bsp/lpc54608-LPCXpresso/drivers/board.c +++ b/bsp/lpc54608-LPCXpresso/drivers/board.c @@ -80,7 +80,7 @@ void rt_hw_board_init() #endif } -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include #include "drv_lcd.h" diff --git a/bsp/lpc54608-LPCXpresso/rtconfig.h b/bsp/lpc54608-LPCXpresso/rtconfig.h index 0be2c4e347..63554c932e 100644 --- a/bsp/lpc54608-LPCXpresso/rtconfig.h +++ b/bsp/lpc54608-LPCXpresso/rtconfig.h @@ -187,7 +187,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* VBUS(Virtual Software BUS) */ diff --git a/bsp/qemu-vexpress-a9/.config b/bsp/qemu-vexpress-a9/.config index 1734cf89ac..c517fdd8f7 100644 --- a/bsp/qemu-vexpress-a9/.config +++ b/bsp/qemu-vexpress-a9/.config @@ -18,8 +18,10 @@ CONFIG_RT_USING_OVERFLOW_CHECK=y CONFIG_RT_DEBUG_INIT=0 CONFIG_RT_DEBUG_THREAD=0 CONFIG_RT_USING_HOOK=y -CONFIG_IDLE_THREAD_STACK_SIZE=256 -# CONFIG_RT_USING_TIMER_SOFT is not set +CONFIG_IDLE_THREAD_STACK_SIZE=512 +CONFIG_RT_USING_TIMER_SOFT=y +CONFIG_RT_TIMER_THREAD_PRIO=4 +CONFIG_RT_TIMER_THREAD_STACK_SIZE=1024 # # Inter-Thread communication @@ -40,6 +42,7 @@ CONFIG_RT_USING_MEMHEAP=y CONFIG_RT_USING_SMALL_MEM=y # CONFIG_RT_USING_SLAB is not set # CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +CONFIG_RT_USING_MEMTRACE=y CONFIG_RT_USING_HEAP=y # @@ -57,17 +60,20 @@ CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" # CONFIG_RT_USING_COMPONENTS_INIT=y CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 # # C++ features # -# CONFIG_RT_USING_CPLUSPLUS is not set +CONFIG_RT_USING_CPLUSPLUS=y # # Command shell # CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_THREAD_NAME="tshell" CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 CONFIG_FINSH_USING_SYMTAB=y CONFIG_FINSH_USING_DESCRIPTION=y CONFIG_FINSH_THREAD_PRIORITY=20 @@ -93,14 +99,14 @@ CONFIG_RT_USING_DFS_ELMFAT=y # CONFIG_RT_DFS_ELM_CODE_PAGE=437 CONFIG_RT_DFS_ELM_WORD_ACCESS=y -CONFIG_RT_DFS_ELM_USE_LFN_0=y +# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set # CONFIG_RT_DFS_ELM_USE_LFN_1 is not set # CONFIG_RT_DFS_ELM_USE_LFN_2 is not set -# CONFIG_RT_DFS_ELM_USE_LFN_3 is not set -CONFIG_RT_DFS_ELM_USE_LFN=0 +CONFIG_RT_DFS_ELM_USE_LFN_3=y +CONFIG_RT_DFS_ELM_USE_LFN=3 CONFIG_RT_DFS_ELM_MAX_LFN=255 CONFIG_RT_DFS_ELM_DRIVES=2 -CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=512 +CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=4096 # CONFIG_RT_DFS_ELM_USE_ERASE is not set CONFIG_RT_DFS_ELM_REENTRANT=y CONFIG_RT_USING_DFS_DEVFS=y @@ -110,6 +116,7 @@ CONFIG_HAVE_SYS_SELECT_H=y CONFIG_RT_USING_DFS_ROMFS=y CONFIG_RT_USING_DFS_RAMFS=y # CONFIG_RT_USING_DFS_UFFS is not set +# CONFIG_RT_USING_DFS_JFFS2 is not set # CONFIG_RT_USING_DFS_NFS is not set # @@ -119,6 +126,7 @@ CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_USING_SERIAL=y # CONFIG_RT_USING_CAN is not set # CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set CONFIG_RT_USING_I2C=y CONFIG_RT_USING_I2C_BITOPS=y CONFIG_RT_USING_PIN=y @@ -126,8 +134,11 @@ CONFIG_RT_USING_MTD_NOR=y CONFIG_RT_USING_MTD_NAND=y CONFIG_RT_MTD_NAND_DEBUG=y CONFIG_RT_USING_RTC=y +# CONFIG_RT_USING_SOFT_RTC is not set +# CONFIG_RTC_SYNC_USING_NTP is not set CONFIG_RT_USING_SDIO=y CONFIG_RT_USING_SPI=y +CONFIG_RT_USING_SPI_MSD=y CONFIG_RT_USING_SFUD=y CONFIG_RT_SFUD_USING_SFDP=y CONFIG_RT_SFUD_USING_FLASH_INFO_TABLE=y @@ -153,6 +164,7 @@ CONFIG_RT_USING_PTHREADS=y CONFIG_RT_USING_POSIX=y CONFIG_RT_USING_POSIX_MMAP=y CONFIG_RT_USING_POSIX_TERMIOS=y +CONFIG_RT_USING_POSIX_AIO=y # # Network stack @@ -172,7 +184,6 @@ CONFIG_RT_LWIP_DNS=y CONFIG_RT_LWIP_DHCP=y CONFIG_IP_SOF_BROADCAST=1 CONFIG_IP_SOF_BROADCAST_RECV=1 -# CONFIG_LWIP_USING_DHCPD is not set # # Static IPv4 Address @@ -184,8 +195,7 @@ CONFIG_RT_LWIP_UDP=y CONFIG_RT_LWIP_TCP=y # CONFIG_RT_LWIP_RAW is not set # CONFIG_RT_LWIP_PPP is not set -# CONFIG_RT_LWIP_PPPOE is not set -# CONFIG_RT_LWIP_PPPOS is not set +CONFIG_RT_MEMP_NUM_NETCONN=8 CONFIG_RT_LWIP_PBUF_NUM=16 CONFIG_RT_LWIP_RAW_PCB_NUM=4 CONFIG_RT_LWIP_UDP_PCB_NUM=4 @@ -205,37 +215,34 @@ CONFIG_SO_REUSE=1 CONFIG_LWIP_SO_RCVTIMEO=1 CONFIG_LWIP_SO_SNDTIMEO=1 CONFIG_LWIP_SO_RCVBUF=1 +# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=0 # # Modbus master and slave stack # # CONFIG_RT_USING_MODBUS is not set -# CONFIG_RT_USING_NETUTILS is not set - -# -# RT-Thread UI Engine -# -CONFIG_RT_USING_GUIENGINE=y -CONFIG_RTGUI_NAME_MAX=16 -CONFIG_RTGUI_USING_TTF=y -CONFIG_RTGUI_USING_FONT16=y -CONFIG_RTGUI_USING_FONT12=y -# CONFIG_RTGUI_USING_FONTHZ is not set -# CONFIG_RTGUI_IMAGE_XPM is not set -# CONFIG_RTGUI_IMAGE_JPEG_NONE is not set -# CONFIG_RTGUI_IMAGE_JPEG is not set -CONFIG_RTGUI_IMAGE_TJPGD=y -# CONFIG_RTGUI_IMAGE_PNG_NONE is not set -# CONFIG_RTGUI_IMAGE_PNG is not set -CONFIG_RTGUI_IMAGE_LODEPNG=y -# CONFIG_RTGUI_IMAGE_BMP is not set -CONFIG_RTGUI_IMAGE_CONTAINER=y +# CONFIG_LWIP_USING_DHCPD is not set # # VBUS(Virtual Software BUS) # # CONFIG_RT_USING_VBUS is not set +# +# Utilities +# +CONFIG_RT_USING_LOGTRACE=y +CONFIG_LOG_TRACE_MAX_SESSION=16 +# CONFIG_LOG_TRACE_USING_LEVEL_NOTRACE is not set +# CONFIG_LOG_TRACE_USING_LEVEL_ERROR is not set +# CONFIG_LOG_TRACE_USING_LEVEL_WARNING is not set +CONFIG_LOG_TRACE_USING_LEVEL_INFO=y +# CONFIG_LOG_TRACE_USING_LEVEL_VERBOSE is not set +# CONFIG_LOG_TRACE_USING_LEVEL_DEBUG is not set +# CONFIG_LOG_TRACE_USING_MEMLOG is not set +# CONFIG_RT_USING_RYM is not set + # # RT-Thread online packages # @@ -243,6 +250,20 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y # # system packages # + +# +# RT-Thread GUI Engine +# +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_GUIENGINE_IMAGE_JPEG_NONE is not set +# CONFIG_GUIENGINE_IMAGE_JPEG is not set +# CONFIG_GUIENGINE_IMAGE_TJPGD is not set +# CONFIG_GUIENGINE_IMAGE_PNG_NONE is not set +# CONFIG_GUIENGINE_IMAGE_PNG is not set +# CONFIG_GUIENGINE_IMAGE_LODEPNG is not set +# CONFIG_PKG_USING_GUIENGINE_V200 is not set +# CONFIG_PKG_USING_GUIENGINE_LATEST_VERSION is not set +# CONFIG_PKG_USING_LWEXT4 is not set # CONFIG_PKG_USING_PARTITION is not set # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set @@ -255,14 +276,33 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y # CONFIG_PKG_USING_MONGOOSE is not set # CONFIG_PKG_USING_WEBTERMINAL is not set # CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set # CONFIG_PKG_USING_EZXML is not set # CONFIG_PKG_USING_NANOPB is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set # # security packages # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_libsodium is not set +# CONFIG_PKG_USING_TINYCRYPT is not set # # language packages @@ -273,6 +313,7 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y # # multimedia packages # +# CONFIG_PKG_USING_OPENMV is not set # # tools packages @@ -280,30 +321,20 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y # CONFIG_PKG_USING_CMBACKTRACE is not set # CONFIG_PKG_USING_EASYLOGGER is not set # CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_IPERF is not set # # miscellaneous packages # # CONFIG_PKG_USING_FASTLZ is not set # CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set # # example package: hello # # CONFIG_PKG_USING_HELLO is not set - -# -# Privated Packages of RealThread -# -# CONFIG_PKG_USING_CODEC is not set -# CONFIG_PKG_USING_PLAYER is not set - -# -# Network Utilities -# -# CONFIG_PKG_USING_MDNS is not set -# CONFIG_PKG_USING_UPNP is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set CONFIG_RT_USING_UART0=y CONFIG_RT_USING_UART1=y -CONFIG_BSP_DRV_CLCD=y CONFIG_BSP_DRV_EMAC=y diff --git a/bsp/qemu-vexpress-a9/applications/lcd_init.c b/bsp/qemu-vexpress-a9/applications/lcd_init.c index c5f07faead..6a870440a8 100644 --- a/bsp/qemu-vexpress-a9/applications/lcd_init.c +++ b/bsp/qemu-vexpress-a9/applications/lcd_init.c @@ -1,6 +1,6 @@ #include -#if defined(RT_USING_RTGUI) || defined(RT_USING_GUIENGINE) +#if defined(RT_USING_RTGUI) || defined(PKG_USING_GUIENGINE) #include int lcd_init(void) diff --git a/bsp/qemu-vexpress-a9/drivers/Kconfig b/bsp/qemu-vexpress-a9/drivers/Kconfig index 1af4cffc49..a103b68352 100644 --- a/bsp/qemu-vexpress-a9/drivers/Kconfig +++ b/bsp/qemu-vexpress-a9/drivers/Kconfig @@ -8,7 +8,7 @@ config RT_USING_UART1 config BSP_DRV_CLCD bool "CLCD driver" - depends on RT_USING_GUIENGINE + depends on PKG_USING_GUIENGINE default y config BSP_DRV_EMAC diff --git a/bsp/qemu-vexpress-a9/drivers/drv_keyboard.c b/bsp/qemu-vexpress-a9/drivers/drv_keyboard.c index c0d139aaba..f89146e3f1 100644 --- a/bsp/qemu-vexpress-a9/drivers/drv_keyboard.c +++ b/bsp/qemu-vexpress-a9/drivers/drv_keyboard.c @@ -15,7 +15,7 @@ #define KEYBOARD_ADDRESS (0x10006000) #define KEYBOARD_IRQ_NUM (IRQ_VEXPRESS_A9_KBD) -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include #include diff --git a/bsp/qemu-vexpress-a9/drivers/drv_mouse.c b/bsp/qemu-vexpress-a9/drivers/drv_mouse.c index 3b9b5fd774..9983a2b4ed 100644 --- a/bsp/qemu-vexpress-a9/drivers/drv_mouse.c +++ b/bsp/qemu-vexpress-a9/drivers/drv_mouse.c @@ -25,7 +25,7 @@ #define MOUSE_BUTTON_MOVE (0x40) #define MOUSE_BUTTON_WHELL (0x80) -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include #include diff --git a/bsp/qemu-vexpress-a9/qemu.sh b/bsp/qemu-vexpress-a9/qemu.sh old mode 100644 new mode 100755 diff --git a/bsp/qemu-vexpress-a9/rtconfig.h b/bsp/qemu-vexpress-a9/rtconfig.h index c6cd1939be..82ad0c8169 100644 --- a/bsp/qemu-vexpress-a9/rtconfig.h +++ b/bsp/qemu-vexpress-a9/rtconfig.h @@ -18,8 +18,10 @@ #define RT_DEBUG_INIT 0 #define RT_DEBUG_THREAD 0 #define RT_USING_HOOK -#define IDLE_THREAD_STACK_SIZE 256 -/* RT_USING_TIMER_SOFT is not set */ +#define IDLE_THREAD_STACK_SIZE 512 +#define RT_USING_TIMER_SOFT +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 1024 /* Inter-Thread communication */ @@ -38,6 +40,7 @@ #define RT_USING_SMALL_MEM /* RT_USING_SLAB is not set */ /* RT_USING_MEMHEAP_AS_HEAP is not set */ +#define RT_USING_MEMTRACE #define RT_USING_HEAP /* Kernel Device Object */ @@ -53,15 +56,18 @@ #define RT_USING_COMPONENTS_INIT #define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 /* C++ features */ -/* RT_USING_CPLUSPLUS is not set */ +#define RT_USING_CPLUSPLUS /* Command shell */ #define RT_USING_FINSH +#define FINSH_THREAD_NAME "tshell" #define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 #define FINSH_USING_SYMTAB #define FINSH_USING_DESCRIPTION #define FINSH_THREAD_PRIORITY 20 @@ -85,14 +91,14 @@ #define RT_DFS_ELM_CODE_PAGE 437 #define RT_DFS_ELM_WORD_ACCESS -#define RT_DFS_ELM_USE_LFN_0 +/* RT_DFS_ELM_USE_LFN_0 is not set */ /* RT_DFS_ELM_USE_LFN_1 is not set */ /* RT_DFS_ELM_USE_LFN_2 is not set */ -/* RT_DFS_ELM_USE_LFN_3 is not set */ -#define RT_DFS_ELM_USE_LFN 0 +#define RT_DFS_ELM_USE_LFN_3 +#define RT_DFS_ELM_USE_LFN 3 #define RT_DFS_ELM_MAX_LFN 255 #define RT_DFS_ELM_DRIVES 2 -#define RT_DFS_ELM_MAX_SECTOR_SIZE 512 +#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096 /* RT_DFS_ELM_USE_ERASE is not set */ #define RT_DFS_ELM_REENTRANT #define RT_USING_DFS_DEVFS @@ -102,6 +108,7 @@ #define RT_USING_DFS_ROMFS #define RT_USING_DFS_RAMFS /* RT_USING_DFS_UFFS is not set */ +/* RT_USING_DFS_JFFS2 is not set */ /* RT_USING_DFS_NFS is not set */ /* Device Drivers */ @@ -110,6 +117,7 @@ #define RT_USING_SERIAL /* RT_USING_CAN is not set */ /* RT_USING_HWTIMER is not set */ +/* RT_USING_CPUTIME is not set */ #define RT_USING_I2C #define RT_USING_I2C_BITOPS #define RT_USING_PIN @@ -117,8 +125,11 @@ #define RT_USING_MTD_NAND #define RT_MTD_NAND_DEBUG #define RT_USING_RTC +/* RT_USING_SOFT_RTC is not set */ +/* RTC_SYNC_USING_NTP is not set */ #define RT_USING_SDIO #define RT_USING_SPI +#define RT_USING_SPI_MSD #define RT_USING_SFUD #define RT_SFUD_USING_SFDP #define RT_SFUD_USING_FLASH_INFO_TABLE @@ -142,6 +153,7 @@ #define RT_USING_POSIX #define RT_USING_POSIX_MMAP #define RT_USING_POSIX_TERMIOS +#define RT_USING_POSIX_AIO /* Network stack */ @@ -158,7 +170,6 @@ #define RT_LWIP_DHCP #define IP_SOF_BROADCAST 1 #define IP_SOF_BROADCAST_RECV 1 -/* LWIP_USING_DHCPD is not set */ /* Static IPv4 Address */ @@ -169,8 +180,7 @@ #define RT_LWIP_TCP /* RT_LWIP_RAW is not set */ /* RT_LWIP_PPP is not set */ -/* RT_LWIP_PPPOE is not set */ -/* RT_LWIP_PPPOS is not set */ +#define RT_MEMP_NUM_NETCONN 8 #define RT_LWIP_PBUF_NUM 16 #define RT_LWIP_RAW_PCB_NUM 4 #define RT_LWIP_UDP_PCB_NUM 4 @@ -190,38 +200,47 @@ #define LWIP_SO_RCVTIMEO 1 #define LWIP_SO_SNDTIMEO 1 #define LWIP_SO_RCVBUF 1 +/* RT_LWIP_NETIF_LOOPBACK is not set */ +#define LWIP_NETIF_LOOPBACK 0 /* Modbus master and slave stack */ /* RT_USING_MODBUS is not set */ -/* RT_USING_NETUTILS is not set */ - -/* RT-Thread UI Engine */ - -#define RT_USING_GUIENGINE -#define RTGUI_NAME_MAX 16 -#define RTGUI_USING_TTF -#define RTGUI_USING_FONT16 -#define RTGUI_USING_FONT12 -/* RTGUI_USING_FONTHZ is not set */ -/* RTGUI_IMAGE_XPM is not set */ -/* RTGUI_IMAGE_JPEG_NONE is not set */ -/* RTGUI_IMAGE_JPEG is not set */ -#define RTGUI_IMAGE_TJPGD -/* RTGUI_IMAGE_PNG_NONE is not set */ -/* RTGUI_IMAGE_PNG is not set */ -#define RTGUI_IMAGE_LODEPNG -/* RTGUI_IMAGE_BMP is not set */ -#define RTGUI_IMAGE_CONTAINER +/* LWIP_USING_DHCPD is not set */ /* VBUS(Virtual Software BUS) */ /* RT_USING_VBUS is not set */ +/* Utilities */ + +#define RT_USING_LOGTRACE +#define LOG_TRACE_MAX_SESSION 16 +/* LOG_TRACE_USING_LEVEL_NOTRACE is not set */ +/* LOG_TRACE_USING_LEVEL_ERROR is not set */ +/* LOG_TRACE_USING_LEVEL_WARNING is not set */ +#define LOG_TRACE_USING_LEVEL_INFO +/* LOG_TRACE_USING_LEVEL_VERBOSE is not set */ +/* LOG_TRACE_USING_LEVEL_DEBUG is not set */ +/* LOG_TRACE_USING_MEMLOG is not set */ +/* RT_USING_RYM is not set */ + /* RT-Thread online packages */ /* system packages */ +/* RT-Thread GUI Engine */ + +/* PKG_USING_GUIENGINE is not set */ +/* GUIENGINE_IMAGE_JPEG_NONE is not set */ +/* GUIENGINE_IMAGE_JPEG is not set */ +/* GUIENGINE_IMAGE_TJPGD is not set */ +/* GUIENGINE_IMAGE_PNG_NONE is not set */ +/* GUIENGINE_IMAGE_PNG is not set */ +/* GUIENGINE_IMAGE_LODEPNG is not set */ +/* PKG_USING_GUIENGINE_V200 is not set */ +/* PKG_USING_GUIENGINE_LATEST_VERSION is not set */ +/* PKG_USING_LWEXT4 is not set */ /* PKG_USING_PARTITION is not set */ /* PKG_USING_SQLITE is not set */ /* PKG_USING_RTI is not set */ @@ -233,13 +252,28 @@ /* PKG_USING_MONGOOSE is not set */ /* PKG_USING_WEBTERMINAL is not set */ /* PKG_USING_CJSON is not set */ +/* PKG_USING_LJSON is not set */ /* PKG_USING_EZXML is not set */ /* PKG_USING_NANOPB is not set */ +/* PKG_USING_GAGENT_CLOUD is not set */ + +/* Wi-Fi */ + +/* Marvell WiFi */ + +/* PKG_USING_WLANMARVELL is not set */ + +/* Wiced WiFi */ + +/* PKG_USING_WLAN_WICED is not set */ +/* PKG_USING_COAP is not set */ +/* PKG_USING_NOPOLL is not set */ /* security packages */ /* PKG_USING_MBEDTLS is not set */ /* PKG_USING_libsodium is not set */ +/* PKG_USING_TINYCRYPT is not set */ /* language packages */ @@ -248,33 +282,27 @@ /* multimedia packages */ +/* PKG_USING_OPENMV is not set */ + /* tools packages */ /* PKG_USING_CMBACKTRACE is not set */ /* PKG_USING_EASYLOGGER is not set */ /* PKG_USING_SYSTEMVIEW is not set */ +/* PKG_USING_IPERF is not set */ /* miscellaneous packages */ /* PKG_USING_FASTLZ is not set */ /* PKG_USING_MINILZO is not set */ +/* PKG_USING_QUICKLZ is not set */ /* example package: hello */ /* PKG_USING_HELLO is not set */ - -/* Privated Packages of RealThread */ - -/* PKG_USING_CODEC is not set */ -/* PKG_USING_PLAYER is not set */ - -/* Network Utilities */ - -/* PKG_USING_MDNS is not set */ -/* PKG_USING_UPNP is not set */ +/* PKG_USING_MULTIBUTTON is not set */ #define RT_USING_UART0 #define RT_USING_UART1 -#define BSP_DRV_CLCD #define BSP_DRV_EMAC #endif diff --git a/bsp/simulator/.config b/bsp/simulator/.config index 59895c70dd..be55343ce7 100644 --- a/bsp/simulator/.config +++ b/bsp/simulator/.config @@ -39,6 +39,7 @@ CONFIG_RT_USING_MEMPOOL=y # CONFIG_RT_USING_NOHEAP is not set CONFIG_RT_USING_SMALL_MEM=y # CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMTRACE is not set CONFIG_RT_USING_HEAP=y # @@ -65,7 +66,9 @@ CONFIG_RT_CONSOLE_DEVICE_NAME="console" # Command shell # CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_THREAD_NAME="tshell" CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 CONFIG_FINSH_USING_SYMTAB=y CONFIG_FINSH_USING_DESCRIPTION=y CONFIG_FINSH_THREAD_PRIORITY=20 @@ -106,6 +109,8 @@ CONFIG_RT_USING_DFS_DEVFS=y # CONFIG_RT_USING_DFS_ROMFS is not set # CONFIG_RT_USING_DFS_RAMFS is not set # CONFIG_RT_USING_DFS_UFFS is not set +# CONFIG_RT_USING_DFS_JFFS2 is not set +# CONFIG_RT_USING_DFS_NFS is not set # # Device Drivers @@ -114,6 +119,7 @@ CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_USING_SERIAL=y # CONFIG_RT_USING_CAN is not set # CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set # CONFIG_RT_USING_I2C is not set # CONFIG_RT_USING_PIN is not set # CONFIG_RT_USING_MTD_NOR is not set @@ -150,26 +156,6 @@ CONFIG_RT_USING_SERIAL=y # # CONFIG_RT_USING_MODBUS is not set -# -# RT-Thread UI Engine -# -CONFIG_RT_USING_GUIENGINE=y -CONFIG_RTGUI_NAME_MAX=16 -# CONFIG_RTGUI_USING_TTF is not set -CONFIG_RTGUI_USING_FONT16=y -CONFIG_RTGUI_USING_FONT12=y -# CONFIG_RTGUI_USING_FONTHZ is not set -# CONFIG_RTGUI_IMAGE_XPM is not set -CONFIG_RTGUI_IMAGE_JPEG_NONE=y -# CONFIG_RTGUI_IMAGE_JPEG is not set -# CONFIG_RTGUI_IMAGE_TJPGD is not set -# CONFIG_RTGUI_IMAGE_PNG_NONE is not set -# CONFIG_RTGUI_IMAGE_PNG is not set -CONFIG_RTGUI_IMAGE_LODEPNG=y -# CONFIG_RTGUI_IMAGE_BMP is not set -CONFIG_RTGUI_IMAGE_CONTAINER=y -CONFIG_RTGUI_USING_DEMO=y - # # VBUS(Virtual Software BUS) # @@ -188,8 +174,21 @@ CONFIG_RTGUI_USING_DEMO=y # # system packages # + +# +# RT-Thread GUI Engine +# +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_GUIENGINE_IMAGE_JPEG_NONE is not set +# CONFIG_GUIENGINE_IMAGE_JPEG is not set +# CONFIG_GUIENGINE_IMAGE_TJPGD is not set +# CONFIG_GUIENGINE_IMAGE_PNG_NONE is not set +# CONFIG_GUIENGINE_IMAGE_PNG is not set +# CONFIG_GUIENGINE_IMAGE_LODEPNG is not set +# CONFIG_PKG_USING_GUIENGINE_V200 is not set +# CONFIG_PKG_USING_GUIENGINE_LATEST_VERSION is not set +# CONFIG_PKG_USING_LWEXT4 is not set # CONFIG_PKG_USING_PARTITION is not set -CONFIG_RT_USING_PERSIMMON_EXAMPLE=y # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set @@ -201,8 +200,26 @@ CONFIG_RT_USING_PERSIMMON_EXAMPLE=y # CONFIG_PKG_USING_MONGOOSE is not set # CONFIG_PKG_USING_WEBTERMINAL is not set # CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set # CONFIG_PKG_USING_EZXML is not set # CONFIG_PKG_USING_NANOPB is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set # # security packages @@ -237,24 +254,11 @@ CONFIG_PKG_USING_FASTLZ=y CONFIG_PKG_FASTLZ_PATH="/packages/misc/fastlz" CONFIG_PKG_FASTLZ_VER="v1.0.0" # CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set # # example package: hello # # CONFIG_PKG_USING_HELLO is not set - -# -# Privated Packages of RealThread -# -# CONFIG_PKG_USING_CODEC is not set -# CONFIG_PKG_USING_PLAYER is not set -CONFIG_PKG_USING_PERSIMMON_SRC=y -CONFIG_PKG_PERSIMMON_SRC_PATH="/realthread-packages/persimmon-src" -# CONFIG_PKG_USING_PERSIMMON_SRC_v1_0_0 is not set -CONFIG_PKG_USING_PERSIMMON_LATEST_VERSION=y -CONFIG_PKG_PERSIMMON_SRC_VER="latest_version" - -# -# Network Utilities -# +# CONFIG_PKG_USING_MULTIBUTTON is not set CONFIG_RT_USING_DFS_WINSHAREDIR=y diff --git a/bsp/simulator/applications/application.c b/bsp/simulator/applications/application.c index 2ffa50f197..56c8f6f565 100755 --- a/bsp/simulator/applications/application.c +++ b/bsp/simulator/applications/application.c @@ -36,7 +36,7 @@ void rt_init_thread_entry(void *parameter) platform_init(); mnt_init(); -#if defined(RT_USING_GUIENGINE) && defined(RTGUI_USING_DEMO) +#if defined(PKG_USING_GUIENGINE) && defined(RTGUI_USING_DEMO) { extern int rt_gui_demo_init(void); rt_gui_demo_init(); diff --git a/bsp/simulator/applications/platform.c b/bsp/simulator/applications/platform.c index c77e336844..3ee4a59e88 100644 --- a/bsp/simulator/applications/platform.c +++ b/bsp/simulator/applications/platform.c @@ -29,7 +29,7 @@ int platform_init(void) #endif /* RT_USING_DFS */ -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE { extern void rt_hw_sdl_start(void); extern int rtgui_system_server_init(void); diff --git a/bsp/simulator/drivers/SConscript b/bsp/simulator/drivers/SConscript index 8a769dfd81..593a3fdfdc 100644 --- a/bsp/simulator/drivers/SConscript +++ b/bsp/simulator/drivers/SConscript @@ -8,7 +8,7 @@ LIBPATH = [] CPPPATH = [cwd] # remove no need file. -if GetDepend('RT_USING_GUIENGINE') == False: +if GetDepend('PKG_USING_GUIENGINE') == False: SrcRemove(src, 'sdl_fb.c') else: LIBS.append('SDL2') diff --git a/bsp/simulator/rtconfig.h b/bsp/simulator/rtconfig.h index 778e3f7d61..995ab93c3b 100755 --- a/bsp/simulator/rtconfig.h +++ b/bsp/simulator/rtconfig.h @@ -37,6 +37,7 @@ /* RT_USING_NOHEAP is not set */ #define RT_USING_SMALL_MEM /* RT_USING_SLAB is not set */ +/* RT_USING_MEMTRACE is not set */ #define RT_USING_HEAP /* Kernel Device Object */ @@ -59,7 +60,9 @@ /* Command shell */ #define RT_USING_FINSH +#define FINSH_THREAD_NAME "tshell" #define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 #define FINSH_USING_SYMTAB #define FINSH_USING_DESCRIPTION #define FINSH_THREAD_PRIORITY 20 @@ -98,6 +101,8 @@ /* RT_USING_DFS_ROMFS is not set */ /* RT_USING_DFS_RAMFS is not set */ /* RT_USING_DFS_UFFS is not set */ +/* RT_USING_DFS_JFFS2 is not set */ +/* RT_USING_DFS_NFS is not set */ /* Device Drivers */ @@ -105,6 +110,7 @@ #define RT_USING_SERIAL /* RT_USING_CAN is not set */ /* RT_USING_HWTIMER is not set */ +/* RT_USING_CPUTIME is not set */ /* RT_USING_I2C is not set */ /* RT_USING_PIN is not set */ /* RT_USING_MTD_NOR is not set */ @@ -135,25 +141,6 @@ /* RT_USING_MODBUS is not set */ -/* RT-Thread UI Engine */ - -#define RT_USING_GUIENGINE -#define RTGUI_NAME_MAX 16 -/* RTGUI_USING_TTF is not set */ -#define RTGUI_USING_FONT16 -#define RTGUI_USING_FONT12 -/* RTGUI_USING_FONTHZ is not set */ -/* RTGUI_IMAGE_XPM is not set */ -#define RTGUI_IMAGE_JPEG_NONE -/* RTGUI_IMAGE_JPEG is not set */ -/* RTGUI_IMAGE_TJPGD is not set */ -/* RTGUI_IMAGE_PNG_NONE is not set */ -/* RTGUI_IMAGE_PNG is not set */ -#define RTGUI_IMAGE_LODEPNG -/* RTGUI_IMAGE_BMP is not set */ -#define RTGUI_IMAGE_CONTAINER -#define RTGUI_USING_DEMO - /* VBUS(Virtual Software BUS) */ /* RT_USING_VBUS is not set */ @@ -167,8 +154,19 @@ /* system packages */ +/* RT-Thread GUI Engine */ + +/* PKG_USING_GUIENGINE is not set */ +/* GUIENGINE_IMAGE_JPEG_NONE is not set */ +/* GUIENGINE_IMAGE_JPEG is not set */ +/* GUIENGINE_IMAGE_TJPGD is not set */ +/* GUIENGINE_IMAGE_PNG_NONE is not set */ +/* GUIENGINE_IMAGE_PNG is not set */ +/* GUIENGINE_IMAGE_LODEPNG is not set */ +/* PKG_USING_GUIENGINE_V200 is not set */ +/* PKG_USING_GUIENGINE_LATEST_VERSION is not set */ +/* PKG_USING_LWEXT4 is not set */ /* PKG_USING_PARTITION is not set */ -#define RT_USING_PERSIMMON_EXAMPLE /* PKG_USING_SQLITE is not set */ /* PKG_USING_RTI is not set */ @@ -179,8 +177,22 @@ /* PKG_USING_MONGOOSE is not set */ /* PKG_USING_WEBTERMINAL is not set */ /* PKG_USING_CJSON is not set */ +/* PKG_USING_LJSON is not set */ /* PKG_USING_EZXML is not set */ /* PKG_USING_NANOPB is not set */ +/* PKG_USING_GAGENT_CLOUD is not set */ + +/* Wi-Fi */ + +/* Marvell WiFi */ + +/* PKG_USING_WLANMARVELL is not set */ + +/* Wiced WiFi */ + +/* PKG_USING_WLAN_WICED is not set */ +/* PKG_USING_COAP is not set */ +/* PKG_USING_NOPOLL is not set */ /* security packages */ @@ -208,21 +220,12 @@ #define PKG_USING_FASTLZ /* PKG_USING_MINILZO is not set */ +/* PKG_USING_QUICKLZ is not set */ /* example package: hello */ /* PKG_USING_HELLO is not set */ - -/* Privated Packages of RealThread */ - -/* PKG_USING_CODEC is not set */ -/* PKG_USING_PLAYER is not set */ -#define PKG_USING_PERSIMMON_SRC -/* PKG_USING_PERSIMMON_SRC_v1_0_0 is not set */ -#define PKG_USING_PERSIMMON_LATEST_VERSION - -/* Network Utilities */ - +/* PKG_USING_MULTIBUTTON is not set */ #define RT_USING_DFS_WINSHAREDIR #include "rtconfig_project.h" diff --git a/bsp/simulator/rtconfig.py b/bsp/simulator/rtconfig.py index 915cc3f686..8eae0db7fa 100755 --- a/bsp/simulator/rtconfig.py +++ b/bsp/simulator/rtconfig.py @@ -50,7 +50,7 @@ if PLATFORM == 'gcc': DEVICE = ' -ffunction-sections -fdata-sections' DEVICE = ' ' - CFLAGS = DEVICE + ' -I/usr/include -w -D_REENTRANT' + CFLAGS = DEVICE + ' -I/usr/include -w -D_REENTRANT -D_LINUX -DHAVE_SYS_SIGNALS' AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' #LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-linux.map -lpthread' LFLAGS = DEVICE + ' -Wl,-Map=rtthread-linux.map -pthread -T gcc.ld' diff --git a/bsp/stm32f10x-HAL/.config b/bsp/stm32f10x-HAL/.config index 7e3efbba4e..3f583f6b34 100644 --- a/bsp/stm32f10x-HAL/.config +++ b/bsp/stm32f10x-HAL/.config @@ -133,7 +133,7 @@ CONFIG_RT_USING_LIBC=y # # RT-Thread UI Engine # -# CONFIG_RT_USING_GUIENGINE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # VBUS(Virtual Software BUS) diff --git a/bsp/stm32f10x-HAL/rtconfig.h b/bsp/stm32f10x-HAL/rtconfig.h index e2d8272849..ad9537c495 100644 --- a/bsp/stm32f10x-HAL/rtconfig.h +++ b/bsp/stm32f10x-HAL/rtconfig.h @@ -118,7 +118,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* VBUS(Virtual Software BUS) */ diff --git a/bsp/stm32f411-nucleo/.config b/bsp/stm32f411-nucleo/.config index 890c03689d..62a0c96cf5 100644 --- a/bsp/stm32f411-nucleo/.config +++ b/bsp/stm32f411-nucleo/.config @@ -118,7 +118,7 @@ CONFIG_RT_USING_SERIAL=y # # RT-Thread UI Engine # -# CONFIG_RT_USING_GUIENGINE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # RT-Thread online packages diff --git a/bsp/stm32f411-nucleo/rtconfig.h b/bsp/stm32f411-nucleo/rtconfig.h index ba3344ba8e..c86234f7ac 100644 --- a/bsp/stm32f411-nucleo/rtconfig.h +++ b/bsp/stm32f411-nucleo/rtconfig.h @@ -104,7 +104,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* RT-Thread online packages */ diff --git a/bsp/stm32f429-apollo/.config b/bsp/stm32f429-apollo/.config index dad78988de..72469c5cd4 100644 --- a/bsp/stm32f429-apollo/.config +++ b/bsp/stm32f429-apollo/.config @@ -216,7 +216,7 @@ CONFIG_LWIP_SO_RCVBUF=1 # # RT-Thread UI Engine # -# CONFIG_RT_USING_GUIENGINE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # VBUS(Virtual Software BUS) diff --git a/bsp/stm32f429-apollo/applications/SConscript b/bsp/stm32f429-apollo/applications/SConscript index 52ec60a5c6..85254548e0 100644 --- a/bsp/stm32f429-apollo/applications/SConscript +++ b/bsp/stm32f429-apollo/applications/SConscript @@ -9,7 +9,7 @@ startup.c """) # add UI engine demo. -if GetDepend('RT_USING_GUIENGINE'): +if GetDepend('PKG_USING_GUIENGINE'): src += ['rtgui_demo.c'] group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) diff --git a/bsp/stm32f429-apollo/applications/application.c b/bsp/stm32f429-apollo/applications/application.c index 527e2d0178..8d1f447ef6 100644 --- a/bsp/stm32f429-apollo/applications/application.c +++ b/bsp/stm32f429-apollo/applications/application.c @@ -41,7 +41,7 @@ #include #endif -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include "rtgui_demo.h" #include #endif @@ -123,7 +123,7 @@ void rt_init_thread_entry(void* parameter) #endif /* DFS */ -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE { rt_device_t device; diff --git a/bsp/stm32f429-apollo/applications/rtgui_demo.c b/bsp/stm32f429-apollo/applications/rtgui_demo.c index 1a6d2ca7c5..9d6d34dafa 100644 --- a/bsp/stm32f429-apollo/applications/rtgui_demo.c +++ b/bsp/stm32f429-apollo/applications/rtgui_demo.c @@ -30,7 +30,7 @@ #define DEBUG_PRINTF(...) #endif -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE struct rtgui_win *main_win; rt_bool_t dc_event_handler(struct rtgui_object *object, rtgui_event_t *event); @@ -125,4 +125,4 @@ int rt_gui_demo_init(void) return 0; } -#endif /* RT_USING_GUIENGINE */ +#endif /* PKG_USING_GUIENGINE */ diff --git a/bsp/stm32f429-apollo/drivers/SConscript b/bsp/stm32f429-apollo/drivers/SConscript index 2d5c94929e..0c33d26474 100644 --- a/bsp/stm32f429-apollo/drivers/SConscript +++ b/bsp/stm32f429-apollo/drivers/SConscript @@ -36,7 +36,7 @@ if GetDepend('RT_USING_SFUD'): src += ['drv_spi_flash.c'] # add lcd drivers. -if GetDepend('RT_USING_GUIENGINE'): +if GetDepend('PKG_USING_GUIENGINE'): src += ['drv_lcd.c'] CPPPATH = [cwd] diff --git a/bsp/stm32f429-apollo/rtconfig.h b/bsp/stm32f429-apollo/rtconfig.h index 1fdf504e14..d00626e4de 100644 --- a/bsp/stm32f429-apollo/rtconfig.h +++ b/bsp/stm32f429-apollo/rtconfig.h @@ -200,7 +200,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* VBUS(Virtual Software BUS) */ diff --git a/bsp/stm32f429-armfly/applications/application.c b/bsp/stm32f429-armfly/applications/application.c index 47bc16bb98..c4752b0140 100644 --- a/bsp/stm32f429-armfly/applications/application.c +++ b/bsp/stm32f429-armfly/applications/application.c @@ -26,7 +26,7 @@ #include #endif -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include "rtgui_demo.h" #include #endif @@ -63,7 +63,7 @@ void rt_init_thread_entry(void* parameter) #endif /* DFS */ -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE { rt_device_t device; diff --git a/bsp/stm32f429-armfly/applications/rtgui_demo.c b/bsp/stm32f429-armfly/applications/rtgui_demo.c index 73888b152f..d4ef2dba44 100644 --- a/bsp/stm32f429-armfly/applications/rtgui_demo.c +++ b/bsp/stm32f429-armfly/applications/rtgui_demo.c @@ -24,7 +24,7 @@ #define DEBUG_PRINTF(...) #endif -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include #include #include @@ -123,4 +123,4 @@ int rt_gui_demo_init(void) return 0; } -#endif /* RT_USING_GUIENGINE */ +#endif /* PKG_USING_GUIENGINE */ diff --git a/bsp/stm32f429-armfly/rtconfig.h b/bsp/stm32f429-armfly/rtconfig.h index 61fe8dc13a..9db7ec719c 100644 --- a/bsp/stm32f429-armfly/rtconfig.h +++ b/bsp/stm32f429-armfly/rtconfig.h @@ -69,7 +69,7 @@ /* SECTION: RTGUI support */ /* using RTGUI support */ -#define RT_USING_GUIENGINE +// #define PKG_USING_GUIENGINE /* name length of RTGUI object */ #define RTGUI_NAME_MAX 16 diff --git a/bsp/stm32f429-disco/rtconfig.h b/bsp/stm32f429-disco/rtconfig.h index cc3186f14e..4deb208d87 100644 --- a/bsp/stm32f429-disco/rtconfig.h +++ b/bsp/stm32f429-disco/rtconfig.h @@ -104,7 +104,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* RT-Thread online packages */ diff --git a/bsp/stm32f4xx-HAL/.config b/bsp/stm32f4xx-HAL/.config index 09a901ddfd..8be1f1789f 100644 --- a/bsp/stm32f4xx-HAL/.config +++ b/bsp/stm32f4xx-HAL/.config @@ -129,7 +129,7 @@ CONFIG_RT_USING_PIN=y # # RT-Thread UI Engine # -# CONFIG_RT_USING_GUIENGINE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # VBUS(Virtual Software BUS) diff --git a/bsp/stm32f4xx-HAL/rtconfig.h b/bsp/stm32f4xx-HAL/rtconfig.h index ac95bd6b18..8fe06d171c 100644 --- a/bsp/stm32f4xx-HAL/rtconfig.h +++ b/bsp/stm32f4xx-HAL/rtconfig.h @@ -114,7 +114,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* VBUS(Virtual Software BUS) */ diff --git a/bsp/stm32l475-iot-disco/applications/application.c b/bsp/stm32l475-iot-disco/applications/application.c index c9300df630..b66b0dd93e 100644 --- a/bsp/stm32l475-iot-disco/applications/application.c +++ b/bsp/stm32l475-iot-disco/applications/application.c @@ -39,7 +39,7 @@ #include #endif -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include "rtgui_demo.h" #include #endif diff --git a/bsp/stm32l476-nucleo/.config b/bsp/stm32l476-nucleo/.config index 96ce350fc4..1994854762 100644 --- a/bsp/stm32l476-nucleo/.config +++ b/bsp/stm32l476-nucleo/.config @@ -123,7 +123,7 @@ CONFIG_RT_USING_PIN=y # # RT-Thread UI Engine # -# CONFIG_RT_USING_GUIENGINE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # VBUS(Virtual Software BUS) diff --git a/bsp/stm32l476-nucleo/applications/application.c b/bsp/stm32l476-nucleo/applications/application.c index 2ccb6cbb01..165c389334 100644 --- a/bsp/stm32l476-nucleo/applications/application.c +++ b/bsp/stm32l476-nucleo/applications/application.c @@ -48,7 +48,7 @@ #include #endif -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include "rtgui_demo.h" #include #endif diff --git a/bsp/stm32l476-nucleo/rtconfig.h b/bsp/stm32l476-nucleo/rtconfig.h index 6feeae870b..3ed36b5bcd 100644 --- a/bsp/stm32l476-nucleo/rtconfig.h +++ b/bsp/stm32l476-nucleo/rtconfig.h @@ -109,7 +109,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* VBUS(Virtual Software BUS) */ diff --git a/bsp/tm4c129x/.config b/bsp/tm4c129x/.config index 04c0fec6a1..65b5b05742 100644 --- a/bsp/tm4c129x/.config +++ b/bsp/tm4c129x/.config @@ -161,7 +161,7 @@ CONFIG_LWIP_SO_RCVBUF=1 # # RT-Thread UI Engine # -# CONFIG_RT_USING_GUIENGINE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # RT-Thread online packages diff --git a/bsp/tm4c129x/rtconfig.h b/bsp/tm4c129x/rtconfig.h index 4e197eea80..d9e6e561c9 100644 --- a/bsp/tm4c129x/rtconfig.h +++ b/bsp/tm4c129x/rtconfig.h @@ -146,7 +146,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* RT-Thread online packages */ diff --git a/bsp/v2m-mps2/.config b/bsp/v2m-mps2/.config index c64c468dc6..93ae20e65e 100644 --- a/bsp/v2m-mps2/.config +++ b/bsp/v2m-mps2/.config @@ -136,7 +136,7 @@ CONFIG_RT_USING_LIBC=y # # RT-Thread UI Engine # -# CONFIG_RT_USING_GUIENGINE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # VBUS(Virtual Software BUS) diff --git a/bsp/v2m-mps2/rtconfig.h b/bsp/v2m-mps2/rtconfig.h index 3700ea92aa..58e1ed58e3 100644 --- a/bsp/v2m-mps2/rtconfig.h +++ b/bsp/v2m-mps2/rtconfig.h @@ -121,7 +121,7 @@ /* RT-Thread UI Engine */ -/* RT_USING_GUIENGINE is not set */ +/* PKG_USING_GUIENGINE is not set */ /* VBUS(Virtual Software BUS) */ diff --git a/bsp/x1000/.config b/bsp/x1000/.config index ffb6b42cda..e6698d1d90 100644 --- a/bsp/x1000/.config +++ b/bsp/x1000/.config @@ -39,6 +39,7 @@ CONFIG_RT_USING_MEMPOOL=y # CONFIG_RT_USING_NOHEAP is not set CONFIG_RT_USING_SMALL_MEM=y # CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMTRACE is not set CONFIG_RT_USING_HEAP=y # @@ -58,6 +59,7 @@ CONFIG_ARCH_MIPS_XBURST=y # CONFIG_RT_USING_COMPONENTS_INIT=y CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 # # C++ features @@ -68,7 +70,9 @@ CONFIG_RT_USING_USER_MAIN=y # Command shell # CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_THREAD_NAME="tshell" CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 CONFIG_FINSH_USING_SYMTAB=y CONFIG_FINSH_USING_DESCRIPTION=y CONFIG_FINSH_THREAD_PRIORITY=20 @@ -109,6 +113,7 @@ CONFIG_RT_USING_DFS_DEVFS=y # CONFIG_RT_USING_DFS_ROMFS is not set # CONFIG_RT_USING_DFS_RAMFS is not set # CONFIG_RT_USING_DFS_UFFS is not set +# CONFIG_RT_USING_DFS_JFFS2 is not set # CONFIG_RT_USING_DFS_NFS is not set # @@ -118,6 +123,7 @@ CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_USING_SERIAL=y # CONFIG_RT_USING_CAN is not set # CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set CONFIG_RT_USING_I2C=y CONFIG_RT_USING_I2C_BITOPS=y CONFIG_RT_USING_PIN=y @@ -191,33 +197,14 @@ CONFIG_SO_REUSE=1 CONFIG_LWIP_SO_RCVTIMEO=1 CONFIG_LWIP_SO_SNDTIMEO=1 CONFIG_LWIP_SO_RCVBUF=1 +# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=0 # # Modbus master and slave stack # # CONFIG_RT_USING_MODBUS is not set # CONFIG_LWIP_USING_DHCPD is not set -# CONFIG_RT_USING_NETUTILS is not set - -# -# RT-Thread UI Engine -# -CONFIG_RT_USING_GUIENGINE=y -CONFIG_RTGUI_NAME_MAX=16 -# CONFIG_RTGUI_USING_TTF is not set -CONFIG_RTGUI_USING_FONT16=y -CONFIG_RTGUI_USING_FONT12=y -# CONFIG_RTGUI_USING_FONTHZ is not set -# CONFIG_RTGUI_IMAGE_XPM is not set -CONFIG_RTGUI_IMAGE_JPEG_NONE=y -# CONFIG_RTGUI_IMAGE_JPEG is not set -# CONFIG_RTGUI_IMAGE_TJPGD is not set -# CONFIG_RTGUI_IMAGE_PNG_NONE is not set -# CONFIG_RTGUI_IMAGE_PNG is not set -CONFIG_RTGUI_IMAGE_LODEPNG=y -# CONFIG_RTGUI_IMAGE_BMP is not set -CONFIG_RTGUI_IMAGE_CONTAINER=y -CONFIG_RTGUI_USING_DEMO=y # # VBUS(Virtual Software BUS) @@ -230,15 +217,6 @@ CONFIG_RTGUI_USING_DEMO=y # CONFIG_RT_USING_LOGTRACE is not set # CONFIG_RT_USING_RYM is not set -# -# RT-Thread Senior Membership Packages -# - -# -# system packages -# -# CONFIG_PKG_USING_FTL_SRC is not set - # # RT-Thread online packages # @@ -246,8 +224,22 @@ CONFIG_RTGUI_USING_DEMO=y # # system packages # -# CONFIG_PKG_USING_PARTITION is not set + +# +# RT-Thread GUI Engine +# +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_GUIENGINE_IMAGE_JPEG_NONE is not set +# CONFIG_GUIENGINE_IMAGE_JPEG is not set +# CONFIG_GUIENGINE_IMAGE_TJPGD is not set +# CONFIG_GUIENGINE_IMAGE_PNG_NONE is not set +# CONFIG_GUIENGINE_IMAGE_PNG is not set +# CONFIG_GUIENGINE_IMAGE_LODEPNG is not set +# CONFIG_PKG_USING_GUIENGINE_V200 is not set +# CONFIG_PKG_USING_GUIENGINE_LATEST_VERSION is not set # CONFIG_PKG_USING_PERSIMMON is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_PARTITION is not set # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set @@ -259,8 +251,26 @@ CONFIG_RTGUI_USING_DEMO=y # CONFIG_PKG_USING_MONGOOSE is not set # CONFIG_PKG_USING_WEBTERMINAL is not set # CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set # CONFIG_PKG_USING_EZXML is not set # CONFIG_PKG_USING_NANOPB is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set # # security packages @@ -293,11 +303,13 @@ CONFIG_RTGUI_USING_DEMO=y # # CONFIG_PKG_USING_FASTLZ is not set # CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set # # example package: hello # # CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set CONFIG_BOARD_X1000_REALBOARD=y # CONFIG_RT_USING_HARD_FLOAT is not set # CONFIG_BOARD_PHOENIX is not set @@ -314,17 +326,12 @@ CONFIG_RT_MMCSD_STACK_SIZE=2048 CONFIG_RT_USING_I2C0=y # CONFIG_RT_USING_I2C1 is not set # CONFIG_RT_USING_I2C2 is not set -CONFIG_RT_USING_SLCD=y -CONFIG_RT_USING_ILI9488=y +# CONFIG_RT_USING_ILI9488 is not set # CONFIG_RT_USING_ILI9341 is not set # CONFIG_RT_USING_OTM4802 is not set # CONFIG_RT_USING_TRULY_TFT240240 is not set -CONFIG_RT_USING_TOUCH=y -CONFIG_RT_USING_GT9XX=y +# CONFIG_RT_USING_GT9XX is not set # CONFIG_RT_USING_FT6x06 is not set -CONFIG_RT_TOUCH_THREAD_PRIORITY=10 CONFIG_RT_USING_AUDIO=y CONFIG_RT_USING_ICODEC=y CONFIG_RT_USING_CPU_FFS=y -# CONFIG_WIFI_USING_AP6212 is not set -# CONFIG_WIFI_USING_AP6181 is not set diff --git a/bsp/x1000/drivers/Kconfig b/bsp/x1000/drivers/Kconfig index 6d6d89503a..0f2a2be685 100644 --- a/bsp/x1000/drivers/Kconfig +++ b/bsp/x1000/drivers/Kconfig @@ -60,7 +60,7 @@ if RT_USING_I2C default n endif -if RT_USING_GUIENGINE +if PKG_USING_GUIENGINE config RT_USING_SLCD bool "Using LCD display" default y diff --git a/bsp/x1000/drivers/board.c b/bsp/x1000/drivers/board.c index ec11017ec2..9cce5b883f 100644 --- a/bsp/x1000/drivers/board.c +++ b/bsp/x1000/drivers/board.c @@ -53,7 +53,7 @@ int cplusplus_system_init(void) } #endif -#ifdef RT_USING_GUIENGINE +#ifdef PKG_USING_GUIENGINE #include int lcd_hw_init(void) { diff --git a/bsp/x1000/rtconfig.h b/bsp/x1000/rtconfig.h index a82c195ffc..30ccf9e409 100644 --- a/bsp/x1000/rtconfig.h +++ b/bsp/x1000/rtconfig.h @@ -37,6 +37,7 @@ /* RT_USING_NOHEAP is not set */ #define RT_USING_SMALL_MEM /* RT_USING_SLAB is not set */ +/* RT_USING_MEMTRACE is not set */ #define RT_USING_HEAP /* Kernel Device Object */ @@ -54,6 +55,7 @@ #define RT_USING_COMPONENTS_INIT #define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 /* C++ features */ @@ -62,7 +64,9 @@ /* Command shell */ #define RT_USING_FINSH +#define FINSH_THREAD_NAME "tshell" #define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 #define FINSH_USING_SYMTAB #define FINSH_USING_DESCRIPTION #define FINSH_THREAD_PRIORITY 20 @@ -101,6 +105,7 @@ /* RT_USING_DFS_ROMFS is not set */ /* RT_USING_DFS_RAMFS is not set */ /* RT_USING_DFS_UFFS is not set */ +/* RT_USING_DFS_JFFS2 is not set */ /* RT_USING_DFS_NFS is not set */ /* Device Drivers */ @@ -109,6 +114,7 @@ #define RT_USING_SERIAL /* RT_USING_CAN is not set */ /* RT_USING_HWTIMER is not set */ +/* RT_USING_CPUTIME is not set */ #define RT_USING_I2C #define RT_USING_I2C_BITOPS #define RT_USING_PIN @@ -176,31 +182,13 @@ #define LWIP_SO_RCVTIMEO 1 #define LWIP_SO_SNDTIMEO 1 #define LWIP_SO_RCVBUF 1 +/* RT_LWIP_NETIF_LOOPBACK is not set */ +#define LWIP_NETIF_LOOPBACK 0 /* Modbus master and slave stack */ /* RT_USING_MODBUS is not set */ /* LWIP_USING_DHCPD is not set */ -/* RT_USING_NETUTILS is not set */ - -/* RT-Thread UI Engine */ - -#define RT_USING_GUIENGINE -#define RTGUI_NAME_MAX 16 -/* RTGUI_USING_TTF is not set */ -#define RTGUI_USING_FONT16 -#define RTGUI_USING_FONT12 -/* RTGUI_USING_FONTHZ is not set */ -/* RTGUI_IMAGE_XPM is not set */ -#define RTGUI_IMAGE_JPEG_NONE -/* RTGUI_IMAGE_JPEG is not set */ -/* RTGUI_IMAGE_TJPGD is not set */ -/* RTGUI_IMAGE_PNG_NONE is not set */ -/* RTGUI_IMAGE_PNG is not set */ -#define RTGUI_IMAGE_LODEPNG -/* RTGUI_IMAGE_BMP is not set */ -#define RTGUI_IMAGE_CONTAINER -#define RTGUI_USING_DEMO /* VBUS(Virtual Software BUS) */ @@ -211,18 +199,24 @@ /* RT_USING_LOGTRACE is not set */ /* RT_USING_RYM is not set */ -/* RT-Thread Senior Membership Packages */ - -/* system packages */ - -/* PKG_USING_FTL_SRC is not set */ - /* RT-Thread online packages */ /* system packages */ -/* PKG_USING_PARTITION is not set */ +/* RT-Thread GUI Engine */ + +/* PKG_USING_GUIENGINE is not set */ +/* GUIENGINE_IMAGE_JPEG_NONE is not set */ +/* GUIENGINE_IMAGE_JPEG is not set */ +/* GUIENGINE_IMAGE_TJPGD is not set */ +/* GUIENGINE_IMAGE_PNG_NONE is not set */ +/* GUIENGINE_IMAGE_PNG is not set */ +/* GUIENGINE_IMAGE_LODEPNG is not set */ +/* PKG_USING_GUIENGINE_V200 is not set */ +/* PKG_USING_GUIENGINE_LATEST_VERSION is not set */ /* PKG_USING_PERSIMMON is not set */ +/* PKG_USING_LWEXT4 is not set */ +/* PKG_USING_PARTITION is not set */ /* PKG_USING_SQLITE is not set */ /* PKG_USING_RTI is not set */ @@ -233,8 +227,22 @@ /* PKG_USING_MONGOOSE is not set */ /* PKG_USING_WEBTERMINAL is not set */ /* PKG_USING_CJSON is not set */ +/* PKG_USING_LJSON is not set */ /* PKG_USING_EZXML is not set */ /* PKG_USING_NANOPB is not set */ +/* PKG_USING_GAGENT_CLOUD is not set */ + +/* Wi-Fi */ + +/* Marvell WiFi */ + +/* PKG_USING_WLANMARVELL is not set */ + +/* Wiced WiFi */ + +/* PKG_USING_WLAN_WICED is not set */ +/* PKG_USING_COAP is not set */ +/* PKG_USING_NOPOLL is not set */ /* security packages */ @@ -262,10 +270,12 @@ /* PKG_USING_FASTLZ is not set */ /* PKG_USING_MINILZO is not set */ +/* PKG_USING_QUICKLZ is not set */ /* example package: hello */ /* PKG_USING_HELLO is not set */ +/* PKG_USING_MULTIBUTTON is not set */ #define BOARD_X1000_REALBOARD /* RT_USING_HARD_FLOAT is not set */ /* BOARD_PHOENIX is not set */ @@ -282,19 +292,14 @@ #define RT_USING_I2C0 /* RT_USING_I2C1 is not set */ /* RT_USING_I2C2 is not set */ -#define RT_USING_SLCD -#define RT_USING_ILI9488 +/* RT_USING_ILI9488 is not set */ /* RT_USING_ILI9341 is not set */ /* RT_USING_OTM4802 is not set */ /* RT_USING_TRULY_TFT240240 is not set */ -#define RT_USING_TOUCH -#define RT_USING_GT9XX +/* RT_USING_GT9XX is not set */ /* RT_USING_FT6x06 is not set */ -#define RT_TOUCH_THREAD_PRIORITY 10 #define RT_USING_AUDIO #define RT_USING_ICODEC #define RT_USING_CPU_FFS -/* WIFI_USING_AP6212 is not set */ -/* WIFI_USING_AP6181 is not set */ #endif diff --git a/components/Kconfig b/components/Kconfig index 188cb3dd9f..ed5c137d37 100644 --- a/components/Kconfig +++ b/components/Kconfig @@ -28,8 +28,6 @@ source "$RTT_DIR/components/libc/Kconfig" source "$RTT_DIR/components/net/Kconfig" -source "$RTT_DIR/components/gui/Kconfig" - source "$RTT_DIR/components/vbus/Kconfig" source "$RTT_DIR/components/utilities/Kconfig" diff --git a/components/gui/Kconfig b/components/gui/Kconfig deleted file mode 100644 index 0c907f397e..0000000000 --- a/components/gui/Kconfig +++ /dev/null @@ -1,87 +0,0 @@ -menu "RT-Thread UI Engine" - -config RT_USING_GUIENGINE - bool "Enable UI Engine" - default n - -if RT_USING_GUIENGINE - -config RTGUI_NAME_MAX - int "The maximal size of name in GUI engine" - default 16 - -config RTGUI_USING_TTF - bool "Support TrueType font" - default n - -if RTGUI_USING_TTF - config UTF8_TO_UNICODE - bool "Support UTF8 to UNICODE" - default n -endif - -config RTGUI_USING_FONT16 - bool "Support 16 height font" - default y - -config RTGUI_USING_FONT12 - bool "Support 12 height font" - default y - -config RTGUI_USING_FONTHZ - bool "Support Chinese font" - default n - -if RTGUI_USING_FONTHZ -config RTGUI_USING_HZ_BMP - bool "Use bitmap Chinese font" - default n -endif - -config RTGUI_IMAGE_XPM - bool "Support XPM image format" - default n - -choice - prompt "JPEG image format" - default RTGUI_IMAGE_JPEG_NONE - - config RTGUI_IMAGE_JPEG_NONE - bool "No" - - config RTGUI_IMAGE_JPEG - bool "with libjpeg" - - config RTGUI_IMAGE_TJPGD - bool "with TJpgDec(Tiny JPEG Decompressor)" -endchoice - -choice - prompt "PNG image format" - default RTGUI_IMAGE_LODEPNG - - config RTGUI_IMAGE_PNG_NONE - bool "No" - - config RTGUI_IMAGE_PNG - bool "with libpng" - - config RTGUI_IMAGE_LODEPNG - bool "with LodePNG" -endchoice - -config RTGUI_IMAGE_BMP - bool "Support BMP image format" - default n - -config RTGUI_IMAGE_CONTAINER - bool "Use image container" - default y - -config RTGUI_USING_DEMO - bool "Enable the example of UI Engine" - default n - -endif - -endmenu diff --git a/components/gui/README.md b/components/gui/README.md deleted file mode 100644 index b585db0ced..0000000000 --- a/components/gui/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# RT-Thread GUI Engine - - diff --git a/components/gui/SConscript b/components/gui/SConscript deleted file mode 100644 index 831c77fb1c..0000000000 --- a/components/gui/SConscript +++ /dev/null @@ -1,16 +0,0 @@ -# RT-Thread building script for bridge - -import os -from building import * - -cwd = GetCurrentDir() -objs = [] -list = os.listdir(cwd) - -if GetDepend('RT_USING_GUIENGINE'): - for d in list: - path = os.path.join(cwd, d) - if os.path.isfile(os.path.join(path, 'SConscript')): - objs = objs + SConscript(os.path.join(d, 'SConscript')) - -Return('objs') diff --git a/components/gui/example/SConscript b/components/gui/example/SConscript deleted file mode 100644 index 2981093bfc..0000000000 --- a/components/gui/example/SConscript +++ /dev/null @@ -1,10 +0,0 @@ -from building import * - -cwd = GetCurrentDir() -src = Glob('*.c') - -CPPPATH = [cwd] - -group = DefineGroup('gui_demo', src, depend = ['RT_USING_GUIENGINE', 'RTGUI_USING_DEMO'], CPPPATH = CPPPATH) - -Return('group') diff --git a/components/gui/example/gui_demo.c b/components/gui/example/gui_demo.c deleted file mode 100644 index 901e21ff9f..0000000000 --- a/components/gui/example/gui_demo.c +++ /dev/null @@ -1,126 +0,0 @@ -#include - -#if defined(RT_USING_GUIENGINE) && defined(RTGUI_USING_DEMO) - -#include -#include -#include -#include -#include -#include - -extern const unsigned char _picture_png[]; -extern int _picture_png_length_get(void); - -static rt_bool_t show_demo(struct rtgui_win *win) -{ - struct rtgui_dc *dc; - rtgui_rect_t rect; - - dc = rtgui_dc_begin_drawing(RTGUI_WIDGET(win)); - if (dc == RT_NULL) - { - rt_kprintf("dc is null \n"); - return RT_FALSE; - } - rtgui_dc_get_rect(dc, &rect); - - /* draw circular */ - { - rt_int16_t x, y, r; - - x = rect.x2 / 2 / 2; - y = rect.y2 / 2 / 2; - r = x > y ? y : x; - r -= y / 10; - rtgui_dc_draw_circle(dc, x, y, r); - } - - /* draw image */ - { - rtgui_rect_t draw_rect; - struct rtgui_image *img; - - img = rtgui_image_create_from_mem("png", _picture_png, _picture_png_length_get(), RT_TRUE); - if (img != RT_NULL) - { - draw_rect.x1 = rect.x2 / 2 + (rect.x2 / 2 - img->w) / 2; - draw_rect.y1 = (rect.y2 / 2 - img->h) / 2; - draw_rect.x2 = draw_rect.x1 + img->w; - draw_rect.y2 = draw_rect.y1 + img->h; - rtgui_image_blit(img, dc, &draw_rect); - } - } - - /* draw text */ - { - rtgui_color_t fc; - rtgui_rect_t draw_rect; - char *text_buf = "Hello RT-thread!"; - - fc = RTGUI_DC_FC(dc); - RTGUI_DC_FC(dc) = RED; - draw_rect.x1 = rect.x2 * 2 / 5; - draw_rect.y1 = rect.y2 * 3 / 4; - draw_rect.x2 = rect.x2; - draw_rect.y2 = rect.y2; - rtgui_dc_draw_text(dc, text_buf, &draw_rect); - RTGUI_DC_FC(dc) = fc; - } - - rtgui_dc_end_drawing(dc, RT_TRUE); - - return RT_TRUE; -} - -rt_bool_t dc_event_handler(struct rtgui_object *object, rtgui_event_t *event) -{ - rt_bool_t err; - struct rtgui_win *win = RTGUI_WIN(object); - - err = rtgui_win_event_handler(RTGUI_OBJECT(win), event); - if (event->type == RTGUI_EVENT_PAINT) - show_demo(win); - - return err; -} - -static void rt_gui_demo_entry(void *parameter) -{ - struct rtgui_win *main_win; - struct rtgui_app *app; - - /* create gui app */ - app = rtgui_app_create("gui_demo"); - if (app == RT_NULL) - return; - - main_win = rtgui_mainwin_create(RT_NULL, "UiWindow", RTGUI_WIN_STYLE_NO_TITLE); - if (main_win == RT_NULL) - { - rtgui_app_destroy(app); - return; - } - rtgui_object_set_event_handler(RTGUI_OBJECT(main_win), dc_event_handler); - rtgui_win_show(main_win, RT_FALSE); - - rtgui_app_run(app); - rtgui_win_destroy(main_win); - rtgui_app_destroy(app); -} - -int rt_gui_demo_init(void) -{ - rt_thread_t tid; - - tid = rt_thread_create("mygui", - rt_gui_demo_entry, RT_NULL, - 2048, 25, 10); - - if (tid != RT_NULL) - rt_thread_startup(tid); - - return 0; -} -INIT_APP_EXPORT(rt_gui_demo_init); -#endif /* RT_USING_RTGUI */ \ No newline at end of file diff --git a/components/gui/example/resources.c b/components/gui/example/resources.c deleted file mode 100644 index 99fd805c1d..0000000000 --- a/components/gui/example/resources.c +++ /dev/null @@ -1,1400 +0,0 @@ -const unsigned char _picture_png[] = { - 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52, - 0x00,0x00,0x00,0xbe,0x00,0x00,0x00,0x4a,0x08,0x06,0x00,0x00,0x00,0x05,0x77,0xee, - 0x92,0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b, - 0x13,0x01,0x00,0x9a,0x9c,0x18,0x00,0x00,0x0a,0x4d,0x69,0x43,0x43,0x50,0x50,0x68, - 0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x49,0x43,0x43,0x20,0x70,0x72,0x6f,0x66, - 0x69,0x6c,0x65,0x00,0x00,0x78,0xda,0x9d,0x53,0x77,0x58,0x93,0xf7,0x16,0x3e,0xdf, - 0xf7,0x65,0x0f,0x56,0x42,0xd8,0xf0,0xb1,0x97,0x6c,0x81,0x00,0x22,0x23,0xac,0x08, - 0xc8,0x10,0x59,0xa2,0x10,0x92,0x00,0x61,0x84,0x10,0x12,0x40,0xc5,0x85,0x88,0x0a, - 0x56,0x14,0x15,0x11,0x9c,0x48,0x55,0xc4,0x82,0xd5,0x0a,0x48,0x9d,0x88,0xe2,0xa0, - 0x28,0xb8,0x67,0x41,0x8a,0x88,0x5a,0x8b,0x55,0x5c,0x38,0xee,0x1f,0xdc,0xa7,0xb5, - 0x7d,0x7a,0xef,0xed,0xed,0xfb,0xd7,0xfb,0xbc,0xe7,0x9c,0xe7,0xfc,0xce,0x79,0xcf, - 0x0f,0x80,0x11,0x12,0x26,0x91,0xe6,0xa2,0x6a,0x00,0x39,0x52,0x85,0x3c,0x3a,0xd8, - 0x1f,0x8f,0x4f,0x48,0xc4,0xc9,0xbd,0x80,0x02,0x15,0x48,0xe0,0x04,0x20,0x10,0xe6, - 0xcb,0xc2,0x67,0x05,0xc5,0x00,0x00,0xf0,0x03,0x79,0x78,0x7e,0x74,0xb0,0x3f,0xfc, - 0x01,0xaf,0x6f,0x00,0x02,0x00,0x70,0xd5,0x2e,0x24,0x12,0xc7,0xe1,0xff,0x83,0xba, - 0x50,0x26,0x57,0x00,0x20,0x91,0x00,0xe0,0x22,0x12,0xe7,0x0b,0x01,0x90,0x52,0x00, - 0xc8,0x2e,0x54,0xc8,0x14,0x00,0xc8,0x18,0x00,0xb0,0x53,0xb3,0x64,0x0a,0x00,0x94, - 0x00,0x00,0x6c,0x79,0x7c,0x42,0x22,0x00,0xaa,0x0d,0x00,0xec,0xf4,0x49,0x3e,0x05, - 0x00,0xd8,0xa9,0x93,0xdc,0x17,0x00,0xd8,0xa2,0x1c,0xa9,0x08,0x00,0x8d,0x01,0x00, - 0x99,0x28,0x47,0x24,0x02,0x40,0xbb,0x00,0x60,0x55,0x81,0x52,0x2c,0x02,0xc0,0xc2, - 0x00,0xa0,0xac,0x40,0x22,0x2e,0x04,0xc0,0xae,0x01,0x80,0x59,0xb6,0x32,0x47,0x02, - 0x80,0xbd,0x05,0x00,0x76,0x8e,0x58,0x90,0x0f,0x40,0x60,0x00,0x80,0x99,0x42,0x2c, - 0xcc,0x00,0x20,0x38,0x02,0x00,0x43,0x1e,0x13,0xcd,0x03,0x20,0x4c,0x03,0xa0,0x30, - 0xd2,0xbf,0xe0,0xa9,0x5f,0x70,0x85,0xb8,0x48,0x01,0x00,0xc0,0xcb,0x95,0xcd,0x97, - 0x4b,0xd2,0x33,0x14,0xb8,0x95,0xd0,0x1a,0x77,0xf2,0xf0,0xe0,0xe2,0x21,0xe2,0xc2, - 0x6c,0xb1,0x42,0x61,0x17,0x29,0x10,0x66,0x09,0xe4,0x22,0x9c,0x97,0x9b,0x23,0x13, - 0x48,0xe7,0x03,0x4c,0xce,0x0c,0x00,0x00,0x1a,0xf9,0xd1,0xc1,0xfe,0x38,0x3f,0x90, - 0xe7,0xe6,0xe4,0xe1,0xe6,0x66,0xe7,0x6c,0xef,0xf4,0xc5,0xa2,0xfe,0x6b,0xf0,0x6f, - 0x22,0x3e,0x21,0xf1,0xdf,0xfe,0xbc,0x8c,0x02,0x04,0x00,0x10,0x4e,0xcf,0xef,0xda, - 0x5f,0xe5,0xe5,0xd6,0x03,0x70,0xc7,0x01,0xb0,0x75,0xbf,0x6b,0xa9,0x5b,0x00,0xda, - 0x56,0x00,0x68,0xdf,0xf9,0x5d,0x33,0xdb,0x09,0xa0,0x5a,0x0a,0xd0,0x7a,0xf9,0x8b, - 0x79,0x38,0xfc,0x40,0x1e,0x9e,0xa1,0x50,0xc8,0x3c,0x1d,0x1c,0x0a,0x0b,0x0b,0xed, - 0x25,0x62,0xa1,0xbd,0x30,0xe3,0x8b,0x3e,0xff,0x33,0xe1,0x6f,0xe0,0x8b,0x7e,0xf6, - 0xfc,0x40,0x1e,0xfe,0xdb,0x7a,0xf0,0x00,0x71,0x9a,0x40,0x99,0xad,0xc0,0xa3,0x83, - 0xfd,0x71,0x61,0x6e,0x76,0xae,0x52,0x8e,0xe7,0xcb,0x04,0x42,0x31,0x6e,0xf7,0xe7, - 0x23,0xfe,0xc7,0x85,0x7f,0xfd,0x8e,0x29,0xd1,0xe2,0x34,0xb1,0x5c,0x2c,0x15,0x8a, - 0xf1,0x58,0x89,0xb8,0x50,0x22,0x4d,0xc7,0x79,0xb9,0x52,0x91,0x44,0x21,0xc9,0x95, - 0xe2,0x12,0xe9,0x7f,0x32,0xf1,0x1f,0x96,0xfd,0x09,0x93,0x77,0x0d,0x00,0xac,0x86, - 0x4f,0xc0,0x4e,0xb6,0x07,0xb5,0xcb,0x6c,0xc0,0x7e,0xee,0x01,0x02,0x8b,0x0e,0x58, - 0xd2,0x76,0x00,0x40,0x7e,0xf3,0x2d,0x8c,0x1a,0x0b,0x91,0x00,0x10,0x67,0x34,0x32, - 0x79,0xf7,0x00,0x00,0x93,0xbf,0xf9,0x8f,0x40,0x2b,0x01,0x00,0xcd,0x97,0xa4,0xe3, - 0x00,0x00,0xbc,0xe8,0x18,0x5c,0xa8,0x94,0x17,0x4c,0xc6,0x08,0x00,0x00,0x44,0xa0, - 0x81,0x2a,0xb0,0x41,0x07,0x0c,0xc1,0x14,0xac,0xc0,0x0e,0x9c,0xc1,0x1d,0xbc,0xc0, - 0x17,0x02,0x61,0x06,0x44,0x40,0x0c,0x24,0xc0,0x3c,0x10,0x42,0x06,0xe4,0x80,0x1c, - 0x0a,0xa1,0x18,0x96,0x41,0x19,0x54,0xc0,0x3a,0xd8,0x04,0xb5,0xb0,0x03,0x1a,0xa0, - 0x11,0x9a,0xe1,0x10,0xb4,0xc1,0x31,0x38,0x0d,0xe7,0xe0,0x12,0x5c,0x81,0xeb,0x70, - 0x17,0x06,0x60,0x18,0x9e,0xc2,0x18,0xbc,0x86,0x09,0x04,0x41,0xc8,0x08,0x13,0x61, - 0x21,0x3a,0x88,0x11,0x62,0x8e,0xd8,0x22,0xce,0x08,0x17,0x99,0x8e,0x04,0x22,0x61, - 0x48,0x34,0x92,0x80,0xa4,0x20,0xe9,0x88,0x14,0x51,0x22,0xc5,0xc8,0x72,0xa4,0x02, - 0xa9,0x42,0x6a,0x91,0x5d,0x48,0x23,0xf2,0x2d,0x72,0x14,0x39,0x8d,0x5c,0x40,0xfa, - 0x90,0xdb,0xc8,0x20,0x32,0x8a,0xfc,0x8a,0xbc,0x47,0x31,0x94,0x81,0xb2,0x51,0x03, - 0xd4,0x02,0x75,0x40,0xb9,0xa8,0x1f,0x1a,0x8a,0xc6,0xa0,0x73,0xd1,0x74,0x34,0x0f, - 0x5d,0x80,0x96,0xa2,0x6b,0xd1,0x1a,0xb4,0x1e,0x3d,0x80,0xb6,0xa2,0xa7,0xd1,0x4b, - 0xe8,0x75,0x74,0x00,0x7d,0x8a,0x8e,0x63,0x80,0xd1,0x31,0x0e,0x66,0x8c,0xd9,0x61, - 0x5c,0x8c,0x87,0x45,0x60,0x89,0x58,0x1a,0x26,0xc7,0x16,0x63,0xe5,0x58,0x35,0x56, - 0x8f,0x35,0x63,0x1d,0x58,0x37,0x76,0x15,0x1b,0xc0,0x9e,0x61,0xef,0x08,0x24,0x02, - 0x8b,0x80,0x13,0xec,0x08,0x5e,0x84,0x10,0xc2,0x6c,0x82,0x90,0x90,0x47,0x58,0x4c, - 0x58,0x43,0xa8,0x25,0xec,0x23,0xb4,0x12,0xba,0x08,0x57,0x09,0x83,0x84,0x31,0xc2, - 0x27,0x22,0x93,0xa8,0x4f,0xb4,0x25,0x7a,0x12,0xf9,0xc4,0x78,0x62,0x3a,0xb1,0x90, - 0x58,0x46,0xac,0x26,0xee,0x21,0x1e,0x21,0x9e,0x25,0x5e,0x27,0x0e,0x13,0x5f,0x93, - 0x48,0x24,0x0e,0xc9,0x92,0xe4,0x4e,0x0a,0x21,0x25,0x90,0x32,0x49,0x0b,0x49,0x6b, - 0x48,0xdb,0x48,0x2d,0xa4,0x53,0xa4,0x3e,0xd2,0x10,0x69,0x9c,0x4c,0x26,0xeb,0x90, - 0x6d,0xc9,0xde,0xe4,0x08,0xb2,0x80,0xac,0x20,0x97,0x91,0xb7,0x90,0x0f,0x90,0x4f, - 0x92,0xfb,0xc9,0xc3,0xe4,0xb7,0x14,0x3a,0xc5,0x88,0xe2,0x4c,0x09,0xa2,0x24,0x52, - 0xa4,0x94,0x12,0x4a,0x35,0x65,0x3f,0xe5,0x04,0xa5,0x9f,0x32,0x42,0x99,0xa0,0xaa, - 0x51,0xcd,0xa9,0x9e,0xd4,0x08,0xaa,0x88,0x3a,0x9f,0x5a,0x49,0x6d,0xa0,0x76,0x50, - 0x2f,0x53,0x87,0xa9,0x13,0x34,0x75,0x9a,0x25,0xcd,0x9b,0x16,0x43,0xcb,0xa4,0x2d, - 0xa3,0xd5,0xd0,0x9a,0x69,0x67,0x69,0xf7,0x68,0x2f,0xe9,0x74,0xba,0x09,0xdd,0x83, - 0x1e,0x45,0x97,0xd0,0x97,0xd2,0x6b,0xe8,0x07,0xe9,0xe7,0xe9,0x83,0xf4,0x77,0x0c, - 0x0d,0x86,0x0d,0x83,0xc7,0x48,0x62,0x28,0x19,0x6b,0x19,0x7b,0x19,0xa7,0x18,0xb7, - 0x19,0x2f,0x99,0x4c,0xa6,0x05,0xd3,0x97,0x99,0xc8,0x54,0x30,0xd7,0x32,0x1b,0x99, - 0x67,0x98,0x0f,0x98,0x6f,0x55,0x58,0x2a,0xf6,0x2a,0x7c,0x15,0x91,0xca,0x12,0x95, - 0x3a,0x95,0x56,0x95,0x7e,0x95,0xe7,0xaa,0x54,0x55,0x73,0x55,0x3f,0xd5,0x79,0xaa, - 0x0b,0x54,0xab,0x55,0x0f,0xab,0x5e,0x56,0x7d,0xa6,0x46,0x55,0xb3,0x50,0xe3,0xa9, - 0x09,0xd4,0x16,0xab,0xd5,0xa9,0x1d,0x55,0xbb,0xa9,0x36,0xae,0xce,0x52,0x77,0x52, - 0x8f,0x50,0xcf,0x51,0x5f,0xa3,0xbe,0x5f,0xfd,0x82,0xfa,0x63,0x0d,0xb2,0x86,0x85, - 0x46,0xa0,0x86,0x48,0xa3,0x54,0x63,0xb7,0xc6,0x19,0x8d,0x21,0x16,0xc6,0x32,0x65, - 0xf1,0x58,0x42,0xd6,0x72,0x56,0x03,0xeb,0x2c,0x6b,0x98,0x4d,0x62,0x5b,0xb2,0xf9, - 0xec,0x4c,0x76,0x05,0xfb,0x1b,0x76,0x2f,0x7b,0x4c,0x53,0x43,0x73,0xaa,0x66,0xac, - 0x66,0x91,0x66,0x9d,0xe6,0x71,0xcd,0x01,0x0e,0xc6,0xb1,0xe0,0xf0,0x39,0xd9,0x9c, - 0x4a,0xce,0x21,0xce,0x0d,0xce,0x7b,0x2d,0x03,0x2d,0x3f,0x2d,0xb1,0xd6,0x6a,0xad, - 0x66,0xad,0x7e,0xad,0x37,0xda,0x7a,0xda,0xbe,0xda,0x62,0xed,0x72,0xed,0x16,0xed, - 0xeb,0xda,0xef,0x75,0x70,0x9d,0x40,0x9d,0x2c,0x9d,0xf5,0x3a,0x6d,0x3a,0xf7,0x75, - 0x09,0xba,0x36,0xba,0x51,0xba,0x85,0xba,0xdb,0x75,0xcf,0xea,0x3e,0xd3,0x63,0xeb, - 0x79,0xe9,0x09,0xf5,0xca,0xf5,0x0e,0xe9,0xdd,0xd1,0x47,0xf5,0x6d,0xf4,0xa3,0xf5, - 0x17,0xea,0xef,0xd6,0xef,0xd1,0x1f,0x37,0x30,0x34,0x08,0x36,0x90,0x19,0x6c,0x31, - 0x38,0x63,0xf0,0xcc,0x90,0x63,0xe8,0x6b,0x98,0x69,0xb8,0xd1,0xf0,0x84,0xe1,0xa8, - 0x11,0xcb,0x68,0xba,0x91,0xc4,0x68,0xa3,0xd1,0x49,0xa3,0x27,0xb8,0x26,0xee,0x87, - 0x67,0xe3,0x35,0x78,0x17,0x3e,0x66,0xac,0x6f,0x1c,0x62,0xac,0x34,0xde,0x65,0xdc, - 0x6b,0x3c,0x61,0x62,0x69,0x32,0xdb,0xa4,0xc4,0xa4,0xc5,0xe4,0xbe,0x29,0xcd,0x94, - 0x6b,0x9a,0x66,0xba,0xd1,0xb4,0xd3,0x74,0xcc,0xcc,0xc8,0x2c,0xdc,0xac,0xd8,0xac, - 0xc9,0xec,0x8e,0x39,0xd5,0x9c,0x6b,0x9e,0x61,0xbe,0xd9,0xbc,0xdb,0xfc,0x8d,0x85, - 0xa5,0x45,0x9c,0xc5,0x4a,0x8b,0x36,0x8b,0xc7,0x96,0xda,0x96,0x7c,0xcb,0x05,0x96, - 0x4d,0x96,0xf7,0xac,0x98,0x56,0x3e,0x56,0x79,0x56,0xf5,0x56,0xd7,0xac,0x49,0xd6, - 0x5c,0xeb,0x2c,0xeb,0x6d,0xd6,0x57,0x6c,0x50,0x1b,0x57,0x9b,0x0c,0x9b,0x3a,0x9b, - 0xcb,0xb6,0xa8,0xad,0x9b,0xad,0xc4,0x76,0x9b,0x6d,0xdf,0x14,0xe2,0x14,0x8f,0x29, - 0xd2,0x29,0xf5,0x53,0x6e,0xda,0x31,0xec,0xfc,0xec,0x0a,0xec,0x9a,0xec,0x06,0xed, - 0x39,0xf6,0x61,0xf6,0x25,0xf6,0x6d,0xf6,0xcf,0x1d,0xcc,0x1c,0x12,0x1d,0xd6,0x3b, - 0x74,0x3b,0x7c,0x72,0x74,0x75,0xcc,0x76,0x6c,0x70,0xbc,0xeb,0xa4,0xe1,0x34,0xc3, - 0xa9,0xc4,0xa9,0xc3,0xe9,0x57,0x67,0x1b,0x67,0xa1,0x73,0x9d,0xf3,0x35,0x17,0xa6, - 0x4b,0x90,0xcb,0x12,0x97,0x76,0x97,0x17,0x53,0x6d,0xa7,0x8a,0xa7,0x6e,0x9f,0x7a, - 0xcb,0x95,0xe5,0x1a,0xee,0xba,0xd2,0xb5,0xd3,0xf5,0xa3,0x9b,0xbb,0x9b,0xdc,0xad, - 0xd9,0x6d,0xd4,0xdd,0xcc,0x3d,0xc5,0x7d,0xab,0xfb,0x4d,0x2e,0x9b,0x1b,0xc9,0x5d, - 0xc3,0x3d,0xef,0x41,0xf4,0xf0,0xf7,0x58,0xe2,0x71,0xcc,0xe3,0x9d,0xa7,0x9b,0xa7, - 0xc2,0xf3,0x90,0xe7,0x2f,0x5e,0x76,0x5e,0x59,0x5e,0xfb,0xbd,0x1e,0x4f,0xb3,0x9c, - 0x26,0x9e,0xd6,0x30,0x6d,0xc8,0xdb,0xc4,0x5b,0xe0,0xbd,0xcb,0x7b,0x60,0x3a,0x3e, - 0x3d,0x65,0xfa,0xce,0xe9,0x03,0x3e,0xc6,0x3e,0x02,0x9f,0x7a,0x9f,0x87,0xbe,0xa6, - 0xbe,0x22,0xdf,0x3d,0xbe,0x23,0x7e,0xd6,0x7e,0x99,0x7e,0x07,0xfc,0x9e,0xfb,0x3b, - 0xfa,0xcb,0xfd,0x8f,0xf8,0xbf,0xe1,0x79,0xf2,0x16,0xf1,0x4e,0x05,0x60,0x01,0xc1, - 0x01,0xe5,0x01,0xbd,0x81,0x1a,0x81,0xb3,0x03,0x6b,0x03,0x1f,0x04,0x99,0x04,0xa5, - 0x07,0x35,0x05,0x8d,0x05,0xbb,0x06,0x2f,0x0c,0x3e,0x15,0x42,0x0c,0x09,0x0d,0x59, - 0x1f,0x72,0x93,0x6f,0xc0,0x17,0xf2,0x1b,0xf9,0x63,0x33,0xdc,0x67,0x2c,0x9a,0xd1, - 0x15,0xca,0x08,0x9d,0x15,0x5a,0x1b,0xfa,0x30,0xcc,0x26,0x4c,0x1e,0xd6,0x11,0x8e, - 0x86,0xcf,0x08,0xdf,0x10,0x7e,0x6f,0xa6,0xf9,0x4c,0xe9,0xcc,0xb6,0x08,0x88,0xe0, - 0x47,0x6c,0x88,0xb8,0x1f,0x69,0x19,0x99,0x17,0xf9,0x7d,0x14,0x29,0x2a,0x32,0xaa, - 0x2e,0xea,0x51,0xb4,0x53,0x74,0x71,0x74,0xf7,0x2c,0xd6,0xac,0xe4,0x59,0xfb,0x67, - 0xbd,0x8e,0xf1,0x8f,0xa9,0x8c,0xb9,0x3b,0xdb,0x6a,0xb6,0x72,0x76,0x67,0xac,0x6a, - 0x6c,0x52,0x6c,0x63,0xec,0x9b,0xb8,0x80,0xb8,0xaa,0xb8,0x81,0x78,0x87,0xf8,0x45, - 0xf1,0x97,0x12,0x74,0x13,0x24,0x09,0xed,0x89,0xe4,0xc4,0xd8,0xc4,0x3d,0x89,0xe3, - 0x73,0x02,0xe7,0x6c,0x9a,0x33,0x9c,0xe4,0x9a,0x54,0x96,0x74,0x63,0xae,0xe5,0xdc, - 0xa2,0xb9,0x17,0xe6,0xe9,0xce,0xcb,0x9e,0x77,0x3c,0x59,0x35,0x59,0x90,0x7c,0x38, - 0x85,0x98,0x12,0x97,0xb2,0x3f,0xe5,0x83,0x20,0x42,0x50,0x2f,0x18,0x4f,0xe5,0xa7, - 0x6e,0x4d,0x1d,0x13,0xf2,0x84,0x9b,0x85,0x4f,0x45,0xbe,0xa2,0x8d,0xa2,0x51,0xb1, - 0xb7,0xb8,0x4a,0x3c,0x92,0xe6,0x9d,0x56,0x95,0xf6,0x38,0xdd,0x3b,0x7d,0x43,0xfa, - 0x68,0x86,0x4f,0x46,0x75,0xc6,0x33,0x09,0x4f,0x52,0x2b,0x79,0x91,0x19,0x92,0xb9, - 0x23,0xf3,0x4d,0x56,0x44,0xd6,0xde,0xac,0xcf,0xd9,0x71,0xd9,0x2d,0x39,0x94,0x9c, - 0x94,0x9c,0xa3,0x52,0x0d,0x69,0x96,0xb4,0x2b,0xd7,0x30,0xb7,0x28,0xb7,0x4f,0x66, - 0x2b,0x2b,0x93,0x0d,0xe4,0x79,0xe6,0x6d,0xca,0x1b,0x93,0x87,0xca,0xf7,0xe4,0x23, - 0xf9,0x73,0xf3,0xdb,0x15,0x6c,0x85,0x4c,0xd1,0xa3,0xb4,0x52,0xae,0x50,0x0e,0x16, - 0x4c,0x2f,0xa8,0x2b,0x78,0x5b,0x18,0x5b,0x78,0xb8,0x48,0xbd,0x48,0x5a,0xd4,0x33, - 0xdf,0x66,0xfe,0xea,0xf9,0x23,0x0b,0x82,0x16,0x7c,0xbd,0x90,0xb0,0x50,0xb8,0xb0, - 0xb3,0xd8,0xb8,0x78,0x59,0xf1,0xe0,0x22,0xbf,0x45,0xbb,0x16,0x23,0x8b,0x53,0x17, - 0x77,0x2e,0x31,0x5d,0x52,0xba,0x64,0x78,0x69,0xf0,0xd2,0x7d,0xcb,0x68,0xcb,0xb2, - 0x96,0xfd,0x50,0xe2,0x58,0x52,0x55,0xf2,0x6a,0x79,0xdc,0xf2,0x8e,0x52,0x83,0xd2, - 0xa5,0xa5,0x43,0x2b,0x82,0x57,0x34,0x95,0xa9,0x94,0xc9,0xcb,0x6e,0xae,0xf4,0x5a, - 0xb9,0x63,0x15,0x61,0x95,0x64,0x55,0xef,0x6a,0x97,0xd5,0x5b,0x56,0x7f,0x2a,0x17, - 0x95,0x5f,0xac,0x70,0xac,0xa8,0xae,0xf8,0xb0,0x46,0xb8,0xe6,0xe2,0x57,0x4e,0x5f, - 0xd5,0x7c,0xf5,0x79,0x6d,0xda,0xda,0xde,0x4a,0xb7,0xca,0xed,0xeb,0x48,0xeb,0xa4, - 0xeb,0x6e,0xac,0xf7,0x59,0xbf,0xaf,0x4a,0xbd,0x6a,0x41,0xd5,0xd0,0x86,0xf0,0x0d, - 0xad,0x1b,0xf1,0x8d,0xe5,0x1b,0x5f,0x6d,0x4a,0xde,0x74,0xa1,0x7a,0x6a,0xf5,0x8e, - 0xcd,0xb4,0xcd,0xca,0xcd,0x03,0x35,0x61,0x35,0xed,0x5b,0xcc,0xb6,0xac,0xdb,0xf2, - 0xa1,0x36,0xa3,0xf6,0x7a,0x9d,0x7f,0x5d,0xcb,0x56,0xfd,0xad,0xab,0xb7,0xbe,0xd9, - 0x26,0xda,0xd6,0xbf,0xdd,0x77,0x7b,0xf3,0x0e,0x83,0x1d,0x15,0x3b,0xde,0xef,0x94, - 0xec,0xbc,0xb5,0x2b,0x78,0x57,0x6b,0xbd,0x45,0x7d,0xf5,0x6e,0xd2,0xee,0x82,0xdd, - 0x8f,0x1a,0x62,0x1b,0xba,0xbf,0xe6,0x7e,0xdd,0xb8,0x47,0x77,0x4f,0xc5,0x9e,0x8f, - 0x7b,0xa5,0x7b,0x07,0xf6,0x45,0xef,0xeb,0x6a,0x74,0x6f,0x6c,0xdc,0xaf,0xbf,0xbf, - 0xb2,0x09,0x6d,0x52,0x36,0x8d,0x1e,0x48,0x3a,0x70,0xe5,0x9b,0x80,0x6f,0xda,0x9b, - 0xed,0x9a,0x77,0xb5,0x70,0x5a,0x2a,0x0e,0xc2,0x41,0xe5,0xc1,0x27,0xdf,0xa6,0x7c, - 0x7b,0xe3,0x50,0xe8,0xa1,0xce,0xc3,0xdc,0xc3,0xcd,0xdf,0x99,0x7f,0xb7,0xf5,0x08, - 0xeb,0x48,0x79,0x2b,0xd2,0x3a,0xbf,0x75,0xac,0x2d,0xa3,0x6d,0xa0,0x3d,0xa1,0xbd, - 0xef,0xe8,0x8c,0xa3,0x9d,0x1d,0x5e,0x1d,0x47,0xbe,0xb7,0xff,0x7e,0xef,0x31,0xe3, - 0x63,0x75,0xc7,0x35,0x8f,0x57,0x9e,0xa0,0x9d,0x28,0x3d,0xf1,0xf9,0xe4,0x82,0x93, - 0xe3,0xa7,0x64,0xa7,0x9e,0x9d,0x4e,0x3f,0x3d,0xd4,0x99,0xdc,0x79,0xf7,0x4c,0xfc, - 0x99,0x6b,0x5d,0x51,0x5d,0xbd,0x67,0x43,0xcf,0x9e,0x3f,0x17,0x74,0xee,0x4c,0xb7, - 0x5f,0xf7,0xc9,0xf3,0xde,0xe7,0x8f,0x5d,0xf0,0xbc,0x70,0xf4,0x22,0xf7,0x62,0xdb, - 0x25,0xb7,0x4b,0xad,0x3d,0xae,0x3d,0x47,0x7e,0x70,0xfd,0xe1,0x48,0xaf,0x5b,0x6f, - 0xeb,0x65,0xf7,0xcb,0xed,0x57,0x3c,0xae,0x74,0xf4,0x4d,0xeb,0x3b,0xd1,0xef,0xd3, - 0x7f,0xfa,0x6a,0xc0,0xd5,0x73,0xd7,0xf8,0xd7,0x2e,0x5d,0x9f,0x79,0xbd,0xef,0xc6, - 0xec,0x1b,0xb7,0x6e,0x26,0xdd,0x1c,0xb8,0x25,0xba,0xf5,0xf8,0x76,0xf6,0xed,0x17, - 0x77,0x0a,0xee,0x4c,0xdc,0x5d,0x7a,0x8f,0x78,0xaf,0xfc,0xbe,0xda,0xfd,0xea,0x07, - 0xfa,0x0f,0xea,0x7f,0xb4,0xfe,0xb1,0x65,0xc0,0x6d,0xe0,0xf8,0x60,0xc0,0x60,0xcf, - 0xc3,0x59,0x0f,0xef,0x0e,0x09,0x87,0x9e,0xfe,0x94,0xff,0xd3,0x87,0xe1,0xd2,0x47, - 0xcc,0x47,0xd5,0x23,0x46,0x23,0x8d,0x8f,0x9d,0x1f,0x1f,0x1b,0x0d,0x1a,0xbd,0xf2, - 0x64,0xce,0x93,0xe1,0xa7,0xb2,0xa7,0x13,0xcf,0xca,0x7e,0x56,0xff,0x79,0xeb,0x73, - 0xab,0xe7,0xdf,0xfd,0xe2,0xfb,0x4b,0xcf,0x58,0xfc,0xd8,0xf0,0x0b,0xf9,0x8b,0xcf, - 0xbf,0xae,0x79,0xa9,0xf3,0x72,0xef,0xab,0xa9,0xaf,0x3a,0xc7,0x23,0xc7,0x1f,0xbc, - 0xce,0x79,0x3d,0xf1,0xa6,0xfc,0xad,0xce,0xdb,0x7d,0xef,0xb8,0xef,0xba,0xdf,0xc7, - 0xbd,0x1f,0x99,0x28,0xfc,0x40,0xfe,0x50,0xf3,0xd1,0xfa,0x63,0xc7,0xa7,0xd0,0x4f, - 0xf7,0x3e,0xe7,0x7c,0xfe,0xfc,0x2f,0xf7,0x84,0xf3,0xfb,0x25,0xd2,0x9f,0x33,0x00, - 0x00,0x3b,0xe1,0x69,0x54,0x58,0x74,0x58,0x4d,0x4c,0x3a,0x63,0x6f,0x6d,0x2e,0x61, - 0x64,0x6f,0x62,0x65,0x2e,0x78,0x6d,0x70,0x00,0x00,0x00,0x00,0x00,0x3c,0x3f,0x78, - 0x70,0x61,0x63,0x6b,0x65,0x74,0x20,0x62,0x65,0x67,0x69,0x6e,0x3d,0x22,0xef,0xbb, - 0xbf,0x22,0x20,0x69,0x64,0x3d,0x22,0x57,0x35,0x4d,0x30,0x4d,0x70,0x43,0x65,0x68, - 0x69,0x48,0x7a,0x72,0x65,0x53,0x7a,0x4e,0x54,0x63,0x7a,0x6b,0x63,0x39,0x64,0x22, - 0x3f,0x3e,0x0a,0x3c,0x78,0x3a,0x78,0x6d,0x70,0x6d,0x65,0x74,0x61,0x20,0x78,0x6d, - 0x6c,0x6e,0x73,0x3a,0x78,0x3d,0x22,0x61,0x64,0x6f,0x62,0x65,0x3a,0x6e,0x73,0x3a, - 0x6d,0x65,0x74,0x61,0x2f,0x22,0x20,0x78,0x3a,0x78,0x6d,0x70,0x74,0x6b,0x3d,0x22, - 0x41,0x64,0x6f,0x62,0x65,0x20,0x58,0x4d,0x50,0x20,0x43,0x6f,0x72,0x65,0x20,0x35, - 0x2e,0x36,0x2d,0x63,0x31,0x33,0x38,0x20,0x37,0x39,0x2e,0x31,0x35,0x39,0x38,0x32, - 0x34,0x2c,0x20,0x32,0x30,0x31,0x36,0x2f,0x30,0x39,0x2f,0x31,0x34,0x2d,0x30,0x31, - 0x3a,0x30,0x39,0x3a,0x30,0x31,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x3e, - 0x0a,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x52,0x44,0x46,0x20,0x78,0x6d,0x6c, - 0x6e,0x73,0x3a,0x72,0x64,0x66,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77, - 0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x30, - 0x32,0x2f,0x32,0x32,0x2d,0x72,0x64,0x66,0x2d,0x73,0x79,0x6e,0x74,0x61,0x78,0x2d, - 0x6e,0x73,0x23,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66, - 0x3a,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x20,0x72,0x64,0x66, - 0x3a,0x61,0x62,0x6f,0x75,0x74,0x3d,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x6d,0x70,0x3d, - 0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65, - 0x2e,0x63,0x6f,0x6d,0x2f,0x78,0x61,0x70,0x2f,0x31,0x2e,0x30,0x2f,0x22,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73, - 0x3a,0x64,0x63,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x70,0x75,0x72,0x6c, - 0x2e,0x6f,0x72,0x67,0x2f,0x64,0x63,0x2f,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73, - 0x2f,0x31,0x2e,0x31,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68, - 0x6f,0x70,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64, - 0x6f,0x62,0x65,0x2e,0x63,0x6f,0x6d,0x2f,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f, - 0x70,0x2f,0x31,0x2e,0x30,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x6d,0x70,0x4d,0x4d,0x3d, - 0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65, - 0x2e,0x63,0x6f,0x6d,0x2f,0x78,0x61,0x70,0x2f,0x31,0x2e,0x30,0x2f,0x6d,0x6d,0x2f, - 0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d, - 0x6c,0x6e,0x73,0x3a,0x73,0x74,0x45,0x76,0x74,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a, - 0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e,0x63,0x6f,0x6d,0x2f,0x78, - 0x61,0x70,0x2f,0x31,0x2e,0x30,0x2f,0x73,0x54,0x79,0x70,0x65,0x2f,0x52,0x65,0x73, - 0x6f,0x75,0x72,0x63,0x65,0x45,0x76,0x65,0x6e,0x74,0x23,0x22,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x74, - 0x69,0x66,0x66,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61, - 0x64,0x6f,0x62,0x65,0x2e,0x63,0x6f,0x6d,0x2f,0x74,0x69,0x66,0x66,0x2f,0x31,0x2e, - 0x30,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x65,0x78,0x69,0x66,0x3d,0x22,0x68,0x74,0x74,0x70, - 0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e,0x63,0x6f,0x6d,0x2f, - 0x65,0x78,0x69,0x66,0x2f,0x31,0x2e,0x30,0x2f,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x3a,0x43,0x72,0x65,0x61,0x74,0x6f, - 0x72,0x54,0x6f,0x6f,0x6c,0x3e,0x41,0x64,0x6f,0x62,0x65,0x20,0x50,0x68,0x6f,0x74, - 0x6f,0x73,0x68,0x6f,0x70,0x20,0x43,0x43,0x20,0x32,0x30,0x31,0x37,0x20,0x28,0x57, - 0x69,0x6e,0x64,0x6f,0x77,0x73,0x29,0x3c,0x2f,0x78,0x6d,0x70,0x3a,0x43,0x72,0x65, - 0x61,0x74,0x6f,0x72,0x54,0x6f,0x6f,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x3a,0x43,0x72,0x65,0x61,0x74,0x65,0x44,0x61, - 0x74,0x65,0x3e,0x32,0x30,0x31,0x37,0x2d,0x30,0x38,0x2d,0x31,0x31,0x54,0x30,0x38, - 0x3a,0x32,0x34,0x3a,0x33,0x38,0x2b,0x30,0x38,0x3a,0x30,0x30,0x3c,0x2f,0x78,0x6d, - 0x70,0x3a,0x43,0x72,0x65,0x61,0x74,0x65,0x44,0x61,0x74,0x65,0x3e,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x3a,0x4d,0x6f,0x64,0x69, - 0x66,0x79,0x44,0x61,0x74,0x65,0x3e,0x32,0x30,0x31,0x37,0x2d,0x31,0x32,0x2d,0x30, - 0x36,0x54,0x31,0x39,0x3a,0x35,0x35,0x3a,0x33,0x32,0x2b,0x30,0x38,0x3a,0x30,0x30, - 0x3c,0x2f,0x78,0x6d,0x70,0x3a,0x4d,0x6f,0x64,0x69,0x66,0x79,0x44,0x61,0x74,0x65, - 0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x3a, - 0x4d,0x65,0x74,0x61,0x64,0x61,0x74,0x61,0x44,0x61,0x74,0x65,0x3e,0x32,0x30,0x31, - 0x37,0x2d,0x31,0x32,0x2d,0x30,0x36,0x54,0x31,0x39,0x3a,0x35,0x35,0x3a,0x33,0x32, - 0x2b,0x30,0x38,0x3a,0x30,0x30,0x3c,0x2f,0x78,0x6d,0x70,0x3a,0x4d,0x65,0x74,0x61, - 0x64,0x61,0x74,0x61,0x44,0x61,0x74,0x65,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x3c,0x64,0x63,0x3a,0x66,0x6f,0x72,0x6d,0x61,0x74,0x3e,0x69,0x6d, - 0x61,0x67,0x65,0x2f,0x70,0x6e,0x67,0x3c,0x2f,0x64,0x63,0x3a,0x66,0x6f,0x72,0x6d, - 0x61,0x74,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x70,0x68, - 0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x43,0x6f,0x6c,0x6f,0x72,0x4d,0x6f,0x64, - 0x65,0x3e,0x33,0x3c,0x2f,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x43, - 0x6f,0x6c,0x6f,0x72,0x4d,0x6f,0x64,0x65,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x3c,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x49,0x43, - 0x43,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,0x3e,0x73,0x52,0x47,0x42,0x20,0x49,0x45, - 0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x3c,0x2f,0x70,0x68,0x6f,0x74, - 0x6f,0x73,0x68,0x6f,0x70,0x3a,0x49,0x43,0x43,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65, - 0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x4d, - 0x4d,0x3a,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x78,0x6d,0x70, - 0x2e,0x69,0x69,0x64,0x3a,0x33,0x64,0x34,0x65,0x61,0x31,0x62,0x62,0x2d,0x31,0x35, - 0x31,0x37,0x2d,0x37,0x39,0x34,0x33,0x2d,0x62,0x35,0x63,0x32,0x2d,0x31,0x39,0x66, - 0x32,0x37,0x36,0x34,0x34,0x64,0x63,0x64,0x34,0x3c,0x2f,0x78,0x6d,0x70,0x4d,0x4d, - 0x3a,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x4d,0x4d,0x3a,0x44,0x6f,0x63, - 0x75,0x6d,0x65,0x6e,0x74,0x49,0x44,0x3e,0x61,0x64,0x6f,0x62,0x65,0x3a,0x64,0x6f, - 0x63,0x69,0x64,0x3a,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x34,0x64, - 0x36,0x38,0x38,0x38,0x30,0x35,0x2d,0x64,0x61,0x37,0x63,0x2d,0x31,0x31,0x65,0x37, - 0x2d,0x39,0x38,0x37,0x33,0x2d,0x66,0x35,0x66,0x38,0x61,0x34,0x38,0x61,0x39,0x39, - 0x37,0x31,0x3c,0x2f,0x78,0x6d,0x70,0x4d,0x4d,0x3a,0x44,0x6f,0x63,0x75,0x6d,0x65, - 0x6e,0x74,0x49,0x44,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, - 0x78,0x6d,0x70,0x4d,0x4d,0x3a,0x4f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x44,0x6f, - 0x63,0x75,0x6d,0x65,0x6e,0x74,0x49,0x44,0x3e,0x78,0x6d,0x70,0x2e,0x64,0x69,0x64, - 0x3a,0x33,0x30,0x30,0x38,0x31,0x62,0x32,0x30,0x2d,0x66,0x31,0x30,0x31,0x2d,0x31, - 0x61,0x34,0x63,0x2d,0x38,0x36,0x63,0x38,0x2d,0x61,0x34,0x33,0x33,0x64,0x65,0x61, - 0x63,0x32,0x39,0x66,0x37,0x3c,0x2f,0x78,0x6d,0x70,0x4d,0x4d,0x3a,0x4f,0x72,0x69, - 0x67,0x69,0x6e,0x61,0x6c,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x49,0x44,0x3e, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x4d,0x4d, - 0x3a,0x48,0x69,0x73,0x74,0x6f,0x72,0x79,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x53,0x65,0x71,0x3e,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, - 0x72,0x64,0x66,0x3a,0x6c,0x69,0x20,0x72,0x64,0x66,0x3a,0x70,0x61,0x72,0x73,0x65, - 0x54,0x79,0x70,0x65,0x3d,0x22,0x52,0x65,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x3e, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x3e,0x63,0x72,0x65,0x61,0x74,0x65,0x64,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a, - 0x61,0x63,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74, - 0x3a,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x78,0x6d,0x70,0x2e, - 0x69,0x69,0x64,0x3a,0x33,0x30,0x30,0x38,0x31,0x62,0x32,0x30,0x2d,0x66,0x31,0x30, - 0x31,0x2d,0x31,0x61,0x34,0x63,0x2d,0x38,0x36,0x63,0x38,0x2d,0x61,0x34,0x33,0x33, - 0x64,0x65,0x61,0x63,0x32,0x39,0x66,0x37,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a, - 0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73, - 0x74,0x45,0x76,0x74,0x3a,0x77,0x68,0x65,0x6e,0x3e,0x32,0x30,0x31,0x37,0x2d,0x30, - 0x38,0x2d,0x31,0x31,0x54,0x30,0x38,0x3a,0x32,0x34,0x3a,0x33,0x38,0x2b,0x30,0x38, - 0x3a,0x30,0x30,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x77,0x68,0x65,0x6e,0x3e, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x73,0x6f,0x66,0x74,0x77,0x61, - 0x72,0x65,0x41,0x67,0x65,0x6e,0x74,0x3e,0x41,0x64,0x6f,0x62,0x65,0x20,0x50,0x68, - 0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x43,0x43,0x20,0x28,0x57,0x69,0x6e,0x64, - 0x6f,0x77,0x73,0x29,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x73,0x6f,0x66,0x74, - 0x77,0x61,0x72,0x65,0x41,0x67,0x65,0x6e,0x74,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a, - 0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x20,0x72,0x64,0x66,0x3a,0x70, - 0x61,0x72,0x73,0x65,0x54,0x79,0x70,0x65,0x3d,0x22,0x52,0x65,0x73,0x6f,0x75,0x72, - 0x63,0x65,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x61,0x63, - 0x74,0x69,0x6f,0x6e,0x3e,0x73,0x61,0x76,0x65,0x64,0x3c,0x2f,0x73,0x74,0x45,0x76, - 0x74,0x3a,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45, - 0x76,0x74,0x3a,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x78,0x6d, - 0x70,0x2e,0x69,0x69,0x64,0x3a,0x65,0x34,0x31,0x38,0x64,0x32,0x39,0x65,0x2d,0x31, - 0x32,0x31,0x36,0x2d,0x64,0x32,0x34,0x35,0x2d,0x62,0x66,0x33,0x32,0x2d,0x35,0x37, - 0x61,0x34,0x31,0x66,0x34,0x62,0x66,0x30,0x65,0x61,0x3c,0x2f,0x73,0x74,0x45,0x76, - 0x74,0x3a,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x77,0x68,0x65,0x6e,0x3e,0x32,0x30,0x31,0x37, - 0x2d,0x30,0x38,0x2d,0x31,0x31,0x54,0x31,0x30,0x3a,0x32,0x34,0x3a,0x31,0x33,0x2b, - 0x30,0x38,0x3a,0x30,0x30,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x77,0x68,0x65, - 0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x73,0x6f,0x66,0x74, - 0x77,0x61,0x72,0x65,0x41,0x67,0x65,0x6e,0x74,0x3e,0x41,0x64,0x6f,0x62,0x65,0x20, - 0x50,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x43,0x43,0x20,0x28,0x57,0x69, - 0x6e,0x64,0x6f,0x77,0x73,0x29,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x73,0x6f, - 0x66,0x74,0x77,0x61,0x72,0x65,0x41,0x67,0x65,0x6e,0x74,0x3e,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, - 0x73,0x74,0x45,0x76,0x74,0x3a,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x3e,0x2f,0x3c, - 0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x3e,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, - 0x2f,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x20, - 0x72,0x64,0x66,0x3a,0x70,0x61,0x72,0x73,0x65,0x54,0x79,0x70,0x65,0x3d,0x22,0x52, - 0x65,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45, - 0x76,0x74,0x3a,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3e,0x73,0x61,0x76,0x65,0x64,0x3c, - 0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65, - 0x49,0x44,0x3e,0x78,0x6d,0x70,0x2e,0x69,0x69,0x64,0x3a,0x33,0x64,0x34,0x65,0x61, - 0x31,0x62,0x62,0x2d,0x31,0x35,0x31,0x37,0x2d,0x37,0x39,0x34,0x33,0x2d,0x62,0x35, - 0x63,0x32,0x2d,0x31,0x39,0x66,0x32,0x37,0x36,0x34,0x34,0x64,0x63,0x64,0x34,0x3c, - 0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49, - 0x44,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x77,0x68,0x65,0x6e, - 0x3e,0x32,0x30,0x31,0x37,0x2d,0x31,0x32,0x2d,0x30,0x36,0x54,0x31,0x39,0x3a,0x35, - 0x35,0x3a,0x33,0x32,0x2b,0x30,0x38,0x3a,0x30,0x30,0x3c,0x2f,0x73,0x74,0x45,0x76, - 0x74,0x3a,0x77,0x68,0x65,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74, - 0x3a,0x73,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x41,0x67,0x65,0x6e,0x74,0x3e,0x41, - 0x64,0x6f,0x62,0x65,0x20,0x50,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x43, - 0x43,0x20,0x32,0x30,0x31,0x37,0x20,0x28,0x57,0x69,0x6e,0x64,0x6f,0x77,0x73,0x29, - 0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x73,0x6f,0x66,0x74,0x77,0x61,0x72,0x65, - 0x41,0x67,0x65,0x6e,0x74,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a, - 0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x3e,0x2f,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74, - 0x3a,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x6c, - 0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c, - 0x2f,0x72,0x64,0x66,0x3a,0x53,0x65,0x71,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x3c,0x2f,0x78,0x6d,0x70,0x4d,0x4d,0x3a,0x48,0x69,0x73,0x74,0x6f, - 0x72,0x79,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x69, - 0x66,0x66,0x3a,0x4f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x3e,0x31, - 0x3c,0x2f,0x74,0x69,0x66,0x66,0x3a,0x4f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69, - 0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x69, - 0x66,0x66,0x3a,0x58,0x52,0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x3e,0x37, - 0x32,0x30,0x30,0x30,0x30,0x2f,0x31,0x30,0x30,0x30,0x30,0x3c,0x2f,0x74,0x69,0x66, - 0x66,0x3a,0x58,0x52,0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x69,0x66,0x66,0x3a,0x59,0x52, - 0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x3e,0x37,0x32,0x30,0x30,0x30,0x30, - 0x2f,0x31,0x30,0x30,0x30,0x30,0x3c,0x2f,0x74,0x69,0x66,0x66,0x3a,0x59,0x52,0x65, - 0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x3c,0x74,0x69,0x66,0x66,0x3a,0x52,0x65,0x73,0x6f,0x6c,0x75,0x74, - 0x69,0x6f,0x6e,0x55,0x6e,0x69,0x74,0x3e,0x32,0x3c,0x2f,0x74,0x69,0x66,0x66,0x3a, - 0x52,0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x55,0x6e,0x69,0x74,0x3e,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x65,0x78,0x69,0x66,0x3a,0x43, - 0x6f,0x6c,0x6f,0x72,0x53,0x70,0x61,0x63,0x65,0x3e,0x31,0x3c,0x2f,0x65,0x78,0x69, - 0x66,0x3a,0x43,0x6f,0x6c,0x6f,0x72,0x53,0x70,0x61,0x63,0x65,0x3e,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x65,0x78,0x69,0x66,0x3a,0x50,0x69,0x78, - 0x65,0x6c,0x58,0x44,0x69,0x6d,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x3e,0x31,0x39,0x30, - 0x3c,0x2f,0x65,0x78,0x69,0x66,0x3a,0x50,0x69,0x78,0x65,0x6c,0x58,0x44,0x69,0x6d, - 0x65,0x6e,0x73,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x3c,0x65,0x78,0x69,0x66,0x3a,0x50,0x69,0x78,0x65,0x6c,0x59,0x44,0x69,0x6d, - 0x65,0x6e,0x73,0x69,0x6f,0x6e,0x3e,0x37,0x34,0x3c,0x2f,0x65,0x78,0x69,0x66,0x3a, - 0x50,0x69,0x78,0x65,0x6c,0x59,0x44,0x69,0x6d,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x3e, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x44,0x65,0x73, - 0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x3c,0x2f,0x72, - 0x64,0x66,0x3a,0x52,0x44,0x46,0x3e,0x0a,0x3c,0x2f,0x78,0x3a,0x78,0x6d,0x70,0x6d, - 0x65,0x74,0x61,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x0a,0x3c,0x3f,0x78,0x70,0x61,0x63,0x6b,0x65,0x74,0x20,0x65, - 0x6e,0x64,0x3d,0x22,0x77,0x22,0x3f,0x3e,0x27,0x9a,0x26,0x8f,0x00,0x00,0x00,0x20, - 0x63,0x48,0x52,0x4d,0x00,0x00,0x7a,0x25,0x00,0x00,0x80,0x83,0x00,0x00,0xf9,0xff, - 0x00,0x00,0x80,0xe9,0x00,0x00,0x75,0x30,0x00,0x00,0xea,0x60,0x00,0x00,0x3a,0x98, - 0x00,0x00,0x17,0x6f,0x92,0x5f,0xc5,0x46,0x00,0x00,0x10,0x46,0x49,0x44,0x41,0x54, - 0x78,0xda,0xec,0x5d,0x69,0xb4,0x16,0xc5,0x11,0x9d,0x6f,0x64,0x91,0x20,0x2a,0xbb, - 0x3b,0x16,0x98,0xa0,0x46,0x05,0x51,0xa3,0x88,0x0b,0x75,0x54,0x8c,0x9e,0x63,0xd4, - 0x18,0x15,0xb7,0xa8,0x71,0x49,0xa2,0xb8,0x45,0x13,0xc5,0x93,0xc4,0x5d,0x0e,0x20, - 0x49,0x44,0x81,0x28,0x04,0x45,0x0c,0x26,0x44,0xa3,0x71,0xc5,0x28,0xe0,0x1a,0x35, - 0xe2,0x46,0xc4,0x88,0x89,0x81,0x57,0x28,0x3b,0x8f,0x4d,0x65,0x53,0x5e,0x7e,0xcc, - 0x9d,0xf3,0x9a,0xa6,0x7b,0xa6,0x67,0xf9,0xde,0x82,0xfd,0xe3,0x9e,0x07,0xf3,0xcd, - 0xf4,0xf4,0x74,0xdf,0xae,0xae,0xae,0xaa,0xae,0x0e,0xea,0xea,0xea,0x02,0x0f,0x8f, - 0xaf,0x1b,0x7c,0x23,0x78,0x78,0xe2,0x7b,0x78,0x78,0xe2,0x7b,0x78,0x78,0xe2,0x7b, - 0x78,0x78,0xe2,0x7b,0x78,0x78,0xe2,0x7b,0x78,0x78,0xe2,0x7b,0x78,0x78,0xe2,0x7b, - 0x78,0x78,0xe2,0x7b,0x78,0x34,0x2d,0xe2,0x33,0x49,0xa5,0x11,0x11,0x18,0xb0,0x15, - 0x93,0xb4,0x66,0x92,0x6f,0x30,0x49,0x7b,0x26,0xd9,0x87,0x49,0x8e,0x65,0x92,0x8b, - 0x99,0xe4,0x36,0x26,0x19,0xc3,0x24,0x93,0x98,0xe4,0x49,0x26,0x79,0x99,0x49,0xde, - 0x61,0x92,0x0f,0x98,0xe4,0x3f,0x4c,0xf2,0x31,0xfe,0xce,0x62,0x92,0x19,0x4c,0x32, - 0x8d,0x49,0x1e,0x63,0x92,0x07,0x98,0xe4,0x4e,0x26,0x19,0xcc,0x24,0xa7,0x33,0xc9, - 0xa1,0x4c,0xb2,0x1b,0x93,0xb4,0x63,0x92,0xad,0x99,0xa4,0xa5,0xa5,0x2e,0x15,0x8f, - 0x2d,0x13,0x49,0x9d,0x1b,0x02,0x69,0x85,0x84,0x19,0xca,0xd0,0xff,0x6f,0x22,0x1b, - 0x31,0xc9,0x61,0x4c,0x32,0x90,0x49,0xae,0x67,0x92,0x71,0x4c,0xf2,0x28,0x93,0xbc, - 0x0a,0x52,0x2f,0x60,0x92,0x55,0x4c,0xf2,0x25,0x93,0xd4,0x39,0x60,0x1d,0x93,0x2c, - 0x67,0x92,0x79,0x4c,0x32,0x93,0x49,0xfe,0x8e,0x81,0xf3,0x5b,0x26,0xf9,0x29,0x06, - 0xd5,0x7e,0x4c,0xd2,0x36,0x81,0xfc,0xa6,0xef,0x48,0xfb,0xb7,0x6b,0x7b,0xb8,0x94, - 0x11,0x1a,0x9e,0x37,0xf5,0x4f,0x96,0xba,0x54,0x1c,0xca,0x49,0xaa,0x6f,0xde,0xf2, - 0xc3,0x84,0x7b,0x42,0x47,0xae,0x85,0x29,0xe5,0xa4,0xb6,0x47,0x90,0x70,0x83,0x6b, - 0xc3,0x26,0xbd,0xc8,0x54,0x86,0x4e,0xac,0xbd,0x99,0xe4,0x1c,0x26,0x19,0xca,0x24, - 0x8f,0x33,0xc9,0xbb,0x4c,0xf2,0x29,0x93,0x6c,0x70,0x24,0x76,0x51,0xd4,0x62,0x40, - 0x4d,0xc7,0x20,0xbb,0x8a,0x49,0xfa,0x19,0xea,0x6a,0x6b,0xe0,0xd0,0xf0,0xbd,0x2e, - 0xbf,0xe5,0x69,0xc3,0xbc,0xc4,0x0f,0x53,0xde,0x17,0x26,0x10,0x31,0x4c,0xb8,0xee, - 0x32,0x70,0x43,0xc7,0x7a,0x87,0x8e,0xe5,0xb8,0x0c,0xc8,0xb4,0xb6,0x0e,0x83,0x02, - 0x52,0x21,0xaf,0x5a,0xd3,0x1e,0xd2,0x7c,0x04,0x93,0x3c,0xc5,0x24,0x1f,0x42,0x2a, - 0xd7,0x35,0x21,0xcc,0x63,0x92,0xa9,0x4c,0x32,0x92,0x49,0x7e,0xc8,0x24,0x5d,0x0c, - 0x03,0x36,0x2c,0x59,0xe5,0xf3,0x2a,0x48,0x23,0xa9,0x3a,0x45,0x3a,0x32,0x4c,0xb9, - 0x16,0x40,0x9d,0xf8,0x0b,0x93,0xbc,0x05,0x55,0xa5,0xae,0x99,0xe0,0x0b,0xcc,0x42, - 0x0f,0x62,0xc0,0xb6,0xb2,0xa8,0x42,0x59,0xd5,0xc0,0xb2,0xda,0xb9,0x1a,0xcf,0x54, - 0x32,0xaa,0x6f,0xae,0x3c,0x28,0xeb,0xbd,0xa1,0xa3,0x5a,0x17,0xe6,0xd1,0xf1,0xcb, - 0x6c,0xd0,0x80,0x49,0xf6,0x64,0x92,0xc5,0xcd,0x88,0xf0,0x26,0xac,0xc4,0x62,0x7a, - 0x2c,0x16,0xc8,0x7e,0x31,0xdc,0xf4,0xe0,0xa4,0x9d,0x54,0xa3,0xb3,0x6c,0x64,0x08, - 0x99,0xe4,0x47,0x1a,0x91,0x5e,0xc0,0xb5,0x99,0xcd,0x70,0x10,0xcc,0x47,0xfd,0xcf, - 0xf2,0x03,0x60,0xcb,0xb2,0xea,0x14,0x21,0xfd,0x81,0x58,0x24,0x76,0x50,0x88,0x10, - 0x9b,0x2a,0xc7,0x33,0xc9,0x14,0x48,0xcc,0xce,0xb8,0x7e,0x25,0x93,0xac,0x69,0xa6, - 0xb3,0xc0,0x2a,0x26,0x99,0x0d,0x0b,0x54,0xeb,0x94,0x01,0x10,0x7a,0xd2,0x35,0x2d, - 0xe2,0x87,0x25,0x2d,0xce,0x8e,0x67,0x92,0x17,0x99,0x64,0x19,0x70,0x8e,0x66,0x9f, - 0xdf,0x99,0x49,0xf6,0x67,0x92,0xed,0x35,0x82,0xb4,0x63,0x92,0xf7,0x9b,0xb9,0x1a, - 0xb4,0x8e,0x49,0x3e,0x61,0x92,0x9b,0xb1,0x80,0xaf,0x14,0x9c,0x01,0x42,0x3f,0x50, - 0xaa,0xb7,0x3e,0x0a,0x4a,0x94,0xf4,0x21,0x93,0x5c,0xa2,0x91,0x61,0x2a,0xa4,0x60, - 0x4f,0x26,0x99,0xc8,0x24,0x2b,0x30,0x30,0x76,0xd0,0x66,0x82,0x80,0x49,0x7e,0xcc, - 0x24,0x9f,0x37,0x73,0xf2,0xd7,0xc1,0x0c,0xbb,0x84,0x49,0xae,0x61,0x92,0xed,0xbc, - 0x0a,0xd4,0xf8,0xa8,0xab,0xab,0x0b,0xaa,0xa5,0xea,0xc4,0x1d,0xdb,0x86,0x49,0x5e, - 0xd1,0x16,0x83,0xa7,0x41,0x0a,0xaa,0xe4,0xb8,0x0c,0x03,0x45,0x27,0xff,0x54,0x26, - 0xd9,0x58,0x80,0x74,0xeb,0x31,0x78,0x56,0xc1,0x69,0xb5,0x0c,0x0b,0xea,0x85,0x4c, - 0x32,0x97,0x49,0x3e,0x62,0x92,0x7f,0x03,0xb3,0x71,0x6d,0x01,0xee,0x59,0x86,0x67, - 0x56,0xa1,0x8c,0xf5,0x05,0x07,0xc0,0x57,0x4c,0x22,0x4c,0x72,0xa6,0x36,0xc3,0x79, - 0x32,0x6e,0x21,0x3a,0x7e,0xdc,0xa1,0xdb,0x32,0xc9,0x8e,0x4c,0x72,0x0a,0x93,0x7c, - 0x06,0x32,0xbd,0x0e,0x6b,0xce,0x5e,0x1a,0x91,0xe6,0x33,0x49,0x2f,0x4d,0x1a,0xb6, - 0x65,0x92,0x5f,0x33,0xc9,0xda,0x14,0x42,0x6d,0x44,0xf9,0x8b,0x40,0xdc,0x99,0x4c, - 0xf2,0x0c,0x93,0xdc,0xc7,0x24,0xbf,0x62,0x92,0xf3,0x99,0xe4,0x24,0x26,0x61,0x26, - 0xe9,0xc3,0x24,0x3d,0x60,0x87,0x57,0xc3,0x13,0x5a,0x62,0x26,0x6a,0x87,0x75,0x46, - 0x77,0x26,0xe9,0xcd,0x24,0xfd,0x99,0xe4,0x7b,0x4c,0x72,0x1e,0xca,0x1a,0x8f,0xb2, - 0xdf,0x67,0x92,0x1a,0x48,0xf2,0x3c,0x6b,0x91,0x17,0x99,0xe4,0x10,0x6d,0x0d,0xe0, - 0x09,0xd8,0x88,0x2a,0x4f,0x19,0x1d,0xb0,0x13,0x48,0x36,0x89,0x49,0xde,0x66,0x92, - 0x03,0x98,0xe4,0x02,0x90,0x2e,0x50,0x88,0x35,0x5e,0xb1,0x8b,0xcf,0x64,0x92,0x23, - 0x40,0xc0,0x1e,0x4c,0x32,0x00,0x26,0xc2,0x45,0x16,0xc9,0xb9,0x04,0x12,0xfa,0x05, - 0x38,0xbe,0x2e,0x66,0x92,0xbe,0x4c,0xd2,0xc9,0x12,0x66,0x50,0x0d,0xec,0xc8,0x24, - 0x47,0x31,0xc9,0x15,0xa8,0xeb,0x0c,0x0c,0xbc,0xd5,0x19,0x06,0xc0,0x50,0x26,0xe9, - 0xe6,0xc9,0xdf,0xbc,0x25,0x7e,0xdc,0x79,0x37,0x6a,0x9d,0x7b,0x37,0xae,0xef,0xca, - 0x24,0x27,0x32,0xc9,0x4b,0x08,0x45,0x38,0x9a,0x49,0x1e,0x61,0x92,0x4b,0x95,0x67, - 0x77,0x02,0xa1,0x75,0x82,0xac,0x80,0x94,0x7d,0x94,0x49,0x6e,0xc0,0xa2,0xb9,0x83, - 0x03,0x39,0x1b,0x22,0x88,0x4e,0x45,0x4f,0xcc,0x0e,0x63,0xa0,0xe2,0xd5,0x38,0x90, - 0x7f,0x36,0x93,0x9c,0xc0,0x24,0x2d,0xb6,0x20,0xf2,0x87,0x55,0xba,0xb7,0x41,0xac, - 0x3a,0x59,0x02,0xd2,0x42,0x85,0x18,0xfd,0xa0,0x27,0xab,0xe6,0xbd,0x3d,0x10,0x04, - 0xa6,0x76,0xf8,0xa5,0x06,0xe2,0x6c,0xcb,0x24,0x4f,0xe3,0xf7,0xb5,0x50,0x8d,0xee, - 0x65,0x92,0x53,0x99,0xa4,0x63,0x0a,0xc1,0x5d,0x83,0x9a,0xc2,0x8c,0xf7,0xa6,0xc5, - 0xba,0x24,0x0d,0x84,0x3e,0x50,0x91,0xa6,0x60,0x3d,0x91,0x34,0x00,0x46,0x20,0x42, - 0xd4,0x16,0x02,0x91,0x16,0xdf,0x52,0x34,0xa8,0x30,0xcc,0x49,0xd8,0xd0,0xc1,0x43, - 0x5b,0x76,0xbf,0x94,0x3e,0x68,0x82,0x0c,0x41,0x46,0x95,0x84,0x80,0xb3,0xa1,0x1a, - 0xf1,0x2f,0x84,0xbe,0xac,0xea,0xeb,0x4b,0x98,0x64,0x5f,0x4d,0xca,0x05,0xb8,0xf6, - 0x27,0x3c,0xb3,0x75,0x0a,0xd1,0x5d,0xdd,0xd9,0x0d,0x25,0xd9,0xc2,0x84,0x99,0x61, - 0x6f,0x84,0x41,0x3f,0x91,0xe0,0xb1,0x7e,0x83,0x49,0x8e,0xd4,0xc8,0xef,0x1a,0x75, - 0xe8,0x1a,0x90,0x56,0xc9,0x11,0x0d,0xda,0x90,0xa6,0xd5,0xac,0x91,0x9e,0x69,0x81, - 0x6e,0x4e,0x9c,0x08,0x52,0x3a,0xd4,0x85,0x60,0x01,0x24,0xfc,0x74,0xa8,0x32,0x67, - 0x42,0xf7,0x6e,0xc1,0x24,0x0f,0x29,0x9d,0xbc,0x5a,0xb3,0xeb,0x27,0x91,0xa6,0x68, - 0x38,0x6d,0x1e,0xf2,0xba,0x44,0x0c,0xba,0x0e,0x34,0xfd,0x7b,0x06,0x30,0xc9,0x68, - 0x26,0x79,0xd3,0x62,0x89,0xba,0xc4,0xe2,0xe9,0x0e,0x4b,0x22,0x5e,0xd6,0x76,0x0a, - 0x73,0x4a,0x6b,0xd7,0xf8,0x99,0x3c,0x6d,0x5e,0x6a,0xcc,0x51,0x50,0xa0,0xc1,0x74, - 0xe2,0x9a,0x22,0x18,0x0f,0x83,0xee,0x7b,0x27,0x24,0x5b,0x1b,0x43,0xe7,0x96,0xa9, - 0x9f,0x17,0xd9,0x3f,0x10,0x3a,0x48,0xd6,0x2c,0x01,0x7a,0x26,0xb5,0x68,0x67,0x78, - 0xa9,0x9f,0x33,0x0c,0x80,0x7b,0x14,0x4f,0x76,0xd9,0x52,0xb6,0x1a,0xc4,0xaf,0x34, - 0x31,0xe2,0x87,0x59,0x34,0x81,0xc0,0xa1,0x03,0xb3,0x2e,0x02,0xf5,0xe7,0xbb,0x1a, - 0xc2,0x79,0xcb,0xea,0xd4,0xb0,0x91,0x17,0x6a,0x59,0xca,0xd3,0xd7,0x36,0x17,0x60, - 0x77,0x98,0x1e,0xbb,0xd4,0xcb,0x51,0x18,0x84,0x4d,0xfc,0xbb,0x1b,0x32,0xca,0x34, - 0xcc,0x5a,0x6e,0x59,0xc4,0x77,0x1d,0x10,0x65,0xeb,0x8a,0x21,0x37,0x61,0xcb,0x81, - 0x83,0x2a,0xd4,0x06,0xea,0xdf,0xf3,0x0a,0xf9,0x3f,0x62,0x92,0x63,0x1c,0xc8,0xef, - 0x89,0x5f,0xa0,0xbc,0xe6,0x6a,0x4e,0x0b,0xb9,0x19,0x98,0xcc,0x32,0x08,0x85,0x2e, - 0x70,0xbc,0xcd,0x54,0x3c,0xde,0xe7,0x7b,0x7b,0x7f,0x75,0xcd,0x99,0x21,0xbb,0xef, - 0xf3,0x2c,0x3a,0x5a,0xd3,0x74,0x42,0xd7,0x51,0x9d,0x67,0x0b,0x5f,0xd1,0x41,0xe6, - 0xba,0xd5,0xae,0x88,0x0a,0xd4,0x83,0x49,0x7e,0xae,0x48,0xff,0x6b,0x1c,0x37,0xbc, - 0xe4,0x6d,0xff,0xbc,0x56,0x9b,0x32,0x17,0xa1,0x69,0x16,0x9a,0x30,0xe3,0x3a,0xa1, - 0xea,0xd1,0x99,0x3e,0x72,0xb0,0x7a,0x33,0xc0,0x41,0x4c,0xf2,0x37,0x90,0xff,0x37, - 0x0d,0x28,0xf9,0xc3,0xaf,0x93,0xc4,0xaf,0xa6,0xe9,0x30,0xab,0x54,0xaf,0x34,0xa0, - 0xfe,0x1f,0x96,0xac,0x4a,0x95,0x65,0x89,0x88,0x49,0xbe,0x3d,0x93,0x5c,0x04,0xf2, - 0x3f,0xce,0x24,0xdb,0x24,0xec,0xf5,0x0d,0xab,0x4c,0xe2,0xb0,0xa0,0x04,0x6f,0x92, - 0xc4,0x2f,0x03,0x65,0xb8,0xff,0xab,0xfd,0xfe,0xa6,0x50,0xb7,0x2c,0x75,0x8f,0x7f, - 0xdf,0x87,0xa3,0x2c,0x10,0x2f,0x69,0x1b,0x7b,0x3c,0x32,0x84,0x25,0x9b,0x12,0x4a, - 0x35,0x14,0x11,0x3d,0xf1,0xb3,0xd7,0x5f,0x0d,0x90,0x1b,0xc6,0x24,0xc3,0x95,0xc0, - 0x3c,0x4f,0xea,0x82,0xc4,0x1f,0xc2,0x24,0xf7,0x33,0xc9,0x28,0x05,0x77,0x03,0xa3, - 0x94,0xbf,0xea,0xf5,0xf8,0xda,0x68,0x8e,0x52,0x70,0x5c,0x8d,0xed,0x86,0x6d,0xb4, - 0xce,0x8c,0xff,0x7d,0x0a,0x93,0xfc,0x15,0xf7,0xdf,0x6d,0x79,0x87,0x09,0xa3,0x12, - 0x7e,0x1f,0xc9,0x24,0x7f,0x44,0x38,0xf2,0x9e,0x39,0xc9,0x10,0x30,0xc9,0xb7,0x99, - 0x64,0x02,0x36,0xca,0x8c,0x4c,0xa8,0x47,0xda,0x75,0xf5,0xdf,0x77,0x31,0xc9,0xef, - 0x99,0xe4,0x61,0x04,0xa4,0xc5,0xed,0x70,0x12,0xbc,0xd9,0xf7,0x72,0x7d,0x46,0xb8, - 0xfe,0x0e,0x75,0x0f,0x10,0xd2,0xfc,0x5d,0x26,0xf9,0x0e,0x76,0xb3,0x79,0xf2,0xbb, - 0x6d,0x40,0xe9,0x00,0x81,0x31,0x11,0xfd,0x72,0x3f,0x93,0xdc,0x1a,0x20,0x36,0x3e, - 0x8e,0x73,0xcf,0x8b,0x0d,0x88,0x53,0x7f,0x0d,0x1e,0xda,0xad,0x34,0x89,0x36,0xa4, - 0x84,0x77,0x98,0x10,0x5b,0x3f,0x8e,0xe3,0x7c,0xb9,0x6e,0x02,0xc4,0xdf,0xd7,0x55, - 0xb1,0x7e,0x37,0x2a,0xed,0x30,0x5c,0x7b,0xcf,0x3a,0x26,0x19,0x94,0x62,0xb5,0x51, - 0xbd,0xc0,0x21,0xf6,0x2d,0x6c,0x65,0xf0,0x80,0x37,0x64,0xbc,0x52,0x63,0xe8,0xf0, - 0x99,0x7d,0x36,0x20,0x7e,0x77,0x25,0x02,0x38,0xee,0x93,0x1a,0x95,0xf8,0x65,0x61, - 0x35,0x93,0xfc,0x44,0x23,0xfe,0xed,0x55,0xde,0xee,0x77,0x5c,0x01,0x89,0x7f,0x42, - 0x95,0xeb,0x76,0x93,0xd2,0x0e,0x77,0x18,0xf6,0xe9,0x5e,0x9a,0x63,0x9d,0xe4,0x25, - 0xba,0xbb,0xc4,0x27,0x43,0xa4,0x6c,0x4d,0xc0,0x51,0xba,0xbe,0xb2,0x3b,0x7b,0x19, - 0x93,0x1c,0xac,0x74,0xd4,0x88,0x2a,0x93,0xeb,0x84,0x02,0xc4,0x3f,0xb9,0xca,0x75, - 0x1b,0xa2,0x49,0x7c,0x75,0xa6,0x5a,0x9b,0x91,0xf8,0x1e,0xf9,0x88,0xaf,0xef,0xf9, - 0x98,0x6b,0x23,0xfe,0x67,0x1c,0x25,0x4e,0x7a,0x97,0xa3,0x4c,0xc4,0xb3,0x14,0xbc, - 0xcf,0x51,0xda,0xbf,0xe5,0x29,0x1d,0x3e,0x59,0xe9,0xf0,0xab,0xf0,0xcc,0x2c,0x0d, - 0x71,0xd9,0x6f,0x5a,0x42,0x77,0xbf,0x84,0x45,0x63,0x86,0xa1,0x1e,0xb3,0xb0,0x77, - 0xf6,0x03,0x26,0x39,0xbc,0x00,0xf1,0xfb,0x2b,0xfb,0x70,0x4d,0xf5,0x7b,0x93,0x49, - 0xfe,0x87,0x9d,0x60,0xfa,0x16,0xc8,0x4f,0x10,0x5a,0x6c,0xaa,0xdb,0x2c,0x7c,0xf3, - 0x20,0x4f,0xfc,0xc6,0x51,0xa1,0xf2,0x10,0xff,0x39,0x74,0x46,0x0b,0x58,0x11,0xda, - 0x03,0xdb,0xc3,0x9e,0xdc,0x15,0x9b,0x45,0x5e,0x49,0x20,0xfe,0x5c,0x44,0x23,0xc6, - 0xfb,0x69,0x77,0x50,0xca,0x88,0xcb,0xeb,0x80,0xbf,0x71,0x4c,0xff,0x46,0xc3,0xcc, - 0xd1,0x17,0xbf,0xab,0xf5,0x88,0xcb,0xe9,0xa2,0x84,0x40,0xe7,0x25,0x7e,0x4b,0x44, - 0x45,0x76,0xd6,0xea,0xd6,0x5e,0xb1,0xa0,0x1c,0x87,0x5d,0x61,0x75,0x1a,0x69,0x2f, - 0xc3,0xef,0x1d,0xb5,0xe7,0x62,0xec,0xc0,0x9b,0x66,0x61,0x2e,0x93,0xf8,0xd5,0xb6, - 0xdd,0x37,0x7b,0xa7,0x56,0x1e,0xe2,0x3f,0xee,0x68,0xaa,0x6b,0x8f,0x59,0xc1,0xa6, - 0xee,0x9c,0x9c,0xc1,0xec,0x77,0xab,0x41,0xaa,0x2e,0x56,0x36,0xaf,0x54,0xcb,0xa4, - 0xe9,0x52,0x76,0x7f,0x7c,0x8f,0x5a,0xb7,0xcf,0x0d,0x6b,0x99,0x34,0xe8,0xc4,0x5f, - 0xc3,0x24,0xe7,0x16,0x30,0xdb,0x86,0x5c,0xbe,0xf9,0x37,0x2c,0x60,0xe2,0x0d,0x0b, - 0xd4,0x29,0x4f,0x68,0x46,0xea,0x01,0x10,0x1c,0xa5,0x78,0x99,0xe5,0x4a,0xfc,0xa7, - 0x32,0xd8,0x98,0x6f,0x60,0x73,0xae,0xfa,0xcf,0x39,0xca,0x3f,0x9f,0xb6,0xbb,0x48, - 0xb5,0xfc,0xe8,0xc4,0x5f,0x82,0xcd,0xeb,0x41,0xc6,0x98,0xfa,0x32,0xa7,0xd8,0x00, - 0xd1,0x92,0xb5,0xbc,0x79,0x32,0xd9,0x41,0x0e,0xdf,0x57,0x49,0x20,0xfe,0x3a,0xcc, - 0x74,0xbd,0x39,0xca,0xc2,0xa0,0xe3,0x50,0x98,0x2f,0x77,0x65,0x7b,0xa6,0xe6,0x4e, - 0xd8,0xec,0xdf,0xcf,0x52,0xc6,0x21,0xd8,0x17,0x71,0x98,0x16,0x22,0x9e,0x14,0x83, - 0xa5,0x26,0x01,0xeb,0x89,0x3a,0xd8,0xca,0x3e,0x18,0x33,0x62,0x77,0xe5,0xf9,0x5d, - 0xb0,0xc7,0xba,0x1f,0x7e,0x3f,0x24,0x01,0x7d,0x71,0x4f,0xf7,0x94,0xf0,0x76,0xdb, - 0xa0,0xdc,0x0d,0xa6,0xf4,0xbe,0x80,0x5a,0xee,0xfe,0xb0,0xda,0xd5,0x14,0x21,0xbe, - 0xed,0x50,0x87,0x8b,0xd9,0x9c,0x08,0x6a,0x0d,0x93,0x5c,0x9e,0x61,0x00,0x65,0x21, - 0x7e,0x43,0xc7,0xd0,0xb8,0x10,0xdf,0x65,0x56,0x19,0x66,0x50,0xe7,0x56,0xa2,0x63, - 0x96,0xe2,0x7b,0x63,0x2c,0xc5,0x3b,0x17,0x32,0xc9,0x3f,0x38,0x3a,0x0d,0xa6,0x8f, - 0x61,0xeb,0xe6,0xf7,0xb9,0x3e,0x8f,0xd0,0x12,0x0b,0x56,0x02,0x53,0x11,0xf8,0xd6, - 0xc6,0xd2,0xbf,0xf1,0xb5,0xae,0x10,0x5a,0x13,0xb0,0xa6,0x5b,0x88,0xfa,0x2c,0x35, - 0x94,0x1d,0xaf,0xcd,0x6e,0x56,0x9e,0xff,0x05,0xd4,0xb8,0xe5,0xf8,0xdd,0x56,0xaf, - 0xb8,0xcc,0xc5,0x1c,0x65,0xd1,0x1e,0x02,0x12,0x07,0x16,0x73,0xad,0x4a,0xf8,0x53, - 0x61,0x25,0x7b,0x0d,0x1c,0xd6,0xeb,0xb7,0x94,0xa3,0xbc,0x46,0x8b,0x0d,0xbc,0x2a, - 0x85,0xf8,0xd7,0xb1,0xf9,0x10,0x07,0x5d,0x15,0x68,0x6a,0xc4,0x0f,0x9a,0x08,0xf1, - 0xb3,0x60,0x0e,0xd7,0x67,0x69,0x8e,0xcb,0x3d,0xc7,0xd0,0x6e,0x69,0x98,0xcc,0xf5, - 0x59,0xde,0xf4,0x3a,0x1e,0xcd,0x51,0x1e,0xa0,0xac,0x75,0x1b,0xa1,0x94,0x53,0xc4, - 0x7c,0x2d,0x90,0xd2,0x81,0xa5,0x1d,0x77,0xe1,0xfa,0x54,0x35,0x79,0x51,0x58,0xc7, - 0x0f,0x38,0x3a,0x87,0xca,0x54,0xf8,0x52,0x47,0x33,0x63,0xd9,0xc4,0xcf,0xa3,0x93, - 0x36,0x14,0xf1,0x87,0x17,0x24,0x7e,0x1d,0x66,0x07,0x52,0xca,0x1c,0xc8,0xf9,0x52, - 0x2f,0x5e,0x6d,0x68,0x8f,0x63,0xd1,0x6f,0x79,0xea,0x35,0x4a,0xf9,0xd6,0xa2,0xe6, - 0xeb,0xd5,0xda,0x26,0xfc,0x18,0x3b,0x70,0x94,0x89,0xa3,0xae,0x5a,0xc4,0x7f,0x46, - 0x79,0x59,0x6b,0xae,0xcf,0x3e,0xd6,0x12,0x44,0x69,0x8d,0xd0,0xd9,0x49,0x9c,0x7c, - 0xaa,0x48,0x47,0x4e,0x3e,0x46,0xa7,0x4c,0x1d,0x3f,0x54,0x2c,0x2c,0x17,0x70,0x94, - 0x8b,0xf3,0x6c,0x48,0xc4,0x18,0x67,0x41,0x35,0xbb,0x1c,0xa1,0x0a,0x2e,0x59,0x0b, - 0x5c,0x88,0xef,0xe2,0x59,0x34,0x49,0xfc,0x8d,0x58,0x78,0x4d,0x86,0x1a,0xf2,0x3c, - 0x47,0x07,0xd6,0x4d,0x81,0xf0,0x59,0x60,0x69,0xdb,0x61,0x5c,0x9f,0x91,0xc2,0x44, - 0xfc,0xf9,0x1c,0xe5,0x24,0x7a,0x04,0x6a,0x92,0xa9,0x8c,0xd7,0x35,0x9d,0x7f,0x2f, - 0xf4,0x99,0x29,0x19,0xee,0xc3,0x70,0xf9,0x4f,0xb0,0xe0,0x11,0x26,0x39,0x43,0x29, - 0xeb,0x64,0x84,0x66,0x3c,0x98,0xf0,0xcc,0x7d,0x1c,0x25,0xe6,0x7a,0xd6,0x52,0xbf, - 0xe9,0xbc,0x79,0x72,0xe1,0x24,0xbe,0xbd,0xc3,0xd1,0x81,0x80,0xcf,0xa1,0x2d,0xa7, - 0x73,0x74,0x10,0xc9,0x34,0xde,0x3c,0xfb,0x9d,0x95,0xf8,0xb5,0x1c,0xe5,0xbb,0x79, - 0x16,0x51,0x81,0x2f,0x28,0x98,0x86,0xa9,0x70,0x4e,0xca,0xa8,0xba,0x2f,0xa3,0x34, - 0x2c,0x43,0xe2,0x07,0x58,0xd8,0x2c,0x52,0xcc,0x85,0xeb,0x14,0xac,0x55,0x88,0x77, - 0x6d,0x86,0xfa,0x55,0x4b,0xe2,0xaf,0xc5,0xc6,0x93,0xb6,0x20,0x61,0x57,0x48,0xb5, - 0x4e,0xe8,0xf4,0x03,0x30,0x08,0xf4,0xb6,0x9d,0xc1,0x51,0x32,0x2e,0x1b,0xf1,0x1f, - 0xc2,0xbe,0xde,0x76,0x58,0xfc,0xdd,0x66,0x28,0x63,0x01,0x47,0xa7,0xd4,0xc4,0x75, - 0xfb,0x83,0xe1,0x9e,0x0f,0x39,0xca,0x78,0xb7,0x0d,0x84,0x5d,0x2b,0x08,0xbf,0x56, - 0x0a,0x5a,0xe2,0x3d,0xad,0xb4,0xc1,0xde,0x56,0x79,0xc6,0x84,0x16,0xb8,0xb7,0x33, - 0x54,0x62,0x53,0x16,0x3d,0xd5,0x09,0x7a,0x8c,0x45,0xa5,0x5b,0xc6,0x51,0x66,0x8f, - 0x1e,0x30,0x8f,0x77,0x41,0x3b,0xee,0x88,0x7a,0xf7,0xe2,0xe8,0x34,0x4c,0x27,0xe2, - 0x17,0xc5,0x1c,0xde,0x34,0x23,0x72,0x43,0x12,0xff,0x30,0x3c,0x97,0x56,0xc7,0x1b, - 0x9b,0x00,0xf1,0xd7,0x70,0x94,0x4f,0x28,0x49,0x1d,0x3b,0xc2,0x40,0x8a,0x39,0xe8, - 0x68,0x1b,0xf1,0xc7,0x6a,0x65,0xec,0xca,0x24,0xff,0x35,0x98,0x8a,0x7b,0x2b,0x96, - 0x91,0x1a,0xc3,0x1a,0xed,0xa2,0x1c,0xaa,0x63,0x5e,0x53,0xe8,0x64,0x43,0x1f,0xa9, - 0xa6,0xde,0x07,0x2c,0x02,0xfa,0xa4,0x14,0x73,0x66,0x17,0x38,0x18,0xab,0x4e,0xfc, - 0xd9,0x30,0x23,0x65,0x8d,0x3f,0x29,0x8b,0xf8,0x87,0xc3,0xf3,0x9c,0x56,0xcf,0x5b, - 0x9a,0x88,0xc4,0xbf,0x34,0x25,0x94,0xbb,0x9b,0xc1,0x57,0x32,0x37,0x85,0xf8,0x13, - 0x78,0xf3,0x23,0x54,0xdf,0x33,0x78,0xe7,0xfb,0x28,0xd1,0xb3,0xab,0x0c,0xea,0x52, - 0xc7,0x2a,0x84,0x60,0xdb,0xf0,0x3b,0x43,0x1f,0x5d,0xab,0x98,0x55,0x4d,0xe7,0x27, - 0x3c,0xa0,0x10,0xbc,0x14,0x07,0x56,0x1e,0xcc,0x82,0xee,0xdc,0x8d,0x93,0xb3,0x9f, - 0x15,0xd5,0xf1,0xc3,0x94,0xdd,0x4b,0x9d,0xa1,0xcb,0x5f,0xc8,0x51,0x5e,0x4b,0x15, - 0xe7,0x42,0xff,0xbf,0x58,0x9b,0xe6,0x8b,0xea,0xf8,0x79,0xad,0x3a,0x2e,0xc4,0xef, - 0x01,0xfd,0x35,0x8b,0xc4,0xd7,0x89,0xbf,0x1d,0xcc,0x98,0x63,0x60,0x76,0xbc,0x0b, - 0x33,0x5e,0xac,0xe3,0x0f,0xe6,0xcd,0xd3,0xa2,0xaf,0x80,0xf5,0x64,0x2c,0xd4,0x20, - 0x13,0xc6,0xe1,0xef,0x34,0xac,0xa7,0x74,0x32,0xef,0xc7,0x51,0x06,0xec,0x09,0x08, - 0x07,0xd6,0x9f,0x1f,0x8f,0x10,0xed,0xd1,0x6c,0x4e,0xb9,0xf8,0x4b,0x65,0x46,0xaa, - 0x35,0xd4,0xef,0x34,0x1b,0xe9,0xf3,0x12,0xff,0x6d,0x38,0x45,0x06,0x70,0x94,0xdf, - 0x7e,0x20,0xf4,0xad,0x81,0x88,0x4f,0x31,0x11,0xff,0x2e,0x2d,0x1c,0xb9,0xd2,0x08, - 0x12,0xbf,0x92,0x53,0x42,0x25,0x6d,0xad,0x6c,0x6c,0x89,0xbf,0x87,0x41,0xe2,0xa7, - 0x11,0xff,0x7e,0x43,0xbd,0xe2,0xd3,0xe2,0x5b,0xc2,0x8e,0xdf,0x5a,0x79,0x87,0x49, - 0xda,0x66,0xb5,0x3e,0xdd,0xa1,0x94,0xd7,0x06,0x03,0x66,0x3e,0x17,0x3b,0x67,0x60, - 0xb0,0xb2,0x6e,0x5b,0x65,0x30,0x9e,0x1c,0x64,0x21,0x7e,0xc8,0x24,0x61,0x1e,0xe2, - 0x3f,0x91,0x12,0x5a,0x60,0xaa,0xe4,0x22,0x58,0x7a,0xb2,0xda,0xdc,0xab,0x61,0xc7, - 0x2f,0x7b,0xcb,0xe4,0x96,0x40,0xfc,0xa4,0x76,0x18,0x59,0xc2,0x8c,0x3f,0x5c,0x79, - 0xdf,0x9f,0x4b,0xd2,0x22,0x62,0xe2,0xf7,0x83,0x03,0x4e,0xb7,0xf7,0xef,0x5f,0xb6, - 0xc4,0x7f,0x32,0xa1,0x91,0x76,0x63,0x92,0x7f,0x59,0x2a,0xfa,0x10,0x6f,0x7a,0xd2, - 0x49,0x63,0x11,0xbf,0xa9,0x7a,0x6e,0x1b,0x93,0xf8,0x49,0xf5,0xba,0xc5,0x10,0x76, - 0xf2,0x25,0xd4,0x89,0x15,0x90,0xb6,0x49,0x58,0xad,0x18,0x0b,0x4e,0xb5,0xac,0xb1, - 0xd6,0x80,0xbc,0xfa,0xb3,0x2b,0xe1,0xe1,0x5d,0x9f,0x40,0xfc,0x7d,0x0d,0x41,0x82, - 0x0b,0x99,0xe4,0xa8,0xb2,0x89,0xff,0x54,0xca,0x82,0xe5,0x67,0x96,0xa9,0x70,0x15, - 0x3c,0x7f,0x9e,0xf8,0xcd,0x8b,0xf8,0x17,0x1a,0xc8,0xba,0x10,0xea,0x6d,0x37,0x18, - 0x2b,0x7a,0x59,0xb0,0x1f,0x54,0x91,0x78,0x21,0x3c,0xd1,0x62,0x3a,0x3d,0x0b,0xf1, - 0x38,0xfb,0x2a,0xcf,0xf6,0x01,0x31,0x3b,0x73,0x7d,0x3a,0x15,0x9d,0xf8,0x15,0x04, - 0x43,0x7e,0x6a,0x88,0x8e,0xbd,0xb6,0xec,0xc5,0xed,0xd3,0x09,0x0d,0x17,0x3b,0x89, - 0xde,0xb2,0x48,0xfd,0x29,0x5a,0x98,0x70,0x5a,0xf2,0x9f,0x32,0x83,0xd4,0x8a,0x26, - 0xc4,0x32,0xdd,0x9b,0xc5,0x81,0x15,0x56,0x61,0x71,0x9b,0x87,0xf8,0x13,0x0c,0x06, - 0x06,0x5b,0x9a,0x97,0x00,0x6d,0xbc,0xd8,0xe0,0x79,0x3f,0x30,0x87,0x75,0xe6,0x65, - 0xc3,0xcc,0x71,0xbb,0xc3,0x73,0x63,0x13,0x88,0x1f,0xc0,0x87,0xa4,0xff,0xfe,0x1e, - 0x93,0xb4,0x4d,0x31,0x67,0xee,0x0e,0x7f,0x44,0x66,0x89,0x6f,0x4a,0x0b,0x1d,0x70, - 0x74,0x30,0xb3,0x29,0x2a,0xf3,0x0b,0xae,0x3f,0xf4,0xd8,0x94,0x56,0xda,0x96,0x71, - 0x39,0x8d,0xf8,0x49,0xd9,0x8c,0x93,0xac,0x47,0xb6,0xf7,0xbb,0x3e,0x9b,0x95,0xf8, - 0xb6,0xf6,0x4a,0x23,0xbe,0xa9,0x7e,0xd5,0x24,0xbe,0x3e,0x28,0x5f,0xe3,0xcd,0x4f, - 0x6f,0x1c,0x05,0x47,0x58,0x16,0xe2,0xbf,0xca,0x9b,0x1f,0xe5,0x34,0xce,0xe1,0xb9, - 0xd1,0x06,0x2e,0x5d,0xaf,0xb4,0xc3,0x4d,0x16,0x41,0x3b,0x8e,0x49,0x76,0x4f,0x20, - 0x7e,0xa7,0x2c,0xc4,0x7f,0x32,0x21,0x3c,0x34,0x54,0x6c,0xab,0xb6,0x38,0x9d,0x37, - 0x14,0x97,0x7a,0x52,0x78,0x69,0x1e,0xe2,0xbb,0x9e,0x9a,0x11,0x72,0x7a,0xfa,0x3f, - 0x57,0xab,0xce,0x80,0x8c,0xaa,0x4e,0x98,0x43,0xe2,0x87,0x16,0x52,0x96,0xa9,0xea, - 0x24,0xcd,0xb8,0x67,0x5b,0xfa,0x72,0x22,0x47,0x67,0x7f,0x1d,0x00,0x87,0x57,0x1f, - 0x60,0x7f,0x05,0x47,0x2a,0xa1,0xd3,0x93,0x2c,0x61,0x0f,0x57,0x60,0x06,0xd1,0xcb, - 0xe8,0x0d,0x3c,0x6a,0x91,0xf8,0x31,0xdf,0xbe,0x65,0xf1,0xee,0xc6,0x89,0x76,0xaf, - 0x64,0x92,0x1f,0x30,0xc9,0xe9,0x10,0xbc,0xe7,0xa1,0x5e,0x17,0x1a,0x9e,0x73,0x52, - 0x75,0x92,0xa4,0xd8,0xf1,0x96,0xc8,0xcc,0x24,0x49,0x56,0xb1,0x94,0xe5,0x42,0xfc, - 0x4a,0xca,0xec,0x91,0x45,0xca,0xbb,0xde,0x57,0x54,0xe2,0xab,0xdf,0x38,0xbc,0x91, - 0x24,0x7e,0x1a,0xe2,0xbe,0xbe,0x9f,0xd3,0x0f,0xb1,0xfe,0x0a,0xf8,0x12,0x7d,0xbf, - 0x41,0x31,0x67,0xc6,0x8b,0xdb,0xa4,0x32,0xd6,0x6a,0x65,0xe8,0xa1,0x24,0x36,0x89, - 0x1f,0x70,0x94,0x48,0xb7,0x0c,0x6b,0xd1,0xdc,0xc0,0x12,0x08,0xf5,0x4c,0xca,0xae, - 0x1f,0xb5,0x32,0xd3,0x2d,0x85,0x7f,0xc8,0xf5,0x87,0x45,0xb8,0x04,0xa9,0x99,0xb6, - 0x1e,0x2e,0x51,0xf4,0xcc,0xb4,0x63,0x8a,0xca,0xd8,0x92,0x67,0x73,0x8a,0x0d,0x30, - 0xec,0x31,0xfe,0x42,0xd9,0x7a,0x18,0xa4,0x94,0x97,0xb4,0xb8,0x1d,0x94,0xe0,0x53, - 0x08,0x98,0xe4,0x9b,0x16,0xcf,0xed,0x1e,0xf8,0xfd,0x0c,0x03,0xf1,0x27,0x5a,0x9c, - 0x73,0x69,0x33,0x5b,0x6b,0x8e,0x72,0x15,0xe5,0x21,0xd3,0x30,0xe5,0x3b,0x1e,0x2b, - 0x89,0xa0,0xd7,0x1b,0x76,0x74,0x0d,0x36,0x58,0x78,0x32,0x87,0x3e,0x07,0x09,0xaa, - 0x4a,0x92,0xc4,0x57,0x3b,0xf4,0xd0,0x84,0x17,0x4c,0x72,0x28,0x27,0x6e,0xf4,0x31, - 0x96,0x32,0xfa,0x3a,0xd4,0x23,0x2b,0x2a,0x19,0x66,0x84,0xa4,0x14,0x24,0xd7,0x65, - 0x94,0xf8,0xf7,0x24,0xb8,0xe5,0x6d,0xb3,0x4d,0x4f,0x43,0xa8,0xf0,0x06,0x5c,0x0f, - 0xe0,0x89,0xb6,0x85,0x95,0x57,0x32,0xb4,0x89,0xea,0x7c,0xbc,0x0c,0x11,0x8e,0x59, - 0x8e,0x32,0xbd,0x47,0xf9,0xce,0x4e,0xf0,0xcc,0x2e,0x2e,0x48,0xd0,0xa1,0xbc,0x69, - 0x4e,0xa1,0xb8,0x7e,0x27,0x62,0x70,0xe5,0x2d,0x7f,0x7d,0x80,0x48,0xbf,0x5a,0x04, - 0x29,0xcd,0xc7,0xbf,0xef,0xcb,0x40,0xfc,0x6d,0xb1,0xe2,0xae,0x85,0x37,0xad,0x06, - 0xde,0xdd,0xe5,0x08,0x4b,0x35,0x6d,0x97,0x33,0x91,0xe2,0x3a,0x48,0xf8,0x05,0x70, - 0x4e,0x2c,0x85,0xee,0xb6,0x4f,0x8a,0xaa,0x53,0x06,0xf1,0x6d,0xf5,0x0a,0x95,0xf8, - 0x9f,0x8f,0xa1,0x2b,0xd6,0xc0,0xd4,0xf7,0x89,0x12,0x44,0xe5,0x72,0x94,0x50,0x00, - 0x09,0x16,0x7f,0xe3,0xa7,0x68,0xef,0x73,0x2d,0x3a,0x7e,0xa8,0xf8,0x4d,0x5e,0x44, - 0xfb,0xce,0xc1,0xdf,0x7f,0x72,0xfd,0x89,0x89,0x27,0xa2,0x2e,0x71,0x99,0xb5,0x5c, - 0x9f,0x61,0x39,0xab,0x0a,0x18,0xf7,0x55,0x3b,0x0c,0xf6,0x89,0x10,0x82,0x1f,0xa3, - 0x6f,0xe7,0xa1,0x6f,0x62,0xd4,0xe0,0x5a,0xad,0x12,0x5e,0x10,0xbf,0x77,0x6f,0x8e, - 0xb2,0xca,0xbd,0x83,0x7b,0xf5,0x67,0x6d,0x50,0xcb,0xbc,0xc2,0xb0,0x69,0x28,0xc0, - 0xfa,0xf1,0x60,0x94,0xff,0x2a,0x78,0x32,0xcf,0xf1,0x1d,0xb5,0x4c,0xf2,0x5a,0xea, - 0x66,0x5d,0x0f,0x8f,0x2d,0x11,0xbe,0x11,0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d, - 0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d, - 0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d,0x3c,0x1a,0x1b,0xff, - 0x1f,0x00,0x4b,0xa8,0x7e,0x3f,0xd2,0x12,0x11,0x79,0x00,0x00,0x00,0x00,0x49,0x45, - 0x4e,0x44,0xae,0x42,0x60,0x82, -}; - -int _picture_png_length_get(void) -{ - return sizeof(_picture_png); -} diff --git a/components/gui/include/SConscript b/components/gui/include/SConscript deleted file mode 100644 index 387853aa2f..0000000000 --- a/components/gui/include/SConscript +++ /dev/null @@ -1,13 +0,0 @@ -# RT-Thread building script for gui - -from building import * - -cwd = GetCurrentDir() -src = Glob('*.c') + Glob('*.cpp') -CPPPATH = [ cwd, - cwd + '/rtgui', - cwd + '/rtgui/widgets'] - -group = DefineGroup('GuiEngine', src, depend = [''], CPPPATH = CPPPATH) - -Return('group') \ No newline at end of file diff --git a/components/gui/include/rtgui/blit.h b/components/gui/include/rtgui/blit.h deleted file mode 100644 index 3a07204f93..0000000000 --- a/components/gui/include/rtgui/blit.h +++ /dev/null @@ -1,224 +0,0 @@ -/* - * File : blit.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2013-10-04 Bernard porting SDL software render to RT-Thread GUI - */ - -/* - Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef __RTGUI_BLIT_H__ -#define __RTGUI_BLIT_H__ - -#include -#include - -/* Assemble R-G-B values into a specified pixel format and store them */ -#define RGB565_FROM_RGB(Pixel, r, g, b) \ -{ \ - Pixel = ((r>>3)<<11)|((g>>2)<<5)|(b>>3); \ -} -#define BGR565_FROM_RGB(Pixel, r, g, b) \ -{ \ - Pixel = ((b>>3)<<11)|((g>>2)<<5)|(r>>3); \ -} -#define RGB555_FROM_RGB(Pixel, r, g, b) \ -{ \ - Pixel = ((r>>3)<<10)|((g>>3)<<5)|(b>>3); \ -} -#define RGB888_FROM_RGB(Pixel, r, g, b) \ -{ \ - Pixel = (r<<16)|(g<<8)|b; \ -} -#define ARGB8888_FROM_RGBA(Pixel, r, g, b, a) \ -{ \ - Pixel = (a<<24)|(r<<16)|(g<<8)|b; \ -} -#define RGBA8888_FROM_RGBA(Pixel, r, g, b, a) \ -{ \ - Pixel = (r<<24)|(g<<16)|(b<<8)|a; \ -} -#define ABGR8888_FROM_RGBA(Pixel, r, g, b, a) \ -{ \ - Pixel = (a<<24)|(b<<16)|(g<<8)|r; \ -} -#define BGRA8888_FROM_RGBA(Pixel, r, g, b, a) \ -{ \ - Pixel = (b<<24)|(g<<16)|(r<<8)|a; \ -} -#define ARGB2101010_FROM_RGBA(Pixel, r, g, b, a) \ -{ \ - r = r ? ((r << 2) | 0x3) : 0; \ - g = g ? ((g << 2) | 0x3) : 0; \ - b = b ? ((b << 2) | 0x3) : 0; \ - a = (a * 3) / 255; \ - Pixel = (a<<30)|(r<<20)|(g<<10)|b; \ -} - -/* Load pixel of the specified format from a buffer and get its R-G-B values */ -#define RGB_FROM_RGB565(Pixel, r, g, b) \ - { \ - r = rtgui_blit_expand_byte[3][((Pixel&0xF800)>>11)]; \ - g = rtgui_blit_expand_byte[2][((Pixel&0x07E0)>>5)]; \ - b = rtgui_blit_expand_byte[3][(Pixel&0x001F)]; \ -} -#define RGB_FROM_BGR565(Pixel, r, g, b) \ - { \ - b = rtgui_blit_expand_byte[3][((Pixel&0xF800)>>11)]; \ - g = rtgui_blit_expand_byte[2][((Pixel&0x07E0)>>5)]; \ - r = rtgui_blit_expand_byte[3][(Pixel&0x001F)]; \ -} -#define RGB_FROM_RGB555(Pixel, r, g, b) \ -{ \ - r = rtgui_blit_expand_byte[3][((Pixel&0x7C00)>>10)]; \ - g = rtgui_blit_expand_byte[3][((Pixel&0x03E0)>>5)]; \ - b = rtgui_blit_expand_byte[3][(Pixel&0x001F)]; \ -} -#define RGB_FROM_RGB888(Pixel, r, g, b) \ -{ \ - r = ((Pixel&0xFF0000)>>16); \ - g = ((Pixel&0xFF00)>>8); \ - b = (Pixel&0xFF); \ -} - -#define RGBA_FROM_RGBA8888(Pixel, r, g, b, a) \ -{ \ - r = (Pixel>>24); \ - g = ((Pixel>>16)&0xFF); \ - b = ((Pixel>>8)&0xFF); \ - a = (Pixel&0xFF); \ -} -#define RGBA_FROM_ARGB8888(Pixel, r, g, b, a) \ -{ \ - r = ((Pixel>>16)&0xFF); \ - g = ((Pixel>>8)&0xFF); \ - b = (Pixel&0xFF); \ - a = (Pixel>>24); \ -} -#define RGBA_FROM_ABGR8888(Pixel, r, g, b, a) \ -{ \ - r = (Pixel&0xFF); \ - g = ((Pixel>>8)&0xFF); \ - b = ((Pixel>>16)&0xFF); \ - a = (Pixel>>24); \ -} -#define RGBA_FROM_BGRA8888(Pixel, r, g, b, a) \ -{ \ - r = ((Pixel>>8)&0xFF); \ - g = ((Pixel>>16)&0xFF); \ - b = (Pixel>>24); \ - a = (Pixel&0xFF); \ -} -#define RGBA_FROM_ARGB2101010(Pixel, r, g, b, a) \ -{ \ - r = ((Pixel>>22)&0xFF); \ - g = ((Pixel>>12)&0xFF); \ - b = ((Pixel>>2)&0xFF); \ - a = rtgui_blit_expand_byte[6][(Pixel>>30)]; \ -} - -/* 4-times unrolled loop */ -#define DUFFS_LOOP4(pixel_copy_increment, width) \ -{ int n = (width+3)/4; \ - switch (width & 3) { \ - case 0: do { pixel_copy_increment; \ - case 3: pixel_copy_increment; \ - case 2: pixel_copy_increment; \ - case 1: pixel_copy_increment; \ - } while (--n > 0); \ - } \ -} - -/* 8-times unrolled loop */ -#define DUFFS_LOOP8(pixel_copy_increment, width) \ -{ int n = (width+7)/8; \ - switch (width & 7) { \ - case 0: do { pixel_copy_increment; \ - case 7: pixel_copy_increment; \ - case 6: pixel_copy_increment; \ - case 5: pixel_copy_increment; \ - case 4: pixel_copy_increment; \ - case 3: pixel_copy_increment; \ - case 2: pixel_copy_increment; \ - case 1: pixel_copy_increment; \ - } while ( --n > 0 ); \ - } \ -} - -/* Use the 8-times version of the loop by default */ -#define DUFFS_LOOP(pixel_copy_increment, width) \ - DUFFS_LOOP8(pixel_copy_increment, width) - -struct rtgui_blit_info -{ - rt_uint8_t *src; - int src_w, src_h; - int src_pitch; - int src_skip; - - rt_uint8_t *dst; - int dst_w, dst_h; - int dst_pitch; - int dst_skip; - - rt_uint8_t src_fmt; - rt_uint8_t dst_fmt; - rt_uint8_t r, g, b, a; -}; - -struct rtgui_image_info -{ - rt_uint8_t *pixels; - int src_pitch; - - rt_uint8_t src_fmt; - rt_uint8_t a; -}; - -extern const rt_uint8_t* rtgui_blit_expand_byte[9]; - -typedef void (*rtgui_blit_line_func)(rt_uint8_t *dst, rt_uint8_t *src, int line); -rtgui_blit_line_func rtgui_blit_line_get(int dst_bpp, int src_bpp); -rtgui_blit_line_func rtgui_blit_line_get_inv(int dst_bpp, int src_bpp); - -void rtgui_blit(struct rtgui_blit_info * info); -void rtgui_image_info_blit(struct rtgui_image_info* image, struct rtgui_dc* dc, struct rtgui_rect *dc_rect); - -#endif - diff --git a/components/gui/include/rtgui/color.h b/components/gui/include/rtgui/color.h deleted file mode 100644 index c9b8282425..0000000000 --- a/components/gui/include/rtgui/color.h +++ /dev/null @@ -1,192 +0,0 @@ -/* - * File : color.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - * 2012-01-24 onelife add mono color support - */ -#ifndef __RTGUI_COLOR_H__ -#define __RTGUI_COLOR_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The color used in the GUI: - * - * bit bit - * RGB565 15 R,G,B 0 - * BGR565 15 B,G,R 0 - * RGB888 23 R,G,B 0 - * ARGB888 31 A,R,G,B 0 - * RGBA888 31 R,G,B,A 0 - * ABGR888 31 A,B,G,R 0 - * - * The rtgui_color is defined as ARGB888. - * bit31 A,R,G,B bit0 - */ -#define RTGUI_ARGB(a, r, g, b) \ - ((rtgui_color_t)(((rt_uint8_t)(b)|\ - (((unsigned long)(rt_uint8_t)(g))<<8))|\ - (((unsigned long)(rt_uint8_t)(r))<<16)|\ - (((unsigned long)(rt_uint8_t)(a))<<24))) -#define RTGUI_RGB(r, g, b) RTGUI_ARGB(255, (r), (g), (b)) - -#define RTGUI_RGB_B(c) ((c) & 0xff) -#define RTGUI_RGB_G(c) (((c) >> 8) & 0xff) -#define RTGUI_RGB_R(c) (((c) >> 16) & 0xff) -#define RTGUI_RGB_A(c) (((c) >> 24) & 0xff) - -extern const rtgui_color_t default_foreground; -extern const rtgui_color_t default_background; - -/* it's better use these color definitions */ -#define RED RTGUI_RGB(0xff, 0x00, 0x00) -#define GREEN RTGUI_RGB(0x00, 0xff, 0x00) -#define BLUE RTGUI_RGB(0x00, 0x00, 0xff) -#define BLACK RTGUI_RGB(0x00, 0x00, 0x00) -#define WHITE RTGUI_RGB(0xff, 0xff, 0xff) -#define HIGH_LIGHT RTGUI_RGB(0xfc, 0xfc, 0xfc) -#define DARK_GREY RTGUI_RGB(0x7f, 0x7f, 0x7f) -#define LIGHT_GREY RTGUI_RGB(0xc0, 0xc0, 0xc0) - -#ifdef TRANSPARENT -#undef TRANSPARENT -#endif -#define TRANSPARENT RTGUI_ARGB(0, 0, 0, 0) - -extern const rtgui_color_t red; -extern const rtgui_color_t green; -extern const rtgui_color_t blue; -extern const rtgui_color_t black; -extern const rtgui_color_t white; -extern const rtgui_color_t high_light; -extern const rtgui_color_t dark_grey; -extern const rtgui_color_t light_grey; - -/* - * RTGUI default color format: ARGB - * AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB - * 31 0 - */ - -/* convert rtgui color to mono */ -rt_inline rt_uint8_t rtgui_color_to_mono(rtgui_color_t c) -{ - rt_uint8_t pixel; - - pixel = (RTGUI_RGB_R(c) | RTGUI_RGB_G(c) | RTGUI_RGB_B(c)) ? 0x01 : 0x00; - return pixel; -} - -rt_inline rtgui_color_t rtgui_color_from_mono(rt_uint8_t pixel) -{ - rtgui_color_t color; - - if (pixel) - { - color = white; - } - else - { - color = black; - } - return color; -} - -/* convert rtgui color to RRRRRGGGGGGBBBBB */ -rt_inline rt_uint16_t rtgui_color_to_565(rtgui_color_t c) -{ - rt_uint16_t pixel; - - pixel = (rt_uint16_t)(((RTGUI_RGB_R(c) >> 3) << 11) | ((RTGUI_RGB_G(c) >> 2) << 5) | (RTGUI_RGB_B(c) >> 3)); - - return pixel; -} - -rt_inline rtgui_color_t rtgui_color_from_565(rt_uint16_t pixel) -{ - rt_uint16_t r, g, b; - rtgui_color_t color; - - r = (pixel >> 11) & 0x1f; - g = (pixel >> 5) & 0x3f; - b = pixel & 0x1f; - - color = b * 255 / 31 + ((g * 255 / 63) << 8) + ((r * 255 / 31) << 16); - - return color; -} - -/* convert rtgui color to BBBBBGGGGGGRRRRR */ -rt_inline rt_uint16_t rtgui_color_to_565p(rtgui_color_t c) -{ - rt_uint16_t pixel; - - pixel = (rt_uint16_t)(((RTGUI_RGB_B(c) >> 3) << 11) | ((RTGUI_RGB_G(c) >> 2) << 5) | (RTGUI_RGB_R(c) >> 3)); - return pixel; -} - -rt_inline rtgui_color_t rtgui_color_from_565p(rt_uint16_t pixel) -{ - rt_uint8_t r, g, b; - rtgui_color_t color; - - r = pixel & 0x1f; - g = (pixel >> 5) & 0x3f; - b = (pixel >> 11) & 0x1f; - - color = b * 255 / 31 + ((g * 255 / 63) << 8) + ((r * 255 / 31) << 16); - - return color; -} - -/* convert rtgui color to RGB */ -rt_inline rt_uint32_t rtgui_color_to_888(rtgui_color_t c) -{ - rt_uint32_t pixel; - - pixel = RTGUI_RGB_R(c) << 16 | RTGUI_RGB_G(c) << 8 | RTGUI_RGB_B(c); - return pixel; -} - -rt_inline rtgui_color_t rtgui_color_from_888(rt_uint32_t pixel) -{ - rtgui_color_t color; - - color = RTGUI_RGB(((pixel >> 16) & 0xff), ((pixel >> 8) & 0xff), pixel & 0xff); - - return color; -} - -/* get the bits of specified pixle format */ -rt_uint8_t rtgui_color_get_bits(rt_uint8_t pixel_format) RTGUI_PURE; -/* get the bytes of specified pixle format */ -rt_uint8_t rtgui_color_get_bpp(rt_uint8_t pixel_format) RTGUI_PURE; - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/components/gui/include/rtgui/dc.h b/components/gui/include/rtgui/dc.h deleted file mode 100644 index 3dddbbff2a..0000000000 --- a/components/gui/include/rtgui/dc.h +++ /dev/null @@ -1,299 +0,0 @@ -/* - * File : dc.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __RTGUI_DC_H__ -#define __RTGUI_DC_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -#define RTGUI_DC(dc) ((struct rtgui_dc*)(dc)) - -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -enum rtgui_dc_type -{ - RTGUI_DC_HW, - RTGUI_DC_CLIENT, - RTGUI_DC_BUFFER, -}; - -struct rtgui_dc_engine -{ - /* interface */ - void (*draw_point)(struct rtgui_dc *dc, int x, int y); - void (*draw_color_point)(struct rtgui_dc *dc, int x, int y, rtgui_color_t color); - void (*draw_vline)(struct rtgui_dc *dc, int x, int y1, int y2); - void (*draw_hline)(struct rtgui_dc *dc, int x1, int x2, int y); - void (*fill_rect)(struct rtgui_dc *dc, rtgui_rect_t *rect); - void (*blit_line)(struct rtgui_dc *dc, int x1, int x2, int y, rt_uint8_t *line_data); - void (*blit)(struct rtgui_dc *dc, struct rtgui_point *dc_point, struct rtgui_dc *dest, rtgui_rect_t *rect); - - rt_bool_t (*fini)(struct rtgui_dc *dc); -}; - -/* - * The abstract device context - * - * Normally, a DC is a drawable canvas, user can draw point/line/cycle etc - * on the DC. - * - * There are several kinds of DC: - * - Hardware DC; - * - Client DC; - * - Buffer DC; - */ -struct rtgui_dc -{ - /* type of device context */ - rt_uint32_t type; - - /* dc engine */ - const struct rtgui_dc_engine *engine; -}; - -/* - * The hardware device context - * - * The hardware DC is a context based on hardware device, for examle the - * LCD device. The operations on the hardware DC are reflected to the real - * hardware. - * - */ -struct rtgui_dc_hw -{ - struct rtgui_dc parent; - rtgui_widget_t *owner; - const struct rtgui_graphic_driver *hw_driver; -}; - -/** - * The buffer dc is a device context with memory buffer. - * - * All the operations on this device context is reflected to the memory buffer. - */ -struct rtgui_dc_buffer -{ - struct rtgui_dc parent; - - /* graphic context */ - rtgui_gc_t gc; - - /* pixel format */ - rt_uint8_t pixel_format; - rt_uint8_t blend_mode; /* RTGUI_BLENDMODE: None/Blend/Add/Mod */ - - /* width and height */ - rt_uint16_t width, height; - /* pitch */ - rt_uint16_t pitch; - -#ifdef RTGUI_IMAGE_CONTAINER - /* image dc */ - struct rtgui_image_item *image_item; -#endif - - /* pixel alpha */ - rt_uint8_t pixel_alpha; - /* pixel data */ - rt_uint8_t *pixel; -}; - -#define RTGUI_DC_FC(dc) (rtgui_dc_get_gc(RTGUI_DC(dc))->foreground) -#define RTGUI_DC_BC(dc) (rtgui_dc_get_gc(RTGUI_DC(dc))->background) -#define RTGUI_DC_FONT(dc) (rtgui_dc_get_gc(RTGUI_DC(dc))->font) -#define RTGUI_DC_TEXTALIGN(dc) (rtgui_dc_get_gc(RTGUI_DC(dc))->textalign) - -/* create a buffer dc */ -struct rtgui_dc *rtgui_dc_buffer_create(int width, int height); -struct rtgui_dc *rtgui_dc_buffer_create_pixformat(rt_uint8_t pixel_format, int w, int h); -#ifdef RTGUI_IMAGE_CONTAINER -struct rtgui_dc *rtgui_img_dc_create_pixformat(rt_uint8_t pixel_format, rt_uint8_t *pixel, - struct rtgui_image_item *image_item); -#endif -struct rtgui_dc *rtgui_dc_buffer_create_from_dc(struct rtgui_dc* dc); -void rtgui_dc_buffer_set_alpha(struct rtgui_dc* dc, rt_uint8_t pixel_alpha); - -/* create a widget dc */ -struct rtgui_dc *rtgui_dc_widget_create(struct rtgui_widget * owner); - -/* begin and end a drawing */ -struct rtgui_dc *rtgui_dc_begin_drawing(rtgui_widget_t *owner); -void rtgui_dc_end_drawing(struct rtgui_dc *dc, rt_bool_t update); - -/* destroy a dc */ -void rtgui_dc_destory(struct rtgui_dc *dc); - -/* create a hardware dc */ -struct rtgui_dc *rtgui_dc_hw_create(rtgui_widget_t *owner); - -/* create a client dc */ -struct rtgui_dc *rtgui_dc_client_create(rtgui_widget_t *owner); -void rtgui_dc_client_init(rtgui_widget_t *owner); - -rt_uint8_t *rtgui_dc_buffer_get_pixel(struct rtgui_dc *dc); - -void rtgui_dc_draw_line(struct rtgui_dc *dc, int x1, int y1, int x2, int y2); -void rtgui_dc_draw_rect(struct rtgui_dc *dc, struct rtgui_rect *rect); -void rtgui_dc_fill_rect_forecolor(struct rtgui_dc *dc, struct rtgui_rect *rect); -void rtgui_dc_draw_round_rect(struct rtgui_dc *dc, struct rtgui_rect *rect, int r); -void rtgui_dc_fill_round_rect(struct rtgui_dc *dc, struct rtgui_rect *rect, int r); -/** Fill a vertical gradient rect from @c1 to @c2 */ -void rtgui_dc_fill_gradient_rectv(struct rtgui_dc *dc, rtgui_rect_t *rect, - rtgui_color_t c1, rtgui_color_t c2); -void rtgui_dc_draw_annulus(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r1, rt_int16_t r2, rt_int16_t start, rt_int16_t end); -void rtgui_dc_draw_pie(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r, rt_int16_t start, rt_int16_t end); -void rtgui_dc_fill_pie(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r, rt_int16_t start, rt_int16_t end); - -void rtgui_dc_draw_text(struct rtgui_dc *dc, const char *text, struct rtgui_rect *rect); -void rtgui_dc_draw_text_stroke(struct rtgui_dc *dc, const char *text, struct rtgui_rect *rect, - rtgui_color_t color_stroke, rtgui_color_t color_core); - -void rtgui_dc_draw_mono_bmp(struct rtgui_dc *dc, int x, int y, int w, int h, const rt_uint8_t *data); -void rtgui_dc_draw_byte(struct rtgui_dc *dc, int x, int y, int h, const rt_uint8_t *data); -void rtgui_dc_draw_word(struct rtgui_dc *dc, int x, int y, int h, const rt_uint8_t *data); - -void rtgui_dc_draw_border(struct rtgui_dc *dc, rtgui_rect_t *rect, int flag); -void rtgui_dc_draw_horizontal_line(struct rtgui_dc *dc, int x1, int x2, int y); -void rtgui_dc_draw_vertical_line(struct rtgui_dc *dc, int x, int y1, int y2); -void rtgui_dc_draw_focus_rect(struct rtgui_dc *dc, rtgui_rect_t *rect); - -void rtgui_dc_draw_polygon(struct rtgui_dc *dc, const int *vx, const int *vy, int count); -void rtgui_dc_fill_polygon(struct rtgui_dc *dc, const int *vx, const int *vy, int count); - -void rtgui_dc_draw_circle(struct rtgui_dc *dc, int x, int y, int r); -void rtgui_dc_fill_circle(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r); -void rtgui_dc_draw_arc(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r, rt_int16_t start, rt_int16_t end); - -void rtgui_dc_draw_ellipse(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t rx, rt_int16_t ry); -void rtgui_dc_fill_ellipse(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t rx, rt_int16_t ry); - -/* alpha blending functions */ -void rtgui_dc_draw_aa_line(struct rtgui_dc * dst,int x1,int y1,int x2,int y2); -void rtgui_dc_draw_aa_lines(struct rtgui_dc * dst,const struct rtgui_point * points,int count); - -void rtgui_dc_blend_point(struct rtgui_dc * dst,int x,int y,enum RTGUI_BLENDMODE blendMode,rt_uint8_t r,rt_uint8_t g,rt_uint8_t b,rt_uint8_t a); -void rtgui_dc_blend_points(struct rtgui_dc * dst,const rtgui_point_t * points,int count,enum RTGUI_BLENDMODE blendMode,rt_uint8_t r,rt_uint8_t g,rt_uint8_t b,rt_uint8_t a); - -void rtgui_dc_blend_line(struct rtgui_dc * dst,int x1,int y1,int x2,int y2,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color); -void rtgui_dc_blend_lines(struct rtgui_dc * dst,const rtgui_point_t * points,int count,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color); - -void rtgui_dc_blend_fill_rect(struct rtgui_dc * dst,const rtgui_rect_t * rect,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color); -void rtgui_dc_blend_fill_rects(struct rtgui_dc * dst,const rtgui_rect_t * rects,int count,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color); - -void rtgui_dc_draw_aa_circle(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r); -void rtgui_dc_draw_aa_ellipse(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t rx, rt_int16_t ry); - -int rtgui_dc_draw_thick_line(struct rtgui_dc * dst, rt_int16_t x1, rt_int16_t y1, rt_int16_t x2, rt_int16_t y2, rt_uint8_t width); - -/* - * dc inline function - * - * Note: - * In order to improve drawing speed, put most of common function of dc to inline - */ - -/* - * draw a point on dc - */ -rt_inline void rtgui_dc_draw_point(struct rtgui_dc *dc, int x, int y) -{ - dc->engine->draw_point(dc, x, y); -} - -/* - * draw a color point on dc - */ -rt_inline void rtgui_dc_draw_color_point(struct rtgui_dc *dc, int x, int y, rtgui_color_t color) -{ - dc->engine->draw_color_point(dc, x, y, color); -} - -/* - * draw a vertical line on dc - */ -rt_inline void rtgui_dc_draw_vline(struct rtgui_dc *dc, int x, int y1, int y2) -{ - dc->engine->draw_vline(dc, x, y1, y2); -} - -/* - * draw a horizontal line on dc - */ -rt_inline void rtgui_dc_draw_hline(struct rtgui_dc *dc, int x1, int x2, int y) -{ - dc->engine->draw_hline(dc, x1, x2, y); -} - -/* - * fill a rect with background color - */ -rt_inline void rtgui_dc_fill_rect(struct rtgui_dc *dc, struct rtgui_rect *rect) -{ - dc->engine->fill_rect(dc, rect); -} - -/* - * blit a dc (x, y) on another dc(rect) - */ -rt_inline void rtgui_dc_blit(struct rtgui_dc *dc, struct rtgui_point *dc_point, struct rtgui_dc *dest, rtgui_rect_t *rect) -{ - dc->engine->blit(dc, dc_point, dest, rect); -} - -/* set gc of dc */ -void rtgui_dc_set_gc(struct rtgui_dc *dc, rtgui_gc_t *gc); -/* get gc of dc */ -rtgui_gc_t *rtgui_dc_get_gc(struct rtgui_dc *dc); -/* get visible status of dc */ -rt_bool_t rtgui_dc_get_visible(struct rtgui_dc *dc); -/* get rect of dc */ -void rtgui_dc_get_rect(struct rtgui_dc *dc, rtgui_rect_t *rect); -/* get pixel format */ -rt_uint8_t rtgui_dc_get_pixel_format(struct rtgui_dc *dc); -/* coordinate conversion */ -void rtgui_dc_logic_to_device(struct rtgui_dc* dc, struct rtgui_point *point); -void rtgui_dc_rect_to_device(struct rtgui_dc* dc, struct rtgui_rect* rect); - -/* dc rotation and zoom operations */ -struct rtgui_dc *rtgui_dc_shrink(struct rtgui_dc *dc, int factorx, int factory); -struct rtgui_dc *rtgui_dc_zoom(struct rtgui_dc *dc, double zoomx, double zoomy, int smooth); -struct rtgui_dc *rtgui_dc_rotozoom(struct rtgui_dc *dc, double angle, double zoomx, double zoomy, int smooth); - -/* dc buffer dump to file */ -void rtgui_dc_buffer_dump(struct rtgui_dc *self, char *fn); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/components/gui/include/rtgui/dc_draw.h b/components/gui/include/rtgui/dc_draw.h deleted file mode 100644 index 76482367d4..0000000000 --- a/components/gui/include/rtgui/dc_draw.h +++ /dev/null @@ -1,551 +0,0 @@ -/* - * File : dc_draw.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2013-10-04 Bernard porting SDL software render to RT-Thread GUI - */ - -/* - Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ - -#ifndef __DC_DRAW_H__ -#define __DC_DRAW_H__ - -#include - -/* This code assumes that r, g, b, a are the source color, - * and in the blend and add case, the RGB values are premultiplied by a. - */ - -#define DRAW_MUL(_a, _b) (((unsigned)(_a)*(_b))/256) - -#define DRAW_FASTSETPIXEL(type) \ - *pixel = (type) color - -#define DRAW_FASTSETPIXEL1 DRAW_FASTSETPIXEL(rt_uint8_t) -#define DRAW_FASTSETPIXEL2 DRAW_FASTSETPIXEL(rt_uint16_t) -#define DRAW_FASTSETPIXEL4 DRAW_FASTSETPIXEL(rt_uint32_t) - -#define DRAW_FASTSETPIXELXY(x, y, type, bpp, color) \ - *(type *)(_dc_get_pixel(dst, x, y))= (type) color - -#define DRAW_FASTSETPIXELXY1(x, y) DRAW_FASTSETPIXELXY(x, y, rt_uint8_t, 1, color) -#define DRAW_FASTSETPIXELXY2(x, y) DRAW_FASTSETPIXELXY(x, y, rt_uint16_t, 2, color) -#define DRAW_FASTSETPIXELXY4(x, y) DRAW_FASTSETPIXELXY(x, y, rt_uint32_t, 4, color) - -#define DRAW_SETPIXEL(setpixel) \ -do { \ - unsigned sr = r, sg = g, sb = b, sa = a; (void) sa; \ - setpixel; \ -} while (0) - -#define DRAW_SETPIXEL_BLEND(getpixel, setpixel) \ -do { \ - unsigned sr, sg, sb, sa; (void) sa; \ - getpixel; \ - sr = DRAW_MUL(inva, sr) + r; \ - sg = DRAW_MUL(inva, sg) + g; \ - sb = DRAW_MUL(inva, sb) + b; \ - setpixel; \ -} while (0) - -#define DRAW_SETPIXEL_ADD(getpixel, setpixel) \ -do { \ - unsigned sr, sg, sb, sa; (void) sa; \ - getpixel; \ - sr += r; if (sr > 0xff) sr = 0xff; \ - sg += g; if (sg > 0xff) sg = 0xff; \ - sb += b; if (sb > 0xff) sb = 0xff; \ - setpixel; \ -} while (0) - -#define DRAW_SETPIXEL_MOD(getpixel, setpixel) \ -do { \ - unsigned sr, sg, sb, sa; (void) sa; \ - getpixel; \ - sr = DRAW_MUL(sr, r); \ - sg = DRAW_MUL(sg, g); \ - sb = DRAW_MUL(sb, b); \ - setpixel; \ -} while (0) - -#define DRAW_SETPIXELXY(x, y, type, bpp, op) \ -do { \ - type *pixel = (type *)(_dc_get_pixel(dst, x, y));\ - op; \ -} while (0) - -/* - * Define draw operators for RGB555 - */ - -#define DRAW_SETPIXEL_RGB555 \ - DRAW_SETPIXEL(RGB555_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_BLEND_RGB555 \ - DRAW_SETPIXEL_BLEND(RGB_FROM_RGB555(*pixel, sr, sg, sb), \ - RGB555_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_ADD_RGB555 \ - DRAW_SETPIXEL_ADD(RGB_FROM_RGB555(*pixel, sr, sg, sb), \ - RGB555_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_MOD_RGB555 \ - DRAW_SETPIXEL_MOD(RGB_FROM_RGB555(*pixel, sr, sg, sb), \ - RGB555_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXELXY_RGB555(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_RGB555) - -#define DRAW_SETPIXELXY_BLEND_RGB555(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BLEND_RGB555) - -#define DRAW_SETPIXELXY_ADD_RGB555(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_ADD_RGB555) - -#define DRAW_SETPIXELXY_MOD_RGB555(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_MOD_RGB555) - -/* - * Define draw operators for RGB565 - */ - -#define DRAW_SETPIXEL_RGB565 \ - DRAW_SETPIXEL(RGB565_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_BLEND_RGB565 \ - DRAW_SETPIXEL_BLEND(RGB_FROM_RGB565(*pixel, sr, sg, sb), \ - RGB565_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_ADD_RGB565 \ - DRAW_SETPIXEL_ADD(RGB_FROM_RGB565(*pixel, sr, sg, sb), \ - RGB565_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_MOD_RGB565 \ - DRAW_SETPIXEL_MOD(RGB_FROM_RGB565(*pixel, sr, sg, sb), \ - RGB565_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXELXY_RGB565(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_RGB565) - -#define DRAW_SETPIXELXY_BLEND_RGB565(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BLEND_RGB565) - -#define DRAW_SETPIXELXY_ADD_RGB565(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_ADD_RGB565) - -#define DRAW_SETPIXELXY_MOD_RGB565(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_MOD_RGB565) - -/* - * Define draw operators for BGR565 - */ - -#define DRAW_SETPIXEL_BGR565 \ - DRAW_SETPIXEL(BGR565_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_BLEND_BGR565 \ - DRAW_SETPIXEL_BLEND(RGB_FROM_BGR565(*pixel, sr, sg, sb), \ - BGR565_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_ADD_BGR565 \ - DRAW_SETPIXEL_ADD(RGB_FROM_BGR565(*pixel, sr, sg, sb), \ - BGR565_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_MOD_BGR565 \ - DRAW_SETPIXEL_MOD(RGB_FROM_BGR565(*pixel, sr, sg, sb), \ - BGR565_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXELXY_BGR565(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BGR565) - -#define DRAW_SETPIXELXY_BLEND_BGR565(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BLEND_BGR565) - -#define DRAW_SETPIXELXY_ADD_BGR565(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_ADD_BGR565) - -#define DRAW_SETPIXELXY_MOD_BGR565(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_MOD_BGR565) - -/* - * Define draw operators for RGB888 - */ - -#define DRAW_SETPIXEL_RGB888 \ - DRAW_SETPIXEL(RGB888_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_BLEND_RGB888 \ - DRAW_SETPIXEL_BLEND(RGB_FROM_RGB888(*pixel, sr, sg, sb), \ - RGB888_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_ADD_RGB888 \ - DRAW_SETPIXEL_ADD(RGB_FROM_RGB888(*pixel, sr, sg, sb), \ - RGB888_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXEL_MOD_RGB888 \ - DRAW_SETPIXEL_MOD(RGB_FROM_RGB888(*pixel, sr, sg, sb), \ - RGB888_FROM_RGB(*pixel, sr, sg, sb)) - -#define DRAW_SETPIXELXY_RGB888(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_RGB888) - -#define DRAW_SETPIXELXY_BLEND_RGB888(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_BLEND_RGB888) - -#define DRAW_SETPIXELXY_ADD_RGB888(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_ADD_RGB888) - -#define DRAW_SETPIXELXY_MOD_RGB888(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_MOD_RGB888) - -/* - * Define draw operators for ARGB8888 - */ - -#define DRAW_SETPIXEL_ARGB8888 \ - DRAW_SETPIXEL(ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa)) - -#define DRAW_SETPIXEL_BLEND_ARGB8888 \ - DRAW_SETPIXEL_BLEND(RGBA_FROM_ARGB8888(*pixel, sr, sg, sb, sa), \ - ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa)) - -#define DRAW_SETPIXEL_ADD_ARGB8888 \ - DRAW_SETPIXEL_ADD(RGBA_FROM_ARGB8888(*pixel, sr, sg, sb, sa), \ - ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa)) - -#define DRAW_SETPIXEL_MOD_ARGB8888 \ - DRAW_SETPIXEL_MOD(RGBA_FROM_ARGB8888(*pixel, sr, sg, sb, sa), \ - ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa)) - -#define DRAW_SETPIXELXY_ARGB8888(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_ARGB8888) - -#define DRAW_SETPIXELXY_BLEND_ARGB8888(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_BLEND_ARGB8888) - -#define DRAW_SETPIXELXY_ADD_ARGB8888(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_ADD_ARGB8888) - -#define DRAW_SETPIXELXY_MOD_ARGB8888(x, y) \ - DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_MOD_ARGB8888) - -/* - * Define line drawing macro - */ - -#define ABS(_x) ((_x) < 0 ? -(_x) : (_x)) - -/* Horizontal line */ -#define HLINE(type, op, draw_end) \ -{ \ - int length; \ - type *pixel; \ - if (x1 <= x2) { \ - pixel = (type *)_dc_get_pixel(dst, x1, y1); \ - length = draw_end ? (x2-x1+1) : (x2-x1); \ - } else { \ - pixel = (type *)_dc_get_pixel(dst, x2, y1); \ - if (!draw_end) { \ - ++pixel; \ - } \ - length = draw_end ? (x1-x2+1) : (x1-x2); \ - } \ - while (length--) { \ - op; \ - ++pixel; \ - } \ -} - -/* Vertical line */ -#define VLINE(type, op, draw_end) \ -{ \ - int length; \ - int pitch = _dc_get_pitch(dst)/(_UI_BITBYTES(_dc_get_bits_per_pixel(dst))); \ - type *pixel; \ - if (y1 <= y2) { \ - pixel = (type *)_dc_get_pixel(dst, x1, y1); \ - length = draw_end ? (y2-y1+1) : (y2-y1); \ - } else { \ - pixel = (type *)_dc_get_pixel(dst, x1, y2); \ - if (!draw_end) { \ - pixel += pitch; \ - } \ - length = draw_end ? (y1-y2+1) : (y1-y2); \ - } \ - while (length--) { \ - op; \ - pixel += pitch; \ - } \ -} - -/* Diagonal line */ -#define DLINE(type, op, draw_end) \ -{ \ - int length; \ - int pitch = _dc_get_pitch(dst)/(_UI_BITBYTES(_dc_get_bits_per_pixel(dst))); \ - type *pixel; \ - if (y1 <= y2) { \ - pixel = (type *)_dc_get_pixel(dst, x1, y1); \ - if (x1 <= x2) { \ - ++pitch; \ - } else { \ - --pitch; \ - } \ - length = (y2-y1); \ - } else { \ - pixel = (type *)_dc_get_pixel(dst, x2, y2); \ - if (x2 <= x1) { \ - ++pitch; \ - } else { \ - --pitch; \ - } \ - if (!draw_end) { \ - pixel += pitch; \ - } \ - length = (y1-y2); \ - } \ - if (draw_end) { \ - ++length; \ - } \ - while (length--) { \ - op; \ - pixel += pitch; \ - } \ -} - -/* Bresenham's line algorithm */ -#define BLINE(x1, y1, x2, y2, op, draw_end) \ -{ \ - int i, deltax, deltay, numpixels; \ - int d, dinc1, dinc2; \ - int x, xinc1, xinc2; \ - int y, yinc1, yinc2; \ - \ - deltax = ABS(x2 - x1); \ - deltay = ABS(y2 - y1); \ - \ - if (deltax >= deltay) { \ - numpixels = deltax + 1; \ - d = (2 * deltay) - deltax; \ - dinc1 = deltay * 2; \ - dinc2 = (deltay - deltax) * 2; \ - xinc1 = 1; \ - xinc2 = 1; \ - yinc1 = 0; \ - yinc2 = 1; \ - } else { \ - numpixels = deltay + 1; \ - d = (2 * deltax) - deltay; \ - dinc1 = deltax * 2; \ - dinc2 = (deltax - deltay) * 2; \ - xinc1 = 0; \ - xinc2 = 1; \ - yinc1 = 1; \ - yinc2 = 1; \ - } \ - \ - if (x1 > x2) { \ - xinc1 = -xinc1; \ - xinc2 = -xinc2; \ - } \ - if (y1 > y2) { \ - yinc1 = -yinc1; \ - yinc2 = -yinc2; \ - } \ - \ - x = x1; \ - y = y1; \ - \ - if (!draw_end) { \ - --numpixels; \ - } \ - for (i = 0; i < numpixels; ++i) { \ - op(x, y); \ - if (d < 0) { \ - d += dinc1; \ - x += xinc1; \ - y += yinc1; \ - } else { \ - d += dinc2; \ - x += xinc2; \ - y += yinc2; \ - } \ - } \ -} - -/* Xiaolin Wu's line algorithm, based on Michael Abrash's implementation */ -#define WULINE(x1, y1, x2, y2, opaque_op, blend_op, draw_end) \ -{ \ - rt_uint16_t ErrorAdj, ErrorAcc; \ - rt_uint16_t ErrorAccTemp, Weighting; \ - int DeltaX, DeltaY, Temp, XDir; \ - unsigned r, g, b, a, inva; \ - \ - /* remove compiling warning */ \ - r = 0; g = 0; b = 0; a = 0; \ - inva = 0; inva = inva; \ - /* Draw the initial pixel, which is always exactly intersected by \ - the line and so needs no weighting */ \ - opaque_op(x1, y1); \ - \ - /* Draw the final pixel, which is always exactly intersected by the line \ - and so needs no weighting */ \ - if (draw_end) { \ - opaque_op(x2, y2); \ - } \ - \ - /* Make sure the line runs top to bottom */ \ - if (y1 > y2) { \ - Temp = y1; y1 = y2; y2 = Temp; \ - Temp = x1; x1 = x2; x2 = Temp; \ - } \ - DeltaY = y2 - y1; \ - \ - if ((DeltaX = x2 - x1) >= 0) { \ - XDir = 1; \ - } else { \ - XDir = -1; \ - DeltaX = -DeltaX; /* make DeltaX positive */ \ - } \ - \ - /* line is not horizontal, diagonal, or vertical */ \ - ErrorAcc = 0; /* initialize the line error accumulator to 0 */ \ - \ - /* Is this an X-major or Y-major line? */ \ - if (DeltaY > DeltaX) { \ - /* Y-major line; calculate 16-bit fixed-point fractional part of a \ - pixel that X advances each time Y advances 1 pixel, truncating the \ - result so that we won't overrun the endpoint along the X axis */ \ - ErrorAdj = ((unsigned long) DeltaX << 16) / (unsigned long) DeltaY; \ - /* Draw all pixels other than the first and last */ \ - while (--DeltaY) { \ - ErrorAccTemp = ErrorAcc; /* remember current accumulated error */ \ - ErrorAcc += ErrorAdj; /* calculate error for next pixel */ \ - if (ErrorAcc <= ErrorAccTemp) { \ - /* The error accumulator turned over, so advance the X coord */ \ - x1 += XDir; \ - } \ - y1++; /* Y-major, so always advance Y */ \ - /* The IntensityBits most significant bits of ErrorAcc give us the \ - intensity weighting for this pixel, and the complement of the \ - weighting for the paired pixel */ \ - Weighting = ErrorAcc >> 8; \ - { \ - a = DRAW_MUL(_a, (Weighting ^ 255)); \ - r = DRAW_MUL(_r, a); \ - g = DRAW_MUL(_g, a); \ - b = DRAW_MUL(_b, a); \ - inva = (a ^ 0xFF); \ - blend_op(x1, y1); \ - } \ - { \ - a = DRAW_MUL(_a, Weighting); \ - r = DRAW_MUL(_r, a); \ - g = DRAW_MUL(_g, a); \ - b = DRAW_MUL(_b, a); \ - inva = (a ^ 0xFF); \ - blend_op(x1 + XDir, y1); \ - } \ - } \ - } else { \ - /* X-major line; calculate 16-bit fixed-point fractional part of a \ - pixel that Y advances each time X advances 1 pixel, truncating the \ - result to avoid overrunning the endpoint along the X axis */ \ - ErrorAdj = ((unsigned long) DeltaY << 16) / (unsigned long) DeltaX; \ - /* Draw all pixels other than the first and last */ \ - while (--DeltaX) { \ - ErrorAccTemp = ErrorAcc; /* remember currrent accumulated error */ \ - ErrorAcc += ErrorAdj; /* calculate error for next pixel */ \ - if (ErrorAcc <= ErrorAccTemp) { \ - /* The error accumulator turned over, so advance the Y coord */ \ - y1++; \ - } \ - x1 += XDir; /* X-major, so always advance X */ \ - /* The IntensityBits most significant bits of ErrorAcc give us the \ - intensity weighting for this pixel, and the complement of the \ - weighting for the paired pixel */ \ - Weighting = ErrorAcc >> 8; \ - { \ - a = DRAW_MUL(_a, (Weighting ^ 255)); \ - r = DRAW_MUL(_r, a); \ - g = DRAW_MUL(_g, a); \ - b = DRAW_MUL(_b, a); \ - inva = (a ^ 0xFF); \ - blend_op(x1, y1); \ - } \ - { \ - a = DRAW_MUL(_a, Weighting); \ - r = DRAW_MUL(_r, a); \ - g = DRAW_MUL(_g, a); \ - b = DRAW_MUL(_b, a); \ - inva = (a ^ 0xFF); \ - blend_op(x1, y1 + 1); \ - } \ - } \ - } \ -} - -#define AALINE(x1, y1, x2, y2, opaque_op, blend_op, draw_end) \ - WULINE(x1, y1, x2, y2, opaque_op, blend_op, draw_end) - -/* - * Define fill rect macro - */ -#define FILLRECT(type, op) \ -do { \ - int width = rect->x2 - rect->x1; \ - int height = rect->y2 - rect->y1; \ - int pitch = _dc_get_pitch(dst)/(_UI_BITBYTES(_dc_get_bits_per_pixel(dst))); \ - int skip = pitch - width; \ - type *pixel = (type *)_dc_get_pixel(dst, rect->x1, rect->y1); \ - while (height--) { \ - { int n = (width+3)/4; \ - switch (width & 3) { \ - case 0: do { op; pixel++; \ - case 3: op; pixel++; \ - case 2: op; pixel++; \ - case 1: op; pixel++; \ - } while ( --n > 0 ); \ - } \ - } \ - pixel += skip; \ - } \ -} while (0) - -#endif diff --git a/components/gui/include/rtgui/dc_trans.h b/components/gui/include/rtgui/dc_trans.h deleted file mode 100644 index 47216a21a3..0000000000 --- a/components/gui/include/rtgui/dc_trans.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * File : dc_trans.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2010-04-10 Bernard first version - */ - -#ifndef __RTGUI_DC_TRANS_H__ -#define __RTGUI_DC_TRANS_H__ - -#include -#include - -struct rtgui_dc_trans; - -/** Create a dc translator on the dc @owner - * - * @return RT_NULL is there is no memory. - */ -struct rtgui_dc_trans* rtgui_dc_trans_create(struct rtgui_dc *owner); - -/** Rotate the dc clockwise. - * - * @param degree the degree to rotate. - */ -void rtgui_dc_trans_rotate(struct rtgui_dc_trans *dct, double degree); - -void rtgui_dc_trans_set_aa(struct rtgui_dc_trans *dct, int use_aa); - -void rtgui_dc_trans_scale(struct rtgui_dc_trans *dct, double sx, double sy); - -/** Move the dc - * - * The unit of @dx and @dy is pixel. - */ -void rtgui_dc_trans_move(struct rtgui_dc_trans *dct, int dx, int dy); - -void rtgui_dc_trans_get_new_wh(struct rtgui_dc_trans *dct, int *new_w, int *new_h); - -void rtgui_dc_trans_blit(struct rtgui_dc_trans *dct, - struct rtgui_point *dc_point, - struct rtgui_dc *dest, - struct rtgui_rect *rect); - -void rtgui_dc_trans_destroy(struct rtgui_dc_trans *dct); - -#endif diff --git a/components/gui/include/rtgui/driver.h b/components/gui/include/rtgui/driver.h deleted file mode 100644 index 8246d82256..0000000000 --- a/components/gui/include/rtgui/driver.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * File : driver.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-04 Bernard first version - */ -#ifndef __RTGUI_DRIVER_H__ -#define __RTGUI_DRIVER_H__ - -#include -#include - -/* graphic driver operations */ -struct rtgui_graphic_driver_ops -{ - /* set and get pixel in (x, y) */ - void (*set_pixel)(rtgui_color_t *c, int x, int y); - void (*get_pixel)(rtgui_color_t *c, int x, int y); - - void (*draw_hline)(rtgui_color_t *c, int x1, int x2, int y); - void (*draw_vline)(rtgui_color_t *c, int x , int y1, int y2); - - /* draw raw hline */ - void (*draw_raw_hline)(rt_uint8_t *pixels, int x1, int x2, int y); -}; - -/* graphic extension operations */ -struct rtgui_graphic_ext_ops -{ - /* some 2D operations */ - void (*draw_line)(rtgui_color_t *c, int x1, int y1, int x2, int y2); - - void (*draw_rect)(rtgui_color_t *c, int x1, int y1, int x2, int y2); - void (*fill_rect)(rtgui_color_t *c, int x1, int y1, int x2, int y2); - - void (*draw_circle)(rtgui_color_t *c, int x, int y, int r); - void (*fill_circle)(rtgui_color_t *c, int x, int y, int r); - - void (*draw_ellipse)(rtgui_color_t *c, int x, int y, int rx, int ry); - void (*fill_ellipse)(rtgui_color_t *c, int x, int y, int rx, int ry); -}; - -struct rtgui_graphic_driver -{ - /* pixel format and byte per pixel */ - rt_uint8_t pixel_format; - rt_uint8_t bits_per_pixel; - rt_uint16_t pitch; - - /* screen width and height */ - rt_uint16_t width; - rt_uint16_t height; - - /* framebuffer address and ops */ - rt_uint8_t *framebuffer; - struct rt_device* device; - - const struct rtgui_graphic_driver_ops *ops; - const struct rtgui_graphic_ext_ops *ext_ops; -}; - -struct rtgui_graphic_driver *rtgui_graphic_driver_get_default(void); - -void rtgui_graphic_driver_get_rect(const struct rtgui_graphic_driver *driver, rtgui_rect_t *rect); -void rtgui_graphic_driver_screen_update(const struct rtgui_graphic_driver *driver, rtgui_rect_t *rect); -rt_uint8_t *rtgui_graphic_driver_get_framebuffer(const struct rtgui_graphic_driver *driver); - -rt_err_t rtgui_graphic_set_device(rt_device_t device); -void rtgui_graphic_driver_set_framebuffer(void *fb); - -rt_inline struct rtgui_graphic_driver *rtgui_graphic_get_device() -{ - return rtgui_graphic_driver_get_default(); -} - -#ifdef RTGUI_USING_HW_CURSOR -/* - * hardware cursor - */ -enum rtgui_cursor_type -{ - RTGUI_CURSOR_ARROW, - RTGUI_CURSOR_HAND, -}; - -void rtgui_cursor_set_device(const char* device_name); -void rtgui_cursor_set_position(rt_uint16_t x, rt_uint16_t y); -void rtgui_cursor_set_image(enum rtgui_cursor_type type); -#endif - -#ifdef RTGUI_USING_VFRAMEBUFFER -void rtgui_graphic_driver_vmode_enter(void); -void rtgui_graphic_driver_vmode_exit(void); -struct rtgui_dc* rtgui_graphic_driver_get_rect_buffer(const struct rtgui_graphic_driver *driver, struct rtgui_rect *rect); -#endif - -rt_bool_t rtgui_graphic_driver_is_vmode(void); - -#endif - diff --git a/components/gui/include/rtgui/event.h b/components/gui/include/rtgui/event.h deleted file mode 100644 index d1a8070af4..0000000000 --- a/components/gui/include/rtgui/event.h +++ /dev/null @@ -1,580 +0,0 @@ -/* - * File : event.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-04 Bernard first version - */ -#ifndef __RTGUI_EVENT_H__ -#define __RTGUI_EVENT_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -/* NOTE: if you create a new event type, remember to add it into the union - * rtgui_event_generic */ -enum _rtgui_event_type -{ - /* applications event */ - RTGUI_EVENT_APP_CREATE, /* create an application */ - RTGUI_EVENT_APP_DESTROY, /* destroy an application */ - RTGUI_EVENT_APP_ACTIVATE, /* activate an application */ - - /* window event */ - RTGUI_EVENT_WIN_CREATE, /* create a window */ - RTGUI_EVENT_WIN_DESTROY, /* destroy a window */ - RTGUI_EVENT_WIN_SHOW, /* show a window */ - RTGUI_EVENT_WIN_HIDE, /* hide a window */ - RTGUI_EVENT_WIN_ACTIVATE, /* activate a window */ - RTGUI_EVENT_WIN_DEACTIVATE, /* deactivate a window */ - RTGUI_EVENT_WIN_CLOSE, /* close a window */ - RTGUI_EVENT_WIN_MOVE, /* move a window */ - RTGUI_EVENT_WIN_RESIZE, /* resize a window */ - RTGUI_EVENT_WIN_UPDATE_END, /* update done for window */ - RTGUI_EVENT_WIN_MODAL_ENTER, /* the window is entering modal mode. - This event should be sent after the - window got setup and before the - application got setup. */ - - /* WM event */ - RTGUI_EVENT_SET_WM, /* set window manager */ - - RTGUI_EVENT_UPDATE_BEGIN, /* update a rect */ - RTGUI_EVENT_UPDATE_END, /* update a rect */ - RTGUI_EVENT_MONITOR_ADD, /* add a monitor rect */ - RTGUI_EVENT_MONITOR_REMOVE, /* remove a monitor rect */ - RTGUI_EVENT_SHOW, /* the widget is going to be shown */ - RTGUI_EVENT_HIDE, /* the widget is going to be hidden */ - RTGUI_EVENT_PAINT, /* paint on screen */ - RTGUI_EVENT_TIMER, /* timer */ - RTGUI_EVENT_UPDATE_TOPLVL, /* update the toplevel */ - - /* virtual paint event */ - RTGUI_EVENT_VPAINT_REQ, /* virtual paint request (server -> client) */ - - /* clip rect information */ - RTGUI_EVENT_CLIP_INFO, /* clip rect info */ - - /* mouse and keyboard event */ - RTGUI_EVENT_MOUSE_MOTION, /* mouse motion */ - RTGUI_EVENT_MOUSE_BUTTON, /* mouse button info */ - RTGUI_EVENT_KBD, /* keyboard info */ - RTGUI_EVENT_TOUCH, /* touch event to server */ - RTGUI_EVENT_GESTURE, /* gesture event */ - - /* widget event */ - RTGUI_EVENT_FOCUSED, /* widget focused */ - RTGUI_EVENT_SCROLLED, /* scroll bar scrolled */ - RTGUI_EVENT_RESIZE, /* widget resize */ - RTGUI_EVENT_SELECTED, /* widget selected */ - RTGUI_EVENT_UNSELECTED, /* widget un-selected */ - RTGUI_EVENT_MV_MODEL, /* data of a model has been changed */ - - WBUS_NOTIFY_EVENT, - - /* user command event. It should always be the last command type. */ - RTGUI_EVENT_COMMAND = 0x0100, /* user command */ -}; -typedef enum _rtgui_event_type rtgui_event_type; - -enum -{ - RTGUI_STATUS_OK = 0, /* status ok */ - RTGUI_STATUS_ERROR, /* generic error */ - RTGUI_STATUS_NRC, /* no resource */ -}; - -struct rtgui_event -{ - /* the event type */ - enum _rtgui_event_type type; - /* user field of event */ - rt_uint16_t user; - - /* the event sender */ - struct rtgui_app *sender; - - /* mailbox to acknowledge request */ - rt_mailbox_t ack; -}; -typedef struct rtgui_event rtgui_event_t; -#define RTGUI_EVENT(e) ((struct rtgui_event*)(e)) - -extern struct rtgui_app* rtgui_app_self(void); - -#define RTGUI_EVENT_INIT(e, t) do \ -{ \ - (e)->type = (t); \ - (e)->user = 0; \ - (e)->sender = rtgui_app_self(); \ - (e)->ack = RT_NULL; \ -} while (0) - -/* - * RTGUI Application Event - */ -struct rtgui_event_application -{ - struct rtgui_event parent; - - struct rtgui_app *app; -}; - -/* gui application init */ -#define RTGUI_EVENT_APP_CREATE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_APP_CREATE) -#define RTGUI_EVENT_APP_DESTROY_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_APP_DESTROY) -#define RTGUI_EVENT_APP_ACTIVATE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_APP_ACTIVATE) - -/* - * RTGUI Window Event - */ -#define _RTGUI_EVENT_WIN_ELEMENTS \ - struct rtgui_event parent; \ - struct rtgui_win *wid; - -/* - * RTGUI Window Event - */ -struct rtgui_event_win -{ - _RTGUI_EVENT_WIN_ELEMENTS -}; - -struct rtgui_event_win_create -{ - _RTGUI_EVENT_WIN_ELEMENTS - struct rtgui_win *parent_window; -}; - -struct rtgui_event_win_move -{ - _RTGUI_EVENT_WIN_ELEMENTS - rt_int16_t x, y; -}; - -struct rtgui_event_win_resize -{ - _RTGUI_EVENT_WIN_ELEMENTS - - rtgui_rect_t rect; -}; - -struct rtgui_event_win_update_end -{ - _RTGUI_EVENT_WIN_ELEMENTS - - rtgui_rect_t rect; -}; - -#define rtgui_event_win_destroy rtgui_event_win -#define rtgui_event_win_show rtgui_event_win -#define rtgui_event_win_hide rtgui_event_win -#define rtgui_event_win_activate rtgui_event_win -#define rtgui_event_win_deactivate rtgui_event_win -#define rtgui_event_win_close rtgui_event_win -#define rtgui_event_win_modal_enter rtgui_event_win - -/* window event init */ -#define RTGUI_EVENT_WIN_CREATE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_CREATE) -#define RTGUI_EVENT_WIN_DESTROY_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_DESTROY) -#define RTGUI_EVENT_WIN_SHOW_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_SHOW) -#define RTGUI_EVENT_WIN_HIDE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_HIDE) -#define RTGUI_EVENT_WIN_ACTIVATE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_ACTIVATE) -#define RTGUI_EVENT_WIN_DEACTIVATE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_DEACTIVATE) -#define RTGUI_EVENT_WIN_CLOSE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_CLOSE) -#define RTGUI_EVENT_WIN_MOVE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_MOVE) -#define RTGUI_EVENT_WIN_RESIZE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_RESIZE) -#define RTGUI_EVENT_WIN_UPDATE_END_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_UPDATE_END) -#define RTGUI_EVENT_WIN_MODAL_ENTER_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_MODAL_ENTER) - -/* - * RTGUI set window manager - */ -struct rtgui_event_set_wm -{ - struct rtgui_event parent; - struct rtgui_app *app; -}; -#define RTGUI_EVENT_SET_WM_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_SET_WM); - -/* - * RTGUI Other Event - */ -struct rtgui_event_update_begin -{ - struct rtgui_event parent; - - /* the update rect */ - rtgui_rect_t rect; -}; - -struct rtgui_event_update_end -{ - struct rtgui_event parent; - - /* the update rect */ - rtgui_rect_t rect; -}; - -struct rtgui_event_monitor -{ - _RTGUI_EVENT_WIN_ELEMENTS - - /* the monitor rect */ - rtgui_rect_t rect; -}; - -struct rtgui_event_paint -{ - _RTGUI_EVENT_WIN_ELEMENTS - - rtgui_rect_t rect; /* rect to be updated */ -}; - -struct rtgui_timer; -struct rtgui_event_timer -{ - struct rtgui_event parent; - - struct rtgui_timer *timer; -}; -typedef struct rtgui_event_timer rtgui_event_timer_t; - - -struct rtgui_event_clip_info -{ - _RTGUI_EVENT_WIN_ELEMENTS - - /* the number of rects */ - //rt_uint32_t num_rect; - - /* rtgui_rect_t *rects */ -}; -#define RTGUI_EVENT_GET_RECT(e, i) &(((rtgui_rect_t*)(e + 1))[i]) - -#define RTGUI_EVENT_UPDATE_BEGIN_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_UPDATE_BEGIN) -#define RTGUI_EVENT_UPDATE_END_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_UPDATE_END) -#define RTGUI_EVENT_MONITOR_ADD_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MONITOR_ADD) -#define RTGUI_EVENT_MONITOR_REMOVE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MONITOR_REMOVE) -#define RTGUI_EVENT_CLIP_INFO_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_CLIP_INFO) -#define RTGUI_EVENT_PAINT_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_PAINT) -#define RTGUI_EVENT_TIMER_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_TIMER) - -#define rtgui_event_show rtgui_event -#define rtgui_event_hide rtgui_event - -#define RTGUI_EVENT_SHOW_INIT(e) RTGUI_EVENT_INIT((e), RTGUI_EVENT_SHOW) -#define RTGUI_EVENT_HIDE_INIT(e) RTGUI_EVENT_INIT((e), RTGUI_EVENT_HIDE) - -struct rtgui_event_update_toplvl -{ - struct rtgui_event parent; - struct rtgui_win *toplvl; -}; - -#define RTGUI_EVENT_UPDATE_TOPLVL_INIT(e) \ - do { \ - RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_UPDATE_TOPLVL); \ - (e)->toplvl = RT_NULL; \ - } while (0) - -struct rtgui_event_vpaint_req -{ - _RTGUI_EVENT_WIN_ELEMENTS - - struct rtgui_event_vpaint_req *sender; - struct rt_completion *cmp; - struct rtgui_dc* buffer; -}; - -#define RTGUI_EVENT_VPAINT_REQ_INIT(e, win, cm) \ - do { \ - RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_VPAINT_REQ); \ - (e)->wid = win; \ - (e)->cmp = cm; \ - (e)->sender = (e); \ - (e)->buffer = RT_NULL; \ - rt_completion_init((e)->cmp); \ - } while (0) - -/** - * RTGUI Gesture Event - */ -enum rtgui_gesture_type -{ - RTGUI_GESTURE_NONE = 0x0000, - RTGUI_GESTURE_TAP = 0x0001, - /* Usually used to zoom in and out. */ - RTGUI_GESTURE_PINCH = 0x0002, - RTGUI_GESTURE_DRAG = 0x0004, - RTGUI_GESTURE_LONGPRESS = 0x0008, - RTGUI_GESTURE_DRAGGED = 0x0001 | 0x0004 | 0x0008, - /* PINCH, DRAG finished. */ - RTGUI_GESTURE_FINISH = 0x8000, - /* The corresponding gesture should be canceled. */ - RTGUI_GESTURE_CANCEL = 0x4000, - RTGUI_GESTURE_TYPE_MASK = 0x0FFF, -}; - -struct rtgui_event_gesture -{ - _RTGUI_EVENT_WIN_ELEMENTS - - enum rtgui_gesture_type type; - - rt_uint32_t win_acti_cnt; /* window activate count */ -}; - -/* - * RTGUI Mouse and Keyboard Event - */ -struct rtgui_event_mouse -{ - _RTGUI_EVENT_WIN_ELEMENTS - - rt_uint16_t x, y; - rt_uint16_t button; - - /* Timestamp of this event sampled in driver. */ - rt_tick_t ts; - /* id of touch session(from down to up). Different session should have - * different id. id should never be 0. */ - rt_uint32_t id; - - rt_uint32_t win_acti_cnt; /* window activate count */ -}; -#define RTGUI_MOUSE_BUTTON_LEFT 0x01 -#define RTGUI_MOUSE_BUTTON_RIGHT 0x02 -#define RTGUI_MOUSE_BUTTON_MIDDLE 0x03 -#define RTGUI_MOUSE_BUTTON_WHEELUP 0x04 -#define RTGUI_MOUSE_BUTTON_WHEELDOWN 0x08 - -#define RTGUI_MOUSE_BUTTON_DOWN 0x10 -#define RTGUI_MOUSE_BUTTON_UP 0x20 - -#define RTGUI_EVENT_GESTURE_INIT(e, gtype) \ - do { \ - RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_GESTURE); \ - (e)->type = gtype; \ - } while (0) - -struct rtgui_event_kbd -{ - _RTGUI_EVENT_WIN_ELEMENTS - - rt_uint32_t win_acti_cnt; /* window activate count */ - - rt_uint16_t type; /* key down or up */ - rt_uint16_t key; /* current key */ - rt_uint16_t mod; /* current key modifiers */ - rt_uint16_t unicode; /* translated character */ -}; -#define RTGUI_KBD_IS_SET_CTRL(e) ((e)->mod & (RTGUI_KMOD_LCTRL | RTGUI_KMOD_RCTRL)) -#define RTGUI_KBD_IS_SET_ALT(e) ((e)->mod & (RTGUI_KMOD_LALT | RTGUI_KMOD_RALT)) -#define RTGUI_KBD_IS_SET_SHIFT(e) ((e)->mod & (RTGUI_KMOD_LSHIFT| RTGUI_KMOD_RSHIFT)) -#define RTGUI_KBD_IS_UP(e) ((e)->type == RTGUI_KEYUP) -#define RTGUI_KBD_IS_DOWN(e) ((e)->type == RTGUI_KEYDOWN) - -#define RTGUI_EVENT_MOUSE_MOTION_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MOUSE_MOTION) -#define RTGUI_EVENT_MOUSE_BUTTON_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MOUSE_BUTTON) -#define RTGUI_EVENT_KBD_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_KBD) - -/** - * RTGUI Touch Event - * NOTE: There is not touch event to user applications, it's handled by server. - */ -struct rtgui_event_touch -{ - struct rtgui_event parent; - - rt_uint16_t x, y; - rt_uint16_t up_down; - rt_uint16_t resv; -}; -#define RTGUI_TOUCH_UP 0x01 -#define RTGUI_TOUCH_DOWN 0x02 -#define RTGUI_TOUCH_MOTION 0x03 -#define RTGUI_EVENT_TOUCH_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_TOUCH) - -struct rtgui_event_command -{ - _RTGUI_EVENT_WIN_ELEMENTS - - /* command type */ - rt_int32_t type; - - /* command id */ - rt_int32_t command_id; - - /* command string */ - char command_string[RTGUI_NAME_MAX]; -}; -#define RTGUI_EVENT_COMMAND_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_COMMAND) - -#define RTGUI_CMD_UNKNOWN 0x00 -#define RTGUI_CMD_WM_CLOSE 0x10 - -#define RTGUI_CMD_USER_INT 0x20 -#define RTGUI_CMD_USER_STRING 0x21 - -/************************************************************************/ -/* Widget Event */ -/************************************************************************/ -#define RTGUI_WIDGET_EVENT_INIT(e, t) do \ -{ \ - (e)->type = (t); \ - (e)->sender = RT_NULL; \ - (e)->ack = RT_NULL; \ -} while (0) - -/* - * RTGUI Scrollbar Event - */ -struct rtgui_event_scrollbar -{ - struct rtgui_event parent; - - rt_uint8_t event; -}; -#define RTGUI_SCROLL_LINEUP 0x01 -#define RTGUI_SCROLL_LINEDOWN 0x02 -#define RTGUI_SCROLL_PAGEUP 0x03 -#define RTGUI_SCROLL_PAGEDOWN 0x04 -#define RTGUI_EVENT_SCROLLED_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_SCROLLED) - -/* - * RTGUI Widget Focused Event - */ -struct rtgui_event_focused -{ - struct rtgui_event parent; - - struct rtgui_widget *widget; -}; -#define RTGUI_EVENT_FOCUSED_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_FOCUSED) - -/* - * RTGUI Widget Resize Event - */ -struct rtgui_event_resize -{ - struct rtgui_event parent; - rt_int16_t x, y; - rt_int16_t w, h; -}; -#define RTGUI_EVENT_RESIZE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_RESIZE) - -/* - * RTGUI Model/View Event - */ -enum rtgui_event_model_mode -{ - RTGUI_MV_DATA_ADDED, - RTGUI_MV_DATA_CHANGED, - RTGUI_MV_DATA_DELETED, -}; - -struct rtgui_event_mv_model -{ - struct rtgui_event parent; - struct rtgui_mv_model *model; - struct rtgui_mv_view *view; - rt_size_t first_data_changed_idx; - rt_size_t last_data_changed_idx; -}; - -#define _RTGUI_EVENT_MV_INIT_TYPE(T) \ -rt_inline void RTGUI_EVENT_MV_MODEL_##T##_INIT(struct rtgui_event_mv_model *e) \ -{ \ - RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MV_MODEL); \ - (e)->parent.user = RTGUI_MV_DATA_##T; \ -} \ -/* useless struct to allow trailing semicolon */ \ -struct dummy - -_RTGUI_EVENT_MV_INIT_TYPE(ADDED); -_RTGUI_EVENT_MV_INIT_TYPE(CHANGED); -_RTGUI_EVENT_MV_INIT_TYPE(DELETED); -#undef _RTGUI_EVENT_MV_INIT_TYPE - -#define _RTGUI_EVENT_MV_IS_TYPE(T) \ -rt_inline rt_bool_t RTGUI_EVENT_MV_MODEL_IS_##T(struct rtgui_event_mv_model *e) \ -{ \ - return e->parent.user == RTGUI_MV_DATA_##T; \ -} \ -/* useless struct to allow trailing semicolon */ \ -struct dummy - -_RTGUI_EVENT_MV_IS_TYPE(ADDED); -_RTGUI_EVENT_MV_IS_TYPE(CHANGED); -_RTGUI_EVENT_MV_IS_TYPE(DELETED); -#undef _RTGUI_EVENT_MV_IS_TYPE - -#undef _RTGUI_EVENT_WIN_ELEMENTS - -union rtgui_event_generic -{ - struct rtgui_event base; - - struct rtgui_event_application app_create; - struct rtgui_event_application app_destroy; - struct rtgui_event_application app_activate; - - struct rtgui_event_set_wm set_wm; - struct rtgui_event_win win_base; - struct rtgui_event_win_create win_create; - struct rtgui_event_win_move win_move; - struct rtgui_event_win_resize win_resize; - struct rtgui_event_win_destroy win_destroy; - struct rtgui_event_win_show win_show; - struct rtgui_event_win_hide win_hide; - struct rtgui_event_win_activate win_activate; - struct rtgui_event_win_deactivate win_deactivate; - struct rtgui_event_win_close win_close; - struct rtgui_event_win_modal_enter win_modal_enter; - struct rtgui_event_update_begin update_begin; - struct rtgui_event_update_end update_end; - struct rtgui_event_monitor monitor; - struct rtgui_event_paint paint; - struct rtgui_event_timer timer; - struct rtgui_event_update_toplvl update_toplvl; - struct rtgui_event_vpaint_req vpaint_req; - struct rtgui_event_clip_info clip_info; - struct rtgui_event_mouse mouse; - struct rtgui_event_kbd kbd; - struct rtgui_event_touch touch; - struct rtgui_event_gesture gesture; - struct rtgui_event_scrollbar scrollbar; - struct rtgui_event_focused focused; - struct rtgui_event_resize resize; - struct rtgui_event_mv_model model; - struct rtgui_event_command command; -}; - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/components/gui/include/rtgui/filerw.h b/components/gui/include/rtgui/filerw.h deleted file mode 100644 index edd2579875..0000000000 --- a/components/gui/include/rtgui/filerw.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * File : filerw.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __RTGUI_FILERW_H__ -#define __RTGUI_FILERW_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef RTGUI_USING_DFS_FILERW -#ifdef _WIN32_NATIVE -#pragma warning(disable: 4996) -#include -#include -#include -#include -#else -#include -#endif -#endif - -#include - -#define RTGUI_FILE_SEEK_SET 0 -#define RTGUI_FILE_SEEK_CUR 1 -#define RTGUI_FILE_SEEK_END 2 - -struct rtgui_filerw -{ - int (*seek)(struct rtgui_filerw *context, rt_off_t offset, int whence); - int (*read)(struct rtgui_filerw *context, void *buffer, rt_size_t size, rt_size_t count); - int (*write)(struct rtgui_filerw *context, const void *buffer, rt_size_t size, rt_size_t count); - int (*tell)(struct rtgui_filerw *context); - int (*eof)(struct rtgui_filerw *context); - int (*close)(struct rtgui_filerw *context); -}; -typedef struct rtgui_filerw rtgui_filerw_t; - -struct rtgui_filerw *rtgui_filerw_create_file(const char *filename, const char *mode); -struct rtgui_filerw *rtgui_filerw_create_mem(const rt_uint8_t *mem, rt_size_t size); - -int rtgui_filerw_seek(struct rtgui_filerw *context, rt_off_t offset, int whence); -int rtgui_filerw_read(struct rtgui_filerw *context, void *buffer, rt_size_t size, rt_size_t count); -int rtgui_filerw_write(struct rtgui_filerw *context, const void *buffer, rt_size_t size, rt_size_t count); -int rtgui_filerw_tell(struct rtgui_filerw *context); -int rtgui_filerw_eof(struct rtgui_filerw *context); -int rtgui_filerw_close(struct rtgui_filerw *context); -int rtgui_filerw_unlink(const char *filename); - -/* get memory data from filerw memory object */ -const rt_uint8_t *rtgui_filerw_mem_getdata(struct rtgui_filerw *context); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/gui/include/rtgui/font.h b/components/gui/include/rtgui/font.h deleted file mode 100644 index b1d480d048..0000000000 --- a/components/gui/include/rtgui/font.h +++ /dev/null @@ -1,154 +0,0 @@ -/* - * File : font.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __RTGUI_FONT_H__ -#define __RTGUI_FONT_H__ - -#include -#include - - -#ifdef __cplusplus -extern "C" { -#endif - -struct rtgui_font; -struct rtgui_dc; -struct rtgui_rect; - -struct rtgui_font_engine -{ - /* font engine function */ - void (*font_init)(struct rtgui_font *font); - void (*font_load)(struct rtgui_font *font); - - void (*font_draw_text)(struct rtgui_font *font, struct rtgui_dc *dc, const char *text, - rt_ubase_t len, struct rtgui_rect *rect); - void (*font_get_metrics)(struct rtgui_font *font, const char *text, struct rtgui_rect *rect); -}; - -/* - * bitmap font engine - */ -struct rtgui_font_bitmap -{ - const rt_uint8_t *bmp; /* bitmap font data */ - const rt_uint8_t *char_width; /* each character width, NULL for fixed font */ - const rt_uint32_t *offset; /* offset for each character */ - - rt_uint16_t width; /* font width */ - rt_uint16_t height; /* font height */ - - rt_uint8_t first_char; - rt_uint8_t last_char; -}; -extern const struct rtgui_font_engine bmp_font_engine; - -#include -SPLAY_HEAD(cache_tree, hz_cache); -struct hz_cache -{ - SPLAY_ENTRY(hz_cache) hz_node; - - rt_uint16_t hz_id; -}; - -struct rtgui_hz_file_font -{ - struct cache_tree cache_root; - rt_uint16_t cache_size; - - /* font size */ - rt_uint16_t font_size; - rt_uint16_t font_data_size; - - /* file descriptor */ - int fd; - - /* font file name */ - const char *font_fn; -}; -extern const struct rtgui_font_engine rtgui_hz_file_font_engine; - -struct rtgui_font -{ - /* font name */ - char *family; - - /* font height */ - rt_uint16_t height; - - /* refer count */ - rt_uint32_t refer_count; - - /* font engine */ - const struct rtgui_font_engine *engine; - - /* font private data */ - void *data; - - /* the font list */ - rtgui_list_t list; -}; -typedef struct rtgui_font rtgui_font_t; - -void rtgui_font_system_init(void); -void rtgui_font_system_add_font(struct rtgui_font *font); -void rtgui_font_system_remove_font(struct rtgui_font *font); -struct rtgui_font *rtgui_font_default(void); -void rtgui_font_set_defaut(struct rtgui_font *font); - -struct rtgui_font *rtgui_font_refer(const char *family, rt_uint16_t height); -void rtgui_font_derefer(struct rtgui_font *font); - -/* draw a text */ -void rtgui_font_draw(struct rtgui_font *font, struct rtgui_dc *dc, const char *text, rt_ubase_t len, struct rtgui_rect *rect); -int rtgui_font_get_string_width(struct rtgui_font *font, const char *text); -void rtgui_font_get_metrics(struct rtgui_font *font, const char *text, struct rtgui_rect *rect); - -/* used by stract font */ -#define FONT_BMP_DATA_BEGIN -#define FONT_BMP_DATA_END - -struct rtgui_char_position -{ - /* Keep the size of this struct within 4 bytes so it can be passed by - * value. */ - /* How long this char is. */ - rt_uint16_t char_width; - /* How many bytes remaining from current pointer. At least, it will be 1. */ - rt_uint16_t remain; -}; - -/* - * @len the length of @str. - * @offset the char offset on the string to check with. - */ -struct rtgui_char_position _string_char_width(char *str, rt_size_t len, rt_size_t offset); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/components/gui/include/rtgui/font_fnt.h b/components/gui/include/rtgui/font_fnt.h deleted file mode 100644 index 3b0089d82e..0000000000 --- a/components/gui/include/rtgui/font_fnt.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * File : font_fnt.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2010-04-10 Bernard first version - */ - -#ifndef __FONT_FNT_H__ -#define __FONT_FNT_H__ - -#include -#include - -/* fnt font header */ -struct fnt_header -{ - rt_uint8_t version[4]; - rt_uint16_t max_width; - rt_uint16_t height; - rt_uint16_t ascent; - rt_uint16_t depth; - - rt_uint32_t first_char; - rt_uint32_t default_char; - rt_uint32_t size; - rt_uint32_t nbits; - rt_uint32_t noffset; - rt_uint32_t nwidth; -}; -typedef rt_uint8_t MWIMAGEBITS; - -struct fnt_font -{ - struct fnt_header header; - - const MWIMAGEBITS *bits; /* nbits */ - const rt_uint16_t *offset; /* noffset */ - const rt_uint8_t *width; /* nwidth */ -}; -extern const struct rtgui_font_engine fnt_font_engine; - -struct rtgui_font *fnt_font_create(const char* filename); - -#endif - diff --git a/components/gui/include/rtgui/font_freetype.h b/components/gui/include/rtgui/font_freetype.h deleted file mode 100644 index 18c85edaf1..0000000000 --- a/components/gui/include/rtgui/font_freetype.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * File : font_freetype.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2010-04-10 Bernard first version - */ - -#ifndef __RTGUI_FONT_TTF_H__ -#define __RTGUI_FONT_TTF_H__ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void rtgui_ttf_system_init(void); -rtgui_font_t *rtgui_freetype_font_create(const char *filename, rt_size_t size); -void rtgui_freetype_font_destroy(rtgui_font_t *font); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/gui/include/rtgui/image.h b/components/gui/include/rtgui/image.h deleted file mode 100644 index 07ddaec721..0000000000 --- a/components/gui/include/rtgui/image.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * File : image.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __RTGUI_IMAGE_H__ -#define __RTGUI_IMAGE_H__ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct rtgui_image; -struct rtgui_image_engine -{ - const char *name; - struct rtgui_list_node list; - - /* image engine function */ - rt_bool_t (*image_check)(struct rtgui_filerw *file); - - rt_bool_t (*image_load)(struct rtgui_image *image, struct rtgui_filerw *file, rt_bool_t load); - void (*image_unload)(struct rtgui_image *image); - - void (*image_blit)(struct rtgui_image *image, struct rtgui_dc *dc, struct rtgui_rect *rect); -}; - -struct rtgui_image_palette -{ - rtgui_color_t *colors; - rt_uint32_t ncolors; -}; -typedef struct rtgui_image_palette rtgui_image_palette_t; - -struct rtgui_image -{ - /* image metrics */ - rt_uint16_t w, h; - - /* image engine */ - const struct rtgui_image_engine *engine; - - /* image palette */ - rtgui_image_palette_t *palette; - - /* image private data */ - void *data; -}; -typedef struct rtgui_image rtgui_image_t; - -/* init rtgui image system */ -void rtgui_system_image_init(void); - -#if defined(RTGUI_USING_DFS_FILERW) -struct rtgui_image_engine *rtgui_image_get_engine_by_filename(const char *fn); -struct rtgui_image *rtgui_image_create_from_file(const char *type, const char *filename, rt_bool_t load); -struct rtgui_image *rtgui_image_create(const char *filename, rt_bool_t load); -#endif - -struct rtgui_image *rtgui_image_create_from_mem(const char *type, const rt_uint8_t *data, rt_size_t length, rt_bool_t load); -void rtgui_image_destroy(struct rtgui_image *image); - -/* get image's rect */ -void rtgui_image_get_rect(struct rtgui_image *image, struct rtgui_rect *rect); - -/* register an image engine */ -void rtgui_image_register_engine(struct rtgui_image_engine *engine); - -/* blit an image on DC */ -void rtgui_image_blit(struct rtgui_image *image, struct rtgui_dc *dc, struct rtgui_rect *rect); -struct rtgui_image_palette *rtgui_image_palette_create(rt_uint32_t ncolors); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/components/gui/include/rtgui/image_bmp.h b/components/gui/include/rtgui/image_bmp.h deleted file mode 100644 index 17fffd15e1..0000000000 --- a/components/gui/include/rtgui/image_bmp.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * File : image_bmp.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2010-08-10 Bernard first version - */ -#ifndef __RTGUI_IMAGE_BMP_H__ -#define __RTGUI_IMAGE_BMP_H__ - -#pragma pack(push) -#pragma pack(2) - -struct rtgui_image_bmp_header -{ - /* The Win32 BMP file header (14 bytes) */ - rt_uint16_t bfType; - rt_uint32_t bfSize; - rt_uint16_t bfReserved1; - rt_uint16_t bfReserved2; - rt_uint32_t bfOffBits; - - /* The Win32 BITMAPINFOHEADER struct (40 bytes) */ - rt_uint32_t biSize; - rt_int32_t biWidth; - rt_int32_t biHeight; - rt_uint16_t biPlanes; - rt_uint16_t biBitCount; - rt_uint32_t biCompression; - rt_uint32_t biSizeImage; - rt_int32_t biXPelsPerMeter; - rt_int32_t biYPelsPerMeter; - rt_uint32_t biClrUsed; - rt_uint32_t biClrImportant; -}; -#pragma pack(pop) - -void rtgui_image_bmp_init(void); - -#endif diff --git a/components/gui/include/rtgui/image_container.h b/components/gui/include/rtgui/image_container.h deleted file mode 100644 index ecf0333359..0000000000 --- a/components/gui/include/rtgui/image_container.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * File : image_container.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2010-04-10 Bernard first version - */ - -#ifndef __RTGUI_IMAGE_CONTAINER_H__ -#define __RTGUI_IMAGE_CONTAINER_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#if defined(RTGUI_IMAGE_CONTAINER) -/* image item in image container */ -struct rtgui_image_item -{ - rtgui_image_t *image; - char *filename; - - rt_uint32_t refcount; -}; -typedef struct rtgui_image_item rtgui_image_item_t; - -void rtgui_system_image_container_init(void); - -struct rtgui_image_item *rtgui_image_container_get(const char *filename); -void rtgui_image_container_put(struct rtgui_image_item *item); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/components/gui/include/rtgui/image_hdc.h b/components/gui/include/rtgui/image_hdc.h deleted file mode 100644 index 25beb93f24..0000000000 --- a/components/gui/include/rtgui/image_hdc.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * File : image_hdc.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __RTGUI_IMAGE_HDC_H__ -#define __RTGUI_IMAGE_HDC_H__ - -#include - -struct rtgui_image_hdcmm -{ - struct rtgui_image parent; - - /* hdc image information */ - rt_uint16_t byte_per_pixel; - rt_uint16_t pitch; - - rt_uint8_t *pixels; -}; - -struct rtgui_image_hdc -{ - rt_bool_t is_loaded; - - /* hdc image information */ - rt_uint16_t byte_per_pixel; - rt_uint16_t pitch; - rt_uint8_t pixel_format; - - rt_size_t pixel_offset; - rt_uint8_t *pixels; - - struct rtgui_filerw *filerw; -}; - -void rtgui_image_hdc_init(void); -extern const struct rtgui_image_engine rtgui_image_hdcmm_engine; - -#define HDC_HEADER_SIZE (5 * 4) -#define RTGUI_IMAGE_HDC_DEF(bpp, w, h, pixels) \ - {{w, h, &rtgui_image_hdcmm_engine, RT_NULL}, bpp, (bpp * w), ((rt_uint8_t*)pixels + HDC_HEADER_SIZE)} - -#endif diff --git a/components/gui/include/rtgui/kbddef.h b/components/gui/include/rtgui/kbddef.h deleted file mode 100644 index a783a93568..0000000000 --- a/components/gui/include/rtgui/kbddef.h +++ /dev/null @@ -1,305 +0,0 @@ -/* - * File : kbddef.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __KBD_DEF_H__ -#define __KBD_DEF_H__ - -/* The keyboard key have been cleverly chosen to map to ASCII */ -typedef enum -{ - RTGUIK_UNKNOWN = 0, - RTGUIK_FIRST = 0, - RTGUIK_BACKSPACE = 8, - RTGUIK_TAB = 9, - RTGUIK_CLEAR = 12, - RTGUIK_RETURN = 13, - RTGUIK_PAUSE = 19, - RTGUIK_ESCAPE = 27, - RTGUIK_SPACE = 32, - RTGUIK_EXCLAIM = 33, - RTGUIK_QUOTEDBL = 34, - RTGUIK_HASH = 35, - RTGUIK_DOLLAR = 36, - RTGUIK_AMPERSAND = 38, - RTGUIK_QUOTE = 39, - RTGUIK_LEFTPAREN = 40, - RTGUIK_RIGHTPAREN = 41, - RTGUIK_ASTERISK = 42, - RTGUIK_PLUS = 43, - RTGUIK_COMMA = 44, - RTGUIK_MINUS = 45, - RTGUIK_PERIOD = 46, - RTGUIK_SLASH = 47, - RTGUIK_0 = 48, - RTGUIK_1 = 49, - RTGUIK_2 = 50, - RTGUIK_3 = 51, - RTGUIK_4 = 52, - RTGUIK_5 = 53, - RTGUIK_6 = 54, - RTGUIK_7 = 55, - RTGUIK_8 = 56, - RTGUIK_9 = 57, - RTGUIK_COLON = 58, - RTGUIK_SEMICOLON = 59, - RTGUIK_LESS = 60, - RTGUIK_EQUALS = 61, - RTGUIK_GREATER = 62, - RTGUIK_QUESTION = 63, - RTGUIK_AT = 64, - - /* - Skip uppercase letters - */ - RTGUIK_LEFTBRACKET = 91, - RTGUIK_BACKSLASH = 92, - RTGUIK_RIGHTBRACKET = 93, - RTGUIK_CARET = 94, - RTGUIK_UNDERSCORE = 95, - RTGUIK_BACKQUOTE = 96, - RTGUIK_a = 97, - RTGUIK_b = 98, - RTGUIK_c = 99, - RTGUIK_d = 100, - RTGUIK_e = 101, - RTGUIK_f = 102, - RTGUIK_g = 103, - RTGUIK_h = 104, - RTGUIK_i = 105, - RTGUIK_j = 106, - RTGUIK_k = 107, - RTGUIK_l = 108, - RTGUIK_m = 109, - RTGUIK_n = 110, - RTGUIK_o = 111, - RTGUIK_p = 112, - RTGUIK_q = 113, - RTGUIK_r = 114, - RTGUIK_s = 115, - RTGUIK_t = 116, - RTGUIK_u = 117, - RTGUIK_v = 118, - RTGUIK_w = 119, - RTGUIK_x = 120, - RTGUIK_y = 121, - RTGUIK_z = 122, - RTGUIK_DELETE = 127, - - /* International keyboard */ - RTGUIK_WORLD_0 = 160, /* 0xA0 */ - RTGUIK_WORLD_1 = 161, - RTGUIK_WORLD_2 = 162, - RTGUIK_WORLD_3 = 163, - RTGUIK_WORLD_4 = 164, - RTGUIK_WORLD_5 = 165, - RTGUIK_WORLD_6 = 166, - RTGUIK_WORLD_7 = 167, - RTGUIK_WORLD_8 = 168, - RTGUIK_WORLD_9 = 169, - RTGUIK_WORLD_10 = 170, - RTGUIK_WORLD_11 = 171, - RTGUIK_WORLD_12 = 172, - RTGUIK_WORLD_13 = 173, - RTGUIK_WORLD_14 = 174, - RTGUIK_WORLD_15 = 175, - RTGUIK_WORLD_16 = 176, - RTGUIK_WORLD_17 = 177, - RTGUIK_WORLD_18 = 178, - RTGUIK_WORLD_19 = 179, - RTGUIK_WORLD_20 = 180, - RTGUIK_WORLD_21 = 181, - RTGUIK_WORLD_22 = 182, - RTGUIK_WORLD_23 = 183, - RTGUIK_WORLD_24 = 184, - RTGUIK_WORLD_25 = 185, - RTGUIK_WORLD_26 = 186, - RTGUIK_WORLD_27 = 187, - RTGUIK_WORLD_28 = 188, - RTGUIK_WORLD_29 = 189, - RTGUIK_WORLD_30 = 190, - RTGUIK_WORLD_31 = 191, - RTGUIK_WORLD_32 = 192, - RTGUIK_WORLD_33 = 193, - RTGUIK_WORLD_34 = 194, - RTGUIK_WORLD_35 = 195, - RTGUIK_WORLD_36 = 196, - RTGUIK_WORLD_37 = 197, - RTGUIK_WORLD_38 = 198, - RTGUIK_WORLD_39 = 199, - RTGUIK_WORLD_40 = 200, - RTGUIK_WORLD_41 = 201, - RTGUIK_WORLD_42 = 202, - RTGUIK_WORLD_43 = 203, - RTGUIK_WORLD_44 = 204, - RTGUIK_WORLD_45 = 205, - RTGUIK_WORLD_46 = 206, - RTGUIK_WORLD_47 = 207, - RTGUIK_WORLD_48 = 208, - RTGUIK_WORLD_49 = 209, - RTGUIK_WORLD_50 = 210, - RTGUIK_WORLD_51 = 211, - RTGUIK_WORLD_52 = 212, - RTGUIK_WORLD_53 = 213, - RTGUIK_WORLD_54 = 214, - RTGUIK_WORLD_55 = 215, - RTGUIK_WORLD_56 = 216, - RTGUIK_WORLD_57 = 217, - RTGUIK_WORLD_58 = 218, - RTGUIK_WORLD_59 = 219, - RTGUIK_WORLD_60 = 220, - RTGUIK_WORLD_61 = 221, - RTGUIK_WORLD_62 = 222, - RTGUIK_WORLD_63 = 223, - RTGUIK_WORLD_64 = 224, - RTGUIK_WORLD_65 = 225, - RTGUIK_WORLD_66 = 226, - RTGUIK_WORLD_67 = 227, - RTGUIK_WORLD_68 = 228, - RTGUIK_WORLD_69 = 229, - RTGUIK_WORLD_70 = 230, - RTGUIK_WORLD_71 = 231, - RTGUIK_WORLD_72 = 232, - RTGUIK_WORLD_73 = 233, - RTGUIK_WORLD_74 = 234, - RTGUIK_WORLD_75 = 235, - RTGUIK_WORLD_76 = 236, - RTGUIK_WORLD_77 = 237, - RTGUIK_WORLD_78 = 238, - RTGUIK_WORLD_79 = 239, - RTGUIK_WORLD_80 = 240, - RTGUIK_WORLD_81 = 241, - RTGUIK_WORLD_82 = 242, - RTGUIK_WORLD_83 = 243, - RTGUIK_WORLD_84 = 244, - RTGUIK_WORLD_85 = 245, - RTGUIK_WORLD_86 = 246, - RTGUIK_WORLD_87 = 247, - RTGUIK_WORLD_88 = 248, - RTGUIK_WORLD_89 = 249, - RTGUIK_WORLD_90 = 250, - RTGUIK_WORLD_91 = 251, - RTGUIK_WORLD_92 = 252, - RTGUIK_WORLD_93 = 253, - RTGUIK_WORLD_94 = 254, - RTGUIK_WORLD_95 = 255, /* 0xFF */ - - /* Numeric keypad */ - RTGUIK_KP0 = 256, - RTGUIK_KP1 = 257, - RTGUIK_KP2 = 258, - RTGUIK_KP3 = 259, - RTGUIK_KP4 = 260, - RTGUIK_KP5 = 261, - RTGUIK_KP6 = 262, - RTGUIK_KP7 = 263, - RTGUIK_KP8 = 264, - RTGUIK_KP9 = 265, - RTGUIK_KP_PERIOD = 266, - RTGUIK_KP_DIVIDE = 267, - RTGUIK_KP_MULTIPLY = 268, - RTGUIK_KP_MINUS = 269, - RTGUIK_KP_PLUS = 270, - RTGUIK_KP_ENTER = 271, - RTGUIK_KP_EQUALS = 272, - - /* Arrows + Home/End pad */ - RTGUIK_UP = 273, - RTGUIK_DOWN = 274, - RTGUIK_RIGHT = 275, - RTGUIK_LEFT = 276, - RTGUIK_INSERT = 277, - RTGUIK_HOME = 278, - RTGUIK_END = 279, - RTGUIK_PAGEUP = 280, - RTGUIK_PAGEDOWN = 281, - - /* Function keys */ - RTGUIK_F1 = 282, - RTGUIK_F2 = 283, - RTGUIK_F3 = 284, - RTGUIK_F4 = 285, - RTGUIK_F5 = 286, - RTGUIK_F6 = 287, - RTGUIK_F7 = 288, - RTGUIK_F8 = 289, - RTGUIK_F9 = 290, - RTGUIK_F10 = 291, - RTGUIK_F11 = 292, - RTGUIK_F12 = 293, - RTGUIK_F13 = 294, - RTGUIK_F14 = 295, - RTGUIK_F15 = 296, - - /* Key state modifier keys */ - RTGUIK_NUMLOCK = 300, - RTGUIK_CAPSLOCK = 301, - RTGUIK_SCROLLOCK = 302, - RTGUIK_RSHIFT = 303, - RTGUIK_LSHIFT = 304, - RTGUIK_RCTRL = 305, - RTGUIK_LCTRL = 306, - RTGUIK_RALT = 307, - RTGUIK_LALT = 308, - RTGUIK_RMETA = 309, - RTGUIK_LMETA = 310, - RTGUIK_LSUPER = 311, /* Left "Windows" key */ - RTGUIK_RSUPER = 312, /* Right "Windows" key */ - RTGUIK_MODE = 313, /* "Alt Gr" key */ - RTGUIK_COMPOSE = 314, /* Multi-key compose key */ - - /* Miscellaneous function keys */ - RTGUIK_HELP = 315, - RTGUIK_PRINT = 316, - RTGUIK_SYSREQ = 317, - RTGUIK_BREAK = 318, - RTGUIK_MENU = 319, - RTGUIK_POWER = 320, /* Power key */ - - RTGUIK_LAST -} RTGUI_KBD_KEY; - -/* Enumeration of valid key mods (possibly OR'd together) */ -typedef enum -{ - RTGUI_KMOD_NONE = 0x0000, - RTGUI_KMOD_LSHIFT = 0x0001, - RTGUI_KMOD_RSHIFT = 0x0002, - RTGUI_KMOD_LCTRL = 0x0040, - RTGUI_KMOD_RCTRL = 0x0080, - RTGUI_KMOD_LALT = 0x0100, - RTGUI_KMOD_RALT = 0x0200, - RTGUI_KMOD_LMETA = 0x0400, - RTGUI_KMOD_RMETA = 0x0800, - RTGUI_KMOD_NUM = 0x1000, - RTGUI_KMOD_CAPS = 0x2000, - RTGUI_KMOD_MODE = 0x4000, - RTGUI_KMOD_RESERVED = 0x8000 -} RTGUI_KBD_MOD; - -typedef enum -{ - RTGUI_KEYDOWN, /* Keys pressed */ - RTGUI_KEYUP, /* Keys released */ -} RTGUI_KBD_TYPE; - -#endif diff --git a/components/gui/include/rtgui/list.h b/components/gui/include/rtgui/list.h deleted file mode 100644 index 6eb77ccf8b..0000000000 --- a/components/gui/include/rtgui/list.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * File : list.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __RTGUI_LIST_H__ -#define __RTGUI_LIST_H__ - -#include - -struct rtgui_list_node -{ - struct rtgui_list_node *next; -}; -typedef struct rtgui_list_node rtgui_list_t; - -rt_inline void rtgui_list_init(rtgui_list_t *l) -{ - l->next = (struct rtgui_list_node *)0; -} - -rt_inline void rtgui_list_append(rtgui_list_t *l, rtgui_list_t *n) -{ - struct rtgui_list_node *node; - - node = l; - while (node->next) node = node->next; - - /* append the node to the tail */ - node->next = n; - n->next = (struct rtgui_list_node *) 0; -} - -rt_inline void rtgui_list_insert(rtgui_list_t *l, rtgui_list_t *n) -{ - n->next = l->next; - l->next = n; -} - -rt_inline rtgui_list_t *rtgui_list_remove(rtgui_list_t *l, rtgui_list_t *n) -{ - /* remove slist head */ - struct rtgui_list_node *node = l; - while (node->next && node->next != n) node = node->next; - - /* remove node */ - if (node->next != (rtgui_list_t *)0) node->next = node->next->next; - - return l; -} - -#define rtgui_list_entry(node, type, member) \ - ((type *)((char*)(node)-(unsigned long)(&((type *)0)->member))) - -#define rtgui_list_foreach(node, list) \ - for ((node) = (list)->next; (node) != RT_NULL; (node) = (node)->next) - -#endif diff --git a/components/gui/include/rtgui/matrix.h b/components/gui/include/rtgui/matrix.h deleted file mode 100644 index 5d83c4ae85..0000000000 --- a/components/gui/include/rtgui/matrix.h +++ /dev/null @@ -1,186 +0,0 @@ -/* - * File : matrix.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2010-04-10 Grissiom The first version - */ - -#ifndef __MATRIX_H__ -#define __MATRIX_H__ - -/* Port from ejoy2d: https://github.com/cloudwu/ejoy2d/blob/master/LICENSE - * Original License: - * - * The MIT License (MIT) - * - * Copyright (c) 2013 Ejoy.com Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* Port to RTGUI and modified by Grissiom */ - -#ifdef _MSC_VER -typedef __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; -#else -#include -#endif - -#define RTGUI_MATRIX_FRAC_BITS 11 -#define RTGUI_MATRIX_FRAC (1 << RTGUI_MATRIX_FRAC_BITS) - -struct rtgui_matrix -{ - /* The matrix format is : - * - * | m[0] m[1] 0 | - * | m[2] m[3] 0 | - * | m[4] m[5] 1 | - * - * The format of the coordinate of a point is: - * - * | x y 1 | - * - * So, if you want to transform a point p with a matrix m, do: - * - * p * m - * - * Note: m[0-3] is in fix presentation that has 10 bits decimal - * fraction(m/RTGUI_MATRIX_FRAC). While the unit of m[4-5] is pixel. - * - */ - int m[6]; -}; - -rt_inline int32_t _rtgui_matrix_round_div32(int32_t n, int32_t d) -{ - if (n == 0) - return 0; - - if (d < 0) - { - d = -d; - n = -n; - } - if (n > 0) - return (n + d / 2) / d; - else - return (n - d / 2) / d; -} - -rt_inline int32_t _rtgui_matrix_round_div6432(int64_t n, int32_t d) -{ - if (n == 0) - return 0; - - if (d < 0) - { - d = -d; - n = -n; - } - if (n > 0) - return (n + d / 2) / d; - else - return (n - d / 2) / d; -} - -/* mm = mm1 * mm2 */ -rt_inline void rtgui_matrix_mul(struct rtgui_matrix *mm, - const struct rtgui_matrix *mm1, - const struct rtgui_matrix *mm2) -{ - int *m = mm->m; - const int *m1 = mm1->m; - const int *m2 = mm2->m; - - m[0] = _rtgui_matrix_round_div32(m1[0] * m2[0] + m1[1] * m2[2], RTGUI_MATRIX_FRAC); - m[1] = _rtgui_matrix_round_div32(m1[0] * m2[1] + m1[1] * m2[3], RTGUI_MATRIX_FRAC); - m[2] = _rtgui_matrix_round_div32(m1[2] * m2[0] + m1[3] * m2[2], RTGUI_MATRIX_FRAC); - m[3] = _rtgui_matrix_round_div32(m1[2] * m2[1] + m1[3] * m2[3], RTGUI_MATRIX_FRAC); - m[4] = _rtgui_matrix_round_div32(m1[4] * m2[0] + m1[5] * m2[2], RTGUI_MATRIX_FRAC) + m2[4]; - m[5] = _rtgui_matrix_round_div32(m1[4] * m2[1] + m1[5] * m2[3], RTGUI_MATRIX_FRAC) + m2[5]; -} - -/* Matrix multiply point[(p) = (x, y) * m], ignore the movement components. */ -rt_inline void rtgui_matrix_mul_point_nomove(struct rtgui_point *p, - int x, int y, - struct rtgui_matrix *m) -{ - int *mm = m->m; - - p->x = _rtgui_matrix_round_div32(x * mm[0] + y * mm[2], RTGUI_MATRIX_FRAC); - p->y = _rtgui_matrix_round_div32(x * mm[1] + y * mm[3], RTGUI_MATRIX_FRAC); -} - -/* Matrix multiply point[(p) = (x, y) * m]. */ -rt_inline void rtgui_matrix_mul_point(struct rtgui_point *p, - int x, int y, - struct rtgui_matrix *m) -{ - int *mm = m->m; - - p->x = _rtgui_matrix_round_div32(x * mm[0] + y * mm[2], RTGUI_MATRIX_FRAC) + mm[4]; - p->y = _rtgui_matrix_round_div32(x * mm[1] + y * mm[3], RTGUI_MATRIX_FRAC) + mm[5]; -} - -/** Set @mm to an identity matrix. */ -rt_inline void rtgu_matrix_identity(struct rtgui_matrix *mm) -{ - int *mat = mm->m; - mat[0] = RTGUI_MATRIX_FRAC; - mat[1] = 0; - mat[2] = 0; - mat[3] = RTGUI_MATRIX_FRAC; - mat[4] = 0; - mat[5] = 0; -} - -/** Save the inversed matrix of @mm to @mo. - * - * @return If the matrix is not inversale, return 1. Otherwise, return 0. */ -int rtgui_matrix_inverse(const struct rtgui_matrix *mm, struct rtgui_matrix *mo); - -/** @degree range from 0 ~ 512. */ -void rtgui_matrix_rotate(struct rtgui_matrix *m, int degree); -/** The unit is fixed point number. RTGUI_MATRIX_FRAC means 1.0. */ -void rtgui_matrix_scale(struct rtgui_matrix *m, int sx, int sy); -/** The unit is pixel. Not the fixed point number. */ -void rtgui_matrix_move(struct rtgui_matrix *m, int dx, int dy); - -#endif /* end of include guard: __MATRIX_H__ */ - diff --git a/components/gui/include/rtgui/region.h b/components/gui/include/rtgui/region.h deleted file mode 100644 index dac35ce50d..0000000000 --- a/components/gui/include/rtgui/region.h +++ /dev/null @@ -1,132 +0,0 @@ -/* - * File : region.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __RTGUI_REGION_H__ -#define __RTGUI_REGION_H__ - -#include - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif - -typedef struct rtgui_region_data rtgui_region_data_t; -struct rtgui_dc; - -struct rtgui_region_data -{ - rt_uint32_t size; - rt_uint32_t numRects; - /* XXX: And why, exactly, do we have this bogus struct definition? */ - /* rtgui_rect_t rects[size]; in memory but not explicitly declared */ -}; - -typedef struct rtgui_region -{ - rtgui_rect_t extents; - rtgui_region_data_t *data; -} rtgui_region_t; - -typedef enum -{ - RTGUI_REGION_STATUS_FAILURE, - RTGUI_REGION_STATUS_SUCCESS -} rtgui_region_status_t; - -/* creation/destruction */ - -void rtgui_region_init(rtgui_region_t *region); -void rtgui_region_init_rect(rtgui_region_t *region, - int x, int y, unsigned int width, unsigned int height); -void rtgui_region_init_with_extents(rtgui_region_t *region, const rtgui_rect_t *extents); -void rtgui_region_fini(rtgui_region_t *region); - -void rtgui_region_translate(rtgui_region_t *region, int x, int y); - -rtgui_region_status_t rtgui_region_copy(rtgui_region_t *dest, rtgui_region_t *source); - -rtgui_region_status_t rtgui_region_intersect(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_region_t *reg2); -rtgui_region_status_t rtgui_region_intersect_rect(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_rect_t *rect); -rtgui_region_status_t rtgui_region_union(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_region_t *reg2); -rtgui_region_status_t rtgui_region_union_rect(rtgui_region_t *dest, rtgui_region_t *source, rtgui_rect_t *rect); -rtgui_region_status_t rtgui_region_subtract(rtgui_region_t *regD, rtgui_region_t *regM, rtgui_region_t *regS); -rtgui_region_status_t rtgui_region_subtract_rect(rtgui_region_t *regD, rtgui_region_t *regM, rtgui_rect_t *rect); -rtgui_region_status_t rtgui_region_inverse(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_rect_t *invRect); - -int rtgui_region_num_rects(rtgui_region_t *region); - -rtgui_rect_t *rtgui_region_rects(rtgui_region_t *region); - -#define RTGUI_REGION_OUT 0 -#define RTGUI_REGION_IN 1 -#define RTGUI_REGION_PART 2 - -int rtgui_region_contains_point(rtgui_region_t *region, int x, int y, rtgui_rect_t *box); -int rtgui_region_contains_rectangle(rtgui_region_t *rtgui_region_t, rtgui_rect_t *prect); - -int rtgui_region_not_empty(rtgui_region_t *region); -rtgui_rect_t *rtgui_region_extents(rtgui_region_t *region); - -rtgui_region_status_t rtgui_region_append(rtgui_region_t *dest, rtgui_region_t *region); -rtgui_region_status_t rtgui_region_validate(rtgui_region_t *badreg, int *pOverlap); - -void rtgui_region_reset(rtgui_region_t *region, rtgui_rect_t *rect); -void rtgui_region_empty(rtgui_region_t *region); -void rtgui_region_dump(rtgui_region_t *region); -void rtgui_region_draw_clip(rtgui_region_t *region, struct rtgui_dc *dc); -int rtgui_region_is_flat(rtgui_region_t *region); - -/* rect functions */ -extern rtgui_rect_t rtgui_empty_rect; - -void rtgui_rect_move(rtgui_rect_t *rect, int x, int y); -void rtgui_rect_move_to_point(rtgui_rect_t *rect, int x, int y); -void rtgui_rect_move_to_align(const rtgui_rect_t *rect, rtgui_rect_t *to, int align); -void rtgui_rect_inflate(rtgui_rect_t *rect, int d); -void rtgui_rect_intersect(rtgui_rect_t *src, rtgui_rect_t *dest); -int rtgui_rect_contains_point(const rtgui_rect_t *rect, int x, int y); -int rtgui_rect_is_intersect(const rtgui_rect_t *rect1, const rtgui_rect_t *rect2); -int rtgui_rect_is_equal(const rtgui_rect_t *rect1, const rtgui_rect_t *rect2); -rtgui_rect_t *rtgui_rect_set(rtgui_rect_t *rect, int x, int y, int w, int h); -rt_bool_t rtgui_rect_is_empty(const rtgui_rect_t *rect); -void rtgui_rect_union(rtgui_rect_t *src, rtgui_rect_t *dest); - -rt_inline void rtgui_rect_init(rtgui_rect_t* rect, int x, int y, int width, int height) -{ - rect->x1 = x; - rect->y1 = y; - rect->x2 = x + width; - rect->y2 = y + height; -} - -#define RTGUI_RECT(rect, x, y, w, h) \ - do { \ - rect.x1 = x; rect.y1 = y; \ - rect.x2 = (x) + (w); rect.y2 = (y) + (h); \ - } while (0) - -#if defined(__cplusplus) || defined(c_plusplus) -} -#endif - -#endif /* _PIXMAN_H_ */ diff --git a/components/gui/include/rtgui/rtgui.h b/components/gui/include/rtgui/rtgui.h deleted file mode 100644 index b918c78be1..0000000000 --- a/components/gui/include/rtgui/rtgui.h +++ /dev/null @@ -1,187 +0,0 @@ -/* - * File : rtgui.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-04 Bernard first version - */ -#ifndef __RT_GUI_H__ -#define __RT_GUI_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define _UI_MIN(x, y) (((x)<(y))?(x):(y)) -#define _UI_MAX(x, y) (((x)>(y))?(x):(y)) -#define _UI_BITBYTES(bits) ((bits + 7)/8) -#define _UI_ABS(x) ((x)>=0? (x):-(x)) - -/* MDK, GCC and MSVC all support __restrict keyword. */ -#define RTGUI_RESTRICT __restrict -#ifdef _MSC_VER -#define RTGUI_PURE -#else -/* GCC and MDK share the same attributes. - * TODO: IAR attributes. */ -#define RTGUI_PURE __attribute__((pure)) -#endif - -struct rtgui_event; - -struct rtgui_object; -struct rtgui_widget; -struct rtgui_win; -struct rtgui_font; - -typedef struct rtgui_win rtgui_win_t; -typedef rt_bool_t (*rtgui_event_handler_ptr)(struct rtgui_object *object, struct rtgui_event *event); -typedef void (*rtgui_onbutton_func_t)(struct rtgui_object *object, struct rtgui_event *event); - -/** - * Coordinate point - */ -struct rtgui_point -{ - rt_int16_t x, y; -}; -typedef struct rtgui_point rtgui_point_t; -extern rtgui_point_t rtgui_empty_point; - -/** - * Rectangle structure - */ -struct rtgui_rect -{ - rt_int16_t x1, y1, x2, y2; -}; -typedef struct rtgui_rect rtgui_rect_t; -#define rtgui_rect_width(r) ((r).x2 - (r).x1) -#define rtgui_rect_height(r) ((r).y2 - (r).y1) - -typedef unsigned long rtgui_color_t; - -/** - * Graphic context - */ -struct rtgui_gc -{ - /* foreground and background color */ - rtgui_color_t foreground, background; - - /* text style */ - rt_uint16_t textstyle; - /* text align */ - rt_uint16_t textalign; - - /* font */ - struct rtgui_font *font; -}; -typedef struct rtgui_gc rtgui_gc_t; - -enum RTGUI_MARGIN_STYLE -{ - RTGUI_MARGIN_LEFT = 0x01, - RTGUI_MARGIN_RIGHT = 0x02, - RTGUI_MARGIN_TOP = 0x04, - RTGUI_MARGIN_BOTTOM = 0x08, - RTGUI_MARGIN_ALL = RTGUI_MARGIN_LEFT | RTGUI_MARGIN_RIGHT | RTGUI_MARGIN_TOP | RTGUI_MARGIN_BOTTOM -}; - -/** - * Border style - */ -enum RTGUI_BORDER_STYLE -{ - RTGUI_BORDER_NONE = 0, - RTGUI_BORDER_SIMPLE, - RTGUI_BORDER_RAISE, - RTGUI_BORDER_SUNKEN, - RTGUI_BORDER_BOX, - RTGUI_BORDER_STATIC, - RTGUI_BORDER_EXTRA, - RTGUI_BORDER_UP, - RTGUI_BORDER_DOWN -}; -#define RTGUI_BORDER_DEFAULT_WIDTH 2 -#define RTGUI_WIDGET_DEFAULT_MARGIN 3 - -/** - * Blend mode - */ -enum RTGUI_BLENDMODE -{ - RTGUI_BLENDMODE_NONE = 0x00, - RTGUI_BLENDMODE_BLEND, - RTGUI_BLENDMODE_ADD, - RTGUI_BLENDMODE_MOD, -}; - -/** - * Orientation - */ -enum RTGUI_ORIENTATION -{ - RTGUI_HORIZONTAL = 0x01, - RTGUI_VERTICAL = 0x02, - RTGUI_ORIENTATION_BOTH = RTGUI_HORIZONTAL | RTGUI_VERTICAL -}; - -enum RTGUI_ALIGN -{ - RTGUI_ALIGN_NOT = 0x00, - RTGUI_ALIGN_CENTER_HORIZONTAL = 0x01, - RTGUI_ALIGN_LEFT = RTGUI_ALIGN_NOT, - RTGUI_ALIGN_TOP = RTGUI_ALIGN_NOT, - RTGUI_ALIGN_RIGHT = 0x02, - RTGUI_ALIGN_BOTTOM = 0x04, - RTGUI_ALIGN_CENTER_VERTICAL = 0x08, - RTGUI_ALIGN_CENTER = RTGUI_ALIGN_CENTER_HORIZONTAL | RTGUI_ALIGN_CENTER_VERTICAL, - RTGUI_ALIGN_EXPAND = 0x10, - RTGUI_ALIGN_STRETCH = 0x20, - RTGUI_ALIGN_TTF_SIZE = 0x40, -}; - -enum RTGUI_TEXTSTYLE -{ - RTGUI_TEXTSTYLE_NORMAL = 0x00, - RTGUI_TEXTSTYLE_DRAW_BACKGROUND = 0x01, - RTGUI_TEXTSTYLE_SHADOW = 0x02, - RTGUI_TEXTSTYLE_OUTLINE = 0x04, -}; - -enum RTGUI_MODAL_CODE -{ - RTGUI_MODAL_OK, - RTGUI_MODAL_CANCEL, - RTGUI_MODAL_MAX = 0xFFFF, -}; -typedef enum RTGUI_MODAL_CODE rtgui_modal_code_t; - -#include - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/components/gui/include/rtgui/rtgui_app.h b/components/gui/include/rtgui/rtgui_app.h deleted file mode 100644 index 8d17c9a21d..0000000000 --- a/components/gui/include/rtgui/rtgui_app.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * File : rtgui_app.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2012-01-13 Grissiom first version - */ - -#ifndef __RTGUI_APP_H__ -#define __RTGUI_APP_H__ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -DECLARE_CLASS_TYPE(application); - -/** Gets the type of a application */ -#define RTGUI_APP_TYPE (RTGUI_TYPE(application)) -/** Casts the object to an rtgui_workbench */ -#define RTGUI_APP(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_APP_TYPE, struct rtgui_app)) -/** Checks if the object is an rtgui_workbench */ -#define RTGUI_IS_APP(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_APP_TYPE)) - -enum rtgui_app_flag -{ - RTGUI_APP_FLAG_EXITED = 0x04, - RTGUI_APP_FLAG_SHOWN = 0x08, - RTGUI_APP_FLAG_KEEP = 0x80, -}; - -typedef void (*rtgui_idle_func_t)(struct rtgui_object *obj, struct rtgui_event *event); - -struct rtgui_app -{ - struct rtgui_object parent; - - /* application name */ - unsigned char *name; - struct rtgui_image *icon; - - enum rtgui_app_flag state_flag; - - rt_uint16_t ref_count; - rt_uint16_t exit_code; - - /* the thread id */ - rt_thread_t tid; - /* the message queue of thread */ - rt_mq_t mq; - /* event buffer */ - rt_uint8_t event_buffer[sizeof(union rtgui_event_generic)]; - - /* if not RT_NULL, the main_object is the one will be activated when the - * app recieves activate event. By default, it is the first window shown in - * the app. */ - struct rtgui_object *main_object; - - /* on idle event handler */ - rtgui_idle_func_t on_idle; - - unsigned int window_cnt; - /* window activate count */ - unsigned int win_acti_cnt; - - void *user_data; -}; - -/** - * create an application named @myname on current thread. - * - * @param name the name of the application - * - * @return a pointer to struct rtgui_app on success. RT_NULL on failure. - */ -struct rtgui_app *rtgui_app_create(const char *name); -void rtgui_app_destroy(struct rtgui_app *app); -rt_bool_t rtgui_app_event_handler(struct rtgui_object *obj, rtgui_event_t *event); - -rt_base_t rtgui_app_run(struct rtgui_app *app); -void rtgui_app_exit(struct rtgui_app *app, rt_uint16_t code); -void rtgui_app_activate(struct rtgui_app *app); -void rtgui_app_close(struct rtgui_app *app); -void rtgui_app_sleep(struct rtgui_app *app, int millisecond); - -void rtgui_app_set_onidle(struct rtgui_app *app, rtgui_idle_func_t onidle); -rtgui_idle_func_t rtgui_app_get_onidle(struct rtgui_app *app); - -/** - * return the rtgui_app struct on current thread - */ -struct rtgui_app *rtgui_app_self(void); - -rt_err_t rtgui_app_set_as_wm(struct rtgui_app *app); - -void rtgui_app_set_main_win(struct rtgui_app *app, struct rtgui_win *win); -struct rtgui_win* rtgui_app_get_main_win(struct rtgui_app *app); - -/* get the topwin belong app window activate count */ -unsigned int rtgui_app_get_win_acti_cnt(void); - -#ifdef __cplusplus -} -#endif - -#endif /* end of include guard: __RTGUI_APP_H__ */ - diff --git a/components/gui/include/rtgui/rtgui_config.h b/components/gui/include/rtgui/rtgui_config.h deleted file mode 100644 index afb728ed84..0000000000 --- a/components/gui/include/rtgui/rtgui_config.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * File : rtgui_config.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - * 2010-02-08 Bernard move some RTGUI options to bsp - */ - -#ifndef __RTGUI_CONFIG_H__ -#define __RTGUI_CONFIG_H__ - -/* RTGUI options */ - -#ifndef RT_USING_DFS -#undef RTGUI_USING_DFS_FILERW -#undef RTGUI_USING_HZ_FILE -#endif - -#ifdef RT_USING_DFS -/* if file system is used, the DFS_FILERW will be defined */ -#ifndef RTGUI_USING_DFS_FILERW -#define RTGUI_USING_DFS_FILERW -#endif -#endif - -#if RTGUI_DEFAULT_FONT_SIZE == 0 -#define RTGUI_DEFAULT_FONT_SIZE 12 -#endif - -#define RTGUI_SVR_THREAD_PRIORITY 15 -#define RTGUI_SVR_THREAD_TIMESLICE 5 -#ifndef RTGUI_SVR_THREAD_STACK_SIZE -#ifdef RTGUI_USING_SMALL_SIZE -#define RTGUI_SVR_THREAD_STACK_SIZE 1024 -#else -#define RTGUI_SVR_THREAD_STACK_SIZE 2048 -#endif -#endif - -#define RTGUI_APP_THREAD_PRIORITY 25 -#define RTGUI_APP_THREAD_TIMESLICE 5 -#ifdef RTGUI_USING_SMALL_SIZE -#define RTGUI_APP_THREAD_STACK_SIZE 1024 -#else -#define RTGUI_APP_THREAD_STACK_SIZE 2048 -#endif - -// #define RTGUI_USING_CAST_CHECK - -// #define RTGUI_USING_DESKTOP_WINDOW -// #undef RTGUI_USING_SMALL_SIZE - -//#define RTGUI_USING_CALIBRATION - -#define RTGUI_USING_VFRAMEBUFFER - -#ifdef DEBUG_MEMLEAK -#define rtgui_malloc rt_malloc -#define rtgui_realloc rt_realloc -#define rtgui_free rt_free -#endif - -#endif - diff --git a/components/gui/include/rtgui/rtgui_object.h b/components/gui/include/rtgui/rtgui_object.h deleted file mode 100644 index 34b23af520..0000000000 --- a/components/gui/include/rtgui/rtgui_object.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - * File : rtgui_object.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-04 Bernard first version - */ -#ifndef __RTGUI_OBJECT_H__ -#define __RTGUI_OBJECT_H__ - - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* rtgui object type */ -#define RTGUI_CONTAINER_OF(obj, type, member) \ - ((type *)((char *)(obj) - (unsigned long)(&((type *)0)->member))) - -/** Casts the function pointer to an rtgui_constructor */ -#define RTGUI_CONSTRUCTOR(constructor) ((rtgui_constructor_t)(constructor)) -/** Casts the function pointer to an rtgui_constructor */ -#define RTGUI_DESTRUCTOR(destructor) ((rtgui_destructor_t)(destructor)) - -/* pre-definition */ -struct rtgui_object; -struct rtgui_app; - -typedef struct rtgui_object rtgui_object_t; -typedef void (*rtgui_constructor_t)(rtgui_object_t *object); -typedef void (*rtgui_destructor_t)(rtgui_object_t *object); - -/* rtgui type structure */ -struct rtgui_type -{ - /* type name */ - char *name; - - /* parent type link */ - const struct rtgui_type *parent; - - /* constructor and destructor */ - rtgui_constructor_t constructor; - rtgui_destructor_t destructor; - - /* size of type */ - int size; -}; -typedef struct rtgui_type rtgui_type_t; -#define RTGUI_TYPE(type) (_rtgui_##type##_get_type()) -#define RTGUI_PARENT_TYPE(type) (const struct rtgui_type*)(&_rtgui_##type) - -#define DECLARE_CLASS_TYPE(type) \ - const rtgui_type_t *_rtgui_##type##_get_type(void); \ - extern const struct rtgui_type _rtgui_##type - -#define DEFINE_CLASS_TYPE(type, name, parent, constructor, destructor, size) \ - const struct rtgui_type _rtgui_##type = { \ - name, \ - parent, \ - RTGUI_CONSTRUCTOR(constructor), \ - RTGUI_DESTRUCTOR(destructor), \ - size }; \ - const rtgui_type_t *_rtgui_##type##_get_type(void) { return &_rtgui_##type; } \ - RTM_EXPORT(_rtgui_##type##_get_type) - -void rtgui_type_object_construct(const rtgui_type_t *type, rtgui_object_t *object); -void rtgui_type_destructors_call(const rtgui_type_t *type, rtgui_object_t *object); -rt_bool_t rtgui_type_inherits_from(const rtgui_type_t *type, const rtgui_type_t *parent); -const rtgui_type_t *rtgui_type_parent_type_get(const rtgui_type_t *type); -const char *rtgui_type_name_get(const rtgui_type_t *type); -const rtgui_type_t *rtgui_object_object_type_get(rtgui_object_t *object); - -#ifdef RTGUI_USING_CAST_CHECK -#define RTGUI_OBJECT_CAST(obj, obj_type, c_type) \ - ((c_type *)rtgui_object_check_cast((rtgui_object_t *)(obj), (obj_type), __FUNCTION__, __LINE__)) -#else -#define RTGUI_OBJECT_CAST(obj, obj_type, c_type) ((c_type *)(obj)) -#endif - -#define RTGUI_OBJECT_CHECK_TYPE(_obj, _type) \ - (rtgui_type_inherits_from(((rtgui_object_t *)(_obj))->type, (_type))) - -DECLARE_CLASS_TYPE(object); -/** Gets the type of an object */ -#define RTGUI_OBJECT_TYPE RTGUI_TYPE(object) -/** Casts the object to an rtgui_object_t */ -#define RTGUI_OBJECT(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_OBJECT_TYPE, struct rtgui_object)) -/** Checks if the object is an rtgui_Object */ -#define RTGUI_IS_OBJECT(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_OBJECT_TYPE)) - -enum rtgui_object_flag -{ - RTGUI_OBJECT_FLAG_NONE = 0x0000, - RTGUI_OBJECT_FLAG_STATIC = 0x0001, - RTGUI_OBJECT_FLAG_DISABLED = 0x0002, - /* When an object is created, it's flag is set to valid. When an object is - * deleted, the valid bits will be cleared. */ - RTGUI_OBJECT_FLAG_VALID = 0xAB00, -}; - -/* rtgui base object */ -struct rtgui_object -{ - /* object type */ - const rtgui_type_t *type; - - /* the event handler */ - rtgui_event_handler_ptr event_handler; - - enum rtgui_object_flag flag; - - rt_uint32_t id; -}; - -rtgui_object_t *rtgui_object_create(const rtgui_type_t *object_type); -void rtgui_object_destroy(rtgui_object_t *object); - -/* set the event handler of object */ -void rtgui_object_set_event_handler(struct rtgui_object *object, rtgui_event_handler_ptr handler); -/* object default event handler */ -rt_bool_t rtgui_object_event_handler(struct rtgui_object *object, struct rtgui_event *event); -/* helper micro. widget event handlers could use this. */ -#define RTGUI_WIDGET_EVENT_HANDLER_PREPARE \ - struct rtgui_widget *widget; \ - RT_ASSERT(object != RT_NULL); \ - RT_ASSERT(event != RT_NULL); \ - widget = RTGUI_WIDGET(object); \ - /* supress compiler warning */ \ - widget = widget; - -/** handle @param event on @param object's own event handler - * - * If the @param object does not have an event handler, which means the object - * does not interested in any event, it will return RT_FALSE. Otherwise, the - * return code of that handler is returned. - */ -rt_inline rt_bool_t rtgui_object_handle(struct rtgui_object *object, struct rtgui_event *event) -{ - if (object->event_handler) - return object->event_handler(object, event); - return RT_FALSE; -} - -rtgui_object_t *rtgui_object_check_cast(rtgui_object_t *object, const rtgui_type_t *type, const char *func, int line); -const rtgui_type_t *rtgui_object_object_type_get(rtgui_object_t *object); - -void rtgui_object_set_id(struct rtgui_object *obj, rt_uint32_t id); -rt_uint32_t rtgui_object_get_id(struct rtgui_object *obj); -struct rtgui_object* rtgui_get_object(struct rtgui_app *app, rt_uint32_t id); -struct rtgui_object* rtgui_get_self_object(rt_uint32_t id); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/components/gui/include/rtgui/rtgui_server.h b/components/gui/include/rtgui/rtgui_server.h deleted file mode 100644 index 6d73bc5b66..0000000000 --- a/components/gui/include/rtgui/rtgui_server.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * File : rtgui_server.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-04 Bernard first version - */ -#ifndef __RTGUI_SERVER_H__ -#define __RTGUI_SERVER_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/* RTGUI server definitions */ - -/* top window definitions in server */ -enum rtgui_topwin_flag -{ - WINTITLE_INIT = 0x00, - WINTITLE_ACTIVATE = 0x01, - WINTITLE_NOFOCUS = 0x02, - /* window is hidden by default */ - WINTITLE_SHOWN = 0x04, - /* window is modaled by other window */ - WINTITLE_MODALED = 0x08, - /* window is modaling other window */ - WINTITLE_MODALING = 0x100, - WINTITLE_ONTOP = 0x200, - WINTITLE_ONBTM = 0x400, -}; - -struct rtgui_topwin -{ - /* the window flag */ - enum rtgui_topwin_flag flag; - /* event mask */ - rt_uint32_t mask; - - struct rtgui_wintitle *title; - - /* the window id */ - struct rtgui_win *wid; - - /* which app I belong */ - struct rtgui_app *app; - - /* the extent information */ - rtgui_rect_t extent; - - struct rtgui_topwin *parent; - - /* we need to iterate the topwin list with usual order(get target window) - * or reversely(painting). So it's better to use a double linked list */ - rt_list_t list; - rt_list_t child_list; - - /* the monitor rect list */ - rtgui_list_t monitor_list; -}; - -/* top win manager init */ -void rtgui_topwin_init(void); -void rtgui_server_init(void); - -void rtgui_server_install_show_win_hook(void (*hk)(void)); -void rtgui_server_install_act_win_hook(void (*hk)(void)); - -/* post an event to server */ -rt_err_t rtgui_server_post_event(struct rtgui_event *event, rt_size_t size); -rt_err_t rtgui_server_post_event_sync(struct rtgui_event *event, rt_size_t size); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/gui/include/rtgui/rtgui_system.h b/components/gui/include/rtgui/rtgui_system.h deleted file mode 100644 index 14d7351e35..0000000000 --- a/components/gui/include/rtgui/rtgui_system.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * File : rtgui_system.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-04 Bernard first version - */ -#ifndef __RTGUI_SYSTEM_H__ -#define __RTGUI_SYSTEM_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct rtgui_dc; -struct rtgui_event; -struct rtgui_widget; - -struct rtgui_timer; -typedef void (*rtgui_timeout_func)(struct rtgui_timer *timer, void *parameter); - -enum rtgui_timer_state -{ - RTGUI_TIMER_ST_INIT, - RTGUI_TIMER_ST_RUNNING, - RTGUI_TIMER_ST_DESTROY_PENDING, -}; - -struct rtgui_timer -{ - /* the rtgui application it runs on */ - struct rtgui_app* app; - /* rt timer */ - struct rt_timer timer; - /* How many events are pending on the queue. */ - int pending_cnt; - enum rtgui_timer_state state; - - /* timeout function and user data */ - rtgui_timeout_func timeout; - void *user_data; -}; -typedef struct rtgui_timer rtgui_timer_t; - -rtgui_timer_t *rtgui_timer_create(rt_int32_t time, rt_base_t flag, rtgui_timeout_func timeout, void *parameter); -void rtgui_timer_destory(rtgui_timer_t *timer); - -void rtgui_timer_set_timeout(rtgui_timer_t *timer, rt_int32_t time); -void rtgui_timer_start(rtgui_timer_t *timer); -void rtgui_timer_stop(rtgui_timer_t *timer); - -/* rtgui system initialization function */ -int rtgui_system_server_init(void); - -void *rtgui_malloc(rt_size_t size); -void rtgui_free(void *ptr); -void *rtgui_realloc(void *ptr, rt_size_t size); - -#ifdef _WIN32_NATIVE -#define rtgui_enter_critical() -#define rtgui_exit_critical() -#else -#define rtgui_enter_critical rt_enter_critical -#define rtgui_exit_critical rt_exit_critical -#endif - -struct rtgui_app* rtgui_get_server(void); -void rtgui_set_mainwin_rect(struct rtgui_rect *rect); -void rtgui_get_mainwin_rect(struct rtgui_rect *rect); -void rtgui_get_screen_rect(struct rtgui_rect *rect); - -void rtgui_screen_lock(rt_int32_t timeout); -void rtgui_screen_unlock(void); -int rtgui_screen_lock_freeze(void); -void rtgui_screen_lock_thaw(int value); - -struct rtgui_event; -rt_err_t rtgui_send(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size); -rt_err_t rtgui_send_urgent(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size); -rt_err_t rtgui_send_sync(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size); -rt_err_t rtgui_ack(struct rtgui_event *event, rt_int32_t status); -rt_err_t rtgui_recv(struct rtgui_event *event, rt_size_t event_size, rt_int32_t timeout); -rt_err_t rtgui_recv_filter(rt_uint32_t type, struct rtgui_event *event, rt_size_t event_size); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/gui/include/rtgui/tree.h b/components/gui/include/rtgui/tree.h deleted file mode 100644 index 58653fb00d..0000000000 --- a/components/gui/include/rtgui/tree.h +++ /dev/null @@ -1,748 +0,0 @@ -/* $NetBSD: tree.h,v 1.8 2004/03/28 19:38:30 provos Exp $ */ -/* $OpenBSD: tree.h,v 1.7 2002/10/17 21:51:54 art Exp $ */ -/* $FreeBSD$ */ - -/*- - * Copyright 2002 Niels Provos - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. - */ - -#ifndef _SYS_TREE_H_ -#define _SYS_TREE_H_ - -#ifndef NULL -#define NULL RT_NULL -#endif -// #include - -/* - * This file defines data structures for different types of trees: - * splay trees and red-black trees. - * - * A splay tree is a self-organizing data structure. Every operation - * on the tree causes a splay to happen. The splay moves the requested - * node to the root of the tree and partly rebalances it. - * - * This has the benefit that request locality causes faster lookups as - * the requested nodes move to the top of the tree. On the other hand, - * every lookup causes memory writes. - * - * The Balance Theorem bounds the total access time for m operations - * and n inserts on an initially empty tree as O((m + n)lg n). The - * amortized cost for a sequence of m accesses to a splay tree is O(lg n); - * - * A red-black tree is a binary search tree with the node color as an - * extra attribute. It fulfills a set of conditions: - * - every search path from the root to a leaf consists of the - * same number of black nodes, - * - each red node (except for the root) has a black parent, - * - each leaf node is black. - * - * Every operation on a red-black tree is bounded as O(lg n). - * The maximum height of a red-black tree is 2lg (n+1). - */ - -#define SPLAY_HEAD(name, type) \ -struct name { \ - struct type *sph_root; /* root of the tree */ \ -} - -#define SPLAY_INITIALIZER(root) \ - { NULL } - -#define SPLAY_INIT(root) do { \ - (root)->sph_root = NULL; \ -} while (/*CONSTCOND*/ 0) - -#define SPLAY_ENTRY(type) \ -struct { \ - struct type *spe_left; /* left element */ \ - struct type *spe_right; /* right element */ \ -} - -#define SPLAY_LEFT(elm, field) (elm)->field.spe_left -#define SPLAY_RIGHT(elm, field) (elm)->field.spe_right -#define SPLAY_ROOT(head) (head)->sph_root -#define SPLAY_EMPTY(head) (SPLAY_ROOT(head) == NULL) - -/* SPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold SPLAY_{RIGHT,LEFT} */ -#define SPLAY_ROTATE_RIGHT(head, tmp, field) do { \ - SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field); \ - SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ - (head)->sph_root = tmp; \ -} while (/*CONSTCOND*/ 0) - -#define SPLAY_ROTATE_LEFT(head, tmp, field) do { \ - SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field); \ - SPLAY_LEFT(tmp, field) = (head)->sph_root; \ - (head)->sph_root = tmp; \ -} while (/*CONSTCOND*/ 0) - -#define SPLAY_LINKLEFT(head, tmp, field) do { \ - SPLAY_LEFT(tmp, field) = (head)->sph_root; \ - tmp = (head)->sph_root; \ - (head)->sph_root = SPLAY_LEFT((head)->sph_root, field); \ -} while (/*CONSTCOND*/ 0) - -#define SPLAY_LINKRIGHT(head, tmp, field) do { \ - SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ - tmp = (head)->sph_root; \ - (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field); \ -} while (/*CONSTCOND*/ 0) - -#define SPLAY_ASSEMBLE(head, node, left, right, field) do { \ - SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \ - SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field);\ - SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \ - SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \ -} while (/*CONSTCOND*/ 0) - -/* Generates prototypes and inline functions */ - -#define SPLAY_PROTOTYPE(name, type, field, cmp) \ -void name##_SPLAY(struct name *, struct type *); \ -void name##_SPLAY_MINMAX(struct name *, int); \ -struct type *name##_SPLAY_INSERT(struct name *, struct type *); \ -struct type *name##_SPLAY_REMOVE(struct name *, struct type *); \ - \ -/* Finds the node with the same key as elm */ \ -rt_inline struct type * \ -name##_SPLAY_FIND(struct name *head, struct type *elm) \ -{ \ - if (SPLAY_EMPTY(head)) \ - return(NULL); \ - name##_SPLAY(head, elm); \ - if ((cmp)(elm, (head)->sph_root) == 0) \ - return (head->sph_root); \ - return (NULL); \ -} \ - \ -rt_inline struct type * \ -name##_SPLAY_NEXT(struct name *head, struct type *elm) \ -{ \ - name##_SPLAY(head, elm); \ - if (SPLAY_RIGHT(elm, field) != NULL) { \ - elm = SPLAY_RIGHT(elm, field); \ - while (SPLAY_LEFT(elm, field) != NULL) { \ - elm = SPLAY_LEFT(elm, field); \ - } \ - } else \ - elm = NULL; \ - return (elm); \ -} \ - \ -rt_inline struct type * \ -name##_SPLAY_MIN_MAX(struct name *head, int val) \ -{ \ - name##_SPLAY_MINMAX(head, val); \ - return (SPLAY_ROOT(head)); \ -} - -/* Main splay operation. - * Moves node close to the key of elm to top - */ -#define SPLAY_GENERATE(name, type, field, cmp) \ -struct type * \ -name##_SPLAY_INSERT(struct name *head, struct type *elm) \ -{ \ - if (SPLAY_EMPTY(head)) { \ - SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL; \ - } else { \ - int __comp; \ - name##_SPLAY(head, elm); \ - __comp = (cmp)(elm, (head)->sph_root); \ - if(__comp < 0) { \ - SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field);\ - SPLAY_RIGHT(elm, field) = (head)->sph_root; \ - SPLAY_LEFT((head)->sph_root, field) = NULL; \ - } else if (__comp > 0) { \ - SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field);\ - SPLAY_LEFT(elm, field) = (head)->sph_root; \ - SPLAY_RIGHT((head)->sph_root, field) = NULL; \ - } else \ - return ((head)->sph_root); \ - } \ - (head)->sph_root = (elm); \ - return (NULL); \ -} \ - \ -struct type * \ -name##_SPLAY_REMOVE(struct name *head, struct type *elm) \ -{ \ - struct type *__tmp; \ - if (SPLAY_EMPTY(head)) \ - return (NULL); \ - name##_SPLAY(head, elm); \ - if ((cmp)(elm, (head)->sph_root) == 0) { \ - if (SPLAY_LEFT((head)->sph_root, field) == NULL) { \ - (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);\ - } else { \ - __tmp = SPLAY_RIGHT((head)->sph_root, field); \ - (head)->sph_root = SPLAY_LEFT((head)->sph_root, field);\ - name##_SPLAY(head, elm); \ - SPLAY_RIGHT((head)->sph_root, field) = __tmp; \ - } \ - return (elm); \ - } \ - return (NULL); \ -} \ - \ -void \ -name##_SPLAY(struct name *head, struct type *elm) \ -{ \ - struct type __node, *__left, *__right, *__tmp; \ - int __comp; \ -\ - SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\ - __left = __right = &__node; \ -\ - while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) { \ - if (__comp < 0) { \ - __tmp = SPLAY_LEFT((head)->sph_root, field); \ - if (__tmp == NULL) \ - break; \ - if ((cmp)(elm, __tmp) < 0){ \ - SPLAY_ROTATE_RIGHT(head, __tmp, field); \ - if (SPLAY_LEFT((head)->sph_root, field) == NULL)\ - break; \ - } \ - SPLAY_LINKLEFT(head, __right, field); \ - } else if (__comp > 0) { \ - __tmp = SPLAY_RIGHT((head)->sph_root, field); \ - if (__tmp == NULL) \ - break; \ - if ((cmp)(elm, __tmp) > 0){ \ - SPLAY_ROTATE_LEFT(head, __tmp, field); \ - if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\ - break; \ - } \ - SPLAY_LINKRIGHT(head, __left, field); \ - } \ - } \ - SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ -} \ - \ -/* Splay with either the minimum or the maximum element \ - * Used to find minimum or maximum element in tree. \ - */ \ -void name##_SPLAY_MINMAX(struct name *head, int __comp) \ -{ \ - struct type __node, *__left, *__right, *__tmp; \ -\ - SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\ - __left = __right = &__node; \ -\ - while (1) { \ - if (__comp < 0) { \ - __tmp = SPLAY_LEFT((head)->sph_root, field); \ - if (__tmp == NULL) \ - break; \ - if (__comp < 0){ \ - SPLAY_ROTATE_RIGHT(head, __tmp, field); \ - if (SPLAY_LEFT((head)->sph_root, field) == NULL)\ - break; \ - } \ - SPLAY_LINKLEFT(head, __right, field); \ - } else if (__comp > 0) { \ - __tmp = SPLAY_RIGHT((head)->sph_root, field); \ - if (__tmp == NULL) \ - break; \ - if (__comp > 0) { \ - SPLAY_ROTATE_LEFT(head, __tmp, field); \ - if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\ - break; \ - } \ - SPLAY_LINKRIGHT(head, __left, field); \ - } \ - } \ - SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \ -} - -#define SPLAY_NEGINF -1 -#define SPLAY_INF 1 - -#define SPLAY_INSERT(name, x, y) name##_SPLAY_INSERT(x, y) -#define SPLAY_REMOVE(name, x, y) name##_SPLAY_REMOVE(x, y) -#define SPLAY_FIND(name, x, y) name##_SPLAY_FIND(x, y) -#define SPLAY_NEXT(name, x, y) name##_SPLAY_NEXT(x, y) -#define SPLAY_MIN(name, x) (SPLAY_EMPTY(x) ? NULL \ - : name##_SPLAY_MIN_MAX(x, SPLAY_NEGINF)) -#define SPLAY_MAX(name, x) (SPLAY_EMPTY(x) ? NULL \ - : name##_SPLAY_MIN_MAX(x, SPLAY_INF)) - -#define SPLAY_FOREACH(x, name, head) \ - for ((x) = SPLAY_MIN(name, head); \ - (x) != NULL; \ - (x) = SPLAY_NEXT(name, head, x)) - -/* Macros that define a red-black tree */ -#define RB_HEAD(name, type) \ -struct name { \ - struct type *rbh_root; /* root of the tree */ \ -} - -#define RB_INITIALIZER(root) \ - { NULL } - -#define RB_INIT(root) do { \ - (root)->rbh_root = NULL; \ -} while (/*CONSTCOND*/ 0) - -#define RB_BLACK 0 -#define RB_RED 1 -#define RB_ENTRY(type) \ -struct { \ - struct type *rbe_left; /* left element */ \ - struct type *rbe_right; /* right element */ \ - struct type *rbe_parent; /* parent element */ \ - int rbe_color; /* node color */ \ -} - -#define RB_LEFT(elm, field) (elm)->field.rbe_left -#define RB_RIGHT(elm, field) (elm)->field.rbe_right -#define RB_PARENT(elm, field) (elm)->field.rbe_parent -#define RB_COLOR(elm, field) (elm)->field.rbe_color -#define RB_ROOT(head) (head)->rbh_root -#define RB_EMPTY(head) (RB_ROOT(head) == NULL) - -#define RB_SET(elm, parent, field) do { \ - RB_PARENT(elm, field) = parent; \ - RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \ - RB_COLOR(elm, field) = RB_RED; \ -} while (/*CONSTCOND*/ 0) - -#define RB_SET_BLACKRED(black, red, field) do { \ - RB_COLOR(black, field) = RB_BLACK; \ - RB_COLOR(red, field) = RB_RED; \ -} while (/*CONSTCOND*/ 0) - -#ifndef RB_AUGMENT -#define RB_AUGMENT(x) do {} while (0) -#endif - -#define RB_ROTATE_LEFT(head, elm, tmp, field) do { \ - (tmp) = RB_RIGHT(elm, field); \ - if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \ - RB_PARENT(RB_LEFT(tmp, field), field) = (elm); \ - } \ - RB_AUGMENT(elm); \ - if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \ - if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \ - RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \ - else \ - RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \ - } else \ - (head)->rbh_root = (tmp); \ - RB_LEFT(tmp, field) = (elm); \ - RB_PARENT(elm, field) = (tmp); \ - RB_AUGMENT(tmp); \ - if ((RB_PARENT(tmp, field))) \ - RB_AUGMENT(RB_PARENT(tmp, field)); \ -} while (/*CONSTCOND*/ 0) - -#define RB_ROTATE_RIGHT(head, elm, tmp, field) do { \ - (tmp) = RB_LEFT(elm, field); \ - if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \ - RB_PARENT(RB_RIGHT(tmp, field), field) = (elm); \ - } \ - RB_AUGMENT(elm); \ - if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \ - if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \ - RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \ - else \ - RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \ - } else \ - (head)->rbh_root = (tmp); \ - RB_RIGHT(tmp, field) = (elm); \ - RB_PARENT(elm, field) = (tmp); \ - RB_AUGMENT(tmp); \ - if ((RB_PARENT(tmp, field))) \ - RB_AUGMENT(RB_PARENT(tmp, field)); \ -} while (/*CONSTCOND*/ 0) - -/* Generates prototypes and inline functions */ -#define RB_PROTOTYPE(name, type, field, cmp) \ - RB_PROTOTYPE_INTERNAL(name, type, field, cmp,) -#define RB_PROTOTYPE_STATIC(name, type, field, cmp) \ - RB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static) -#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \ -attr void name##_RB_INSERT_COLOR(struct name *, struct type *); \ -attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *);\ -attr struct type *name##_RB_REMOVE(struct name *, struct type *); \ -attr struct type *name##_RB_INSERT(struct name *, struct type *); \ -attr struct type *name##_RB_FIND(struct name *, struct type *); \ -attr struct type *name##_RB_NFIND(struct name *, struct type *); \ -attr struct type *name##_RB_NEXT(struct type *); \ -attr struct type *name##_RB_PREV(struct type *); \ -attr struct type *name##_RB_MINMAX(struct name *, int); \ - \ - -/* Main rb operation. - * Moves node close to the key of elm to top - */ -#define RB_GENERATE(name, type, field, cmp) \ - RB_GENERATE_INTERNAL(name, type, field, cmp,) -#define RB_GENERATE_STATIC(name, type, field, cmp) \ - RB_GENERATE_INTERNAL(name, type, field, cmp, __unused static) -#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr) \ -attr void \ -name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \ -{ \ - struct type *parent, *gparent, *tmp; \ - while ((parent = RB_PARENT(elm, field)) != NULL && \ - RB_COLOR(parent, field) == RB_RED) { \ - gparent = RB_PARENT(parent, field); \ - if (parent == RB_LEFT(gparent, field)) { \ - tmp = RB_RIGHT(gparent, field); \ - if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ - RB_COLOR(tmp, field) = RB_BLACK; \ - RB_SET_BLACKRED(parent, gparent, field);\ - elm = gparent; \ - continue; \ - } \ - if (RB_RIGHT(parent, field) == elm) { \ - RB_ROTATE_LEFT(head, parent, tmp, field);\ - tmp = parent; \ - parent = elm; \ - elm = tmp; \ - } \ - RB_SET_BLACKRED(parent, gparent, field); \ - RB_ROTATE_RIGHT(head, gparent, tmp, field); \ - } else { \ - tmp = RB_LEFT(gparent, field); \ - if (tmp && RB_COLOR(tmp, field) == RB_RED) { \ - RB_COLOR(tmp, field) = RB_BLACK; \ - RB_SET_BLACKRED(parent, gparent, field);\ - elm = gparent; \ - continue; \ - } \ - if (RB_LEFT(parent, field) == elm) { \ - RB_ROTATE_RIGHT(head, parent, tmp, field);\ - tmp = parent; \ - parent = elm; \ - elm = tmp; \ - } \ - RB_SET_BLACKRED(parent, gparent, field); \ - RB_ROTATE_LEFT(head, gparent, tmp, field); \ - } \ - } \ - RB_COLOR(head->rbh_root, field) = RB_BLACK; \ -} \ - \ -attr void \ -name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \ -{ \ - struct type *tmp; \ - while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) && \ - elm != RB_ROOT(head)) { \ - if (RB_LEFT(parent, field) == elm) { \ - tmp = RB_RIGHT(parent, field); \ - if (RB_COLOR(tmp, field) == RB_RED) { \ - RB_SET_BLACKRED(tmp, parent, field); \ - RB_ROTATE_LEFT(head, parent, tmp, field);\ - tmp = RB_RIGHT(parent, field); \ - } \ - if ((RB_LEFT(tmp, field) == NULL || \ - RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\ - (RB_RIGHT(tmp, field) == NULL || \ - RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\ - RB_COLOR(tmp, field) = RB_RED; \ - elm = parent; \ - parent = RB_PARENT(elm, field); \ - } else { \ - if (RB_RIGHT(tmp, field) == NULL || \ - RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) {\ - struct type *oleft; \ - if ((oleft = RB_LEFT(tmp, field)) \ - != NULL) \ - RB_COLOR(oleft, field) = RB_BLACK;\ - RB_COLOR(tmp, field) = RB_RED; \ - RB_ROTATE_RIGHT(head, tmp, oleft, field);\ - tmp = RB_RIGHT(parent, field); \ - } \ - RB_COLOR(tmp, field) = RB_COLOR(parent, field);\ - RB_COLOR(parent, field) = RB_BLACK; \ - if (RB_RIGHT(tmp, field)) \ - RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK;\ - RB_ROTATE_LEFT(head, parent, tmp, field);\ - elm = RB_ROOT(head); \ - break; \ - } \ - } else { \ - tmp = RB_LEFT(parent, field); \ - if (RB_COLOR(tmp, field) == RB_RED) { \ - RB_SET_BLACKRED(tmp, parent, field); \ - RB_ROTATE_RIGHT(head, parent, tmp, field);\ - tmp = RB_LEFT(parent, field); \ - } \ - if ((RB_LEFT(tmp, field) == NULL || \ - RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\ - (RB_RIGHT(tmp, field) == NULL || \ - RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\ - RB_COLOR(tmp, field) = RB_RED; \ - elm = parent; \ - parent = RB_PARENT(elm, field); \ - } else { \ - if (RB_LEFT(tmp, field) == NULL || \ - RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) {\ - struct type *oright; \ - if ((oright = RB_RIGHT(tmp, field)) \ - != NULL) \ - RB_COLOR(oright, field) = RB_BLACK;\ - RB_COLOR(tmp, field) = RB_RED; \ - RB_ROTATE_LEFT(head, tmp, oright, field);\ - tmp = RB_LEFT(parent, field); \ - } \ - RB_COLOR(tmp, field) = RB_COLOR(parent, field);\ - RB_COLOR(parent, field) = RB_BLACK; \ - if (RB_LEFT(tmp, field)) \ - RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK;\ - RB_ROTATE_RIGHT(head, parent, tmp, field);\ - elm = RB_ROOT(head); \ - break; \ - } \ - } \ - } \ - if (elm) \ - RB_COLOR(elm, field) = RB_BLACK; \ -} \ - \ -attr struct type * \ -name##_RB_REMOVE(struct name *head, struct type *elm) \ -{ \ - struct type *child, *parent, *old = elm; \ - int color; \ - if (RB_LEFT(elm, field) == NULL) \ - child = RB_RIGHT(elm, field); \ - else if (RB_RIGHT(elm, field) == NULL) \ - child = RB_LEFT(elm, field); \ - else { \ - struct type *left; \ - elm = RB_RIGHT(elm, field); \ - while ((left = RB_LEFT(elm, field)) != NULL) \ - elm = left; \ - child = RB_RIGHT(elm, field); \ - parent = RB_PARENT(elm, field); \ - color = RB_COLOR(elm, field); \ - if (child) \ - RB_PARENT(child, field) = parent; \ - if (parent) { \ - if (RB_LEFT(parent, field) == elm) \ - RB_LEFT(parent, field) = child; \ - else \ - RB_RIGHT(parent, field) = child; \ - RB_AUGMENT(parent); \ - } else \ - RB_ROOT(head) = child; \ - if (RB_PARENT(elm, field) == old) \ - parent = elm; \ - (elm)->field = (old)->field; \ - if (RB_PARENT(old, field)) { \ - if (RB_LEFT(RB_PARENT(old, field), field) == old)\ - RB_LEFT(RB_PARENT(old, field), field) = elm;\ - else \ - RB_RIGHT(RB_PARENT(old, field), field) = elm;\ - RB_AUGMENT(RB_PARENT(old, field)); \ - } else \ - RB_ROOT(head) = elm; \ - RB_PARENT(RB_LEFT(old, field), field) = elm; \ - if (RB_RIGHT(old, field)) \ - RB_PARENT(RB_RIGHT(old, field), field) = elm; \ - if (parent) { \ - left = parent; \ - do { \ - RB_AUGMENT(left); \ - } while ((left = RB_PARENT(left, field)) != NULL); \ - } \ - goto color; \ - } \ - parent = RB_PARENT(elm, field); \ - color = RB_COLOR(elm, field); \ - if (child) \ - RB_PARENT(child, field) = parent; \ - if (parent) { \ - if (RB_LEFT(parent, field) == elm) \ - RB_LEFT(parent, field) = child; \ - else \ - RB_RIGHT(parent, field) = child; \ - RB_AUGMENT(parent); \ - } else \ - RB_ROOT(head) = child; \ -color: \ - if (color == RB_BLACK) \ - name##_RB_REMOVE_COLOR(head, parent, child); \ - return (old); \ -} \ - \ -/* Inserts a node into the RB tree */ \ -attr struct type * \ -name##_RB_INSERT(struct name *head, struct type *elm) \ -{ \ - struct type *tmp; \ - struct type *parent = NULL; \ - int comp = 0; \ - tmp = RB_ROOT(head); \ - while (tmp) { \ - parent = tmp; \ - comp = (cmp)(elm, parent); \ - if (comp < 0) \ - tmp = RB_LEFT(tmp, field); \ - else if (comp > 0) \ - tmp = RB_RIGHT(tmp, field); \ - else \ - return (tmp); \ - } \ - RB_SET(elm, parent, field); \ - if (parent != NULL) { \ - if (comp < 0) \ - RB_LEFT(parent, field) = elm; \ - else \ - RB_RIGHT(parent, field) = elm; \ - RB_AUGMENT(parent); \ - } else \ - RB_ROOT(head) = elm; \ - name##_RB_INSERT_COLOR(head, elm); \ - return (NULL); \ -} \ - \ -/* Finds the node with the same key as elm */ \ -attr struct type * \ -name##_RB_FIND(struct name *head, struct type *elm) \ -{ \ - struct type *tmp = RB_ROOT(head); \ - int comp; \ - while (tmp) { \ - comp = cmp(elm, tmp); \ - if (comp < 0) \ - tmp = RB_LEFT(tmp, field); \ - else if (comp > 0) \ - tmp = RB_RIGHT(tmp, field); \ - else \ - return (tmp); \ - } \ - return (NULL); \ -} \ - \ -/* Finds the first node greater than or equal to the search key */ \ -attr struct type * \ -name##_RB_NFIND(struct name *head, struct type *elm) \ -{ \ - struct type *tmp = RB_ROOT(head); \ - struct type *res = NULL; \ - int comp; \ - while (tmp) { \ - comp = cmp(elm, tmp); \ - if (comp < 0) { \ - res = tmp; \ - tmp = RB_LEFT(tmp, field); \ - } \ - else if (comp > 0) \ - tmp = RB_RIGHT(tmp, field); \ - else \ - return (tmp); \ - } \ - return (res); \ -} \ - \ -/* ARGSUSED */ \ -attr struct type * \ -name##_RB_NEXT(struct type *elm) \ -{ \ - if (RB_RIGHT(elm, field)) { \ - elm = RB_RIGHT(elm, field); \ - while (RB_LEFT(elm, field)) \ - elm = RB_LEFT(elm, field); \ - } else { \ - if (RB_PARENT(elm, field) && \ - (elm == RB_LEFT(RB_PARENT(elm, field), field))) \ - elm = RB_PARENT(elm, field); \ - else { \ - while (RB_PARENT(elm, field) && \ - (elm == RB_RIGHT(RB_PARENT(elm, field), field)))\ - elm = RB_PARENT(elm, field); \ - elm = RB_PARENT(elm, field); \ - } \ - } \ - return (elm); \ -} \ - \ -/* ARGSUSED */ \ -attr struct type * \ -name##_RB_PREV(struct type *elm) \ -{ \ - if (RB_LEFT(elm, field)) { \ - elm = RB_LEFT(elm, field); \ - while (RB_RIGHT(elm, field)) \ - elm = RB_RIGHT(elm, field); \ - } else { \ - if (RB_PARENT(elm, field) && \ - (elm == RB_RIGHT(RB_PARENT(elm, field), field))) \ - elm = RB_PARENT(elm, field); \ - else { \ - while (RB_PARENT(elm, field) && \ - (elm == RB_LEFT(RB_PARENT(elm, field), field)))\ - elm = RB_PARENT(elm, field); \ - elm = RB_PARENT(elm, field); \ - } \ - } \ - return (elm); \ -} \ - \ -attr struct type * \ -name##_RB_MINMAX(struct name *head, int val) \ -{ \ - struct type *tmp = RB_ROOT(head); \ - struct type *parent = NULL; \ - while (tmp) { \ - parent = tmp; \ - if (val < 0) \ - tmp = RB_LEFT(tmp, field); \ - else \ - tmp = RB_RIGHT(tmp, field); \ - } \ - return (parent); \ -} - -#define RB_NEGINF -1 -#define RB_INF 1 - -#define RB_INSERT(name, x, y) name##_RB_INSERT(x, y) -#define RB_REMOVE(name, x, y) name##_RB_REMOVE(x, y) -#define RB_FIND(name, x, y) name##_RB_FIND(x, y) -#define RB_NFIND(name, x, y) name##_RB_NFIND(x, y) -#define RB_NEXT(name, x, y) name##_RB_NEXT(y) -#define RB_PREV(name, x, y) name##_RB_PREV(y) -#define RB_MIN(name, x) name##_RB_MINMAX(x, RB_NEGINF) -#define RB_MAX(name, x) name##_RB_MINMAX(x, RB_INF) - -#define RB_FOREACH(x, name, head) \ - for ((x) = RB_MIN(name, head); \ - (x) != NULL; \ - (x) = name##_RB_NEXT(x)) - -#define RB_FOREACH_REVERSE(x, name, head) \ - for ((x) = RB_MAX(name, head); \ - (x) != NULL; \ - (x) = name##_RB_PREV(x)) - -#endif /* _SYS_TREE_H_ */ diff --git a/components/gui/include/rtgui/widgets/box.h b/components/gui/include/rtgui/widgets/box.h deleted file mode 100644 index e4ea354478..0000000000 --- a/components/gui/include/rtgui/widgets/box.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * File : box.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __RTGUI_BOX_H__ -#define __RTGUI_BOX_H__ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -DECLARE_CLASS_TYPE(box); - -/** Gets the type of a box */ -#define RTGUI_BOX_TYPE (RTGUI_TYPE(box)) -/** Casts the object to an rtgui_box */ -#define RTGUI_BOX(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_BOX_TYPE, rtgui_box_t)) -/** Checks if the object is an rtgui_box */ -#define RTGUI_IS_BOX(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_BOX_TYPE)) - -struct rtgui_box -{ - struct rtgui_object parent; - - rt_uint16_t orient; - rt_uint16_t border_size; - - struct rtgui_container *container; -}; -typedef struct rtgui_box rtgui_box_t; - -struct rtgui_box *rtgui_box_create(int orientation, int border_size); -void rtgui_box_destroy(struct rtgui_box *box); - -void rtgui_box_layout(rtgui_box_t *box); -void rtgui_box_layout_rect(rtgui_box_t *box, struct rtgui_rect *rect); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/gui/include/rtgui/widgets/container.h b/components/gui/include/rtgui/widgets/container.h deleted file mode 100644 index c45facca2d..0000000000 --- a/components/gui/include/rtgui/widgets/container.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * File : container.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __RTGUI_CONTAINER_H__ -#define __RTGUI_CONTAINER_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -DECLARE_CLASS_TYPE(container); -/** Gets the type of a container */ -#define RTGUI_CONTAINER_TYPE (RTGUI_TYPE(container)) -/** Casts the object to an rtgui_container */ -#define RTGUI_CONTAINER(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_CONTAINER_TYPE, rtgui_container_t)) -/** Checks if the object is an rtgui_container */ -#define RTGUI_IS_CONTAINER(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_CONTAINER_TYPE)) - -/* - * the container widget - */ -struct rtgui_container -{ - struct rtgui_widget parent; - - /* layout box */ - struct rtgui_box *layout_box; - - rtgui_list_t children; -}; -typedef struct rtgui_container rtgui_container_t; - -rtgui_container_t *rtgui_container_create(void); -void rtgui_container_destroy(rtgui_container_t *container); - -rt_bool_t rtgui_container_event_handler(struct rtgui_object *widget, struct rtgui_event *event); - -/* set layout box */ -void rtgui_container_set_box(struct rtgui_container *container, struct rtgui_box *box); -void rtgui_container_layout(struct rtgui_container *container); - -void rtgui_container_add_child(rtgui_container_t *container, rtgui_widget_t *child); -void rtgui_container_remove_child(rtgui_container_t *container, rtgui_widget_t *child); -void rtgui_container_destroy_children(rtgui_container_t *container); -rtgui_widget_t *rtgui_container_get_first_child(rtgui_container_t *container); - -rt_bool_t rtgui_container_event_handler(struct rtgui_object *widget, rtgui_event_t *event); - -rt_bool_t rtgui_container_dispatch_event(rtgui_container_t *container, rtgui_event_t *event); -rt_bool_t rtgui_container_dispatch_mouse_event(rtgui_container_t *container, struct rtgui_event_mouse *event); - -struct rtgui_object* rtgui_container_get_object(struct rtgui_container *container, rt_uint32_t id); -#ifdef __cplusplus -} -#endif - -#endif diff --git a/components/gui/include/rtgui/widgets/title.h b/components/gui/include/rtgui/widgets/title.h deleted file mode 100644 index 128d1c3143..0000000000 --- a/components/gui/include/rtgui/widgets/title.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * File : title.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-16 Bernard first version - */ -#ifndef __RTGUI_TITLE__ -#define __RTGUI_TITLE__ - -#include - -DECLARE_CLASS_TYPE(wintitle); -/** Gets the type of a title */ -#define RTGUI_WINTITLE_TYPE (RTGUI_TYPE(wintitle)) -/** Casts the object to an rtgui_wintitle */ -#define RTGUI_WINTITLE(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_WINTITLE_TYPE, rtgui_wintitle_t)) -/** Checks if the object is an rtgui_wintitle */ -#define RTGUI_IS_WINTITLE(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_WINTITLE_TYPE)) - -struct rtgui_wintitle -{ - struct rtgui_widget parent; -}; -typedef struct rtgui_wintitle rtgui_wintitle_t; - -rtgui_wintitle_t *rtgui_wintitle_create(struct rtgui_win *window); -void rtgui_wintitle_destroy(rtgui_wintitle_t *wintitle); - -rt_bool_t rtgui_wintile_event_handler(struct rtgui_object *object, rtgui_event_t *event); - -#endif diff --git a/components/gui/include/rtgui/widgets/widget.h b/components/gui/include/rtgui/widgets/widget.h deleted file mode 100644 index 726bd4ae38..0000000000 --- a/components/gui/include/rtgui/widgets/widget.h +++ /dev/null @@ -1,209 +0,0 @@ -/* - * File : widget.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-04 Bernard first version - */ -#ifndef __RTGUI_WIDGET_H__ -#define __RTGUI_WIDGET_H__ - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define RTGUI_WIDGET_FLAG_DEFAULT 0x0000 -#define RTGUI_WIDGET_FLAG_SHOWN 0x0001 -#define RTGUI_WIDGET_FLAG_DISABLE 0x0002 -#define RTGUI_WIDGET_FLAG_FOCUS 0x0004 -#define RTGUI_WIDGET_FLAG_TRANSPARENT 0x0008 -#define RTGUI_WIDGET_FLAG_FOCUSABLE 0x0010 -#define RTGUI_WIDGET_FLAG_DC_VISIBLE 0x0100 -#define RTGUI_WIDGET_FLAG_IN_ANIM 0x0200 - -/* rtgui widget attribute */ -#define RTGUI_WIDGET_FOREGROUND(w) (RTGUI_WIDGET(w)->gc.foreground) -#define RTGUI_WIDGET_BACKGROUND(w) (RTGUI_WIDGET(w)->gc.background) -#define RTGUI_WIDGET_TEXTALIGN(w) (RTGUI_WIDGET(w)->gc.textalign) -#define RTGUI_WIDGET_FONT(w) (RTGUI_WIDGET(w)->gc.font) -#define RTGUI_WIDGET_FLAG(w) (RTGUI_WIDGET(w)->flag) -#define RTGUI_WIDGET_ALIGN(w) (RTGUI_WIDGET(w)->align) -#define RTGUI_WIDGET_BORDER(w) (RTGUI_WIDGET(w)->border) -#define RTGUI_WIDGET_BORDER_STYLE(w) (RTGUI_WIDGET(w)->border_style) - -#define RTGUI_WIDGET_UNHIDE(w) RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_SHOWN -#define RTGUI_WIDGET_HIDE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_SHOWN -#define RTGUI_WIDGET_IS_HIDE(w) (!(RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_SHOWN)) - -#define RTGUI_WIDGET_ENABLE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_DISABLE -#define RTGUI_WIDGET_DISABLE(w) RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_DISABLE -#define RTGUI_WIDGET_IS_ENABLE(w) (!((RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_DISABLE))) - -#define RTGUI_WIDGET_UNFOCUS(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_FOCUS -#define RTGUI_WIDGET_FOCUS(w) RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_FOCUS -#define RTGUI_WIDGET_IS_FOCUSED(w) (RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_FOCUS) - -#define RTGUI_WIDGET_IS_FOCUSABLE(w) (RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_FOCUSABLE) -#define RTGUI_WIDGET_SET_UNFOCUSABLE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_FOCUSABLE - -#define RTGUI_WIDGET_IS_DC_VISIBLE(w) (RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_DC_VISIBLE) -#define RTGUI_WIDGET_DC_SET_VISIBLE(w) RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_DC_VISIBLE -#define RTGUI_WIDGET_DC_SET_UNVISIBLE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_DC_VISIBLE -#define RTGUI_WIDGET_DC(w) ((struct rtgui_dc*)&((w)->dc_type)) - -DECLARE_CLASS_TYPE(widget); - -/** Gets the type of a widget */ -#define RTGUI_WIDGET_TYPE (RTGUI_TYPE(widget)) -/** Casts the object to a rtgui_widget */ -#define RTGUI_WIDGET(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_WIDGET_TYPE, rtgui_widget_t)) -/** Check if the object is a rtgui_widget */ -#define RTGUI_IS_WIDGET(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_WIDGET_TYPE)) - -/* - * the base widget object - */ -struct rtgui_widget -{ - /* inherit from rtgui_object */ - struct rtgui_object object; - - /* the widget that contains this widget */ - struct rtgui_widget *parent; - /* the window that contains this widget */ - struct rtgui_win *toplevel; - /* the widget children and sibling */ - rtgui_list_t sibling; - - /* widget flag */ - rt_int32_t flag; - - /* hardware device context */ - rt_uint32_t dc_type; - const struct rtgui_dc_engine *dc_engine; - - /* the graphic context of widget */ - rtgui_gc_t gc; - - /* the widget extent */ - rtgui_rect_t extent; - /* the visiable extent (includes the rectangles of children) */ - rtgui_rect_t extent_visiable; - /* the rect clip information */ - rtgui_region_t clip; - - /* minimal width and height of widget */ - rt_int16_t min_width, min_height; - /* widget align */ - rt_int32_t align; - rt_uint16_t border; - rt_uint16_t border_style; - - /* call back */ - rt_bool_t (*on_focus_in)(struct rtgui_object *widget, struct rtgui_event *event); - rt_bool_t (*on_focus_out)(struct rtgui_object *widget, struct rtgui_event *event); - - /* user private data */ - rt_uint32_t user_data; -}; -typedef struct rtgui_widget rtgui_widget_t; - -rtgui_widget_t *rtgui_widget_create(const rtgui_type_t *widget_type); -void rtgui_widget_destroy(rtgui_widget_t *widget); - -rt_bool_t rtgui_widget_event_handler(struct rtgui_object *object, rtgui_event_t *event); - -/* focus and unfocus */ -void rtgui_widget_focus(rtgui_widget_t *widget); -void rtgui_widget_unfocus(rtgui_widget_t *widget); - -/* event handler for each command */ -void rtgui_widget_set_onfocus(rtgui_widget_t *widget, rtgui_event_handler_ptr handler); -void rtgui_widget_set_onunfocus(rtgui_widget_t *widget, rtgui_event_handler_ptr handler); - -/* get and set rect of widget */ -void rtgui_widget_get_rect(rtgui_widget_t *widget, rtgui_rect_t *rect); -void rtgui_widget_set_border(rtgui_widget_t *widget, rt_uint32_t style); -void rtgui_widget_set_rect(rtgui_widget_t *widget, const rtgui_rect_t *rect); -void rtgui_widget_set_rectangle(rtgui_widget_t *widget, int x, int y, int width, int height); -void rtgui_widget_get_extent(rtgui_widget_t *widget, rtgui_rect_t *rect); - -void rtgui_widget_set_minsize(rtgui_widget_t *widget, int width, int height); -void rtgui_widget_set_minwidth(rtgui_widget_t *widget, int width); -void rtgui_widget_set_minheight(rtgui_widget_t *widget, int height); - -void rtgui_widget_set_parent(rtgui_widget_t *widget, rtgui_widget_t *parent); - -/* get the physical position of a logic point on widget */ -void rtgui_widget_point_to_device(rtgui_widget_t *widget, rtgui_point_t *point); -/* get the physical position of a logic rect on widget */ -void rtgui_widget_rect_to_device(rtgui_widget_t *widget, rtgui_rect_t *rect); - -/* get the logic position of a physical point on widget */ -void rtgui_widget_point_to_logic(rtgui_widget_t *widget, rtgui_point_t *point); -/* get the logic position of a physical rect on widget */ -void rtgui_widget_rect_to_logic(rtgui_widget_t *widget, rtgui_rect_t *rect); - -void rtgui_widget_clip_parent(rtgui_widget_t *widget); -void rtgui_widget_clip_return(rtgui_widget_t *widget); - -/* move widget and its children to a logic point */ -void rtgui_widget_move_to_logic(rtgui_widget_t *widget, int dx, int dy); - -/* update the clip info of widget */ -void rtgui_widget_update_clip(rtgui_widget_t *widget); - -/* get the toplevel widget of widget */ -struct rtgui_win *rtgui_widget_get_toplevel(rtgui_widget_t *widget); -rt_bool_t rtgui_widget_onupdate_toplvl(struct rtgui_object *object, struct rtgui_event *event); - -void rtgui_widget_show(rtgui_widget_t *widget); -rt_bool_t rtgui_widget_onshow(struct rtgui_object *object, struct rtgui_event *event); -void rtgui_widget_hide(rtgui_widget_t *widget); -rt_bool_t rtgui_widget_onhide(struct rtgui_object *object, struct rtgui_event *event); -void rtgui_widget_update(rtgui_widget_t *widget); -rt_bool_t rtgui_widget_onpaint(struct rtgui_object *object, struct rtgui_event *event); - -/* get parent color */ -rtgui_color_t rtgui_widget_get_parent_foreground(rtgui_widget_t *widget); -rtgui_color_t rtgui_widget_get_parent_background(rtgui_widget_t *widget); - -/* get the next sibling of widget */ -rtgui_widget_t *rtgui_widget_get_next_sibling(rtgui_widget_t *widget); -/* get the prev sibling of widget */ -rtgui_widget_t *rtgui_widget_get_prev_sibling(rtgui_widget_t *widget); - -rt_bool_t rtgui_widget_is_in_animation(rtgui_widget_t *widget); - -/* dump widget information */ -void rtgui_widget_dump(rtgui_widget_t *widget); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/components/gui/include/rtgui/widgets/window.h b/components/gui/include/rtgui/widgets/window.h deleted file mode 100644 index 1ef59a3d44..0000000000 --- a/components/gui/include/rtgui/widgets/window.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * File : window.h - * This file is part of RT-Thread GUI Engine - * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Change Logs: - * Date Author Notes - * 2009-10-04 Bernard first version - * 2010-05-03 Bernard add win close function - */ -#ifndef __RTGUI_WINDOW_H__ -#define __RTGUI_WINDOW_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include - -DECLARE_CLASS_TYPE(win); -/** Gets the type of a win */ -#define RTGUI_WIN_TYPE (RTGUI_TYPE(win)) -/** Casts the object to an rtgui_win */ -#define RTGUI_WIN(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_WIN_TYPE, rtgui_win_t)) -/** Checks if the object is an rtgui_win */ -#define RTGUI_IS_WIN(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_WIN_TYPE)) - -#define RTGUI_WIN_STYLE_NO_FOCUS 0x0001 /* non-focused window */ -#define RTGUI_WIN_STYLE_NO_TITLE 0x0002 /* no title window */ -#define RTGUI_WIN_STYLE_NO_BORDER 0x0004 /* no border window */ -#define RTGUI_WIN_STYLE_CLOSEBOX 0x0008 /* window has the close button */ -#define RTGUI_WIN_STYLE_MINIBOX 0x0010 /* window has the mini button */ - -#define RTGUI_WIN_STYLE_DESTROY_ON_CLOSE 0x0020 /* window is destroyed when closed */ -#define RTGUI_WIN_STYLE_ONTOP 0x0040 /* window is in the top layer */ -#define RTGUI_WIN_STYLE_ONBTM 0x0080 /* window is in the bottom layer */ -#define RTGUI_WIN_STYLE_MAINWIN 0x0106 /* window is a main window */ - -#define RTGUI_WIN_MAGIC 0xA5A55A5A /* win magic flag */ - -#define RTGUI_WIN_STYLE_DEFAULT (RTGUI_WIN_STYLE_CLOSEBOX | RTGUI_WIN_STYLE_MINIBOX) - -#define WINTITLE_HEIGHT 20 -#define WINTITLE_CB_WIDTH 16 -#define WINTITLE_CB_HEIGHT 16 -#define WINTITLE_BORDER_SIZE 2 - -enum rtgui_win_flag -{ - RTGUI_WIN_FLAG_INIT = 0x00, /* init state */ - RTGUI_WIN_FLAG_MODAL = 0x01, /* modal mode window */ - RTGUI_WIN_FLAG_CLOSED = 0x02, /* window is closed */ - RTGUI_WIN_FLAG_ACTIVATE = 0x04, /* window is activated */ - RTGUI_WIN_FLAG_UNDER_MODAL = 0x08, /* window is under modal - show(modaled by other) */ - RTGUI_WIN_FLAG_CONNECTED = 0x10, /* connected to server */ - /* window is event_key dispatcher(dispatch it to the focused widget in - * current window) _and_ a key handler(it should be able to handle keys - * such as ESC). Both of dispatching and handling are in the same - * function(rtgui_win_event_handler). So we have to distinguish between the - * two modes. - * - * If this flag is set, we are in key-handling mode. - */ - RTGUI_WIN_FLAG_HANDLE_KEY = 0x20, - - RTGUI_WIN_FLAG_CB_PRESSED = 0x40, -}; - -struct rtgui_win -{ - /* inherit from container */ - rtgui_container_t parent; - - /* update count */ - rt_base_t update; - - /* drawing count */ - rt_base_t drawing; - struct rtgui_rect drawing_rect; - - /* parent window. RT_NULL if the window is a top level window */ - struct rtgui_win *parent_window; - - struct rtgui_region outer_clip; - struct rtgui_rect outer_extent; - - /* the widget that will grab the focus in current window */ - struct rtgui_widget *focused_widget; - - /* which app I belong */ - struct rtgui_app *app; - - /* window style */ - rt_uint16_t style; - - /* window state flag */ - enum rtgui_win_flag flag; - - rtgui_modal_code_t modal_code; - - /* last mouse event handled widget */ - rtgui_widget_t *last_mevent_widget; - - /* window title */ - char *title; - struct rtgui_wintitle *_title_wgt; - - /* call back */ - rt_bool_t (*on_activate)(struct rtgui_object *widget, struct rtgui_event *event); - rt_bool_t (*on_deactivate)(struct rtgui_object *widget, struct rtgui_event *event); - rt_bool_t (*on_close)(struct rtgui_object *widget, struct rtgui_event *event); - /* the key is sent to the focused widget by default. If the focused widget - * and all of it's parents didn't handle the key event, it will be handled - * by @func on_key - * - * If you want to handle key event on your own, it's better to overload - * this function other than handle EVENT_KBD in event_handler. - */ - rt_bool_t (*on_key)(struct rtgui_object *widget, struct rtgui_event *event); - - /* reserved user data */ - void *user_data; - - /* Private data. */ - rt_base_t (*_do_show)(struct rtgui_win *win); - - /* app ref_count */ - rt_uint16_t app_ref_count; - - /* win magic flag, magic value is 0xA5A55A5A */ - rt_uint32_t magic; -}; - -rtgui_win_t *rtgui_win_create(struct rtgui_win *parent_window, const char *title, - rtgui_rect_t *rect, rt_uint16_t style); -rtgui_win_t *rtgui_mainwin_create(struct rtgui_win *parent_window, const char *title, rt_uint16_t style); - -void rtgui_win_destroy(rtgui_win_t *win); - -int rtgui_win_init(struct rtgui_win *win, struct rtgui_win *parent_window, - const char *title, - rtgui_rect_t *rect, - rt_uint16_t style); -int rtgui_win_fini(struct rtgui_win* win); - -/** Close window. - * - * @param win the window you want to close - * - * @return RT_TRUE if the window is closed. RT_FALSE if not. If the onclose - * callback returns RT_FALSE, the window won't be closed. - * - * \sa rtgui_win_set_onclose . - */ -rt_bool_t rtgui_win_close(struct rtgui_win *win); - -rt_base_t rtgui_win_show(struct rtgui_win *win, rt_bool_t is_modal); -rt_base_t rtgui_win_do_show(struct rtgui_win *win); -rt_base_t rtgui_win_enter_modal(struct rtgui_win *win); - -void rtgui_win_hide(rtgui_win_t *win); -void rtgui_win_end_modal(rtgui_win_t *win, rtgui_modal_code_t modal_code); -rt_err_t rtgui_win_activate(struct rtgui_win *win); -rt_bool_t rtgui_win_is_activated(struct rtgui_win *win); - -void rtgui_win_move(struct rtgui_win *win, int x, int y); - -/* reset extent of window */ -void rtgui_win_set_rect(rtgui_win_t *win, rtgui_rect_t *rect); -void rtgui_win_update_clip(struct rtgui_win *win); - -void rtgui_win_set_onactivate(rtgui_win_t *win, rtgui_event_handler_ptr handler); -void rtgui_win_set_ondeactivate(rtgui_win_t *win, rtgui_event_handler_ptr handler); -void rtgui_win_set_onclose(rtgui_win_t *win, rtgui_event_handler_ptr handler); -void rtgui_win_set_onkey(rtgui_win_t *win, rtgui_event_handler_ptr handler); - -rt_bool_t rtgui_win_event_handler(struct rtgui_object *win, struct rtgui_event *event); - -void rtgui_win_event_loop(rtgui_win_t *wnd); - -void rtgui_win_set_title(rtgui_win_t *win, const char *title); -char *rtgui_win_get_title(rtgui_win_t *win); - -struct rtgui_dc *rtgui_win_get_drawing(rtgui_win_t * win); - -struct rtgui_win* rtgui_win_get_topmost_shown(void); -struct rtgui_win* rtgui_win_get_next_shown(void); - -void rtgui_theme_draw_win(struct rtgui_wintitle *wint); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/components/gui/libraries/SConscript b/components/gui/libraries/SConscript deleted file mode 100644 index 4a80f59b5b..0000000000 --- a/components/gui/libraries/SConscript +++ /dev/null @@ -1,15 +0,0 @@ -# RT-Thread building script for bridge - -import os -from building import * - -cwd = GetCurrentDir() -objs = [] -list = os.listdir(cwd) - -for d in list: - path = os.path.join(cwd, d) - if os.path.isfile(os.path.join(path, 'SConscript')): - objs = objs + SConscript(os.path.join(d, 'SConscript')) - -Return('objs') diff --git a/components/gui/libraries/freetype-2.6.2/CMakeLists.txt b/components/gui/libraries/freetype-2.6.2/CMakeLists.txt deleted file mode 100644 index 77a5622c38..0000000000 --- a/components/gui/libraries/freetype-2.6.2/CMakeLists.txt +++ /dev/null @@ -1,436 +0,0 @@ -# CMakeLists.txt -# -# Copyright 2013-2015 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# Written originally by John Cary -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. -# -# -# As a preliminary, create a compilation directory and change into it, for -# example -# -# mkdir ~/freetype2.compiled -# cd ~/freetype2.compiled -# -# Now you can say -# -# cmake -# -# to create a Makefile that builds a static version of the library. -# -# For a dynamic library, use -# -# cmake -D BUILD_SHARED_LIBS:BOOL=true -# -# For a framework on OS X, use -# -# cmake -D BUILD_FRAMEWORK:BOOL=true -G Xcode -# -# instead. -# -# For an iOS static library, use -# -# cmake -D IOS_PLATFORM=OS -G Xcode -# -# or -# -# cmake -D IOS_PLATFORM=SIMULATOR -G Xcode -# -# Please refer to the cmake manual for further options, in particular, how -# to modify compilation and linking parameters. -# -# Some notes. -# -# . `cmake' creates configuration files in -# -# /include/freetype/config -# -# which should be further modified if necessary. -# -# . You can use `cmake' directly on a freshly cloned FreeType git -# repository. -# -# . `CMakeLists.txt' is provided as-is since it is normally not used by the -# developer team. -# -# . If you want to disable the automatic generation of the distribution -# targets, add the `-D FREETYPE_NO_DIST=true' command line argument. -# -# . Set the `WITH_ZLIB', `WITH_BZip2', `WITH_PNG', and `WITH_HarfBuzz' -# CMake variables to `ON' or `OFF' to force or skip using a dependency. -# Leave a variable undefined (which is the default) to use the dependency -# only if it is available. Example: -# -# cmake ... -DWITH_ZLIB=ON -DWITH_HarfBuzz=OFF ... - - -cmake_minimum_required(VERSION 2.6) - - -include(CheckIncludeFile) - - -# CMAKE_TOOLCHAIN_FILE must be set before `project' is called, which -# configures the base build environment and references the toolchain file -if (APPLE) - if (DEFINED IOS_PLATFORM) - if (NOT "${IOS_PLATFORM}" STREQUAL "OS" - AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR") - message(FATAL_ERROR - "IOS_PLATFORM must be set to either OS or SIMULATOR") - endif () - if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") - message(AUTHOR_WARNING - "You should use Xcode generator with IOS_PLATFORM enabled to get Universal builds.") - endif () - if (BUILD_SHARED_LIBS) - message(FATAL_ERROR - "BUILD_SHARED_LIBS can not be on with IOS_PLATFORM enabled") - endif () - if (BUILD_FRAMEWORK) - message(FATAL_ERROR - "BUILD_FRAMEWORK can not be on with IOS_PLATFORM enabled") - endif () - - # iOS only uses static libraries - set(BUILD_SHARED_LIBS OFF) - - set(CMAKE_TOOLCHAIN_FILE - ${PROJECT_SOURCE_DIR}/builds/cmake/iOS.cmake) - endif () -else () - if (DEFINED IOS_PLATFORM) - message(FATAL_ERROR "IOS_PLATFORM is not supported on this platform") - endif () -endif () - - -project(freetype) - - -if (WIN32 AND NOT MINGW AND BUILD_SHARED_LIBS) - message(FATAL_ERROR "Building shared libraries on Windows needs MinGW") -endif () - -# Disallow in-source builds -if ("${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}") - message(FATAL_ERROR - " -In-source builds are not permitted! Make a separate folder for" - " building, e.g.," - " - mkdir build; cd build; cmake .." - " -Before that, remove the files created by this failed run with" - " - rm -rf CMakeCache.txt CMakeFiles") -endif () - - -# Add local cmake modules -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/builds/cmake) - - -if (BUILD_FRAMEWORK) - if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") - message(FATAL_ERROR - "You should use Xcode generator with BUILD_FRAMEWORK enabled") - endif () - set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)") - set(BUILD_SHARED_LIBS ON) -endif () - - -set(VERSION_MAJOR "2") -set(VERSION_MINOR "6") -set(VERSION_PATCH "2") - -set(PROJECT_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) -set(SHARED_LIBRARY_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}) - - -# Compiler definitions for building the library -add_definitions(-DFT2_BUILD_LIBRARY) - - -# Find dependencies -foreach (d ZLIB BZip2 PNG HarfBuzz) - string(TOUPPER "${d}" D) - - if (DEFINED WITH_${d} OR DEFINED WITH_${D}) - if (WITH_${d} OR WITH_${D}) - find_package(${d} QUIET REQUIRED) - endif () - else () - find_package(${d} QUIET) - endif () - - if (${d}_FOUND OR ${D}_FOUND) - message(STATUS "Building with ${d}") - endif() -endforeach () - - -message(STATUS - "Creating directory ${PROJECT_BINARY_DIR}/include/freetype/config") -file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/include/freetype/config") - - -# Create the configuration file -message(STATUS - "Creating file ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h") - -if (UNIX) - check_include_file("unistd.h" HAVE_UNISTD_H) - check_include_file("fcntl.h" HAVE_FCNTL_H) - check_include_file("stdint.h" HAVE_STDINT_H) - - file(READ "${PROJECT_SOURCE_DIR}/builds/unix/ftconfig.in" - FTCONFIG_H) - if (HAVE_UNISTD_H) - string(REGEX REPLACE - "#undef +(HAVE_UNISTD_H)" "#define \\1" - FTCONFIG_H "${FTCONFIG_H}") - endif () - if (HAVE_FCNTL_H) - string(REGEX REPLACE - "#undef +(HAVE_FCNTL_H)" "#define \\1" - FTCONFIG_H "${FTCONFIG_H}") - endif () - if (HAVE_STDINT_H) - string(REGEX REPLACE - "#undef +(HAVE_STDINT_H)" "#define \\1" - FTCONFIG_H "${FTCONFIG_H}") - endif () - string(REPLACE "/undef " "#undef " - FTCONFIG_H "${FTCONFIG_H}") - file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h" - "${FTCONFIG_H}") -else () - file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h" - FTCONFIG_H) - file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h" - "${FTCONFIG_H}") -endif () - - -# Create the options file -message(STATUS - "Creating file ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h") - -file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h" - FTOPTION_H) -if (ZLIB_FOUND) - string(REGEX REPLACE - "/\\* +(#define +FT_CONFIG_OPTION_SYSTEM_ZLIB) +\\*/" "\\1" - FTOPTION_H "${FTOPTION_H}") -endif () -if (BZIP2_FOUND) - string(REGEX REPLACE - "/\\* +(#define +FT_CONFIG_OPTION_USE_BZIP2) +\\*/" "\\1" - FTOPTION_H "${FTOPTION_H}") -endif () -if (PNG_FOUND) - string(REGEX REPLACE - "/\\* +(#define +FT_CONFIG_OPTION_USE_PNG) +\\*/" "\\1" - FTOPTION_H "${FTOPTION_H}") -endif () -if (HARFBUZZ_FOUND) - string(REGEX REPLACE - "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1" - FTOPTION_H "${FTOPTION_H}") -endif () -file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h" - "${FTOPTION_H}") - - -# Specify library include directories -include_directories("${PROJECT_SOURCE_DIR}/include") -include_directories(BEFORE "${PROJECT_BINARY_DIR}/include") - - -file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h") -file(GLOB PUBLIC_CONFIG_HEADERS "include/freetype/config/*.h") -file(GLOB PRIVATE_HEADERS "include/freetype/internal/*.h") - - -set(BASE_SRCS - src/autofit/autofit.c - src/base/ftbase.c - src/base/ftbbox.c - src/base/ftbdf.c - src/base/ftbitmap.c - src/base/ftcid.c - src/base/ftfntfmt.c - src/base/ftfstype.c - src/base/ftgasp.c - src/base/ftglyph.c - src/base/ftgxval.c - src/base/ftinit.c - src/base/ftlcdfil.c - src/base/ftmm.c - src/base/ftotval.c - src/base/ftpatent.c - src/base/ftpfr.c - src/base/ftstroke.c - src/base/ftsynth.c - src/base/ftsystem.c - src/base/fttype1.c - src/base/ftwinfnt.c - src/bdf/bdf.c - src/bzip2/ftbzip2.c - src/cache/ftcache.c - src/cff/cff.c - src/cid/type1cid.c - src/gzip/ftgzip.c - src/lzw/ftlzw.c - src/pcf/pcf.c - src/pfr/pfr.c - src/psaux/psaux.c - src/pshinter/pshinter.c - src/psnames/psnames.c - src/raster/raster.c - src/sfnt/sfnt.c - src/smooth/smooth.c - src/truetype/truetype.c - src/type1/type1.c - src/type42/type42.c - src/winfonts/winfnt.c -) - -if (WIN32) - set(BASE_SRCS ${BASE_SRCS} builds/windows/ftdebug.c) -elseif (WINCE) - set(BASE_SRCS ${BASE_SRCS} builds/wince/ftdebug.c) -else () - set(BASE_SRCS ${BASE_SRCS} src/base/ftdebug.c) -endif () - - -if (BUILD_FRAMEWORK) - set(BASE_SRCS - ${BASE_SRCS} - builds/mac/freetype-Info.plist - ) -endif () - -set(CMAKE_DEBUG_POSTFIX d) - -add_library(freetype - ${PUBLIC_HEADERS} - ${PUBLIC_CONFIG_HEADERS} - ${PRIVATE_HEADERS} - ${BASE_SRCS} -) - - -if (BUILD_SHARED_LIBS) - set_target_properties(freetype PROPERTIES - VERSION ${PROJECT_VERSION} - SOVERSION ${SHARED_LIBRARY_VERSION} - COMPILE_DEFINITIONS freetype_EXPORTS - ) -endif () - - -if (BUILD_FRAMEWORK) - set_property(SOURCE ${PUBLIC_CONFIG_HEADERS} - PROPERTY MACOSX_PACKAGE_LOCATION Headers/config - ) - set_target_properties(freetype PROPERTIES - FRAMEWORK TRUE - MACOSX_FRAMEWORK_INFO_PLIST builds/mac/freetype-Info.plist - PUBLIC_HEADER "${PUBLIC_HEADERS}" - XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" - ) -endif () - -if (NOT CMAKE_VERSION VERSION_LESS 2.8.11) - target_include_directories(freetype - PUBLIC $) -endif () - -if (CMAKE_VERSION VERSION_LESS 2.8.12) - set(MAYBE_PRIVATE "") -else () - set(MAYBE_PRIVATE "PRIVATE") -endif () - -if (ZLIB_FOUND) - target_link_libraries(freetype ${MAYBE_PRIVATE} ${ZLIB_LIBRARIES}) - include_directories(${ZLIB_INCLUDE_DIRS}) -endif () -if (BZIP2_FOUND) - target_link_libraries(freetype ${MAYBE_PRIVATE} ${BZIP2_LIBRARIES}) - include_directories(${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS -endif () -if (PNG_FOUND) - add_definitions(${PNG_DEFINITIONS}) - target_link_libraries(freetype ${MAYBE_PRIVATE} ${PNG_LIBRARIES}) - include_directories(${PNG_INCLUDE_DIRS}) -endif () -if (HARFBUZZ_FOUND) - target_link_libraries(freetype ${MAYBE_PRIVATE} ${HARFBUZZ_LIBRARIES}) - include_directories(${HARFBUZZ_INCLUDE_DIRS}) -endif () - - -# Installations -# Note the trailing slash in the argument to the `DIRECTORY' directive -install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ - DESTINATION include/freetype2 - PATTERN "internal" EXCLUDE - PATTERN "ftconfig.h" EXCLUDE - PATTERN "ftoption.h" EXCLUDE -) -install(FILES - ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h - ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h - DESTINATION include/freetype2/freetype/config -) -install(TARGETS freetype - EXPORT freetype-targets - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - FRAMEWORK DESTINATION Library/Frameworks -) -install(EXPORT freetype-targets - DESTINATION lib/cmake/freetype - FILE freetype-config.cmake -) - - -# Packaging -# CPack version numbers for release tarball name. -set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR}) -set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) -set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}}) -if (NOT DEFINED CPACK_PACKAGE_DESCRIPTION_SUMMARY) - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${CMAKE_PROJECT_NAME}") -endif () -if (NOT DEFINED CPACK_SOURCE_PACKAGE_FILE_NAME) - set(CPACK_SOURCE_PACKAGE_FILE_NAME - "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-r${PROJECT_REV}" - CACHE INTERNAL "tarball basename" - ) -endif () -set(CPACK_SOURCE_GENERATOR TGZ) -set(CPACK_SOURCE_IGNORE_FILES - "/CVS/;/.svn/;.swp$;.#;/#;/build/;/serial/;/ser/;/parallel/;/par/;~;/preconfig.out;/autom4te.cache/;/.config") -set(CPACK_GENERATOR TGZ) -include(CPack) - - -# Add `make dist' target if FREETYPE_DIST is set (which is the default) -if (NOT DEFINED FREETYPE_NO_DIST) - add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source) -endif () - -# eof diff --git a/components/gui/libraries/freetype-2.6.2/ChangeLog b/components/gui/libraries/freetype-2.6.2/ChangeLog deleted file mode 100644 index 31c2ac9e01..0000000000 --- a/components/gui/libraries/freetype-2.6.2/ChangeLog +++ /dev/null @@ -1,3606 +0,0 @@ -2015-11-28 Werner Lemberg - - * Version 2.6.2 released. - ========================= - - - Tag sources with `VER-2-6-2'. - - * docs/VERSION.DLL: Update documentation and bump version number to - 2.6.2. - - * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, - builds/windows/vc2005/index.html, - builds/windows/vc2008/freetype.vcproj, - builds/windows/vc2008/index.html, - builds/windows/vc2010/freetype.vcxproj, - builds/windows/vc2010/index.html, - builds/windows/visualc/freetype.dsp, - builds/windows/visualc/freetype.vcproj, - builds/windows/visualc/index.html, - builds/windows/visualce/freetype.dsp, - builds/windows/visualce/freetype.vcproj, - builds/windows/visualce/index.html, - builds/wince/vc2005-ce/freetype.vcproj, - builds/wince/vc2005-ce/index.html, - builds/wince/vc2008-ce/freetype.vcproj, - builds/wince/vc2008-ce/index.html: s/2.6.1/2.6.2/, s/261/262/. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. - - * builds/unix/configure.raw (version_info): Set to 18:2:12. - * CMakeLists.txt (VERSION_PATCH): Set to 2. - - * docs/CHANGES: Updated. - -2015-11-28 Werner Lemberg - - Fix C++ compilation. - - * src/autofit/afloader.c: Include FT_INTERNAL_CALC_H. - - * src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler. - -2015-11-28 Nikolaus Waxweiler - - Change default LCD filter to be normalized and color-balanced. - - * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update - `default_filter'. - -2015-11-28 Werner Lemberg - - [docmaker] Allow references to section names. - - In the reference, we show the section's title enclosed in single - quotes. - - * src/tools/docmaker/formatter.py (Formatter::__init__): Collect - section names as identifiers. - - * src/tools/docmaker/tohtml.py (section_title_header): Split into... - (section_title_header1, section_title_header2): ... these two - strings. - (HtmlFormatter::make_block_url, make_html_word, html_source_quote): - Handle sections. - (HtmlFormatter::section_enter): Updated to add `id' HTML attribute. - -2015-11-27 Tamas Kenez - - [cmake] Add script to test the config module. - - * builds/cmake/testbuild.sh: New file. - -2015-11-27 Tamas Kenez - - * CMakeLists.txt: Create `freetype-config.cmake' config module. - -2015-11-27 Tamas Kenez - - * CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'. - -2015-11-27 Tamas Kenez - - [cmake] Add better control of library dependencies. - - * CMakeLists.txt: Add `WITH_*' variables to force/auto/omit - ZLIB/BZip2/PNG/HarfBuzz. - -2015-11-27 Tamas Kenez - - [cmake] Make `FindHarfbuzz' observe the REQUIRED option. - - * builds/cmake/FindHarfBuzz.cmake: Implement it. - -2015-11-27 Werner Lemberg - - [cmake] Collect files specific to cmake in `builds/cmake'. - - * builds/FindHarfBuzz.cmake: Move to ... - * builds/cmake/FindHarfBuzz.cmake: ... this place. - - * CMakeLists.txt (CMAKE_MODULE_PATH): Updated. - -2015-11-27 Alexander Bock - - CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'. - -2015-11-26 Werner Lemberg - - [docmaker] Allow `foo[bar]' as identifier. - - We need this to handle equally named properties in different - modules. - - * src/tools/docmaker/content.py (re_identifier), - src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'. - - * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word, - HtmlFormatter::index_exit, HtmlFormatter::section_enter, - HtmlFormatter::block_enter): Handle `foo[bar]'. - -2015-11-25 Werner Lemberg - - * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480). - - (_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its - contents. - -2015-11-21 Werner Lemberg - - * include/freetype/internal/ftcalc.h: Don't use `register' keyword. - - This fixes compiler warnings. - - Reported by Behdad. - -2015-11-20 Werner Lemberg - - Add `FT_LCD_FILTER_LEGACY1' enum value. - - This does the same as `FT_LCD_FILTER_LEGACY'. - - See - - https://bugs.freedesktop.org/show_bug.cgi?id=92981 - - for the reasoning. - - * include/freetype/ftlcdfil.h (FT_LcdFilter): New value - `FT_LCD_FILTER_LEGACY1'. - - * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it. - -2015-11-15 Werner Lemberg - - * src/autofit/afhints.c (af_get_segment_index): Fix it. - - The old code was too simple, returning invalid values in most cases - where a segment crosses the contour start. - -2015-11-15 Werner Lemberg - - * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439). - -2015-11-11 Werner Lemberg - - [cff, autofit] Switch off stem darkening by default. - - * src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c - (cff_driver_init): Do it. - -2015-11-10 Jan Alexander Steffens (heftig) - - Allow native CFF hinter in FT_RENDER_MODE_LIGHT. - - Both the native CFF hinter and the auto-hinter now have a very - similar rendering style. - - * include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no - longer implies FT_LOAD_FORCE_AUTOHINT. - - * include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New - macro. - - * include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New - macro. - - * src/cff/cffdrivr.c (cff_driver_class): Use it. - - * src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection - logic. - -2015-11-09 Werner Lemberg - - * src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408). - -2015-11-09 Werner Lemberg - - [truetype] Remove integer to pointer conversion compiler warning. - - Problem reported by Alexei. - - * src/truetype/ttgload.c (load_truetype_glyph): Use a solution found - in the glib library to fix the issue. - -2015-11-08 Behdad Esfahbod - - [sfnt] Accept version 3 of `EBLC' and `CBLC' tables also. - - * src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it. - -2015-11-08 Philipp Knechtges - - [autofit] Don't distort (latin) glyphs too much (#46195). - - * src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and - `descender' fields. - - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect - ascender and descender data for blue zones. - (af_latin_metrics_scale_dim): Reject vertical scaling values that - change the result by more than two pixels. - -2015-11-05 Werner Lemberg - - [sfnt] Ignore embedded bitmaps with zero size (#46379). - - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement - it. - -2015-11-04 Werner Lemberg - - [truetype] Catch infinite recursion in subglyphs (#46372). - - * include/freetype/internal/tttypes.h (TT_LoaderRec): New field - `composites'. - - * src/truetype/ttgload.c: Include FT_LIST_H. - (load_truetype_glyph): Add composite subglyph index to a list; - abort if index is already in list. - (tt_loader_init): Updated. - (tt_loader_done): New function. - (TT_Load_Glyph): Call `tt_loader_done'. - -2015-11-04 Werner Lemberg - - [truetype] Better tracing of composite glyphs. - - * src/truetype/ttgload.c (TT_Load_Composite_Glyph, - load_truetype_glyph): Implement it. - -2015-11-03 Werner Lemberg - - [sfnt] Protect against zero-size bitmaps (#46345). - - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check - `glyph_size'. - -2015-11-02 Nikolaus Waxweiler - - * src/autofit/afloader.c (af_loader_load_g): Implement emboldening. - -2015-11-02 Nikolaus Waxweiler - - [autofit] Implement darkening computation function. - - This is a crude adaption of the original `cf2_computeDarkening' - function. - - * src/autofit/afloader.c (af_intToFixed, af_fixedToInt, - af_floatToFixed): New macros, taken from `cf2fixed.h'. - (af_loader_compute_darkening): New function. - * src/autofit/afloader.h: Updated. - -2015-11-02 Nikolaus Waxweiler - - [autofit] Add functions to get standard widths for writing systems. - - We need the computed standard horizontal and vertical widths for the - emboldening calculation. This method provides a convenient way to - extract it from writing-system-specific metrics structures, which - all script definitions must implement. - - * src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New - function type. - (AF_WritingSystemClassRec): New member `style_metrics_getstdw'. - (AF_DEFINE_WRITING_SYSTEM_CLASS): Updated. - - * src/autofit/afcjk.c (af_cjk_get_standard_width): New function. - (af_cjk_writing_system_class): Updated. - * src/autofit/afdummy.c (af_dummy_writing_system_class): Updated. - * src/autofit/afindic.c (af_cjk_get_standard_width): New function. - (af_indic_writing_system_class): Updated. - * src/autofit/aflatin.c (af_latin_get_standard_width): New function. - (af_indic_writing_system_class): Updated. - * src/autofit/aflatin.c (af_latin_get_standard_width): New function. - (af_indic_writing_system_class): Updated. - -2015-11-02 Nikolaus Waxweiler - - [autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data. - - * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields. - - * src/autofit/afglobal.c (af_face_globals_new): Initialize new - fields. - (af_face_globals_free): Reset new fields. - -2015-11-02 Nikolaus Waxweiler - - [autofit] Add stem-darkening properties. - - Actual code follows in a later commit. - - * include/freetype/ftautoh.h: Document `no-stem-darkening' and - `darkening-parameters'. - - * src/autofit/afmodule.h: New fields `no_stem_darkening' and - `darken_params'. - - * src/autofit/afmodule.c (af_property_set, af_property_get): - Handle them. - (af_autofitter_init): Initialize them. - -2015-11-02 Bungeman - - [ftfuzzer] Add support for multiple files (patch #8779). - - Currently, libFuzzer only supports mutation of a single file. We - circumvent this problem by using an uncompressed tar archive as - multiple-file input for the fuzzer. - - This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing; - a constructed tarball should contain a font file as the first - element, and files to be attached as further elements. - - * src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers. - (archive_read_entry_data, parse_data): New functions. - (LLVMFuzzerTestOneInput): Updated. - - * src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom - mutator for libFuzzer that can mutate tarballs in a sensible way. - -2015-10-31 Werner Lemberg - - [sfnt] Fix cmap 14 validation (#46346). - - * src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before - accessing `numRanges' and `numMappings'. - Fix size check for non-default UVS table. - -2015-10-31 Werner Lemberg - - [sfnt] Handle infinite recursion in bitmap strikes (#46344). - - * src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc, - tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned, - tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add - argument for recursion depth. - (tt_sbit_decoder_load_compound): Add argument for recursion depth. - Increase recursion counter for recursive call. - (tt_sbit_decoder_load_image): Add argument for recursion depth. - Check recurse depth. - (tt_face_load_sbit_image): Updated. - -2015-10-29 Werner Lemberg - - * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor. - -2015-10-29 Werner Lemberg - - * CMakeLists.txt: Remove code to set MSVC's /FD compiler switch. - - Problem reported by David Capello ; see - - http://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html - - for details. - -2015-10-27 Werner Lemberg - - [pfr] Add some safety guards (#46302). - - * src/pfr/pfrload.h (PFR_CHECK): Rename to... - (PFR_CHECK_SIZE): ... this. - (PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE. - - * src/pfr/pfrload.c (pfr_log_font_count): Check `count'. - (pfr_extra_item_load_kerning_pairs): Remove tracing message. - (pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate. - Allocate `chars' after doing a size checks. - - * src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid - bitmap format to... - (pfr_slot_load_bitmap): ... this function. - Check bitmap size. - -2015-10-26 Werner Lemberg - - [truetype] Fix sanitizing logic for `loca' (#46223). - - * src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an - incorrect adjustment of the number of glyphs, most often using far - too large values. - -2015-10-25 Werner Lemberg - - [autofit] Improve tracing. - - * src/autofit/afhints.c (af_print_idx, af_get_segment_index, - af_get_edge_index): New functions. - - (af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'. - Add segment and edge index for each point. - Slightly change printing order of some elements. - Don't print `-1' but `--' for missing elements. - - (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove - unnecessary `|', `[', and `]'. - Don't print `-1' but `--' for missing elements. - -2015-10-24 Werner Lemberg - - [sfnt] Sanitize bitmap strike glyph height. - - Problem reported by Nikolay Sivov . - - * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value - for `metrics->height' by applying some heuristics. - -2015-10-22 Werner Lemberg - - [sfnt, type42] Fix clang compiler warnings. - - * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'. - - * src/type42/t42parse.c (t42_parse_sfnts): Use proper cast. - -2015-10-22 Dave Arnold - Werner Lemberg - - [cff] Avoid overflow/module arithmetic. - - This modifies the addition of subroutine number to subroutine bias - from unsigned to signed, but does not change any results. - - * src/cff/cf2ft.c (cf2_initGlobalRegionBuffer, - cf2_initLocalRegionBuffer): Change variable names from (unsigned) - `idx' to (signed) `subrNum', since it is not an index until after - the bias is added. - * src/cff/cf2ft.h: Updated. - - * src/cff/cf2intrp.c (cf2_interpT2CharString) : - Updated similarly. - -2015-10-22 Werner Lemberg - - [cid] Better check of `SubrCount' dictionary entry (#46272). - - * src/cid/cidload.c (cid_face_open): Add more sanity tests for - `fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'. - -2015-10-21 Werner Lemberg - - [base] Pacify compiler (#46266). - - * src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and - `anchor'. - -2015-10-21 Werner Lemberg - - [type42] Fix heap buffer overflow (#46269). - - * src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in - bounds checking. - -2015-10-21 Dave Arnold - - [cff] Fix limit in assert for max hints. - - * src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the - limit (96 bits). - -2015-10-21 Dave Arnold - - [cff] Remove an assert (#46107). - - * src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges - in wrong order. - -2015-10-21 Werner Lemberg - - [sfnt] Avoid unnecessarily large allocation for WOFFs (#46257). - - * src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize' - only after thorough checks. - Add tracing messages. - -2015-10-21 Werner Lemberg - - [type42] Better check invalid `sfnts' array data (#46255). - - * src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be - checked individually against available data size. - -2015-10-20 Werner Lemberg - - [cid] Add a bunch of safety checks. - - * src/cid/cidload.c (parse_fd_array): Check `num_dicts' against - stream size. - (cid_read_subrs): Check largest offset against stream size. - (cid_parse_dict): Move safety check to ... - (cid_face_open): ... this function. - Also test length of binary data and values of `SDBytes', - `SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'. - -2015-10-20 Werner Lemberg - - [cid] Avoid segfault with malformed input (#46250). - - * src/cid/cidload.c (cid_read_subrs): Return a proper error code for - unsorted offsets. - -2015-10-20 StudioEtrange - - * CMakeLists.txt: Enable shared library builds on MinGW (#46233). - -2015-10-20 Werner Lemberg - - * src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229). - -2015-10-19 Bungeman - - [cid] Better handle invalid glyph stream offsets (#46221). - - * src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph - length. - -2015-10-18 Werner Lemberg - - [psaux] Fix tracing of negative numbers. - - Due to incorrect casting negative numbers were shown as very large - (positive) integers on 64bit systems. - - * src/psaux/t1decode.c (t1_decoder_parse_charstrings) : - Use division instead of shift. - -2015-10-18 Werner Lemberg - - [truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223). - - * devel/ftoption.h, include/freetype/config/ftoption.h: Surround it - with #ifndef ... #endif, as suggested in the tracker issue. - -2015-10-18 Werner Lemberg - - [truetype] Better protection against malformed `fpgm' (#46223). - - * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a - malformed `fpgm' table more than once. - -2015-10-17 Werner Lemberg - - * src/cid/cidgload.c (cid_load_glyph): Fix memory leak. - - Reported by Kostya Serebryany . - -2015-10-17 Werner Lemberg - - [bdf] Prevent memory leak (#46217). - - * src/bdf/bdflib.c (_bdf_parse_glyphs) : Check - _BDF_GLYPH_BITS. - -2015-10-17 Werner Lemberg - - [bdf] Use stream size to adjust number of glyphs. - - * src/bdf/bdflib.c (ACMSG17): New message macro. - (_bdf_parse_t): Add member `size'. - (bdf_load_font): Set `size'. - (_bdf_parse_glyphs): Adjust `cnt' if necessary. - -2015-10-17 Werner Lemberg - - * src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size. - -2015-10-17 Werner Lemberg - - * src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222). - -2015-10-17 Werner Lemberg - - [psaux] Fix heap buffer overflow (#46221). - - * src/psaux/t1decode.c (t1_decoder_parse_charstring) : - Fix limit check. - -2015-10-17 Werner Lemberg - - * src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220). - -2015-10-15 Kostya Serebryany - - [ftfuzzer] Add README. - - * src/tools/ftfuzzer/README: New file. - -2015-10-15 Bungeman - - [bdf] Fix memory leak (#46213). - - * src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in - case of error. - -2015-10-15 Werner Lemberg - - [truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208). - - * devel/ftoption.h, include/freetype/config/ftoption.h - (TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro. - - * src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed. - (TT_RunIns): Updated. - -2015-10-15 Werner Lemberg - - * src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing. - - The used indices were off by 1. - -2015-10-15 Bungeman - Werner Lemberg - - * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211). - -2015-10-15 Werner Lemberg - - [base] Compute MD5 checksums only if explicitly requested. - - This improves profiling accuracy. - - * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it. - -2015-10-14 Werner Lemberg - - [base] Use `FT_' namespace for MD5 functions (#42366). - - * src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'. - Undefine HAVE_OPENSSL. - -2015-10-13 Werner Lemberg - - [type1] Correctly handle missing MM axis names (#46202). - - * src/type1/t1load.c (T1_Get_MM_Var): Implement it. - -2015-10-13 Werner Lemberg - - [pcf] Quickly exit if font index < 0. - - Similar to other font formats, this commit makes the parser no - longer check the whole PCF file but only the header and the TOC if - we just want to get the number of available faces (and a proper - recognition of the font format). - - * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated. - Exit quickly if face_index < 0. - - * src/pcfread.c (pcf_load_font): Add `face_index' argument. - Exit quickly if face_index < 0. - - * src/pcf/pcf.h: Updated. - -2015-10-13 Werner Lemberg - - [ftfuzzer] Handle TTCs and MM/GX variations. - - This patch also contains various other improvements. - - * src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject - pre-C++11 compilers. - (FT_Global): New class. Use it to provide a global constructor and - destructor for the `FT_Library' object. - (setIntermediateAxis): New function to select an (arbitrary) - instance. - (LLVMFuzzerTestOneInput): Loop over all faces and named instances. - Also call `FT_Set_Char_Size'. - -2015-10-13 Werner Lemberg - - [truetype] Refine some GX sanity tests. - - Use the `gvar' table size instead of the remaining bytes in the - stream. - - * src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'. - - * src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'. - (ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument - `size'. - (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated. - -2015-10-13 Werner Lemberg - - [truetype] Another GX sanity test. - - * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check - `tupleCount'. - Add tracing message. - -2015-10-13 Werner Lemberg - - [truetype] Fix memory leak for broken GX fonts (#46188). - - * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of - deallocation. - -2015-10-13 Werner Lemberg - - [truetype] Fix commit from 2015-10-10. - - * src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error - handling body to condition. - -2015-10-12 Werner Lemberg - - [unix] Make MKDIR_P actually work. - - * builds/unix/configure.raw: Fix underquoting of `INSTALL' and - `MKDIR_P'. - - Problem reported by Dan Liddell . - -2015-10-11 Werner Lemberg - - [sfnt] Improve extraction of number of named instances. - - * src/sfnt/sfobjs.c (sfnt_init_face) - [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against - `fvar' table size. - -2015-10-10 Alexei Podtelezhnikov - - * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow - (#46149). - -2015-10-10 Werner Lemberg - - [sfnt] Fix infinite loops with broken cmaps (#46167). - - * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care - of border conditions (i.e., if the loops exit naturally). - -2015-10-10 Werner Lemberg - - [truetype] More sanity tests for GX handling. - - These tests should mainly help avoid unnecessarily large memory - allocations in case of malformed fonts. - - * src/truetype/ttgxvar.c (ft_var_readpackedpoints, - ft_var_readpackeddeltas): Check number of points against stream - size. - (ft_var_load_avar): Check `pairCount' against table length. - (ft_var_load_gvar): Check `globalCoordCount' and `glyphCount' - against table length. - (tt_face_vary_cvt): Check `tupleCount' and `offsetToData'. - Fix trace. - (TT_Vary_Apply_Glyph_Deltas): Fix trace. - Free `sharedpoints' to avoid memory leak. - -2015-10-10 Werner Lemberg - - [truetype] Better protection against malformed GX data (#46166). - - * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly - handle empty `localpoints' array. - -2015-10-10 Werner Lemberg - - * src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162). - -2015-10-09 Werner Lemberg - - * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size. - -2015-10-08 Werner Lemberg - - [pcf] Protect against invalid number of TOC entries (#46159). - - * src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries - against size of data stream. - -2015-10-08 Werner Lemberg - - [type42] Protect against invalid number of glyphs (#46159). - - * src/type42/t42parse.c (t42_parse_charstrings): Check number of - `CharStrings' dictionary entries against size of data stream. - -2015-10-08 Werner Lemberg - - [sfnt] Fix some signed overflows (#46149). - - * src/sfnt/ttsbit.c (tt_face_load_strike_metrics) - : Use `FT_MulDiv'. - -2015-10-08 Werner Lemberg - - [type1] Protect against invalid number of subroutines (#46150). - - * src/type1/t1load.c (parse_subrs): Check number of - `Subrs' dictionary entries against size of data stream. - -2015-10-07 Kostya Serebryany - - [ftfuzzer] Add support for LLVM's LibFuzzer. - - * src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files. - -2015-10-06 Alexei Podtelezhnikov - - [smooth] Faster alternative line renderer. - - This implementation renders the entire line segment at once without - subdividing it into scanlines. The main speed improvement comes from - reducing the number of divisions to just two per line segment, which - is a bare minimum to calculate cell coverage in a smooth rasterizer. - Notably, the progression from cell to cell does not itself require any - divisions at all. The speed improvement is more noticeable at larger - sizes. - - * src/smooth/ftgrays.c (gray_render_line): New implementation. - -2015-10-06 Werner Lemberg - - [cff] Return correct PS names from pure CFF (#46130). - - * src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for - SFNT. - -2015-10-04 Werner Lemberg - - [base] Replace left shifts with multiplication (#46118). - - * src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it. - -2015-10-04 Werner Lemberg - - * Version 2.6.1 released. - ========================= - - - Tag sources with `VER-2-6-1'. - - * docs/VERSION.DLL: Update documentation and bump version number to - 2.6.1. - - * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, - builds/windows/vc2005/index.html, - builds/windows/vc2008/freetype.vcproj, - builds/windows/vc2008/index.html, - builds/windows/vc2010/freetype.vcxproj, - builds/windows/vc2010/index.html, - builds/windows/visualc/freetype.dsp, - builds/windows/visualc/freetype.vcproj, - builds/windows/visualc/index.html, - builds/windows/visualce/freetype.dsp, - builds/windows/visualce/freetype.vcproj, - builds/windows/visualce/index.html, - builds/wince/vc2005-ce/freetype.vcproj, - builds/wince/vc2005-ce/index.html, - builds/wince/vc2008-ce/freetype.vcproj, - builds/wince/vc2008-ce/index.html: s/2.6/2.6.1/, s/26/261/. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. - - * builds/unix/configure.raw (version_info): Set to 18:1:12. - * CMakeLists.txt (VERSION_PATCH): Set to 1. - - * src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for - dumping functions. - -2015-10-04 Werner Lemberg - - [bzip2, gzip] Avoid access of unitialized memory (#46109). - - * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c - (ft_gzip_file_fill_input): In case of an error, adjust the limit to - avoid copying uninitialized memory. - -2015-10-03 Werner Lemberg - - [bzip2, gzip] Avoid access of unitialized memory (#46109). - - * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c - (ft_gzip_file_fill_output): In case of an error, adjust the limit to - avoid copying uninitialized memory. - -2015-10-01 Alexei Podtelezhnikov - - [smooth] Clean up worker. - - * src/smooth/ftgrays.c (gray_TWorker): Remove never used fields. - -2015-10-01 Werner Lemberg - - [sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078). - - * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of - border conditions (i.e., if the loop exits naturally). - -2015-10-01 Werner Lemberg - - * src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges. - They should be a subset of `af_deva_uniranges'. - -2015-10-01 Werner Lemberg - - [sfnt] Make `tt_cmap4_char_map_linear' faster (#46078). - - * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to - reject too large glyph indices. - -2015-09-30 Alexei Podtelezhnikov - - [smooth] Clean up worker. - - * src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'. - (gray_start_cell, gray_render_line): Update. - -2015-09-30 Werner Lemberg - - [autofit] Replace `no-base' with `non-base'. - - * src/autofit/*: Do it. - -2015-09-30 Werner Lemberg - - [sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078). - - * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better - skip invalid segments. - If searching the next character, provide a more efficient logic to - speed up the code. - -2015-09-30 Werner Lemberg - - [truetype] Adjust number of glyphs for malformed `loca' tables. - - * src/truetype/ttpload.c (tt_face_load_loca): Implement it. - -2015-09-29 Werner Lemberg - - [pshinter] Avoid harmless overflow (#45984). - - * src/pshinter/pshglob.c (psh_blues_set_zones): Fix it. - -2015-09-28 Werner Lemberg - - [autofit] Add support for Lao script. - - Thanks to Danh Hong for guidance with blue zone - characters! - - * src/autofit/afblue.dat: Add blue zone data for Lao. - - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - - * src/autofit/afscript.h: Add Lao standard characters. - - * src/autofit/afranges.c: Add Lao data. - - * src/autofit/afstyles.h: Add Lao data. - -2015-09-27 suzuki toshiya - - [base] Fix a leak by broken sfnt-PS or resource fork (#46028). - - open_face_from_buffer() frees passed buffer if valid font - is not found. But if copying to the buffer is failed, - the allocated buffer should be freed within the caller. - - * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free - the buffer `sfnt_ps' if an error caused before calling - open_face_from_buffer(). - (Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if - an error caused before calling open_face_from_buffer(); - -2015-09-27 suzuki toshiya - - [mac] Fix buffer size calculation for LWFN font. - - * src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong - to prevent confused copy by too large chunk size. - -2015-09-26 Alexei Podtelezhnikov - - * src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro. - -2015-09-26 Werner Lemberg - - [autofit] Minor tracing improvement. - - * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit - blue zones header line if there are no blue zones. - -2015-09-26 Werner Lemberg - - [bzip2, gzip, lzw] Harmonize function signatures with prototype. - - Suggested by Hin-Tak Leung. - - * src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c - (ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it. - -2015-09-26 Hin-Tak Leung - - Add new FT_LOAD_COMPUTE_METRICS load flag. - - * include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro. - * src/truetype/ttgload.c (compute_glyph_metrics): Usage. - -2015-09-26 Werner Lemberg - - * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast. - -2015-09-25 Werner Lemberg - - [type1] Protect against invalid number of glyphs (#46029). - - * src/type1/t1load.c (parse_charstrings): Check number of - `CharStrings' dictionary entries against size of data stream. - -2015-09-23 Werner Lemberg - - [sfnt] Better checks for invalid cmaps (2/2) (#46019). - - While the current code in `FT_Get_Next_Char' correctly rejects - out-of-bounds glyph indices, it can be extremely slow for malformed - cmaps that use 32bit values. This commit tries to improve that. - - * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next, - tt_cmap12_char_map_binary, tt_cmap13_next, - tt_cmap13_char_map_binary): Reject glyph indices larger than or - equal to the number of glyphs. - -2015-09-23 Werner Lemberg - - [base, sfnt] Better checks for invalid cmaps (1/2). - - * src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds - glyph indices. - (FT_Get_First_Char): Updated. - - * src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character - codes greater than 0xFFFF. - - (tt_cmap8_char_index): Avoid integer overflow in computation of - glyph index. - (tt_cmap8_char_next): Avoid integer overflows in computation of - both next character code and glyph index. - - (tt_cmap10_char_index): Fix unsigned integer logic. - (tt_cmap10_char_next): Avoid integer overflow in computation of - next character code. - - (tt_cmap12_next): Avoid integer overflows in computation of both - next character code and glyph index. - (tt_cmap12_char_map_binary): Ditto. - (tt_cmap12_char_next): Simplify. - - (tt_cmap13_char_map_binary): Avoid integer overflow in computation - of next character code. - (tt_cmap13_char_next): Simplify. - -2015-09-21 suzuki toshiya - - [base] Check too long POST and sfnt resource (#45919). - - * src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the - resource fork for Mac OS. Resource forks larger than 16 MB can be - written but can't be handled correctly, at least in Carbon routine. - See https://support.microsoft.com/en-us/kb/130437. - - * src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x' - prefix for `%p' formatter. - - * src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and - total size of the concatenated POST resource before buffer - allocation. - (Mac_Read_sfnt_Resource): Check the declared size of sfnt resource - before buffer allocation. - - * src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the - total resource size before buffer allocation. - -2015-09-19 Werner Lemberg - - [sfnt] Improve handling of invalid SFNT table entries (#45987). - - This patch fixes weaknesses in function `tt_face_load_font_dir'. - - - It incorrectly assumed that valid tables are always at the - beginning. As a consequence, some valid tables after invalid - entries (which are ignored) were never seen. - - - Duplicate table entries (this is, having the same tag) were not - rejected. - - - The number of valid tables was sometimes too large, leading to - access of invalid tables. - - * src/sfnt/ttload.c (check_table_dir): Add argument to return number - of valid tables. - Add another tracing message. - (tt_face_load_font_dir): Only allocate table array for valid - entries as returned by `check_table_dir'. - Reject duplicate tables and adjust number of valid tables - accordingly. - -2015-09-19 Werner Lemberg - - [pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999). - - * src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short, - then take the absolute value. - Also apply FT_ABS to `height'. - -2015-09-17 Werner Lemberg - - [type42] Fix memory leak (#45989). - - * src/type42/t42parse.c (t42_parse_charstrings): Allow only a single - `CharStrings' array. - -2015-09-17 Werner Lemberg - - [psaux] Fix memory leak (#45986). - - * src/psaux/psobjs.c (ps_parser_load_field) : - Free `temp' in case of error. - -2015-09-17 Werner Lemberg - - [psaux] Improve tracing message. - - * src/psaux/psobjs.c (ps_parser_load_field) : - Handle plural correctly. - -2015-09-17 Werner Lemberg - - [pcf] Fix integer overflows (#45985). - - * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv. - -2015-09-17 Werner Lemberg - - [pcf] Use FT_ABS for some property values (#45893). - - * src/pcf/pcfread.c (pcf_load_font): Take absolute values for - AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and - RESOLUTION_Y. In tracing mode, add warnings. - -2015-09-16 Werner Lemberg - - Minor fixes for some clang warnings. - - * src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing - initialization. - - * src/truetype/ttgload.c (TT_Process_Composite_Component): Cast. - -2015-09-15 Werner Lemberg - - [type1, type42] Fix memory leaks (#45966). - - * src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis - names. - (parse_blend_design_map): Allow only a single design map. - (parse_encoding): Handle multiple encoding vectors. - - * src/type42/t42parse.c (t42_parse_encoding): Handle multiple - encoding vectors. - -2015-09-15 Werner Lemberg - - [truetype] Fix integer type (#45965). - - * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it. - -2015-09-15 Werner Lemberg - - * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964). - -2015-09-15 Werner Lemberg - - [type1, type42] Check encoding array size (#45961). - - * src/type1/t1load.c (parse_encoding), src/type42/t42parse.c - (t42_parse_encoding): Do it. - -2015-09-14 Alexei Podtelezhnikov - - * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve. - -2015-09-14 Werner Lemberg - - [type1] Fix another potential buffer overflow (#45955). - - * src/type1/t1parse (T1_Get_Private_Dict): Assure that check for - `eexec' doesn't exceed `limit'. - -2015-09-13 Werner Lemberg - - Replace `mkinstalldirs' with AC_PROG_MKDIR_P. - - * builds/unix/mkinstalldirs: Removed, no longer needed. - - * builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'. - Update pwd call for `$INSTALL'. - - * builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'. - - * autogen.sh: Updated. - -2015-09-13 Werner Lemberg - - [winfonts] Check alignment shift count for resource data (#45938). - - * src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it. - -2015-09-13 Werner Lemberg - - [type1] Fix potential buffer overflow (#45923). - - * src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't - point to end of file buffer. - -2015-09-13 Werner Lemberg - - [gzip] Fix access of small compressed files (#45937). - - * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak. - - (ft_gzip_get_uncompressed_file): Correct byte order while reading - unsigned long value. Without this change, the whole optimization of - accessing small files in `FT_Stream_OpenGzip' is never executed! As - a consequence, access to PCF files in general (which are normally - small files) should be much improved now as originally intended. - -2015-09-11 Werner Lemberg - - [psaux] Fix potential buffer overflow (#45922). - - * src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is - enclosed in balanced expressions, ensure that the cursor position - doesn't get larger than the current limit. - -2015-09-11 Werner Lemberg - - [base] Avoid crash while tracing `load_mac_face'. - - Reported in Savannah bug #45919. - - * src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while - tracing. - -2015-09-11 Werner Lemberg - - [type42] Fix endless loop (#45920). - - * src/type42/t42parse.c (t42_parse_encoding): Synchronize with - type1's `parse_encoding'. - -2015-09-10 Werner Lemberg - - [docmaker] Allow `-' in bold and italic markup. - - * src/tools/docmaker/sources.py (re_italic, re_bold): Adjust - accordingly. - -2015-09-09 Alexei Podtelezhnikov - - * src/base/ftcalc.c (FT_RoundFix): Improve. - -2015-09-09 Wojciech Mamrak - - * src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize. - - This commit makes the functions behave as expected, this is, - rounding towards plus or minus infinity. - -2015-09-07 Alexei Podtelezhnikov - - * src/smooth/ftgrays.c (gray_render_line): Simplify clipping. - -2015-09-04 Alexei Podtelezhnikov - - [raster,smooth] Microoptimizations. - - * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table, - Beziier_Up, ): Use do-while loops. - - * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line, - gray_convert_glyph): Ditto. - -2015-09-04 Werner Lemberg - - [autofit] Redesign code ranges (2/2). - - This commit adds two fallback scripts (`latb', `latp') and - implements support for the no-base character ranges introduced in - the previous commit. - - * src/autofit/aftypes.h (AF_ScriptClassRec): Add - `script_uni_nobase_ranges' field. - (AF_DEFINE_SCRIPT_CLASS): Updated. - - * src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and - `latp' fallback scripts. - - * src/autofit/afblue.dat: Add blue zones for Latin subscript and - superscript fallback scripts. - - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - - * src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base - characters. - (AF_STYLE_MASK): Updated. - - * src/autofit/afglobal.c (SCRIPT): Updated. - (af_face_globals_compute_style_coverage): Handle new style flag. - - * src/autofit/aflatin.c (af_latin_hints_apply): Handle new style - flag. - - * src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges. - -2015-09-04 Werner Lemberg - - [autofit] Redesign code ranges (1/2). - - This patch introduces auxiliary code ranges that identify no-base - characters; they refer to glyphs of a script that should be hinted - without alignments to blue zones (mostly diacritics). - - It also splits off ranges for fallback scripts that handle subscript - and superscript characters not covered by OpenType features. For - example, this greatly helps improve the hinting of various phonetic - alphabets, which contain a large amount characters that look like - superscript glyphs. - - Finally, code ranges are updated to Unicode 8.0, and enclosed - characters are removed in general since they normally look better if - they stay unhinted. - - * src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode - 8.0. - Split off superscript-like and subscript-like glyphs into... - - (af_latb_uniranges, af_latp_uniranges): ... these two new arrays. - - (af_xxxx_nobase_uniranges): New arrays that hold no-base characters - of the corresponding character ranges. - -2015-09-03 Werner Lemberg - - [autofit] Pass glyph index to hinting function. - - No functionality change yet. - - * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass - glyph index. - - * src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply), - src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c - (af_indic_hints_apply), src/autofit/aflatin.c - (af_latin_hints_apply), src/autofit/aflatin2.c - (af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g): - Updated. - -2015-08-30 Werner Lemberg - - [autofit] Code clean-up. - - * src/autofit/afglobal.h (AF_STYLE_MASK): New macro. - (AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition. - - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): - Updated. - -2015-08-30 Werner Lemberg - - [autofit] Make glyph style array use 16bit values. - - * include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use - `FT_UShort' for `map' field. - - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage, - af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h - (af_get_coverage): Use FT_UShort for `glyph_styles' array. - - * src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to - 16 bits. - (AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field. - -2015-08-26 Werner Lemberg - - * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828). - -2015-08-25 Werner Lemberg - - [base] Improve kerning tracing and documentation. - - * src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if - scaled-down kerning values differ. - -2015-08-18 Werner Lemberg - - [raster] Remove last remnants of `raster5' driver. - - * src/raster/ftrend1.h (ft_raster5_renderer_class): Removed. - - * src/raster/rastpic.c, src/raster/rastpic.h - (ft_raster5_renderer_class_pic_init, - ft_raster5_renderer_class_pic_free): Removed. - -2015-08-17 Alexei Podtelezhnikov - - [base] Improve emboldener (#45596). - - * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement - of zero-lenght segments. - -2015-08-16 Alexei Podtelezhnikov - - [base] Reoptimize arithmetic. - - * src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove - special cases that slow down the general use. - -2015-08-15 pazer - - Fix C++ compilation (#45762). - - * src/base/ftstroke.c (ft_outline_glyph_class): Use - FT_CALLBACK_TABLE. - -2015-08-14 Alexei Podtelezhnikov - - [truetype] Clean up. - - * src/truetype/ttgload.c (TT_Process_Composite_Component): Use - `FT_Outline_Transform' and `FT_Outline_Translate'. - (translate_array): Dropped. - -2015-08-14 Andreas Enge - - * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261). - -2015-08-13 Werner Lemberg - - [truetype] Introduce named instance access to GX fonts. - - For functions querying a face, bits 16-30 of the face index can hold - the named instance index if we have a GX font. The indices start - with value 1; value 0 indicates font access without GX variation - data. - - * include/freetype/freetype.h (FT_FaceRec): Update documentation. - * include/freetype/internal/sfnt.h: Ditto. - - * src/sfnt/sfobjs.c (sfnt_init_face) - [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and - do argument checks. - (sfnt_load_face): Updated. - - * src/truetype/ttobjs.c (tt_face_init) - [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting - the style name. - - * src/base/ftobjs.c (open_face_from_buffer, - open_face_PS_from_sfnt_stream): Updated. - * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated. - * src/cff/cffload.c (cff_font_load): Updated. - - * src/cff/cffobjs.c (cff_face_init): Make function exit early for - pure CFF fonts if `font_index < 0'. - Updated. - - * src/cid/cidobjs.c (cid_face_init): Updated. - * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated. - * src/pfr/pfrobjs.c (pfr_face_init): Updated. - * src/type1/t1objs.c (T1_Face_Init): Updated. - * src/type42/t42objs.c (T42_Face_Init): Updated. - * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init): - Updated. - - * docs/CHANGES: Updated. - -2015-08-12 Alexei Podtelezhnikov - - [type1,cff,cid] Streamline font matrix application. - - * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only - if font matrix is not trivial. - * src/cff/cffgload.c (cff_slot_load): Ditto. - * sff/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the - entire outline. - -2015-08-11 Werner Lemberg - - [builds/unix] Minor. - - * builds/unix/configure.raw: - s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with - similarly named uppercase variables. - -2015-08-10 Alexei Podtelezhnikov - - [type1,cid,type42] Minor improvements. - - * src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only - when necessary. Refresh comments. - * src/cid/cidload.c (cid_parse_font_matrix): Ditto. - * src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments. - -2015-08-08 Werner Lemberg - - [type42] Fix glyph access. - - This is a severe bug: We've missed one level of indirection, as - described in the Type 42 specification. As a result, ftview - sometimes showed incorrect glyphs for given glyph names, and even - displayed `error 0x0006' (invalid argument!) in case the number of - glyph indices differed between the Type 42 font and the embedded - TTF. - - Apparently, noone ever noticed it; this shows how much Type 42 fonts - are in use... - - * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index - to embedded TTF's glyph index. - -2015-08-08 Werner Lemberg - - [type42] Minor clean-up. - - * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused - variable. - -2015-08-06 Alexei Podtelezhnikov - - [type42] Parse FontMatrix according to specifications. - - * src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix - does not need scaling by 1000. Units_per_EM are taken from the - embedded TrueType. - -2015-08-06 Werner Lemberg - - [autofit] Improve Arabic hinting. - - Problem reported by Titus Nemeth (by using - ttfautohint). - - * src/autofit/afblue.dat: Add neutral blue zone for the tatweel - character. - - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - -2015-08-05 Alexei Podtelezhnikov - - [truetype] Clean up types. - - * src/truetype/ttobjs.c (TT_Size): Move declaration from here. - * include/freetype/internal/tttypes.h (TT_Size): ... to here. - (TT_LoaderRec): Switch to appropriate types for `face' and `size'. - * src/truetype/ttgload.c: Remove corresponding type casts. - * src/truetype/ttsubpix.c: Ditto. - -2015-08-05 Werner Lemberg - - [autofit] Improve recognition of flat vs. rounded segments. - - Lower the flatness threshold from upem/8 to upem/14, making the - auto-hinter accept shorter elements. - - Synchronize flat/round stem selection algorithm with blue zone code. - - * src/autofit/aflatin.c (FLAT_THRESHOLD): New macro. - (af_latin_metrics_init_blues): Use it. - (af_latin_hints_compute_segments): Collect information on maximum - and minimum coordinates of `on' points; use this to add a constraint - for the flat/round decision similar to - `af_latin_metrics_init_blues'. - -2015-08-04 Werner Lemberg - - Another left-shift bug (#45681). - - * src/base/ftobjs.c (IsMacBinary): Only accept positive values for - `dlen'. - -2015-08-03 Alexei Podtelezhnikov - - [base] Fix `ft_corner_orientation'. - - Remove casting from `FT_Long' to `FT_Int' that might change the sign - of the return value and make it faster too. - - * src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay - with 32-bit arithmetic when safe. Use plain math on 64-bit systems. - * src/pshinter/pshalgo.c: Remove old unused code. - -2015-08-03 Werner Lemberg - - * src/truetype/ttgload.c (load_truetype_glyph) - [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs - having a depth greater than 1. - -2015-08-03 Werner Lemberg - - Fix typo in clang bug from 2015-07-31 (#45678). - - * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality. - -2015-08-02 Werner Lemberg - - * CMakeLists.txt: Improve shared library support. - - Based on a patch from John Cary . - -2015-08-02 Werner Lemberg - - * builds/unix/freetype-config.in (enable_shared): Remove. Unused. - -2015-08-02 Werner Lemberg - - Fix more invalid left-shifts. - - * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication, - not left-shift. - - * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar, - tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication, - not left-shift. - -2015-07-31 Werner Lemberg - - Fix some bugs found by clang's `-fsanitize=undefined' (#45661). - - * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept - positive values from header. - Check overflow. - - * src/base/ftoutln.c (SCALED): Correctly handle left-shift of - negative values. - - * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified, - _bdf_clear_glyph_modified): Use unsigned long constant. - - * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't - left-shift values that can be negative. - - * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't - left-shift values that can be negative. - - * src/raster/ftraster.c (SCALED): Correctly handle left-shift of - negative values. - - * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift - values that can be negative. - - * src/truetype/ttgload.c (TT_Load_Composite_Glyph, - compute_glyph_metrics, load_sbit_image): Don't left-shift values - that can be negative. - -2015-07-31 Werner Lemberg - - Define FT_LONG_MAX. - - * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro. - * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it. - -2015-07-28 Alexei Podtelezhnikov - - * src/base/ftcalc.c (FT_Vector_NormLen): Clarify. - -2015-07-27 Alexei Podtelezhnikov - - * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions. - -2015-07-26 Matthias Clasen - - [cff] Don't use `hmtx' table for LSB (#45520). - - * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance - width only. Bug introduced 2015-04-10. - -2015-07-09 Werner Lemberg - - Better support of user-supplied C++ namespaces. - - See - - http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html - - for a rationale. - - * src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h, - src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h, - src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h - (FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose - header files that contain FT_{BEGIN,END}_HEADER macros by - themselves. - - * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include - FT_CONFIG_STANDARD_LIBRARY_H earlier. - - * src/truetype/ttpic.h: Include FT_INTERNL_PIC_H. - -2015-07-07 Werner Lemberg - - [sfnt] Make `tt_face_get_name' member of the SFNT interface. - - * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New - prototype. - (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'. - - * src/sfnt/sfdriver.c (sfnt_interface): Updated. - - * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'. - * src/sfnt/sfobjs.h: Add prototype for it. - -2015-06-30 Werner Lemberg - - Fix some clang compiler warnings. - - * src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c - (cf2_interpT2CharString), src/truetype/ttgload.c - (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas), - src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues. - -2015-06-29 Alexei Podtelezhnikov - - [truetype] Speed up bytecode interpreter. - - * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'. - -2015-06-29 Alexei Podtelezhnikov - - [base] Speed up emboldening. - - * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use - `FT_Vector_NormLen'. - -2015-06-29 Alexei Podtelezhnikov - - [base] Implement fast vector normalization. - - The function uses Newton's iterations instead of dividing vector - components by its length, which needs a square root. This is, - literally, a bit less accurate but a lot faster. - - * src/base/ftcalc.c (FT_Vector_NormLen): New function. - -2015-06-28 Werner Lemberg - - * CMakeLists.txt: Always create `ftconfig.h'. - - For non-UNIX builds, the file stays unmodified. However, it's - better to have the main configuration files at the same place - regardless of the OS. - -2015-06-28 Werner Lemberg - - * CMakeLists.txt: Improve MSVC support (#43737). - -2015-06-28 Werner Lemberg - - [cmake] Check for libraries and create `ftoption.h'. - - * builds/FindHarfBuzz.cmake: New file, taken from - - https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake - - * CMakeLists.Txt: Add path to local cmake modules. - Find dependencies for zlib, bzip2, libpng, and harfbuzz. - Create `ftoption.h' file. - Set up include and linker stuff for libraries. - -2015-06-28 Werner Lemberg - - * CMakeLists.txt: Fix creation of `ftconfig.h'. - Check for UNIX header files using `check_include_file'. - Set up correct header include directories. - -2015-06-28 Werner Lemberg - - * CMakeLists.txt: Disallow in-source builds. - -2015-06-27 Werner Lemberg - - * src/tools/docmaker/utils.py (check_output): Add missing `\n'. - -2015-06-26 Werner Lemberg - - * CMakeLists.txt: Select platform-dependent `ftdebug.c'. - -2015-06-25 Werner Lemberg - - * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'. - Additionally, do this for UNIX only. - -2015-06-25 Werner Lemberg - - * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'. - -2015-06-25 Werner Lemberg - - Another adjustment to header locations. - - This change is a result of a discussion thread on freetype-devel - - http://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html - - Re-introduce the `freetype2' subdirectory for all FreeType header - files after installation, and rename the `freetype2' subdirectory in - the git repository to `freetype'. - - * include/freetype2: Renamed to... - * include/freetype: This. - - * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS, - PRIVATE_HEADERS): Updated. - Update creation of `ftconfig.h'. - Install generated `ftconfig.h'. - - * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated. - - * builds/amiga/include/config/ftconfig.h, builds/freetype.mk - (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work), - builds/unix/freetype2.in: Updated. - - * builds/unix/freetype-config.in: Updated. - * builds/unix/configure.raw: Don't check for `rmdir'. - * builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable - according to the autoconf info manual. - * builds/unix/install.mk (install, uninstall, - distclean_project_unix): Update and simplify. - - * builds/wince/*, builds/windows/*: Updated. - - * devel/ft2build.h, include/ft2build.h: Updated. - - * include/freetype2/config/ftheader.h, - include/freetype2/internal/ftserv.h, - include/freetype2/internal/internal.h: Update all header file - macros. - - * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated. - - * docs/*: Updated. - -2015-06-24 Alexei Podtelezhnikov - - * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp. - -2015-06-24 Alexei Podtelezhnikov - - * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing. - -2015-06-23 Werner Lemberg - - s/TYPEOF/FT_TYPEOF/ (#45376). - - * builds/unix/ftconfig.in, builds/vms/ftconfig.in, - include/freetype2/config/ftconfig.h, - include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it. - -2015-06-22 Werner Lemberg - - Fix Savannah bug #45097. - - We no longer `pollute' the namespace of possible header file names; - instead we move `ft2build.h' up by one level so that it gets - installed in the default include directory (e.g., - /usr/local/include). After this commit, only `ft2build.h' stays in - the compiler's include path. - - No visible changes for the user who follows the standard FreeType - header inclusion rules. - - * include/*: Move to ... - * include/freetype2/*: This directory, except `ft2build.h'. - - * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS, - PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated. - - * builds/amiga/include/config/ftconfig.h, builds/freetype.mk - (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work), - builds/unix/install.mk (install, uninstall), - builds/unix/freetype2.in: Updated. - - * builds/unix/freetype-config.in: Updated. - Emit -I directory only if it is not `/usr/include'. - - * builds/wince/*, builds/windows/*: Updated. - - * devel/ft2build.h, include/ft2build.h: Updated. - - * include/freetype2/config/ftheader.h, - include/freetype2/internal/ftserv.h, - include/freetype2/internal/internal.h: Update all header file - macros. - - * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated. - -2015-06-21 Werner Lemberg - - Make Jam support work again. - - This is just very basic stuff and just a little bit tested on - GNU/Linux only. I won't delve into this since I'm not a Jam user. - - * Jamfile: Call `HDRMACRO' for `ftserv.h' also. - (DEFINES): Replace with... - (CCFLAGS): ... this. - - * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is - already handled in the top-level Jamfile. - - * src/autofit/Jamfile (DEFINES): Replace with... - (CCFLAGS): ... this. - (_sources): Add missing files. - - * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no - longer contains macro header definitions. - - * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile, - src/truetype/Jamfile (_sources): Add missing files. - -2015-06-16 Werner Lemberg - - Fix Savannah bug #45326. - - * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate - definitions. - -2015-06-07 Werner Lemberg - - * Version 2.6 released. - ======================= - - - Tag sources with `VER-2-6'. - - * docs/VERSION.DLL: Update documentation and bump version number to - 2.6. - - * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, - builds/windows/vc2005/index.html, - builds/windows/vc2008/freetype.vcproj, - builds/windows/vc2008/index.html, - builds/windows/vc2010/freetype.vcxproj, - builds/windows/vc2010/index.html, - builds/windows/visualc/freetype.dsp, - builds/windows/visualc/freetype.vcproj, - builds/windows/visualc/index.html, - builds/windows/visualce/freetype.dsp, - builds/windows/visualce/freetype.vcproj, - builds/windows/visualce/index.html, - builds/wince/vc2005-ce/freetype.vcproj, - builds/wince/vc2005-ce/index.html, - builds/wince/vc2008-ce/freetype.vcproj, - builds/wince/vc2008-ce/index.html: s/2.5.5/2.6/, s/255/26/. - - * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6. - (FREETYPE_PATCH): Set to 0. - - * builds/unix/configure.raw (version_info): Set to 18:0:12. - * CMakeLists.txt (VERSION_MINOR): Set to 6. - (VERSION_PATCH): Set to 0. - - * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add - declarations for dumping functions. - - * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler. - - * builds/toplevel.mk: Use `freetype.mk's code to compute the version - string. - Don't include a zero patch level in version string. - * builds/freetype.mk: Remove code for computing the version string. - -2015-06-06 Ashish Azad - - Fix Savannah bug #45260. - - * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo. - -2015-06-03 Werner Lemberg - - [truetype] Fix memory leak. - - Problem reported by Grissiom ; in - - http://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html - - there is an example code to trigger the bug. - - * src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size' - data before allocating again. Bug most probably introduced four - years ago in version 2.4.3. - -2015-06-02 Werner Lemberg - - [raster] Add more tracing. - - * src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define. - (Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span, - Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls. - -2015-06-01 Werner Lemberg - - [truetype] While tracing opcodes, show code position and stack. - - * src/truetype/ttinterp.c: Change all existing TRACE7 calls to - TRACE6. - (opcode_name): Add string lengths. - (TT_RunIns): Implement display of code position and stack. - -2015-05-31 Werner Lemberg - - [truetype] In GX, make private point numbers work correctly. - - This is completely missing in Apple's documentation: If a `gvar' - tuple uses private point numbers (this is, deltas are specified for - some points only), the uncovered points must be interpolated for - this tuple similar to the IUP bytecode instruction. Examples that - need this functionality are glyphs `Oslash' and `Q' in Skia.ttf. - - * src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate, - tt_handle_deltas): New functions. - (TT_Vary_Get_Glyph_Deltas): Renamed to... - (TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the - points and does no longer return an array of deltas. - Add tracing information. - Call `tt_handle_deltas' to interpolate missing deltas. - Also fix a minor memory leak in case of error. - - * src/truetype/ttgxvar.h: Updated. - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph, - load_truetype_glyph): Updated. - -2015-05-31 Werner Lemberg - - [truetype] In GX, make intermediate tuplets work at extrema. - - * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition. - -2015-05-31 Werner Lemberg - - [truetype] Add tracing information to GX code. - - * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar, - ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend, - TT_Set_Var_Design, tt_face_vary_cvt): Do it. - -2015-05-28 Werner Lemberg - - * src/tools/apinames.c (names_dump): Fix invalid reference. - - Problem reported by Guzman Mosqueda, Jose R - . - -2015-05-24 Werner Lemberg - - [truetype] Fix commit from 2015-05-22. - - * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code - with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'. - - Problem reported by Nikolaus Waxweiler . - -2015-05-23 Werner Lemberg - - [truetype] Fix return values of GETINFO bytecode instruction. - - * src/truetype/ttinterp.h (TT_ExecContextRec): New fields - `vertical_lcd' and `gray_cleartype'. - - * src/truetype/ttgload.c (tt_loader_init): Initialize new fields. - Change `symmetrical smoothing' to TRUE, since FreeType produces - exactly this. - - * src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit - values for symmetrical smoothing, namely 11/18. - Handle bits for vertical LCD subpixels (8/15) and Gray ClearType - (12/19). - -2015-05-23 Werner Lemberg - - [truetype] Minor. - - * src/truetype/ttinterp.h (TT_ExecContext): - s/subpixel/subpixel_hinting. - - * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated. - -2015-05-22 Werner Lemberg - - [truetype] Support selector index 3 of the INSTCTRL instruction. - - This flag activates `native ClearType hinting', disabling backwards - compatibility mode as described in Greg Hitchcocks whitepaper. In - other words, it enables unrestricted functionality of all TrueType - instructions in ClearType. - - * src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks' - unconditionally. - (tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of - `GS.instruct_control' is active. - - * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3. - (Ins_GETINFO): Updated. - - * docs/CHANGES: Document it. - -2015-05-20 Werner Lemberg - - [truetype] Minor. - - * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod' - argument. - -2015-05-17 Werner Lemberg - - [truetype] Fix loading of composite glyphs. - - * src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the - ARGS_ARE_XY_VALUES flag is not set, handle argument values as - unsigned. I trust `ttx' (which has exactly such code) that it does - the right thing here... - - The reason that noone has ever noticed this bug is probably the fact - that point-aligned subglyphs are rare, as are subglyphs with a - number of points in the range [128;255], which is quite large (or - even in the range [32768;65535], which is extremely unlikely). - -2015-05-12 Chris Liddell - - [cff] Make the `*curveto' operators more tolerant. - - * src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes - `vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate, - pulling values off the stack until the stack is exhausted. - Implicitly the stack must be a multiple (or for subtly different - behaviour) a multiple plus a specific number of extra values deep. - If that's not the case, enforce it (as the old code did). - -2015-05-12 Chris Liddell - - [cff] fix incremental interface with new cff code. - - * src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental - interface to retrieve glyph data for a SEAC, it be left to the - incremental interface callback to apply the encoding to raw - character index (as it was in the previous code). - -2015-04-29 Alexei Podtelezhnikov - - [autofit] Speed up IUP. - - * src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to - the same position from true interpolation, use `scale' to reduce - divisions. - -2015-04-28 Werner Lemberg - - [cff] Use `name' table for PS name if we have a SFNT-CFF. - - This follows the OpenType 1.7 specification. See - - http://tug.org/pipermail/tex-live/2015-April/036634.html - - for a discussion. - - * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we - have an SFNT. - -2015-04-27 Alexei Podtelezhnikov - - [truetype] Speed up IUP. - - * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial - snapping to the same position from true interpolation. - -2015-04-21 Werner Lemberg - - [autofit] By default, enable warping code but switch off warping. - - Suggested by Behdad. - - * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER. - - * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping' - with `false'. - -2015-04-21 Werner Lemberg - - * docs/CHANGES: Updated. - -2015-04-21 Werner Lemberg - - [autofit] Introduce `warping' property. - - This code replaces the debugging hook from the previous commit with - a better, more generic solution. - - * include/ftautoh.h: Document it. - - * src/autofit/afmodule.h (AF_ModuleRec) - [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field. - - * src/autofit/afmodule.c (_af_debug_disable_warper): Remove. - (af_property_set, af_property_get, af_autofitter_init) - [AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option. - - * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no - longer existing `_af_debug_disable_warper'. - - * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c - (af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init) - [AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the - scaler flags if warping is off. - - * src/autofit/aftypes.h: Updated. - -2015-04-16 Werner Lemberg - - [autofit] Add debugging hook to disable warper. - - * src/autofit/afmodule.c (_af_debug_disable_warper) - [FT_DEBUG_AUTOFIT]: New global variable. - - * src/autofit/aftypes.h: Updated. - (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet). - - * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro. - - * src/autofi/aflatin.c (af_latin_hints_apply) - [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use - of warper. - - * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply) - [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'. - - * src/autofit/aflatin2.c (af_latin2_hints_apply) - [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'. - -2015-04-10 Werner Lemberg - - [cff] Update advance width handling to OpenType 1.7. - - Problem reported by Behdad. - - * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case - separately. - - * src/cff/cffgload.c (cff_slot_load): Use advance width and side - bearing values from `hmtx' table if present. - -2015-04-03 Alexei Podtelezhnikov - - * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop. - -2015-04-02 Alexei Podtelezhnikov - - * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic. - -2015-04-01 Alexei Podtelezhnikov - - [autofit] Finish the thought. - - * src/autofit/afhints.c (af_direction_compute): make sure the long arm - is never negative so that its `FT_ABS' is not necessary. - -2015-04-01 Werner Lemberg - - [autofit] Call dumper functions for tracing. - - * src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code. - * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor - improvement. - * src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it. - -2015-04-01 Werner Lemberg - - [autofit] Make debugging stuff work again. - - The interface to ftgrid was broken in the series of commits starting - with - - [autofit] Allocate AF_Loader on the stack instead of AF_Module. - - from 2015-01-14. - - * src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]: - Use a global AF_GlyphHintsRec object for debugging. - (af_autofitter_done, af_autofitter_load_glyph): Updated. - - * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated. - -2015-04-01 Werner Lemberg - - * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko. - -2015-03-29 Werner Lemberg - - [cff] Fix Savannah bug #44629. - - * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h - (CFF_MAX_SUBRS_CALLS): Set to 16. - -2015-03-29 Werner Lemberg - - [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'. - - This commit allows `num_coords' to be larger or smaller than the - number of available axes while selecting a design instance, either - ignoring excess data or using defaults if data is missing. - - * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design): - Implement it. - - * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design, - T1_Set_Var_Design): Ditto. - -2015-03-29 Werner Lemberg - - [type1] Minor. - - * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use - FT_THROW. - (T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW. - -2015-03-27 Werner Lemberg - - [cff] Trace charstring nesting levels. - - * src/cff/cf2intrp.c (cf2_interpT2CharString) : Implement it. - - * src/cff/cffgload.c (cff_decoder_parse_charstrings) - : Ditto. - -2015-03-21 Alexei Podtelezhnikov - - [base] Optimize `FT_Angle_Diff'. - - Under normal circumstances we are usually close to the desired range - of angle values, so that the remainder is not really necessary. - - * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder. - - * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro. - -2015-03-21 Werner Lemberg - - [truetype] Improve `gvar' handling. - - * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle - single-element runs. Cf. glyph `Q' in Skia.ttf with weights larger - than the default. - -2015-03-20 Alexei Podtelezhnikov - - * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring. - -2015-03-17 Alexei Podtelezhnikov - - Fix Savannah bug #44412 (part 2). - - * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'. - -2015-03-11 Werner Lemberg - - [autofit] Add support for Arabic script. - - Thanks to Titus Nemeth for guidance! - - * src/autofit/afblue.dat: Add blue zone data for Arabic. - - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - - * src/autofit/afscript.h: Add Arabic standard characters. - - * src/autofit/afranges.c: Add Arabic data. - - * src/autofit/afstyles.h: Add Arabic data. - - * docs/CHANGES: Document it. - -2015-03-11 Werner Lemberg - - Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols. - - * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed - to... - (FT_SERVICE_FONT_FORMAT_H): This. - - * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed - to ... - (FT_FONT_FORMAT_*): This. - - src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c, - src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c, - src/truetype/ttdriver.c, src/type1/t1driver.c, - src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated. - -2015-03-11 Werner Lemberg - - [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'. - - * include/config/ftheader.h: Implement it. - * src/base/ftfntfmt.c, docs/CHANGES: Updated. - -2015-03-11 Werner Lemberg - - [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'. - - * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it. - - * docs/CHANGES: Updated. - -2015-03-11 Werner Lemberg - - Fix automatic copyright updating. - - * src/tools/update-copyright: Make scanning of `no-copyright' - actually work. - - * src/tools/no-copyright: Don't include README in general. - -2015-03-11 Werner Lemberg - - Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'. - - CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4, - builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt, - builds/mac/FreeType.m68k_far.make.txt, - builds/mac/FreeType.ppc_carbon.make.txt, - builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf, - builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj, - builds/wince/vc2008-ce/freetype.vcproj, - builds/windows/vc2005/freetype.vcproj, - builds/windows/vc2008/freetype.vcproj, - builds/windows/vc2010/freetype.vcxproj, - builds/windows/vc2010/freetype.vcxproj.filters, - builds/windows/visualc/freetype.dsp, - builds/windows/visualc/freetype.vcproj, - builds/windows/visualce/freetype.dsp, - builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY, - include/config/ftheader.h, include/ftfntfmt.h, modules.cfg, - src/base/ftfntfmt.c, vms_make.com: Updated. - -2015-03-10 Alexei Podtelezhnikov - - Fix Savannah bug #44412 (part 1). - - * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns. - -2015-03-10 Werner Lemberg - - [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'. - - * include/ftbitmap.h, src/base/ftbitmap.c: Implement it. - Update all callers. - - * docs/CHANGES: Updated. - -2015-03-06 Werner Lemberg - - * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning. - - Found by Alexei. - -2015-03-05 Alexei Podtelezhnikov - - * src/base/ftstroke.c: Simplify. - -2015-03-04 Werner Lemberg - - [truetype] Some fixes and code refactoring in `ttgxvar.c'. - - * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value - of `point_cnt' if two bytes are read. - Use a more vertical coding style. - (ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter. - Use a more vertical coding style. - -2015-03-03 Werner Lemberg - - [autofit] Fix Savannah bug #44241. - - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs - with less than 3 points. - -2015-03-02 Werner Lemberg - - Simplify `TYPEOF' macro. - - No need for two arguments. - - * include/config/ftconfig.h, builds/unix/ftconfig.in, - builds/vms/ftconfig.h (TYPEOF): Updated. - - * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR), - src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated. - -2015-03-01 Werner Lemberg - - Various compiler warning fixes for `make multi'. - - * src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges), - src/autofit/aflatin.c (af_latin_hint_compute_blue_edges, - af_latin_hint_edges), src/autofit/aflatin2.c - (af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare - as `static'. - - * src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH): - Removed. Unused. - * src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H. - * src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed. Unused. - - * src/cff/cf2intrp.c: Include `cf2intrp.h'. - * src/cff/cffdrivr.c (PAIR_TAG): Removed. Unused. - - * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed. Unused. - - * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'. - - * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX): - Removed. Unused. - - * src/raster/ftraster.c (Render_Glyph): Declare as `static'. - - * src/sfnt/ttpost.c (load_format_20): Fix signedness warning. - - * src/truetype/ttdriver.c (PAIR_TAG): Removed. Unused. - * src/truetype/ttsubpix.c (is_member_of_family_class, - is_member_of_style_class): Declare as `static'. - - * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare - as `static'. - * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as - `static'. - (T1_FIELD_COUNT): Removed. Unused. - * src/type1/t1parse.h (T1_Done_Table): Removed. Unused. - - * src/type42/t42parse.c (T1_Done_Table): Removed. Unused. - -2015-02-25 Werner Lemberg - - [psaux] Signedness fixes. - - * include/internal/psaux.h, src/psaux/afmparse.c, - src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c, - src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply. - -2015-02-25 Werner Lemberg - - [otvalid] Signedness fixes. - - * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c, - src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c: - Apply. - -2015-02-25 Werner Lemberg - - * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix. - -2015-02-25 Werner Lemberg - - [lzw] Signedness fixes. - - * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply. - -2015-02-25 Werner Lemberg - - [gxvalid] Signedness fixes. - - * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c, - src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c, - src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c, - src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c, - src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c, - src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c, - src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply. - -2015-02-25 Werner Lemberg - - [cache] Signedness fixes. - - * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c, - src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply. - -2015-02-25 Werner Lemberg - - Change dimension fields in `FTC_ImageTypeRec' to unsigned type. - - This doesn't break ABI. - - * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for - `width' and `height'. - - * docs/CHANGES: Document it. - -2015-02-25 Werner Lemberg - - [cache] Don't use `labs'. - - This is the only place in FreeType where this function was used. - - * include/config/ftstdlib.h (ft_labs): Remove. - - * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with - `FT_ABS'. - -2015-02-23 Werner Lemberg - - [cache] Replace `FT_PtrDist' with `FT_Offset'. - - * src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t') - is a better choice for `hash' to hold a pointer than `FT_PtrDist' - (a.k.a. `ptrdiff_t'), especially since the latter is signed, - causing zillions of signedness warnings. [Note that `hash' was of - type `FT_UInt32' before the change to `FT_PtrDist'.] - Update all users. - - * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c, - src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated. - -2015-02-23 Werner Lemberg - - [smooth, raster] Re-enable standalone compilation. - - * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX) - [_STANDALONE_]: Define macros. - - * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS, - FT_HYPOT) [_STANDALONE_]: Define macros. - -2015-02-22 Werner Lemberg - - [smooth] Signedness fixes. - - * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply. - -2015-02-22 Werner Lemberg - - * src/raster/ftraster.c: Use the file's typedefs everywhere. - -2015-02-22 Werner Lemberg - - * src/sfnt/ttpost.c (load_format_20): Fix error tracing message. - - Bug introduced 6 commits earlier. - -2015-02-22 Werner Lemberg - - [pshinter] Fix thinko. - - * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly - check `count'. - Bug introduced two commits earlier. - -2015-02-22 Werner Lemberg - - [raster] Signedness fixes. - - * src/raster/ftraster.c, src/raster/ftrend1.c: Apply. - -2015-02-22 Werner Lemberg - - [pshinter] Signedness fixes. - - * src/pshinter/pshalgo.c, src/pshinter/pshglob.c, - src/pshinter/pshrec.c: Apply. - -2015-02-22 Werner Lemberg - - [pshinter] Use macros for (unsigned) flags, not enumerations. - - * src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros. - Updated. - * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros. - -2015-02-22 Werner Lemberg - - * src/pshinter/pshrec.c: Simplify. - (ps_hints_open, ps_hints_stem): Remove switch statement. - -2015-02-22 Werner Lemberg - - [sfnt] Signedness fixes. - - * src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c, - src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c, - src/sfnt/ttsbit.c: Apply. - * src/sfnt/sfdriver.c: Apply. - (sfnt_get_ps_name): Simplify. - -2015-02-22 Werner Lemberg - - [bdf] Signedness fixes. - - * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h, - src/bdf/bdflib.c: Apply. - -2015-02-22 Werner Lemberg - - * src/bdf/bdflib.c (_bdf_atous): New function. - (_bdf_parse_glyphs, _bdf_parse_start): Use it. - -2015-02-22 Werner Lemberg - - [pcf] Signedness fixes. - - * src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply. - * src/pcf/pcfread.c: Apply. - (pcf_get_encodings): Ignore invalid negative encoding offsets. - -2015-02-21 Werner Lemberg - - * src/winfonts/winfnt.c: Signedness fixes. - -2015-02-21 Werner Lemberg - - [type42] Signedness fixes. - - * src/type42/t42parse.c, src/type42/t42parse.h, - src/type42/t42types.h: Apply. - -2015-02-21 Werner Lemberg - - [pfr] Signedness fixes. - - * src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c, - src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c, - src/pfr/pfrtypes.h: Apply. - -2015-02-21 Werner Lemberg - - [cff] Minor signedness fixes related to last commit. - - * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply. - -2015-02-20 Werner Lemberg - - [cff] Thinkos in bias handling. - - Only the final result is always positive. - - Bug introduced three commits earlier. - - * src/cff/cffgload.c, src/cff/cffgload.h: Apply. - -2015-02-20 Werner Lemberg - - [cid] Fix signedness issues and emit some better error codes. - - * src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c, - src/cid/cidparse.h: Apply. - * src/cid/cidload.c: Apply. - (parse_fd_array): Reject negative values for number of dictionaries. - * src/cid/cidparse.c: Apply. - (cid_parser_new): Reject negative values for hex data length. - -2015-02-20 Werner Lemberg - - [cff] Signedness fixes for new engine. - - * src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c, - src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply. - -2015-02-20 Werner Lemberg - - [cff] Signedness fixes for basic infrastructure and old engine. - - * include/internal/pshints.h, src/cff/cffdrivr.c, - src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c, - src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply. - -2015-02-19 Werner Lemberg - - * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'. - - This is hard-coded to value 2 in `fvar' version 1.0 (and no newer - version exists), but some fonts set it incorrectly. - - Problem reported by Adam Twardoch . - -2015-02-19 Werner Lemberg - - [cff] Emit better error code for invalid private dict size. - - * src/cff/cffparse.c (cff_parse_private_dict): Reject negative - values for size and offset. - -2015-02-19 Werner Lemberg - - [autofit] Fix signedness issues. - - * src/autofit/afangles.c, src/autofit/afcjk.c, - src/autofit/afglobal.c, src/autofit/afhints.c, - src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c, - src/autofit/hbshim.c: Apply. - -2015-02-19 Werner Lemberg - - [autofit] Use macros for (unsigned) flags, not enumerations. - - This harmonizes with other code in FreeType (and reduces the number - of necessary casts to avoid compiler warnings). - - * src/autofit/afblue.hin: Make flag macros unsigned. - * src/autofit/afblue.h: Regenerated. - - * src/autofit/afcjk.h: Replace flag enumeration with macros. - * src/autofit/afcjk.c: Updated. - - * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with - macros. - * src/autofit/afhints.c: Updated. - - * src/autofit/aflatin.h: Replace flag enumerations with macros. - * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated. - - * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros. - -2015-02-18 Werner Lemberg - - [type1] Fix signedness issues. - - * include/internal/psaux.h, include/internal/t1types.h, - src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c, - src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply. - -2015-02-18 Werner Lemberg - - [psaux, type1] Fix minor AFM issues. - - * include/internal/t1types.h (AFM_KernPairRec): Make indices - unsigned. - Update users. - (AFM_FontInfoRec): Make element counters unsigned. - Update users. - * src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned - int. - - * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs): - Reject negative values for number of kerning elements. - - * src/type1/t1afm.c, src/tools/test_afm.c: Updated. - -2015-02-18 Werner Lemberg - - Don't use `FT_PtrDist' for lengths. - - Use FT_UInt instead. - - * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec, - T1_DecoderRec): Do it. - - * include/internal/t1types.h (T1_FontRec): Ditto. - - * src/cid/cidload.c (cid_parse_dict): Updated. - * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto. - * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto. - * src/type1/t1load.c (parse_blend_axis_types, parse_encoding, - parse_chharstrings, parse_dict): Ditto. - * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings, - t42_parse_dict): Ditto. - -2015-02-18 Werner Lemberg - - * src/type1/t1driver.c (t1_ps_get_font_value): Clean up. - This handles negative values better, avoiding many casts. - -2015-02-17 Werner Lemberg - - [base] Fix Savannah bug #44284. - - * src/base/ftcalc.c (FT_MulFix): Typos. - -2015-02-17 Werner Lemberg - - [truetype] Finish compiler warning fixes for signedness issues. - - * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c, - src/truetype/ttsubpix.h: Apply. - -2015-02-17 Werner Lemberg - - * src/truetype/ttsubpix.c: Adding missing `static' keywords. - -2015-02-17 Werner Lemberg - - [truetype] More signedness fixes. - - * include/internal/tttypes.h, src/truetype/ttinterp.h, - src/truetype/ttobjs.h, src/truetype/ttinterp.c, - src/truetype/ttobjs.c: Apply. - -2015-02-17 Werner Lemberg - - [truetype] Various signedness fixes. - - * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply. - - * src/truetype/ttgload.c: Apply. - (TT_Get_VMetrics): Protect against invalid ascenders and descenders - while constructing advance height. - -2015-02-16 Werner Lemberg - - [base] Finish compiler warning fixes for signedness issues. - - * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c: - Apply. - -2015-02-16 Werner Lemberg - - * include/tttables.h (TT_OS2): `fsType' must be FT_UShort. - -2015-02-16 Werner Lemberg - - More minor signedness warning fixes. - - * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c, - src/base/ftutil.c: Apply. - -2015-02-16 Werner Lemberg - - Next round of minor compiler warning fixes. - - * include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member - type to `FT_Long'. - (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword. - - * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'. - - * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c: - Signedess fixes. - -2015-02-16 Werner Lemberg - - Various minor signedness fixes. - - * include/ftadvanc.h, include/internal/ftobjs.h, - src/base/ftgloadr.c, src/base/ftobjs.c: Apply. - -2015-02-16 Werner Lemberg - - New `TYPEOF' macro. - - This helps suppress signedness warnings, avoiding issues with - implicit conversion changes. - - * include/config/ftconfig.h, builds/unix/ftconfig.in, - builds/vms/ftconfig.h (TYPEOF): Define. - - * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR), - src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it. - -2015-02-16 Werner Lemberg - - * src/base/ftsystem.c: Use casts in standard C function wrappers. - (ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it. - -2015-02-16 Werner Lemberg - - Fix Savannah bug #44261. - - * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the - environment also while calling the configure script. - -2015-02-16 Werner Lemberg - - * include/internal/ftmemory.h: Add some `FT_Offset' casts. - (FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY, - FT_MEM_MOVE): Do it. - -2015-02-15 Werner Lemberg - - [base] Clean up signedness issues in `ftdbgmem.c'. - - Also fix other minor issues. - - * src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types - with FT_Long for consistency. - (ft_mem_primes): Change type to `FT_Int'. - (ft_mem_closest_prime, ft_mem_table_set): Updated. - - (ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free, - ft_mem_debug_realloc): Use `static' keyword and fix signedness - warnings where necessary. - - (ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy, - ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types - and add or remove casts to avoid signedness warnings. - -2015-02-15 Werner Lemberg - - [base] Clean up signedness in arithmetic functions. - - This makes the code more readable and reduces compiler warnings. - - * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix, - FT_DivFix): Convert input parameters to unsigned, do the - computation, then convert the result back to signed. - (ft_corner_orientation): Fix casts. - -2015-02-07 Werner Lemberg - - [sfnt] Fix Savannah bug #44184. - - * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No - longer reject `htmx' and `vmtx' tables with invalid length but - sanitize them. - -2015-02-06 Jon Anderson - - [truetype] Fix regression in the incremental glyph loader. - - * src/truetype/ttgload.c (load_truetype_glyph): For incremental - fonts, the glyph index may be greater than the number of glyphs - indicated, so guard the check with a preprocessor conditional. - -2015-02-06 Werner Lemberg - - [autofit] Fix potential memory leak. - - While this doesn't show up with FreeType, exactly the same code - leaks with ttfautohint's modified auto-hinter code (which gets used - in a slightly different way). - - It certainly doesn't harm since it is similar to already existing - checks in the code for embedded arrays. - - * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours' - and `max_points' for all cases. - -2015-01-31 Werner Lemberg - - [autofit] Add support for Thai script. - - Thanks to Ben Mitchell for guidance with blue - zone characters! - - * src/autofit/afblue.dat: Add blue zone data for Thai. - - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - - * src/autofit/afscript.h: Add Thai standard characters. - - * src/autofit/afranges.c: Add Thai data. - - * src/autofit/afstyles.h: Add Thai data. - -2015-01-23 Behdad Esfahbod - - [raster] Handle `FT_RASTER_FLAG_AA' correctly. - - This fixes a breakage caused by the commit `[raster] Remove - 5-level gray AA mode from monochrome rasterizer.'. - - Problem reported by Markus Trippelsdorf . - - * src/raster/ftraster.c (ft_black_render): Handle - `FT_RASTER_FLAG_AA'. - - * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode - remnants. - -2015-01-18 Werner Lemberg - - * src/base/ftobjs.c (FT_New_Library): Fix compiler warning. - -2015-01-18 Chris Liddell - - [raster] Fix Savannah bug #44022. - - Add fallback for glyphs with degenerate bounding boxes. - - If a glyph has only one very narrow feature, the bbox can end up - with either the width or height of the bbox being 0, in which case - no raster memory is allocated and no attempt is made to render the - glyph. This is less than ideal when the drop-out compensation in - the rendering code would actually result in the glyph being - rendered. - - This problem can be observed with the `I' glyph (gid 47) in the - Autodesk RomanS TrueType font. - - * src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either - dimension is zero to explicitly round up/down (instead of simply - round). - -2015-01-17 Werner Lemberg - - Add some tools to handle yearly copyright notice updates. - - We are now following the GNU guidelines: A new release automatically - means that the copyright year of all affected files gets updated; it - is no longer used to track years of modification changes. - - * src/tools/update-copyright-year: New Perl script. - * src/tools/update-copyright: New shell script that calls - `update-copyright-year' on all files. - * src/tools/no-copyright: Exceptions that should not be handled by - `update-copyright' - -2015-01-14 Werner Lemberg - - * docs/CHANGES: Updated, using a description from Behdad. - -2015-01-14 Behdad Esfahbod - - * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning. - -2015-01-14 Behdad Esfahbod - - [autofit] Add embedded array of segments and edges. - - Avoids multiple mallocs per typical glyphs. - - With this and recent changes to avoid mallocs, the thread-safe - stack-based loader is now as fast as the previous model that had one - cached singleton. - - * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED): - New macros. - (AF_AxisHintsRec): Add two arrays for segments and edges. - - * src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate - data if number of segments exceeds given threshold value. - (af_axis_hints_new_edge): Only allocate data if number of edges - exceeds given threshold value. - (af_glyph_hints_done): Updated. - -2015-01-14 Behdad Esfahbod - - [autofit] Add embedded arrays for points and contours. - - This avoids at least two malloc calls for typical glyphs. - - * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED): - New macros. - (AF_GlyphHintsRec): Add two arrays for contours and points. - - * src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done): - Updated. - (af_glyph_hints_reload): Only allocate data if number of contours or - points exceeds given threshold values. - -2015-01-14 Behdad Esfahbod - - [autofit] Allocate hints object on the stack. - - This avoids one malloc per load. - - * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to - `AF_GlyphHints'. - Update prototype. - - * src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints' - parameter instead of `FT_Memory'. - (af_loader_done): Directly reset `load_hints'. - (af_loader_load_g): Updated. - - * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local - `hints' object. - -2015-01-14 Behdad Esfahbod - - [autofit] Reuse slot glyph loader. - - No need to create a new glyph loader; we can reuse the one from - `slot->internal->loader'. It's hard to tell why it was written that - way originally, but new code looks sound and correct to me, and - avoids lots of allocations. - - * src/autofit/afloader.c (af_loader_init): Change return type to - `void'. - Don't call `FT_GlyphLoader_New'. - (af_loader_reset): Don't call `FT_GlyphLoader_Rewind'. - (af_loader_load_g): Update code to use `internal->loader', which - doesn't need copying of data. - - * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member. - Update prototype. - - * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated. - -2015-01-14 Behdad Esfahbod - - [autofit] Remove (unused) support for composite glyphs. - - We never have to deal with composite glyphs in the autohinter, as - those will be loaded into FORMAT_OUTLINE by the recursed - `FT_Load_Glyph' function. - - In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply - FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies - FT_LOAD_NO_HINTING: - - /* resolve load flags dependencies */ - - if ( load_flags & FT_LOAD_NO_RECURSE ) - load_flags |= FT_LOAD_NO_SCALE | - FT_LOAD_IGNORE_TRANSFORM; - - if ( load_flags & FT_LOAD_NO_SCALE ) - { - load_flags |= FT_LOAD_NO_HINTING | - FT_LOAD_NO_BITMAP; - - load_flags &= ~FT_LOAD_RENDER; - } - - and as such the auto-hinter is never called. Thus, the recursion in - `af_loader_load_g' never actually happens. So remove the depth - counter as well. - - * src/autofit/afloader.c (af_loader_load_g): Remove `depth' - parameter. - : Remove associated code. - (af_loader_load_glyph): Updated. - -2015-01-14 Behdad Esfahbod - - [raster] Fix uninitialized memory access. - - Apparently `ras.cProfile' might be uninitialized. This will be the - case if `ras.top == ras.cProfile->offset', as can be seen in - `End_Profile'. The overshoot code introduced in a change `Fix B/W - rasterization of subglyphs with different drop-out modes.' (from - 2009-06-18) violated this, accessing `ras.cProfile->flags' - unconditionally just before calling `End_Profile' (which then - detected that `cProfile' is uninitialized and didn't touch it). - - This was harmless, and was not detected by valgrind before because - the objects were allocated on the `raster_pool', which was always - initialized. With recent change to allocate raster buffers on the - stack, valgrind now reported this invalid access. - - * src/raster/ftraster.c (Convert_Glyph): Don't access an - uninitialized `cProfile'. - -2015-01-14 Behdad Esfahbod - - [smooth] Fix uninitialized memory access. - - Looks like `ras.span_y' could always be used without initialization. - This was never detected by valgrind before because the library-wide - `raster_pool' was used for the worker object and `raster_pool' was - originally zero'ed. But subsequent reuses of it were using `span_y' - uninitialized. With the recent change to not use `render_pool' and - allocate worker and buffer on the stack, valgrind now detects this - uninitialized access. - - * src/smooth/ftgrays.c (gray_raster_render): Initialize - `ras.span_y'. - -2015-01-14 Behdad Esfahbod - - [base] Don't initialize unused `driver->glyph_loader'. - - * src/base/ftobjs.c (Destroy_Driver): Don't call - `FT_GlyphLoader_Done'. - (FT_Add_Module): Don't call `FT_GlyphLoader_New'. - -2015-01-14 Behdad Esfahbod - - [base] Don't allocate `library->raster_pool' anymore. - - It's unused after the following commits: - - [raster] Allocate render pool for mono rasterizer on the stack. - [raster] Remove 5-level gray AA mode from monochrome rasterizer. - - The value of FT_RENDER_POOL_SIZE still serves the purpose it used to - serve, which is, to adjust the pool size. But the pool is now - allocated on the stack on demand. - - * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement. - -2015-01-14 Behdad Esfahbod - - [base] Do not reorder library->renderers upon use. - - Instead of keeping `library->renderers' in a MRU order, just leave - it as-is. The MRU machinery wasn't thread-safe. - - With this patch, rasterizing glyphs from different faces from - different threads doesn't fail choosing rasterizer - (FT_Err_Cannot_Render_Glyph). - - Easiest to see that crash was to add a `printf' (or otherwise let - thread yield in FT_Throw with debugging enabled). - - * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c - (FT_Outline_Render): Don't call `FT_Set_Renderer'. - -2015-01-14 Behdad Esfahbod - - [raster] Allocate render pool for mono rasterizer on the stack. - - Instead of using the `render_pool' member of `FT_Library' that is - provided down to the rasterizer, completely ignore that and allocate - needed objects on the stack instead. - - With this patch, rasterizing glyphs from different faces from - different threads doesn't crash in the monochrome rasterizer. - - * src/raster/ftraster.c (black_TRaster): Remove `buffer', - `buffer_size', and `worker' members. - - (ft_black_render): Create `buffer' locally. - (ft_black_reset): Updated. - -2015-01-14 Behdad Esfahbod - - [raster] Remove 5-level gray AA mode from monochrome rasterizer. - - It was off by default and couldn't be turned on at runtime. And the - smooth rasterizer superceded it over ten years ago. No point in - keeping. Comments suggested that it was there for compatibility - with FreeType 1. - - 550 lines down. - - * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING, - RASTER_GRAY_LINES): Remove macros and all associated code. - - (black_TWorker): Remove `gray_min_x' and `gray_max_x'. - (black_TRaster): Remove `grays' and `gray_width'. - - (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop, - ft_black_render): Updated. - - * src/raster/ftrend1.c (ft_raster1_render): Simplify code. - (ft_raster5_renderer_class): Removed. - -2015-01-14 Behdad Esfahbod - - [smooth] Allocate render pool for smooth rasterizer on the stack. - - Instead of using the `render_pool' member of `FT_Library' that is - provided down to the rasterizer, completely ignore that and allocate - needed objects on the stack instead. - - With this patch, rasterizing glyphs from different faces from - different threads doesn't crash in the smooth rasterizer. - - Bugs: - - https://bugzilla.redhat.com/show_bug.cgi?id=678397 - https://bugzilla.redhat.com/show_bug.cgi?id=1004315 - https://bugzilla.redhat.com/show_bug.cgi?id=1165471 - https://bugs.freedesktop.org/show_bug.cgi?id=69034 - - * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer', - `buffer_size', `band_size', and `worker' members. - - (gray_raster_render): Create `buffer', `buffer_size', and - `band_size' locally. - (gray_raster_reset): Updated. - -2015-01-14 Behdad Esfahbod - - [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver. - - Previously the code had stipulation for using a per-TT_Size exec - context if `size->debug' was true. But there was no way that - `size->debug' could *ever* be true. As such, the code was always - using the singleton `TT_ExecContext' that was stored in `TT_Driver'. - This was, clearly, not threadsafe. - - With this patch, loading glyphs from different faces from different - threads doesn't crash in the bytecode loader code. - - * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member. - (TT_DriverRec): Remove `context' member. - - * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove - `TT_ExecContext' code related to a global `TT_Driver' object. - - (tt_driver_done): Don't remove `TT_ExecContext' object here but ... - (tt_size_done_bytecode): ... here. - - (tt_driver_init): Don't create `TT_ExecContext' object here but ... - (tt_size_init_bytecode): ... here, only on demand. - - * src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug - code. - (TT_New_Context): Remove `TT_ExecContext' code related to a global - `TT_Driver' object. - - * src/truetype/ttinterp.h: Updated. - - * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated. - -2015-01-14 Behdad Esfahbod - - [autofit] Allocate AF_Loader on the stack instead of AF_Module. - - Stop sharing a global `AF_Loader'. Allocate one on the stack during - glyph load. - - Right now this results in about 25% slowdown, to be fixed in a - following commit. - - With this patch loading glyphs from different faces from different - threads doesn't immediately crash in the autohinting loader code. - - Bugs: - - https://bugzilla.redhat.com/show_bug.cgi?id=1164941 - - * src/autofit/afloader.c (af_loader_init): Pass - `AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments. - (af_loader_reset, af_loader_load_glyph): Also pass `loader' as - argument. - (af_loader_done): Use `AF_Loader' instead of `AF_Module' as - argument. - - * src/autofit/afmodule.c (af_autofitter_init): Don't call - `af_loader_init'. - (af_autofitter_done): Don't call `af_loader_done'. - (af_autofitter_load_glyph): Use a local `AF_Loader' object. - - * src/autofit/afloader.h: Include `afmodule.h'. - Update prototypes. - Move typedef for `AF_Module' to... - - * src/autofit/afmodule.h: ... this place. - No longer include `afloader.h'. - -2015-01-14 Behdad Esfahbod - - * src/type42/t42objs.h (T42_DriverRec): Remove unused member. - -2015-01-12 Werner Lemberg - - Fix Savannah bug #43976. - - Assure that FreeType's internal include directories are found before - `CPPFLAGS' (which might be set by the user in the environment), and - `CPPFLAGS' before `CFLAGS'. - - * builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'. - (FT_COMPILE): Make this a special variable for compiling only the - files handled in `freetype.mk'. - (.c.$O): Removed, unused. - - * src/*/rules.mk (*_COMPILE): Fix order of include directories. - -2015-01-11 Werner Lemberg - - [truetype] Prettyfing. - - * src/truetype/ttinterp.c (project, dualproj, fast_project, - fast_dualproj): Rename to... - (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this. - -2015-01-11 Werner Lemberg - - * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify. - - Based on a patch from Behdad. - -2015-01-11 Werner Lemberg - - * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call. - -2015-01-11 Werner Lemberg - - * src/truetype/ttinterp.c (Normalize): Remove unused argument. - -2015-01-11 Werner Lemberg - - [truetype] More macro expansions. - - * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by - expansion. - -2015-01-11 Werner Lemberg - - [truetype] More macro expansions. - - * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion, - adjusting funtion calls where necessary. - (FT_UNUSED_ARG): Removed, no longer needed. - -2015-01-10 Werner Lemberg - - [truetype] More macro expansions. - - Based on a patch from Behdad. - - * src/truetype/ttinterp.c (DO_*): Expand macros into corresponding - `Ins_*' functions. - (TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls. - (ARRAY_BOUND_ERROR): Remove second definition, which is no longer - needed. - (Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with... - (Ins_SxyTCA): New function. - -2015-01-10 Werner Lemberg - - [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH. - - Behdad suggested this code simplification, and nobody objected... - - * include/config/ftoption.h, devel/ftoption.h - (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove. - - * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]: - Remove related code. - (ARRAY_BOUND_ERROR): Use do-while loop. - -2015-01-10 Werner Lemberg - - [truetype] More macro expansions. - - * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_, - EXEC_ARG): Remove by replacing with expansion. - -2015-01-10 Werner Lemberg - - [truetype] More macro expansions. - - Based on a patch from Behdad. - - * src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize, - SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move, - CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem, - CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt, - CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round, - COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing - with expansion. - - (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project, - CUR_fast_dualproj): Replace with macros `project', `dualproj', - `fast_project', `fast_dualproj'. - -2015-01-10 Werner Lemberg - - [truetype] More macro expansions. - - * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing - with expansion. - -2015-01-10 Werner Lemberg - - [truetype] Remove code for static TrueType interpreter. - - This is a follow-up patch. - - * src/truetype/ttinterp.c, src/truetype/ttinterp.h - [TT_CONFIG_OPTION_STATIC_INTERPRETER, - TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code. - -2015-01-10 Werner Lemberg - - * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion. - - This starts a series of patches that simplifies the code of the - bytecode interpreter. - - ----------------------------------------------------------------------------- - -Copyright 2015 by -David Turner, Robert Wilhelm, and Werner Lemberg. - -This file is part of the FreeType project, and may only be used, modified, -and distributed under the terms of the FreeType project license, -LICENSE.TXT. By continuing to use, modify, or distribute this file you -indicate that you have read the license and understand and accept it -fully. - - -Local Variables: -version-control: never -coding: utf-8 -End: diff --git a/components/gui/libraries/freetype-2.6.2/ChangeLog.20 b/components/gui/libraries/freetype-2.6.2/ChangeLog.20 deleted file mode 100644 index 6dae58ea7d..0000000000 --- a/components/gui/libraries/freetype-2.6.2/ChangeLog.20 +++ /dev/null @@ -1,2613 +0,0 @@ -2002-02-09 Werner Lemberg - - * README: Fix typo. - * docs/CHANGES: Minor fixes. - - - * Version 2.0.8 released. - ========================= - - -2002-02-08 David Turner - - * docs/CHANGES: Updating for 2.0.8. - - * include/freetype/freetype.h: Setting `PATCH_LEVEL' to 8 and - removing `FT_Get_Next_Char' from the API (temporarily). - - * include/freetype/freetype.h: Adding comments to FT_Get_Next_Char; - note that this function might temporarily be removed for the 2.0.8 - release. - -2002-02-07 David Turner - - * src/pcf/pcfread.c (pcf_load_font): Removed immature support of - the AVERAGE_WIDTH property. - -2002-02-06 David Turner - - * src/sfnt/sfobjs.c (SFNT_Load_Face): Since many fonts embedded in - PDF documents do not include 'cmap', 'post' and 'name' tables, the - SFNT face loader has been changed to not immediately report an - error if these are not present. - - Note that the specification _requires_ these tables, but Adobe - seems to ignore it completely. - - * src/sfnt/ttcmap.c: Removing compiler warnings. - - * src/pcf/pcfread.c (pcf_read_TOC): Use FT_UInt. - (pcf_parse_metric, pcf_parse_compressed_metric): Removed. Code - is now in ... - (pcf_get_metric): Here. - (pcfSeekToType): Renamed to ... - (pcf_seek_to_table_type): This. - Use FT_Int. - (pcfHasType): Renamed to ... - (pcf_has_table_type): This. - Use FT_Int. - (find_property): Renamed to ... - (pcf_find_property): This. - Use FT_Int. - (pcf_get_bitmaps, pcf_get_encodings): Handle invalid PCF fonts - better (delaying format checks out of FT_Access_Frame .. - FT_Forget_Frame blocks to avoid leaving the stream in an incorrect - state when encountering an invalid PCF font). - - * src/pcf/pcfdriver.c (PCF_Done_Face): Renamed to ... - (PCF_Face_Done): This. - (PCF_Init_Face): Renamed to ... - (PCF_Face_Init): This. - (PCF_Get_Char_Index): Renamed to ... - (PCF_Char_Get_Index): This. - (PCF_Get_Next_Char): Renamed to ... - (PCF_Char_Get_Next): This. - (pcf_driver_class): Updated. - - * src/pcf/pcf.h (PCF_Done_Face): Removed. - -2002-02-06 Detlef Würkner - - * src/pcf/pcfdriver.c (FT_Done_Face): Fixed small memory leak. - - * src/pcf/pcfread.c (pcf_load_font): Now handles the `AVERAGE_WIDTH' - property to return correct character pixel (width/height) pairs for - embedded bitmaps. - -2002-02-04 Keith Packard - - Adding the function `FT_Get_Next_Char', doing the obvious thing - w.r.t. the selected charmap. - - * include/freetype/freetype.h: Add prototype. - * include/freetype/internal/ftdriver.h: Add `FTDriver_getNextChar' - typedef. - (FT_Driver_Class): Use it. - * include/freetype/internal/psnames.h: Add `PS_Next_Unicode_Func' - typedef. - (PSNames_Interface): Use it. - * include/freetype/internal/tttypes.h: Add `TT_CharNext_Func' - typedef. - (TT_CMapTable): Use it. - - * src/base/ftobjs.c (FT_Get_Next_Char): New function, implementing - high-level API. - * src/cff/cffdrivr.c (cff_get_next_char): New function. - (cff_driver_class): Add it. - * src/cid/cidriver.c (Cid_Get_Next_Char): New function. - (t1cid_driver_class): Add it. - * src/pcf/pcfdriver.c (PCF_Get_Next_Char): New function. - (pcf_driver_class): Add it. - * src/psnames/psmodule.c (PS_Next_Unicode): New function. - (psnames_interface): Add it. - * src/sfnt/ttcmap.c (code_to_next0, code_to_next2, code_to_next4, - code_to_next6, code_to_next_8_12, code_to_next_10): New auxiliary - functions. - (TT_CharMap_Load): Use them. - * src/truetype/ttdriver.c (Get_Next_Char): New function. - (tt_driver_class): Add it. - * src/type1/t1driver.c (Get_Next_Char): New function. - (t1_driver_class): Add it. - * src/winfonts/winfnt.c (FNT_Get_Next_Char): New function. - (winfnt_driver_class): Add it. - - * src/pcf/pcfread.c (pcf_load_font): For now, report Unicode for - Unicode and Latin 1 encodings. - -2002-02-02 Keith Packard - - * builds/unix/freetype-config.in: Add missing `fi'. - - - * Version 2.0.7 released. - ========================= - - -2002-02-01 David Turner - - * include/freetype/freetype.h: Increasing FREETYPE_PATCH to 7 - for the new release. - -2002-01-31 David Turner - - * README, README.UNX, docs/CHANGES: Updating documentation for the - 2.0.7 release. - -2002-01-30 David Turner - - * INSTALL: Moved to ... - * docs/INSTALL: Here to avoid conflicts with the `install' script on - Windows, where the filesystem doesn't preserve case. - -2002-01-29 David Turner - - * configure: Fixed the script. It previously didn't accept more - than one argument correctly. For example, when typing: - - ./configure --disable-shared --disable-nls - - the `--disable-nls' was incorrectly sent to the `make' program. - -2002-01-29 Werner Lemberg - - * README.UNX: Fix typo. - * builds/unix/install.mk (uninstall): Fix library name for libtool. - -2002-01-28 Francesco Zappa Nardelli - - * src/pcf/pcfdriver.c (PCF_Done_Face): Fix incorrect destruction of - the face object (face->toc.tables, face->root.family_name, - face->root.available_size, face->charset_encoding, - face->charset_registry are now freed). Thanks to Niels Moseley. - -2002-01-28 Roberto Alameda - - * src/type1/t1load.c (parse_encoding): Set `loader->num_chars'. - -2002-01-28 Werner Lemberg - - * src/type1/t1load.c (parse_subrs, parse_charstrings): Use copy - of `base' string for decrypting to not modify the original data. - Based on a patch by Jakub Bogusz . - -2002-01-27 Giuliano Pochini - - * src/smooth/ftgrays.c (gray_render_scanline): Fix bug which caused - bad rendering of thin lines (less than one pixel thick). - -2002-01-25 Werner Lemberg - - * src/cff/cffdrivr.c (cff_get_name_index): Make last patch work - actually. - -2002-01-25 Martin Zinser - - * src/cache/ftccache.c (ftc_node_done, ftc_node_destroy): Fix - compilation warnings. - * src/base/descrip.mms (OBJS): Add `ftmm.obj'. - * src/cache/descrip.mms (ftcache.obj): Dependencies added. - -2002-01-25 WANG Yi - - * src/cff/cffdrivr.c (cff_get_name_index): Fix deallocation bug. - -2002-01-21 Antoine Leca - - * docs/PATENTS: Typo fixed (thanks to Detlef `Hawkeye' Würkner) in - the URL for the online resource. - -2002-01-18 Ian Brown - - * builds/win32/ftdebug.c: New file. - * builds/win32/visualc/freetype.dsp: Updated. - -2002-01-18 Detlef Würkner - - * builds/amiga/src/base/ftsystem.c: Updated for AmigaOS 3.9. - * builds/amiga/README: Updated. - -2002-01-18 Ian Brown - - * builds/win32/visualc/freetype.dsp: Updated. - -2002-01-13 Werner Lemberg - - * builds/unix/freetype2.a4: The script was still buggy. - * builds/unix/freetype-config.in: Make it really work for any install - prefix. - -2002-01-10 Werner Lemberg - - * builds/unix/freetype2.a4: Fix some serious bugs. - -2002-01-09 David Turner - - * builds/unix/configure.ac: Build top-level Jamfile. - -2002-01-09 Maxim Shemanarev - - * src/smooth/ftgrays.c (gray_render_line): Small optimization to - the smooth anti-aliased renderer that deals with vertical segments. - This results in a 5-7% speedup in rendering speed. - -2002-01-08 David Turner - - Added some wrapper scripts to make the installation more - Unix-friendly. - - * configure, install: New files. - - * INSTALL, README.UNX: Updated installation documentation to use the - new 'configure' and 'install' scripts. - -2002-01-07 David Turner - - - * Version 2.0.6 released. - ========================= - - - * docs/BUGS, docs/CHANGES: Updating documentation for 2.0.6 release. - - * src/tools/docmaker.py: Fixed HTML quoting in sources. - (html_format): Replaced with ... - (html_quote): New function. - (html_quote0): New function. - (DocCode::dump_html): Small improvement. - (DocParagraph::dump, DocBlock::html): Use html_quote0 and html_quote. - - * include/freetype/config/ftoption.h: Setting default options for - a release build (debugging off, bytecode interpreter off). - - * src/base/ftobjs.c, src/base/ftoutln.c, src/cache/ftccmap.c, - src/cff/cffload.c, src/cff/cffobjs.c, src/pshinter/pshalgo2.c, - src/sfnt/ttload.c, src/sfnt/ttsbit.c: Removing small compiler - warnings (in pedantic compilation modes). - -2002-01-05 David Turner - - * src/autohint/ahhint.c (ah_align_linked_edge): Modified computation - of auto-hinted stem widths; this avoids color fringes in - `ClearType-like' rendering. - - * src/truetype/ttgload.c (TT_Load_Glyph_Header, - TT_Load_Simple_Glyph, TT_Load_Composite_Glyph, load_truetype_glyph): - Modified the TrueType loader to make it more paranoid; this avoids - nasty buffer overflows in the case of invalid glyph data (as - encountered in the output of some buggy font converters). - -2002-01-04 David Turner - - * README.UNX: Added special README file for Unix users. - - * builds/unix/ftsystem.c (FT_New_Stream): Fixed typo. - - * src/base/ftobjs.c: Added #include FT_OUTLINE_H to get rid - of compiler warnings. - - * src/base/ftoutln.c (FT_Outline_Check): Remove compiler warning. - -2002-01-03 Werner Lemberg - - * src/type1/t1objs.c (T1_Face_Init): Add cast to avoid compiler - warning. - -2002-01-03 Keith Packard - - * builds/unix/ftsystem.c (FT_New_Stream): Added a fix to ensure that - all FreeType input streams are closed in child processes of a `fork' - on Unix systems. This is important to avoid (potential) access - control issues. - -2002-01-03 David Turner - - * src/type1/t1objs.c (T1_Face_Init): Fixed a bug that crashed the - library when dealing with certain weird fonts like `Stalingrad', in - `sadn.pfb' (this font has no full font name entry). - - * src/base/ftoutln.c, include/freetype/ftoutln.h (FT_Outline_Check): - New function to check the consistency of outline data. - - * src/base/ftobjs.c (FT_Load_Glyph): Use `FT_Outline_Check' to - ensure that loaded glyphs are valid. This allows certain fonts like - `tt1095m_.ttf' to be loaded even though it appears they contain - really funky glyphs. - - There still is a bug there, though. - - * src/truetype/ttgload.c (load_truetype_glyph): Fix error condition. - -2001-12-30 David Turner - - * src/autohint/ahhint.c (ah_hinter_load): Fix advance width - computation of auto-hinted glyphs. This noticeably improves the - spacing of letters in KDE and Gnome. - -2001-12-25 Antoine Leca - - * builds/dos/detect.mk: Correcting the order for Borland compilers: - 16-bit bcc was never selected, always overridden by 32-bit bcc32. - -2001-12-22 Francesco Zappa Nardelli - - * src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' - and fix incorrect computation of `available_sizes'. - -2001-12-22 David Turner - - * src/autohint/ahhint.c (ah_hinter_load): Auto-hinted glyphs had an - incorrect glyph advance in the case of mono-width fonts (like - Courier, Andale Mono, and others). - -2001-12-22 Detlef Würkner - - * builds/amiga/*: Adaptations to latest changes. - Support added for MorphOS. - -2001-12-22 Werner Lemberg - - * src/pshinter/pshrec.c (FT_COMPONENT): Redefine to `trace_pshrec'. - (ps_mask_table_merge, ps_hints_open, ps_hints_stem, - ps_hints_t1stem3, ps_hints_t2mask, ps_hints_t2counter): Fix - FT_ERROR messages. - * src/pshinter/pshalgo1.c (FT_COMPONENT): Define as - `trace_pshalgo1'. - * src/pshinter/pshalgo2.c (FT_COMPONENT): Define as - `trace_pshalgo2'. - * include/freetype/internal/ftdebug.h (FT_Trace): Updated. - - * docs/modules.txt: New file. - -2001-12-21 David Turner - - * src/pshinter/pshrec.c (ps_hints_t2mask, ps_hints_t2counter): - Ignore invalid `hintmask' and `cntrmask' operators (instead of - returning an error). Glyph 2028 of the CFF font `MSung-Light-Acro' - couldn't be rendered otherwise (it seems its charstring is buggy, - though this requires more analysis). - (FT_COMPONENT): Define. - - * src/cff/cffgload.c (CFF_Parse_CharStrings), src/psaux/t1decode.c - (T1_Decoder_Parse_Charstrings), src/pshinter/pshalgo2.c (*), Fixed a - bug where the X and Y axis where inverted in the postscript hinter. - This caused problem when displaying on non-square surfaces. - - * src/pshinter/pshalgo2.c: s/vertical/dimension/. - - * src/pshinter/pshglob.c (psh_globals_new): Replaced a floating - point constant with a fixed-float equivalent. For some reasons not - all compilers are capable of directly computing a floating pointer - constant casted to FT_Fixed, and will link a math library instead. - -2001-12-20 Werner Lemberg - - * src/cache/ftccache.c (ftc_node_destroy, ftc_cache_lookup): Fix - tracing strings. - * src/cache/ftccmap.c (ftc_cmap_family_init): Ditto. - * src/cache/ftcmanag.c (ftc_family_table_alloc, - ftc_family_table_free, FTC_Manager_Check): Ditto. - * src/cache/ftcsbits.c (ftc_sbit_node_load): Ditto. - - * src/base/ftobjs.c (FT_Done_Library): Remove compiler warning. - -2001-12-20 David Turner - - Added PostScript hinter support to the CFF and CID drivers. - - * include/freetype/internal/cfftypes.h (CFF_Font): New member - `pshinter'. - * src/cff/cffload.c (CFF_Get_Standard_Encoding): New function. - * src/cff/cffload.h: Updated. - * src/cff/cffgload.c (CFF_Init_Builder): Renamed to ... - (CFF_Builder_Init): This. - Added new argument `hinting'. - (CFF_Done_Builder): Renamed to ... - (CFF_Builder_Done): This. - (CFF_Init_Decoder): Added new argument `hinting'. - (CFF_Parse_CharStrings): Implement vstem support. - (CFF_Load_Glyph): Updated. - Add hinting support. - (cff_lookup_glyph_by_stdcharcode): Use CFF_Get_Standard_Encoding(). - (cff_argument_counts): Updated. - * src/cff/cffgload.h: Updated. - * src/cff/cffobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. - (CFF_Size_Get_Globals_Funcs, CFF_Size_Done, CFF_Size_Init, - CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GLyphSlot_Init): New - functions. - (CFF_Init_Face): Renamed to ... - (CFF_Face_Init): This. - Add hinter support. - (CFF_Done_Face): Renamed to ... - (CFF_Face_Done): This. - (CFF_Init_Driver): Renamed to ... - (CFF_Driver_Init): This. - (CFF_Done_Driver): Renamed to ... - (CFF_Driver_Done): This. - * src/cff/cffobjs.h: Updated. - * src/cff/cffdrivr.c (cff_driver_class): Updated. - - * include/freetype/internal/t1types.h (CID_FaceRec): New member - `pshinter'. - * src/cid/cidgload.c (CID_Load_Glyph): Add hinter support. - * src/cid/cidobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. - (CID_GlyphSlot_Done, CID_GlyphSlot_Init, CID_Size_Get_Globals_Funcs, - CID_Size_Done, CID_Size_Init, CID_Size_Reset): New functions. - (CID_Done_Face): Renamed to ... - (CID_Face_Done): This. - (CID_Init_Face): Renamed to ... - (CID_Face_Init): This. - Add hinting support. - (CID_Init_Driver): Renamed to ... - (CID_Driver_Init): This. - (CID_Done_Driver): Renamed to ... - (CID_Driver_Done): This. - * src/cid/cidobjs.h: Updated. - * src/cidriver.c: Updated. - - * src/pshinter/pshrec.c (t2_hint_stems): Fixed. - - * src/base/ftobjs.c (FT_Done_Library): Fixed a stupid bug that - crashed the library on exit. - - * src/type1/t1gload.c (T1_Load_Glyph): Enable font matrix - transformation of hinted glyphs. - - * src/cid/cidload.c (cid_read_subrs): Fix error condition. - - * src/cid/cidobjs.c (CID_Face_Done): Fixed a memory leak; the subrs - routines were never released when CID faces were destroyed. - - * src/cff/cffload.h, src/cff/cffload.c, src/cff/cffgload.c: Updated - to move the definition of encoding tables back within `cffload.c' - instead of making them part of a shared header (causing problems in - `multi' builds). This reverts change 2001-08-08. - - * docs/CHANGES: Updated for 2.0.6 release. - * docs/TODO: Added `stem3 and counter hints support' to the TODO - list for the Postscript hinter. - * docs/BUGS: Closed the AUTOHINT-NO-SBITS bug. - -2001-12-19 David Turner - - * include/freetype/cache/ftcache.h: Added comments to indicate that - some of the exported functions should only be used by applications - that need to implement custom cache types. - - * src/truetype/ttgload.c (cur_to_org, org_to_cur): Fixed a nasty bug - that prevented composites from loading correctly, due to missing - parentheses around macro parameters. - - * src/sfnt/sfobjs.c (SFNT_Load_Face): Make the `post' and `name' - tables optional to load PCL fonts properly. - - * src/truetype/ttgload.c (TT_Load_Glyph), src/base/ftobjs.c - (FT_Load_Glyph), include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): - `Fixed' the bug that prevented embedded bitmaps to be loaded when - the auto-hinter is used. This actually is a hack but will be enough - until the internal re-design scheduled for FreeType 2.1. - - * src/raster/ftrend1.c (ft_raster1_render): Fixed a nasty outline - shifting bug in the monochrome renderer. - - * README: Updated version numbers to 2.0.6. - -2001-12-17 Werner Lemberg - - * src/truetype/ttgload.c (load_truetype_glyph): Fix test for invalid - glyph header. - -2001-12-15 Werner Lemberg - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove compiler warning. - * include/freetype/ftcache.h (FTC_Node_Unref): Removed. It is - already in ftcmanag.h. - * src/cache/ftcsbits.c (ftc_sbit_node_load): Remove unused variable - `gfam'. - * src/cache/ftcmanag.c (ftc_family_table_alloc, - * ftc_family_table_free): Use FT_EXPORT_DEF. - * include/freetype/cache/ftcmanag.h: Updated. - * src/cache/ftccache.c (ftc_node_destroy): Use FT_EXPORT_DEF. - * src/cache/ftccmap.c (ftc_cmap_node_init): Remove unused variable - `cfam'. - Remove compiler warning. - (FTC_CMapCache_Lookup): Remove compiler warnings. - (ftc_cmap_family_init): Ditto. - (FTC_CMapCache_Lookup): Ditto. - - * builds/unix/configure.ac: Increase `version_info' to 8:0:2. - * builds/unix/configure: Regenerated. - -2001-12-14 Werner Lemberg - - * builds/mac/README: Updated. - -2001-12-14 Scott Long - - * src/truetype/ttgload.c (load_truetype_glyph): Fixing crash when - dealing with invalid fonts (i.e. glyph size < 10 bytes). - -2001-12-14 Sam Latinga - - * builds/mac/freetype.make: A new Makefile to build with MPW on - MacOS classic. - -2001-12-14 David Turner - - * src/truetype/ttgload.c (TT_Load_Glyph), src/type1/t1gload.c - (T1_Load_Glyph), src/cid/cidgload.c (CID_Load_Glyph), - src/cff/cffgload.c (CFF_Load_Glyph): Fixed a serious bug common to - all font drivers (the advance width was never hinted when it - should). - - * include/freetype/freetype.h (FREETYPE_PATCH): New macro. - * src/base/ftdbgmem.c (debug_mem_dummy) [!FT_DEBUG_MEMORY]: Don't - use `extern' keyword. - -2001-12-12 David Turner - - * src/pshinter/pshglob.c (psh_blues_scale_zones, psh_blues_snap_stem - psh_globals_new): Adding correct BlueScale/BlueShift support, plus - family blues processing. - * src/pshinter/pshglob.h (PSH_BluesRec): Updated. - - Started adding support for the Postscript hinter in the CFF module. - - * src/cff/cffgload.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. - (CFF_Parse_CharStrings): Implement it. - * src/cff/cffgload.h: Updated. - -2001-12-12 Werner Lemberg - - * builds/unix/freetype2.m4: Some portability fixes. - -2001-12-11 Jouk Jansen - - * src/base/descrip.mms (OBJS): Add ftdebug.obj. - -2001-12-11 Werner Lemberg - - * src/sfnt/ttload.c (TT_Load_Generic_Header): Typos. - -2001-12-11 David Turner - - * builds/unix/freetype-config.in: Modified the script to prevent - passing `-L/usr/lib' to gcc. - - * docs/FTL.TXT: Simple fix (change `LICENSE.TXT' to `FTL.TXT'). - - * builds/unix/freetype2.m4: New file for checking configure paths. - We need to install it in $(prefix)/share/aclocal/freetype2.m4 but I - didn't modify builds/unix/install.mk yet. - - * INSTALL: Updated the instructions to build shared libraries with - Jam. They were simply wrong. - - * src/base/fttrigon.c (FT_Cos): Fixed a small bug that caused - slightly improper results for `FT_Cos' and `FT_Sin' (example: - FT_Sin(0) == -1!). - -2001-12-11 Detlef Würkner - - * include/freetype/internal/ftstream.h (GET_LongLE, GET_ULongLE): - Fixed incorrect argument types. - -2001-12-10 Francesco Zappa Nardelli - - * src/pcf/pcfdriver.c (PCF_Init_Face): Allow Xft to use PCF fonts - by setting the `face->metrics.max_advance' correctly. - -2001-12-07 David Turner - - * include/freetype/cache/ftccmap.h, src/cache/ftccmap.c: Added new - charmap cache. - * src/cache/ftcache.c: Updated. - - * src/autohint/ahhint.c (ah_hinter_hint_edges): s/UNUSED/FT_UNUSED/. - -2001-12-06 Leonard Rosenthol - - Added support for reading .dfont files on Mac OS X. Also added a - new routine which looks up a given font by name in the Mac OS and - returns the disk file where it resides. - - * src/base/ftmac.c: Include and . - (is_dfont): New auxiliary function. - (FT_New_Face_From_dfont): New function. - (FT_GetFile_From_Mac_Name): New exported function. - (FT_New_Face): Updated. - * include/freetype/ftmac.h: Updated. - -2001-12-06 David Turner - - * src/cache/Jamfile, src/cache/rules.mk: Updated. - -2001-12-06 Werner Lemberg - - * INSTALL: Small update. - -2001-12-05 David Turner - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Re-ordered code for - debugging purposes. - Comment out use of `origin'. - - * src/smooth/ftsmooth.c (ft_smooth_render): Fixed a nasty hidden bug - where outline shifting wasn't correctly undone after bitmap - rasterization. This created problems with certain glyphs (like '"' - of certain fonts) and the cache system. - - * src/pshinter/pshalgo1.c (psh1_hint_table_init): Fix typo. - * src/pshinter/pshalgo2.c (psh2_hint_table_init): Fix typo. - (ps2_hints_apply): Small fix. - -2001-12-05 David Turner - - * src/pshinter/pshalgo2.c (psh2_hint_table_init), - src/pshinter/pshalgo1.c (psh1_hint_table_init): Removed compiler - warnings. - - * include/freetype/ftcache.h, include/freetype/cache/*, src/cache/*: - Yet another massive rewrite of the caching sub-system in order to - both increase performance and allow simpler cache sub-classing. As - an example, the code for the image and sbit caches is now much - simpler. - - I still need to update the documentation in - www/freetype2/docs/cache.html to reflect the new design though. - - * include/freetype/config/ftheader.h (FT_CACHE_CHARMAP_H): New - macro. - (FT_CACHE_INTERNAL_CACHE_H): Updated. - -2001-12-05 David Krause - - * docs/license.txt: s/X Windows/X Window System/. - -2001-12-04 Werner Lemberg - - * src/raster/ftraster.c: Fix definition condition of MEM_Set(). - * src/smooth/ftgrays.c (M_Y): Change value to 192. - * src/base/ftdbgmem.c (ft_mem_table_destroy): Fix printf() parameter. - Remove unused variable. - * src/cache/ftcimage.c (ftc_image_node_init, - ftc_image_node_compare): Remove unused variables. - * src/cache/ftcsbits.c (ftc_sbit_node_weight): Remove unused - variable. - * src/raster/ftraster.c (MEM_Set): Move definition down to avoid - compiler warning. - * src/autohint/ahhint.c (ah_hinter_hint_edges): Use UNUSED() to - avoid compiler warnings. - * src/pcf/pcfread.c (tableNames): Use `const'. - (pcf_read_TOC): Change counter name to avoid compiler warning. - Use `const'. - * src/pshinter/pshrec.c (ps_hints_close): Remove redundant - declaration. - * src/pshinter/pshalgo1.c (psh1_hint_table_init): Rename variables - to avoid shadowing. - * src/pshinter/pshalgo2.c (psh2_hint_table_activate_mask): Ditto. - * src/type1/t1objs.h: Remove double declarations of `T1_Size_Init()' - and `T1_Size_Done()'. - -2001-11-20 Antoine Leca - - * include/freetype/ttnameid.h: Added some new Microsoft language - codes and LCIDs as found in MSDN (Passport SDK). Also added - comments about the meaning of bit 57 of the `OS/2' table - (TT_UCR_SURROGATES) which (with OpenType v.1.3) now means `there is - a character beyond 0xFFFF in this font'. Thanks to Detlef Würkner - for noticing this. - -2001-11-20 David Turner - - * src/pshinter/{pshalgo2.c, pshalgo1.c}: Fixed stupid bug in sorting - routine that created nasty alignment artefacts. - - * src/pshinter/pshrec.c, tests/gview.c: Debugging updates. - - * src/smooth/ftgrays.c: De-activated experimental gamma support. - Apparently, `optimal' gamma tables depend on the monitor type, - resolution and general karma, so it's better to compute them outside - of the rasterizer itself. - (gray_convert_glyph): Use `volatile' keyword. - -2001-10-29 David Turner - - Adding experimental `gamma' support. This produces smoother glyphs - at small sizes for very little cost. - - * src/smooth/ftgrays.c (grays_init_gamma): New function. - (gray_raster_new): Use it. - - Various fixes to the auto-hinter. They merely improve the output of - sans-serif fonts. Note that there are still problems with serifed - fonts and composites (accented characters). - - * src/autohint/ahglyph.c (ah_outline_load, - ah_outline_link_segments): Implement it. - Fix typos. - (ah_outline_save, ah_outline_compute_segments): Fix typos. - * src/autohint/ahhint.c (ah_align_serif_edge): New argument - `vertical'. Implement improvement. - (ah_hint_edges_3, ah_hinter_hint_edges): Implement it. - Fix typos. - (ah_hinter_align_strong_points, ah_hinter_align_weak_points): Fix - typos. - (ah_hinter_load): Set `ah_debug_hinter' if DEBUG_HINTER is defined. - * src/autohint/ahmodule.c: Implement support for DEBUG_HINTER macro. - * src/autohint/ahtypes.h: Ditto. - (AH_Hinter): Remove `disable_horz_edges' and `disable_vert_edges' - (making them global as `ah_debug_disable_horz' and - `ah_debug_disable_vert'). - Fix typos. - - * tests/gview.c: Updated the debugging glyph viewer to show the - hints generated by the `autohint' module. - -2001-10-27 David Turner - - * src/cache/ftcchunk.c (ftc_chunk_cache_lookup): Fixed a bug that - considerably lowered the performance of the abstract chunk cache. - -2001-10-26 David Turner - - * include/freetype/ftcache.h, include/freetype/cache/*.h, - src/cache/*.c: Major re-design of the cache sub-system to provide - better performance as well as an `Acquire'/`Release' API. Seems to - work well here, but probably needs a bit more testing. - -2001-10-26 Leonard Rosenthol - - * builds/mac/README: Updated to reflect my taking over the project - and that is now being actively maintained. - - * src/base/ftmac.c (parse_fond): Applied patches from Paul Miller - to support loading a face other than the - first from a FOND resource. - (FT_New_Face_From_FOND): Updated. - -2001-10-25 Leonard Rosenthol - - * builds/mac/ftlib.prj: Update of CodeWarrior project file for Mac - OS for latest version (7) of CWPro and for recent changes to the FT - source tree. - -2001-10-25 David Turner - - * include/freetype/config/ftoption.h: Updated comments to explain - precisely how to use project-specific macro definitions without - modifying this file manually. - - (FT_CONFIG_FORCE_INT64): Define. - - (FT_DEBUG_MEMORY): New macro. - -2001-10-24 Tom Kacvinsky - - * builds/unix/ftsystem.c (FT_New_Memory): Added a missing `{'. - -2001-10-23 David Turner - - * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: - Improvements to the memory debugger to report more information in - case of errors. Also, some allocations that occurred through REALLOC - couldn't be previously caught correctly. - - * src/autohint/ahglyph.c (ah_outline_compute_segments, - ah_outline_compute_edges), src/raster/ftraster.c (ft_black_new), - src/smooth/ftgrays.c (gray_render_span, gray_raster_new): Replaced - liberal uses of memset() by the MEM_Set() macro. - -2001-10-23 David Turner - - * src/raster/ftraster.c (Update): Removed to be inlined in ... - (Sort): Updated. - -2001-10-22 David Turner - - * builds/unix/ftsystem.c (FT_New_Memory, FT_Done_Memory), - builds/vms/ftsystem.c (FT_New_Memory, FT_Done_Memory), - builds/amiga/ftsystem.c (FT_New_Memory, FT_Done_Memory), - src/base/ftdbgmem.c: Updated the memory debugger and - platform-specific implementations of `ftsystem' in order to be able - to debug memory allocations on Unix, VMS and Amiga too! - - * src/pshinter/pshalgo2.c (psh2_hint_table_record_mask): Removed - some bogus warnings. - - * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: - Modified the debugging memory manager to report the location (source - file name + line number) where leaked memory blocks are allocated in - the source file. - - * src/base/ftdbgmem.c: New debugging memory manager. You must - define the FT_DEBUG_MEMORY macro in `ftoption.h' to enable it. It - will record every memory block allocated and report simple errors - like memory leaks and double deletes. - - * src/base/Jamfile: Include ftdbgmem. - * src/base/rules.mk: Ditto. - * src/base/ftbase.c: Include ftdbgmem.c. - - * include/freetype/config/ftoption.h: Added the FT_DEBUG_MEMORY - macro definition. - - * src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory): Modified the - base component to use the debugging memory manager when the macro - FT_DEBUG_MEMORY is defined. - -2001-10-21 Tom Kacvinsky - - * src/cff/cffload.c (CFF_Done_Font): Free subfonts array only if - we are working with a CID keyed CFF font. Otherwise, a variable - that was never allocated memory might freed. This is a correction - to the previous patch for freeing subfonts. - -2001-10-21 Tom Kacvinsky - - * src/cff/cffload.c (CFF_Done_Font): Free the subfonts array to - avoid a memory leak. - -2001-10-21 David Turner - - * src/pshinter/pshalgo2.c, src/pshinter/pshalgo1.c, - src/pshinter/pshglob.c: Removing compiler warnings in pedantic modes - (in multi-object compilation mode, mainly). - -2001-10-20 Tom Kacvinsky - - * src/type1/t1load.c (parse_encoding): Add a test to make sure - that custom encodings (i.e., neither StandardEncoding nor - ExpertEncoding) are not loaded twice when the Type 1 font is - synthetic. - - * src/type1/t1load.c (parse_font_name, parse_subrs): Added a test - for when loading synthetic fonts to make sure that the font name - and subroutines are not loaded twice. This is to remove a memory - leak that occurred because the original memory blocks for these - objects were not deallocated when the objects were parsed the - second time. - -2001-10-19 David Turner - - * src/smooth/ftgrays.c, src/pshinter/pshglob.h, - src/pshinter/pshrec.c, src/pshinter/pshalgo2.c: Getting rid of - compiler warnings. - - * src/pshinter/module.mk, src/pshinter/rules.mk: Adding control - files to build the PostScript hinter with the `old' build system. - -2001-10-19 Jacob Jansen - - * descrip.mms, src/pshinter/descrip.mms: Updates to the VMS build - files. - -2001-10-18 David Turner - - * src/psnames/pstables.h, src/tools/glnames.py: Rewrote the - `glnames.py' script used to generate the `pstables.h' header file. - The old one contained a serious bug that made FreeType return - incorrect glyph names for certain glyphs. - - * src/truetype/ttdriver.c (Set_Char_Sizes): Changing computation of - pixel size from character size to use rounding. This is an - experiment to see whether this gives values similar to Windows for - scaled ascent/descent/etc. - - * src/base/ftcalc.c (FT_Div64by32): Changed the implementation - slightly since the original code was mis-compiled on Mac machines - using the MPW C compiler. - - * src/base/ftobjs.c (FT_Realloc): When a memory block was grown - through FT_Realloc(), the new bytes were not set to 0, which created - some strange bugs in the PostScript hinter. - (destroy_face): Don't deallocate unconditionally. - - * src/cid/cidgload.c (CID_Compute_Max_Advance, CID_Load_Glyph): - Adding support to new PostScript hinter. - - * include/freetype/internal/psglobal.h, - include/freetype/internal/pshints.h, - include/freetype/config/ftmodule.h, src/pshinter/Jamfile, - src/pshinter/pshalgo.h, src/pshinter/pshalgo1.h, - src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.h, - src/pshinter/pshalgo2.c, src/pshinter/pshglob.h, - src/pshinter/pshglob.c, src/pshinter/pshinter.c, - src/pshinter/pshmod.c, src/pshinter/pshmod.h, src/pshinter/pshrec.c, - src/pshinter/pshrec.h: Adding new PostScript hinter module. - - * include/freetype/internal/ftobjs.h, - include/freetype/internal/internal.h, - include/freetype/internal/psaux.h, - include/freetype/internal/t1types.h, src/psaux/psobjs.c, - src/psaux/psobjs.h, src/psaux/t1decode.h, src/psaux/t1decode.c, - src/type1/t1driver.c, src/type1/t1gload.c, src/type1/t1objs.c, - src/type1/t1objs.h: Updates to use the new PostScript hinter. - - * tests/Jamfile, tests/gview.c: Adding a new glyph hinting - viewer/debugger to the source tree. Note that you will _not_ be - able to compile it since it depends on an unavailable graphics - library named `Nirvana' to render vector images. - -2001-10-17 David Turner - - - * Version 2.0.5 released. - ========================= - - - * include/freetype/freetype.h, include/internal/ftobjs.h, - src/base/ftobjs.c, src/type1/t1driver.c: Adding a new function named - 'FT_Get_Postscript_Name' to retrieve the PostScript name of a given - font. Should work with all formats except pure CFF/CEF fonts (this - will be added soon). - - * src/cid/cidriver (cid_get_postscript_name): New function. - (CID_Get_Interface): Handle `postscript_name' interface. - - * src/sfnt/sfdriver.c (get_sfnt_postscript_name): New function. - (SFNT_Get_Interface): Handle `postscript_name' interface. - - * src/type1/t1driver.c (t1_get_ps_name): New function. - (Get_Interface): Handle `postscript_name' interface. - - * README, docs/CHANGES: Updated for 2.0.5 release. - -2001-10-08 David Turner - - Fixed a bug in `glnames.py' that prevented it from generating - correct glyph names tables. This resulted in the unavailability of - certain glyphs like `Cacute', `cacute' and `lslash' in Unicode - charmaps, even if these were present in the font (causing problems - for Polish users). - - * src/tools/glnames.py (mac_standard_names): Fixed. - (t1_standard_strings): Some fixes and renamed to ... - (sid_standard_names): This. - (t1_expert_encoding): Fixed. - (the_adobe_glyph_list): Renamed to ... - (adobe_glyph_names): This. - (the_adobe_glyphs): Renamed to ... - (adobe_glyph_values): This. - (dump_mac_indices, dump_glyph_list, dump_unicode_values, main): - Updated. - * src/psnames/pstables.h: Regenerated. - * src/psnames/psmodule.c (PS_Unicode_Value): Fix offset. - Fix return value. - Use `sid_standard_table' and `ps_names_to_unicode' instead of - `t1_standard_glyphs' and `names_to_unicode'. - (PS_Macintosh_Name): Use `ps_glyph_names' instead of - `standard_glyph_names'. - (PS_Standard_Strings): Use `sid_standard_names' instead of - `t1_standard_glyphs'. - - * doc/BUGS, doc/TODO: New documents. - -2001-10-07 Richard Barber - - * src/cache/ftlru.c (FT_Lru_Lookup_Node): Fixed a bug that prevented - correct LRU behaviour. - -2001-10-07 David Turner - - setjmp() and longjmp() are now used for rollback (i.e. when memory - pool overflow occurs). - - Function names are now all uniformly prefixed with `gray_'. - - * src/smooth/ftgrays.c: Include . - (ErrRaster_MemoryOverflow): New macro. - (TArea): New type to store area values in each cell (using `int' was - too small on 16-bit systems). is included to properly - get the needed data type. - (TCell, TRaster): Use it. - (TRaster): New element `jump_buffer'. - (gray_compute_cbox): Use `RAS_ARG' as the only parameter and get - `outline' from it. - (gray_record_cell): Use longjmp(). - (gray_set_cell): Use gray_record_cell() for error handling. - (gray_render_line, gray_render_conic, gray_render_cubic): Simplify. - (gray_convert_glyph_inner): New function, using setjmp(). - (gray_convert_glyph): Use it. - -2001-10-07 David Turner - - Provide a public API to manage multiple size objects for a given - FT_Face in the new header file `ftsizes.h'. - - * include/freetype/ftsizes.h: New header file, - * include/freetype/internal/ftobjs.h: Use it. - Remove declarations of FT_New_Size and FT_Done_Size (moved to - ftsizes.h). - * include/freetype/config/ftheader.h (FT_SIZES_H): New macro. - * src/base/ftobjs.c (FT_Activate_Size): New function. - * src/cache/ftcmanag.c: Include ftsizes.h. - (ftc_manager_init_size, ftc_manager_flush_size): Use - FT_Activate_Size. - -2001-09-20 Detlef Würkner - - * builds/amiga/*: Added port to Amiga with the SAS/C compiler. - -2001-09-15 Detlef Würkner - - * src/type1/t1afm.c (T1_Done_AFM): Free `afm'. - -2001-09-10 Yao Zhang - - * src/sfnt/ttcmap.c (code_to_index2): Handle code values with - hi-byte == 0 correctly. - -2001-09-10 Werner Lemberg - - * builds/link-std.mk ($(PROJECT_LIBRARY)): Fix typo. - -2001-08-30 Martin Muskens - - * src/type1/t1load.c (parse_font_matrix): A new way to compute the - units per EM with greater accuracy (important for embedded T1 fonts - in PDF documents that were automatically generated from TrueType - ones). - - * src/type1/t1load.c (is_alpha): Now supports `+' in font names; - this is used in embedded fonts. - - * src/psaux/psobjs.c (PS_Table_Add): Fixed a reallocation bug that - generated a dangling pointer reference. - -2001-08-30 Anthony Feik - - * src/type1/t1afm.c (T1_Read_Afm): Now correctly sets the flag - FT_FACE_FLAG_KERNING when appropriate for Type1 + AFM files. - -2001-08-25 Werner Lemberg - - * src/sfnt/ttload.c (TT_Load_CMap): Fix frame length of - `cmap_rec_fields'. - - * include/freetype/fterrors.h [!FT_CONFIG_OPTION_USE_MODULE_ERRORS]: - Undefine FT_ERR_BASE before defining again. - -2001-08-22 Werner Lemberg - - * src/truetype/ttinterp.h: Fix prototype of TT_Move_Func. - -2001-08-21 Werner Lemberg - - * builds/dos/dos-def.mk (NO_OUTPUT): Don't use `&>' but `>'. - -2001-08-21 David Turner - - * include/freetype/config/ftoption.h: Changed the default setting - for FT_CONFIG_OPTION_USE_MODULE_ERRORS to undefined, since it breaks - source compatibility in a few cases. Updated the comment to explain - that too. - -2001-08-17 Martin Muskens - - * src/base/ftcalc.c (FT_MulDiv): Fixed serious typo. - -2001-08-12 Werner Lemberg - - Updating to OpenType 1.3. - - * include/freetype/internal/tttypes.h (TT_CMap0, TT_CMap2, TT_CMap4, - TT_CMap6): Adding field `language'. - (TT_CMapTable): Removing field `language'. - Type of `length' field changed to FT_ULong. - Adding fields for cmaps format 8, 10, and 12. - (TT_CMapGroup): New auxiliary structure. - (TT_CMap8_12, TT_CMap10): New structures. - * include/freetype/tttables.h (TT_HoriHeader, TT_VertHeader): - Removed last element of `Reserved' array. - * include/freetype/ttnameid.h (TT_PLATFORM_CUSTOM, TT_MS_ID_UCS_4, - TT_NAME_ID_CID_FINDFONT_NAME): New macros. - - * src/sfnt/ttcmap.c (TT_CharMap_Load): Updated loading of `language' - field to the new structures. - Fixed freeing of arrays in case of unsuccessful loads. - Added support for loading format 8, 10, and 12 cmaps. - (TT_CharMap_Free): Added support for freeing format 8, 10, and 12 - cmaps. - (code_to_index4): Small improvement. - (code_to_index6): Ditto. - (code_to_index8_12, code_to_index10): New functions. - * src/sfnt/ttload.c (TT_Load_Metrics_Header): Updated to new - structure. - (TT_Load_CMap): Ditto. - - * src/sfnt/sfobjs.c (tt_encodings): Add MS UCS4 table (before MS - Unicode). - -2001-08-11 Werner Lemberg - - * src/type1/t1driver.c (t1_get_name_index): Fix compiler warning. - -2001-08-09 Tom Kacvinsky - - * src/cff/cffdrivr.c (get_cff_glyph_name): Renamed to - cff_get_glyph_name for consistency. - - (cff_get_glyph_index): Minor documentation change. - - * src/type1/t1driver.c (t1_get_name_index): New function used in - Get_Interface as the function returned when the `name_index' - function is requested. - - (get_t1_glyph_name): Renamed to t1_get_glyph_name for consistency. - -2001-08-08 Tom Kacvinsky - - * src/cff/cffload.c: Removed definitions of cff_isoadobe_charset, - cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, - and cff_expert_encoding arrays to cffload.h. - - * src/cff/cffload.h: Added definitions of cff_isoadobe_charset, - cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, - and cff_expert_encoding arrays. - - * src/cff/cffdrivr.c (cff_get_name_index): New function, returned - when `cff_get_interface' is called with a request for the - `name_index' function. - - (cff_get_interface): Modified so that it returns the function - `cff_get_name_index' when the `name_index' function is requested. - - * src/base/ftobjs.c (FT_Get_Name_Index): New function, used to - return a glyph index for a given glyph name only if the driver - supports glyph names. - - * include/freetype/internal/ftobjs.h (FT_Name_Index_Requester): - New function pointer type definition used in the function - FT_Get_Name_Index. - - * include/freetype/freetype.h (FT_Get_Name_Index): Added - documentation and prototype. - -2001-07-26 Werner Lemberg - - * builds/cygwin/*: Removed. Use the unix stuff instead. - -2001-07-26 Jouk Jansen - - * builds/vms/ftconfig.h (FT_CALLBACK_DEF): Updated to change dated - 2001-06-27. - -2001-07-17 Werner Lemberg - - * include/freetype/internal/psaux.h (PS_Table): Use FT_Offset for - `cursor' and `capacity'. - * src/psaux/psobjc.c (reallocate_t1_table): Use FT_Long for second - parameter. - (PS_Table_Add): Use FT_Offset for `new_size'. - - Add support for version 0.5 maxp tables. - - * src/sfnt/ttload.c (TT_Load_MaxProfile): Implement it. - (TT_Load_OS2): Initialize some values. - -2001-07-13 Werner Lemberg - - * src/base/ftsynth.c: Include ftcalc.h unconditionally. - -2001-07-07 David Turner - - * src/truetype/ttgload.c, src/truetype/ttinterp.c, src/pcf/pcfread: - Removed pedantic compiler warnings when the bytecode interpreter is - compiled in. - -2001-07-03 Werner Lemberg - - * src/autohint/ahhint.c (ah_hinter_align_weak_points): Remove - unused variable `edges'. - (ah_hinter_load): Remove unused variables `old_width' and - `new_width'. - * src/cid/cidload.c (cid_decrypt): Use `U' for constant (again). - * src/psaux/psobjs.c (T1_Decrypt): Ditto. - * src/type1/t1parse.c (T1_Get_Private_Dict): Ditto. - -2001-06-28 David Turner - - * include/internal/ftstream.h: Modified the definitions - of the FT_GET_XXXX and NEXT_XXXX macros for 16-bit correctness. - -2001-06-26 Werner Lemberg - - * src/cid/cidload.c, src/cid/cidload.h (cid_decrypt): Use FT_Offset - instead of FT_Int as type for `length' parameter. - * include/freetype/internal/psaux.h (PSAux_Interface): Updated. - -2001-06-27 Wolfgang Domröse - - * src/psaux/psobjs.c, src/psaux/psobjs.h (T1_Decrypt): Use FT_Offset - instead of FT_Int as type for `length' parameter. - - - * Version 2.0.4 released. - ========================= - - -2001-06-27 David Turner - - * builds/unix/ftconfig.in: Changed the definition of the - FT_CALLBACK_DEF macro. - - * include/freetype/ftconfig.h, src/*/*.c: Changed the definition and - use of the FT_CALLBACK_DEF macro in order to support 16-bit - compilers. - - * builds/unix/ftconfig.in: Changed the definition of the - FT_CALLBACK_DEF macro. - - * src/sfnt/ttload.c (TT_Load_Kern): The kern table loader now ensures - that the kerning table is correctly sorted (some problem fonts don't - have a correct kern table). - -2001-06-26 Wolfgang Domröse - - * include/freetype/internal/ftstream.h (FT_GET_OFF3_LE): Fix typo. - -2001-06-24 David Turner - - * src/base/ftcalc.c (ft_div64by32): Fixed the source to work - correctly on 16-bit systems. - -2001-06-23 Anthony Fok - - * debian/*: Added Debian package build directory for 2.0.4. - -2001-06-22 David Turner - - * docs/PATENTS: Added patents disclaimer. This one was missing! - - * docs/CHANGES, docs/todo: Updated for the upcoming 2.0.4 release. - -2001-06-20 Werner Lemberg - - * include/freetype/config/ftconfig.h: Add two more `L's to - constants. - Add missing semicolons. - - * builds/toplevel.mk: Do similar change as for - builds/unix/detect.mk. - - * include/freetype/freetype.h (FT_ENC_TAG): New version to make it - easier to redefine. - * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. - - * src/pcf/pcfread.c (pcf_get_encodings): Add cast. - -2001-06-19 David Turner - - * builds/win32/visualc/freetype.dsp, builds/win32/visualc/index.html: - Updated the Visual C++ project (for the 2.0.4 release). - - * builds/unix/detect.mk: Added rule for AIX detection (which uses - /usr/sbin/init instead of /sbin/init). - - * include/freetype/fterrors.h, src/*/*err*.h: Updated some of the - error macros to simplify handling of new error scheme. - -2001-06-19 Werner Lemberg - - * include/freetype/fttypes.h (FT_ERROR_MODULE): New macro. - -2001-06-19 David Turner - - Removing _lots_ of compiler warnings when the most pedantic warning - levels of Visual C++ and Borland C++ are used. Too many files to be - listed here, but FT2 now compiles without warnings with VC++ and the - `/W4' warning level (lint-style). - - * include/freetype/freetype.h (FT_New_Memory_Face): Updated - documentation. - * include/freetype/fttypes.h (FT_BOOL): New macro. - * include/freetype/internal/ftdebug.h: Add #pragma for Visual C++ - to suppress warning. - * include/freetype/internal/ftstream.h (FT_GET_SHORT_{BE,LE}, - FT_GET_OFF3_{BE,LE}, FT_GET_LONG_{BE,LE}): New macros. - (NEXT_*): Use them. - * src/autohint/ahglobal.c: Include FT_INTERNAL_DEBUG_H. - (FT_New_Memory_Face): Add `const' to function declaration. - -2001-06-18 Werner Lemberg - - Minor cleanups to remove compiler warnings. - - * include/freetype/cache/ftcmanag.h (FTC_MAX_BYTES_DEFAULT): Use - `L' for constant. - * include/freetype/config/ftoption.h (FT_RENDER_POOL_SIZE): Ditto. - * src/base/ftcalc.c (FT_MulDiv): Use `L' for constant. - * src/base/ftglyph.c (FT_Glyph_Get_CBox): Remove `error' variable. - * src/base/fttrigon.c (ft_trig_arctan_table): Use `L' for constants. - * src/base/ftobjs.c (FT_Done_Size): Fix return value. - (FT_Set_Char_Size, FT_Set_Pixel_Sizes, FT_Get_Kerning): Remove - unused `memory' variable. - * src/autohint/ahglyph.c (ah_get_orientation): Use `L' for constant. - * src/autohint/ahhint.c (ah_hint_edges_3, - ah_hinter_align_edge_points): Remove unused `before' and `after' - variables. - (ah_hinter_align_weak_points): Remove unused `edge_limit' variable. - (ah_hinter_load): Remove unused `new_advance', `start_contour', - and `metrics' variables. - * src/cff/cffload.c (CFF_Load_Encoding): Remove dead code to avoid - compiler warning. - * src/cff/cffobjs.c (CFF_Init_Face): Remove unused `base_offset' - variable. - * src/cff/cffgload.c (CFF_Parse_CharStrings): Remove unused - `outline' variable. - (cff_compute_bias): Use `U' for constant. - * src/cid/cidload.c (cid_decrypt): Ditto. - * src/psaux/psobjs.c (T1_Decrypt): Ditto. - * src/psaux/t1decode.c (T1_Decoder_Parse_CharStrings): Ditto. - * src/sfnt/ttload.c (TT_Load_Kern): Remove unused `version' - variable. - * src/sfnt/ttsbit.c (TT_Load_SBit_Image): Remove unused `top' - variable. - * src/truetype/ttgload.c (load_truetype_glyph): Remove unused - `num_contours' and `ins_offset' variables. - (compute_glyph_metrics): Remove unused `Top' and `x_scale' - variables. - (TT_Load_Glyph): Remove unused `memory' variable. - * src/smooth/ftgrays.c (grays_raster_render): Use `L' for constants. - -2001-06-18 Werner Lemberg - - Make the new error scheme source compatible with older FT versions - by introducing another layer. - - * include/freetype/fterrors.h (FT_ERRORDEF_, FT_NOERRORDEF_): New - macros. - (FT_NOERRORDEF): Removed. - * include/*/*err*.h: Use FT_ERRORDEF_ and FT_NOERRORDEF_. - -2001-06-16 Werner Lemberg - - * include/freetype/freetype.h (FT_ENC_TAG): New macro. - (FT_Encoding_): Use it. - * include/freetype/ftimage.h (FT_IMAGE_TAG): Define it - conditionally. - -2001-06-14 David Turner - - Modified the TrueType interpreter to let it use the new - trigonometric functions provided in `fttrigon.h'. This gets rid of - some old 64-bit computation routines, as well as many warnings when - compiling the library with the `long long' 64-bit integer type. - - * include/freetype/config/ftoption.h: Undefine - FT_CONFIG_OPTION_OLD_CALCS. - * include/freetype/internal/ftcalc.h: Rearrange use of - FT_CONFIG_OPTION_OLD_CALCS. - * src/base/ftcalc.c: Add declaration of FT_Int64 if - FT_CONFIG_OPTION_OLD_CALCS isn't defined. - * src/truetype/ttinterp.c: Use FT_TRIGONOMETRY_H. - (Norm): Add a special version if FT_CONFIG_OPTION_OLD_CALCS isn't - defined. - (Current_Ratio, Normalize): Simplify code. - -2001-06-11 Mike Owens - - * src/base/ftcalc.c (FT_MulDiv, FT_DivFix, FT_Sqrt64): Remove - compiler warnings. - -2001-06-08 Werner Lemberg - - * builds/unix/configure.in: Renamed to ... - * builds/unix/configure.ac: This to make sure that autoconf 2.50 is - needed. - Run `autoupdate' on it. - Increase `version_info' to 7:0:1. - * builds/unix/configure: Regenerated. - -2001-06-08 David Turner - - * src/autohint/ahhint.c (ah_hinter_load_glyph): Fixed a bug that - corrupted transformed glyphs that were auto-hinted (the transform - was applied twice). - - Fixed a bug that returned an invalid linear width for composite - TrueType glyphs. - - * include/internal/tttypes.h (TT_Loader_): Two new elements `linear' - and `linear_def'. - * src/truetype/ttgload.c (load_truetype_glyph, - compute_glyph_metrics): Use it. - - * include/fttypes.h (FT_ERROR_BASE): New macro. - * src/base/ftobjs.c (FT_Open_Face, FT_Render_Glyph_Internal): Use it - to make source code work with the new error scheme implemented by - Werner. - * src/base/ftoutln.c (FT_Outline_Render): Ditto. - -2001-06-07 Werner Lemberg - - Updating to libtool 1.4.0 and autoconf 2.50. - - * builds/unix/ltconfig: Removed. - * builds/unix/ltmain.sh, builds/unix/configure.in, - builds/unix/aclocal.m4: Updated. - * builds/unix/configure: Regenerated. - -2001-06-06 Werner Lemberg - - Complete redesign of error codes. Please check ftmoderr.h for more - details. - - * include/freetype/internal/cfferrs.h, - include/freetype/internal/tterrors.h, - include/freetype/internal/t1errors.h: Removed. Replaced with files - local to the module. All extra error codes have been moved to - `fterrors.h'. - - * src/sfnt/ttpost.h: Move error codes to `fterrors.h'. - - * src/autohint/aherrors.h, src/cache/ftcerror.h, src/cff/cfferrs.h, - src/cid/ciderrs.h, src/pcf/pcferror.h, src/psaux/psauxerr.h, - src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h, - src/smooth/ftsmerrs.h, src/truetype/tterrors.h, - src/type1/t1errors.h, src/winfonts/fnterrs.h: New files defining the - error names for the module it belongs to. - - * include/freetype/ftmoderr.h: New file, defining the module error - offsets. Its structure is similar to `fterrors.h'. - - * include/freetype/fterrors.h (FT_NOERRORDEF): New macro. - (FT_ERRORDEF): Redefined to use module error offsets. - All internal error codes are now public; unused error codes have - been removed, some are new. - - * include/freetype/config/ftheader.h (FT_MODULE_ERRORS_H): New - macro. - * include/freetype/config/ftoption.h - (FT_CONFIG_OPTION_USE_MODULE_ERRORS): New macro. - - All other source files have been updated to use the new error codes; - some already existing (internal) error codes local to a module have - been renamed to give them the same name as in the base module. - - All make files have been updated to include the local error files. - -2001-06-06 Werner Lemberg - - * src/cid/cidtokens.h: Replaced with... - * src/cid/cidtoken.h: This file for 8+3 consistency. - - * src/raster/ftraster.c: Use macros for header file names. - - * src/include/freetype/tttables.h (TT_HoriHeader_, TT_VertHeader_): - Fix length of `Reserved' array. Note that this isn't the real fix - since recent OpenType specs have introduced a `CaretOffset' field - instead of the first reserved byte. - -2001-05-29 Werner Lemberg - - * INSTALL: Minor fixes. - - - * Version 2.0.3 released. - ========================= - - -2001-05-29 David Turner - - * INSTALL, docs/CHANGES: Updated. - -2001-05-25 David Turner - - Moved several documents from the top-level to the `docs' directory. - - * src/base/ftcalc.c (FT_DivFix): Small fix to return value. - -2001-05-16 David Turner - - * src/truetype/ttgload.c (load_truetype_glyph): Fixed a bug in the - composite loader. Spotted by Keith Packard. - * src/base/ftobjs.c (FT_GlyphLoader_Check_Points, - FT_GlyphLoader_Check_Subglyphs): Ditto. - -2001-05-14 David Turner - - Fixed the incorrect blue zone computations, and improved the - composite support. Note that these changes result in improved - rendering, while sometimes introducing their own artefacts. This is - probably the last big change to the autohinter before the - introduction of a complete replacement. - - * src/autohint/ahglobal.c (sort_values): Fix loop. - * src/autohint/ahglyph.c: Removed some obsolete code. - (ah_outline_compute_edges): Modify code to set the ah_edge_round - flag. - (ah_outline_compute_blue_edges): Add code to compute active blue - zones. - * src/autohint/ahhint.c (ah_hinter_glyph_load): Change load_flags - value. - - * src/base/ftcalc.c (FT_DivFix): Fixed a bug in the 64-bit code that - created incorrect scale factors! - (FT_Round_Fix, FT_CeilFix, FT_FloorFix): Minor improvements. - -2001-05-12 Werner Lemberg - - * include/freetype/ftbbox.h: FTBBOX_H -> __FTBBOX_H__. - * include/freetype/fttrigon.h: __FT_TRIGONOMETRY_H__ -> - __FTTRIGON_H__. - Include FT_FREETYPE_H. - Beautified; added copyright. - * src/base/fttrigon.c: Beautified; added copyright. - -2001-05-11 David Turner - - * src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c - (parse_font_matrix), src/type1/t1load.c (parse_font_matrix): Fixed - the incorrect EM size computation. - - * include/freetype/fttrigon.h, src/base/fttrigon.c: New files, - adding trigonometric functions to the core API (using Cordic - algorithms). - * src/base/ftbase.c, src/base/Jamfile, src/base/rules.mk: Use them. - - * builds/newline: New file. - * builds/top_level.mk, builds/detect.mk: Use it. This fixes - problems with Make on Windows 2000, as well as problems when `make - distclean' is invoked on a non-Unix platform when there is no - `config.mk' in the current directory. - - * builds/freetype.mk: Fixed a problem with object deletions under - Dos/Windows/OS/2 systems. - - Added new directory to hold tools and test programs. - - * docs/docmaker.py, docs/glnames.py: Moved to... - * src/tools/docmaker.py, src/tools/glnames.py: This place. - * src/tools/cordic.py: New file used to compute arctangent table - needed by fttrigon.c. - * src/tools/test_bbox.c, src/tools/test_trig.c: New test files. - - * src/tools/docmaker.py: Improved the script to add the current date - at the footer of each web page (useful to distinguish between - versions). - - * Jamfile: Fixed incorrect HDRMACRO argument. - - * TODO: Removed the cubic arc bbox computation note, since it has been - fixed recently. - * src/base/ftbbox.c (test_cubic_zero): Renamed to... - (test_cubic_extrema): This function. Use `UL' for unsigned long - constants. - - * include/freetype/t1tables.h, include/freetype/config/ftoption.h: - Formatting. - -2001-05-10 David Turner - - * src/base/ftobjs.c (FT_Open_Face): Fixed a small memory leak - which happened when trying to open 0-size font files! - -2001-05-09 Werner Lemberg - - * include/freetype/internal/ftcalc.h: Move declaration of - FT_SqrtFixed() out of `#ifdef FT_LONG64'. - -2001-05-08 Francesco Zappa Nardelli - - * src/pcfdriver.c (PCF_Load_Glyph): Fixed incorrect bitmap width - computation. - -2001-05-08 David Turner - - * docs/docmaker.py: Updated the DocMaker script in order to add - command line options (--output,--prefix,--title), fix the erroneous - line numbers reported during errors and warnings, and other - formatting issues. - - * src/base/ftcalc.c (FT_MulDiv, FT_MulFix, FT_DivFix): Various tiny - fixes related to rounding in 64-bits routines and - pseudo-`optimizations'. - -2001-04-27 David Turner - - * src/base/ftbbox.c (BBox_Cubic_Check): Fixed the coefficient - normalization algorithm (invalid final bit position, and invalid - shift computation). - -2001-04-26 Werner Lemberg - - * builds/unix/config.guess, builds/unix/config.sub: Updated to - latest versions from gnu.org. - - * builds/compiler/gcc-dev.mk: Add `-Wno-long-long' flag. - - * include/freetype/internal/ftcalc.h: Define FT_SqrtFixed() - unconditionally. - * src/base/ftbbox.c: Include FT_INTERNAL_CALC_H. - Fix compiler warnings. - * src/base/ftcalc.c: Fix (potential) compiler warnings. - -2001-04-26 David Turner - - * src/base/ftcalc.c (FT_SqrtFixed): Corrected/optimized the 32-bit - fixed-point square root computation. It is now used even with - 64-bits integers, as it is _much_ faster than calling FT_Sqrt64 :-) - - * src/base/ftbbox.c: Removed invalid `#include FT_BEZIER_H' line. - -2001-04-25 David Turner - - * src/base/ftbbox.c (BBox_Cubic_Check): Rewrote function to use - direct computations with 16.16 values instead of sub-divisions. It - is now slower, but proves a point :-) - - * src/raster/ftraster.c, src/smooth/ftgrays.c, src/base/ftbbox.c: - Fixed the Bézier stack depths. - - * src/base/ftcalc.c (FT_MulFix): Minor rounding fix. - - * builds/beos: Added BeOS-specific files to the old build system - (no changes were necessary to support BeOS in the Jamfile though). - -2001-04-20 David Turner - - * ftconfig.h, ftoption.h: Updated `ftconfig.h' to detect 64-bit int - types on platforms where Autoconf is not available). Also removed - FTCALC_USE_LONG_LONG and replaced it with - FT_CONFIG_OPTION_FORCE_INT64. - - * builds/win32/freetype.dsp: Updated the Visual C++ project file. - Doesn't create a DLL yet. - - * cffgload.c: Removed a compilation warning. - -2001-04-10 Tom Kacvinsky - - * t1load.c (parse_charstrings): Changed code for placing .notdef - glyph into slot 0 so that we no longer have a memory access - violation. - - * t1load.h: In structure T1_Loader, added swap_table (of type - PS_Table) to facilitate placing the .notdef glyph into slot 0. - -2001-04-10 Francesco Zappa Nardelli - - * src/pcf/pcfdriver.c (PCF_Get_Char_Index): Fix return value. - -2001-04-09 Laurence Withers - - * builds/dos/detect.mk: Add support for bash. - -2001-04-05 Werner Lemberg - - * builds/os2/*.mk: These files have been forgotten to update to - the structure of similar makefiles. - * builds/dos/*.mk: Ditto. - * builds/ansi/*.mk: Ditto. - - * builds/win32/win32-def.mk (BUILD): Fix typo. - - * builds/compiler/*.mk (CLEAN_LIBRARY): Don't use NO_OUTPUT. - This is already used in the link_*.mk files. - -2001-04-03 Werner Lemberg - - * src/*/Jamfile: Slight changes to make files more cryptic. - -2001-04-03 Werner Lemberg - - * Jamfile, src/Jamfile, src/*/Jamfile: Formatted. Slight changes - to give files identical structure. - -2001-04-02 Werner Lemberg - - * CHANGES: Reformatted, minor fixes. - * TODO: Updated. - * README: Formatting. - * include/freetype/freetype.h: Formatting. - - * Jamfile: Fix typo. - - * src/cff/cffparse.c: Move error code #defines to... - * include/freetype/internal/cfferrs.h: This file. - * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffload.c: Replaced - `FT_Err_*' with `CFF_Err_*'. - * src/cid/cidparse.c: Replaced `FT_Err_*' with `T1_Err_*'. - * src/psaux/psobjs.c, src/psaux/t1decode.c: Ditto. - * src/sfnt/sfobcs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with - `TT_Err_*'. - * src/truetype/ttgload.c, src/truetype/ttobjs.c: Ditto. - * src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1objs.c, - src/type1/t1parse.c: Replaced `FT_Err_*' with `T1_Err_*'. - - * include/freetype/internal/cfferrs.h: Add - `CFF_Err_Unknown_File_Format'. - * include/freetype/internal/t1errors.h: Add - `T1_Err_Unknown_File_Format'. - * include/freetype/internal/tterrors.h: Add - `TT_Err_Unknown_File_Format'. - - * src/cff/cffload.h: Add `cff_*_encoding' and `cff_*_charset' - references. - * src/psaux/psobjs.c: Include `FT_INTERNAL_TYPE1_ERRORS_H'. - - * src/cff/cffobjs.c (CFF_Init_Face, CFF_Done_Face): Use - FT_LOCAL_DEF. - * src/cid/cidobjs.c (CID_Done_Driver): Ditto. - * src/trutype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): - Ditto. - * src/type1/t1objs.c (T1_Done_Driver): Ditto. - * src/pcf/pcfdriver.c (PCF_Done_Face): Ditto. - * src/pcf/pcf.h: Use FT_LOCAL for `PCF_Done_Face'. - -2001-04-02 Tom Kacvinsky - - * src/sfnt/ttload.c (TT_Load_Metrics): Fix an improper pointer - dereference. Submitted by Herbert Duerr . - -2001-03-26 Tom Kacvinsky - - * include/freetype/config/ftconfig.h: Changed hexadecimal - constants to use suffix U to avoid problems with HP-UX's c89 - compiler. Submitted by G.W. Lucas . - -2001-03-24 David Turner - - * Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles to - the source tree. See www.freetype.org/jam/index.html for details. - - - * Version 2.0.2 released. - ========================= - - -2001-03-20 Werner Lemberg - - * builds/win32/detekt.mk: Fix .PHONY target for Intel compiler. - -2001-03-20 David Turner - - * include/freetype/config/ftheader.h, include/freetype/ftsnames.h: - Renamed `ftnames.h' to `ftsnames.h', and FT_NAMES_H to - FT_SFNT_NAMES_H. - - * docs/docmaker.py: Added generation of INDEX link in table of - contents. - - * INSTALL, docs/BUILD: Updated documentation to indicate that the - compilation process has changed slightly (no more `src' required in - the include path). - - * builds/*/*-def.mk: Changed the objects directory from `obj' to - `objs'. - - * include/freetype/config/ftheader.h: Removed obsolete macros like - FT_SOURCE_FILE, etc. and added cache-specific macro definitions that - were previously defined in . Added comments to - be included in a new API Reference section. - - * src/*/*: Removed the use of FT_SOURCE_FILE, etc. Now, each - component needs to add its own directory to the include path at - compile time. Modified all `rules.mk' and `descrip.mms' - accordingly. - -2001-03-20 Werner Lemberg - - * builds/unix/configure.in: Add $ft_version. - * builds/unix/freetype-config.in: Use it. - * builds/unix/configure: Updated. - -2001-03-19 Tom Kacvinsky - - * src/type1/t1load.c (parse_font_matrix): Assign the units per em - value an unsigned short value, first by shifting right 16 bits, - then by casting the results to FT_UShort. - - * src/cff/cffparse.c (cff_parse_font_bbox): Assign the units per em - value an unsigned short value, first by shifting right 16 bits, - then by casting the results to FT_UShort. - -2001-03-17 David Turner - - * src/cid/cidobjs.c, src/cid/cidload.c, src/pcf/pcfread.c, - src/type1/t1load.c, src/type1/t1objs.c: Added a few casts to remove - compiler warnings in pedantic modes. - - * include/config/ft2build.h, include/config/ftheader.h: The file - `ft2build.h' was renamed to `ftheader.h' to avoid conflicts with the - top-level . - - * include/config/ftheader.h: Added new section describing the #include - macros. - -2001-03-17 Tom Kacvinsky - - * src/cff/cffparse.c (cff_parse_font_bbox): Obtain rounded FT_Fixed - values for the bounding box numbers. - - * src/cff/cffobjs.c (CFF_Init_Face): When processing a CFF/CEF font, - set `root->ascender' (`root->descender') to the integer part of - `root->bbox.yMax' (`root->bbox.yMin', respectively). - -2001-03-16 Tom Kacvinsky - - * src/cff/cffdrivr.c (get_cff_glyph_name): New function. Used in - cff_get_interface to facilitate getting a glyph name for glyph index - via FT_Get_Glyph_Name(). - - (cff_get_interface): Added support for getting a glyph name via the - `glyph_name' module interface. Uses the new function - get_cff_glyph_name(). - Submitted by Sander van der Wal . - - * src/cff/cffobjs.c (CFF_Init_Face): Logical or the face flags with - FT_FACE_FLAG_GLYPH_NAMES only if FT_CONFIG_OPTION_NO_GLYPH_NAMES is - not defined. This is to add support for getting a glyph name from a - glyph index via FT_Get_Glyph_Name(). - Submitted by Sander van der Wal . - - * src/cff/cffgload.c (CFF_Parse_CharStrings): Added support for - deprecated operator `dotsection'. - Submitted by Sander van der Wal . - -2001-03-12 Werner Lemberg - - * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Fix error - messages. - - * INSTALL, docs/BUILD: We need GNU make 3.78.1 or newer. - -2001-03-12 Tom Kacvinsky - - * include/freetype/internal/psaux.h: Changed the lenIV member of - the T1_Decoder_ struct to be an FT_Int instead of an FT_UInt. - - * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Adjust - for lenIV seed bytes at the start of a decrypted subroutine. - - * src/cid/cidload.c (cid_read_subrs): Decrypt subroutines only - if lenIV >= 0. - - * src/cid/cidgload.c (cid_load_glyph): Decrypt charstrings only - if lenIV >= 0. - -2001-03-11 Werner Lemberg - - * TODO: Updated. - - * src/pcf/pcfread.c: Put READ_Fields() always in a conditional to - avoid compiler warnings. - -2001-03-10 Tom Kacvinsky - - * TODO: New file. - - * include/freetype/freetype.h: Added prototypes and notes for - three new functions: FT_RoundFix, FT_CeilFix, and FT_FloorFix. - * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_FloorFix): Added - implementation code. - - * src/cid/cidobjs.c (CID_Init_Face): Use calculated units_per_EM, - and if that is not available, default to 1000 units per EM. Changed - assignment code for ascender and descender values. - * src/cid/cidload.c (parse_font_matrix): Added units_per_EM - processing. - (parse_font_bbox): Changed to use FT_Fixed number handling. - - * src/type1/t1objs.c (T1_Init_Face): Changed the assignment code - for ascender, descender, and max_advance_width. - * src/type1/t1load.c (parse_font_bbox): Changed to use FT_Fixed - number handling. - -2001-03-10 Henrik Grubbström - - * src/*/*.c: Added many casts to make code more 64bit-safe. - -2001-03-07 Werner Lemberg - - * INSTALL, docs/BUILD: We need GNU make 3.78 or newer. - -2001-03-07 Tom Kacvinsky - - * src/type1/t1objs.c (T1_Init_Face): Minor correction: We must wait - until parse_font_bbox is changed before we use logical shift rights - in the assignments of `root->ascender', `root->descender', and - `root->max_advance_width'. - - (T1_Done_Face): Free `char_name' table to avoid a memory leak. - Submitted by Sander van der Wal . - -2001-03-05 Tom Kacvinsky - - * src/cff/cffgload.c (CFF_Load_Glyph): Set glyph control data to the - the Type 2 glyph charstring (used by conversion programs). - Submitted by Ha Shao . - -2001-03-04 Antoine Leca - - * include/freetype/ttnameid.h: Correct a stupid typo which prevented - correct compilation (TT_MS_LANGID_TIGRIGNA_ETHIOPIA appeared twice). - -2001-03-04 Werner Lemberg - - * src/autohint/ahtypes.h (AH_Hinter): Add elements - `disable_horz_edges', `disable_vert_edges'. - * src/autohint/ahhint.c (ah_hint_edges_3, ah_hinter_hint_edges): Use - them (and remove static variables with the same names). - * src/pcf/pcfutil.c (BitOrderInvert): Add `const'. - * docs/glnames.py: Updated to latest pstables.h changes. - - * builds/unix/detect.mk: Add test for Hurd. - * builds/hurd/detect.mk: Removed. - -2001-03-04 Sander van der Wal - - * src/psnames/pstables.h: Add more `const'. - * src/pcf/pcfutil.c: Ditto. - -2001-03-04 Werner Lemberg - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixing typo - (FT_Glyph_Done -> FT_Done_Glyph). - -2001-03-01 Antoine Leca - - * include/freetype/ttnameid.h: Added some new Microsoft language - codes and LCIDs as found in Office Xp. - -2001-02-28 David Turner - - * builds/hurd/detect.mk: New file. Added support to detect the GNU - Hurd operating system as Unix-like. Fix submitted by Anthony Fok - . - - * src/type1/t1gload.c (T1_Load_Glyph): Set glyph control data to the - the Type 1 glyph charstring (used by conversion programs). - Submitted by Ha Shao . - -2001-02-22 David Turner - - * src/base/ftgrays.c (grays_sweep): The function didn't exit - immediately if `num_cells' was 0 as it should. Thanks to Boris for - finding this out. - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixed memory leak when - bitmap rendering fails (thanks to Graham Asher). - -2001-02-13 Werner Lemberg - - * docs/docmaker.py (DocSection::add_element): Use - `self.print_error()'. - - * builds/unix/config.{guess,sub}: Updated (from ftp.gnu.org). - -2001-02-13 David Turner - - * docs/docmaker.py, include/freetype/*.h: Updated the DocMaker - script to support chapters and section block ordering. Updated the - public header files accordingly. - - * src/base/ftglyph.c (FT_Glyph_Copy): Advance width and glyph format - were not correctly copied. - -2001-02-08 Tom Kacvinsky - - * src/cff/cffparse.c (cff_parse_font_matrix): Removed an - unnecessary fprintf( stderr, ... ). - -2001-02-07 Tom Kacvinsky - - * src/type1/t1objs.c (T1_Init_Face): Added code to get the - units_per_EM from the value assigned in parse_font_matrix, if - available. Default to 1000 if not available. - - * src/cff/cffparse.c (cff_parse_font_matrix): Added logic to get - the units_per_EM from the FontMatrix. - - (cff_parse_fixed_thousand): New function. Gets a real number from - the CFF font, but multiplies by 1000 (this is to avoid rounding - errors when placing this real number into a 16.16 fixed number). - - (cff_parse_real): Added code so that the integer part is moved - into the high sixteen bits of the 16.16 fixed number. - - * src/cff/cffobjs.c (CFF_Init_Face): Added logic to get the units - per EM from the CFF dictionary, if available. - - * include/freetype/internal/cfftypes.h: In struct CFF_Font_Dict_, - added a units_per_em member to facilitate passing of units_per_em - from function cff_parse_font_matrix. - - * src/type1/t1load.c (is_alpha): Make `-' a legal alphanumeric - character. This is so that font names with `-' are fully parsed, - etc... - -2001-02-02 Werner Lemberg - - * src/psaux/psobjs.c (shift_elements): Remove if clause (which is - obsolete now). - - (reallocate_t1_table, PS_Table_Done): Replace REALLOC() with ALLOC() - + MEM_Copy() to avoid a memory bug. - -2001-02-01 David Turner - - * docs/docmaker.py: Improved the index sorting routine to place - capital letters before small ones. Added the `' marker to - section blocks in order to give the order of blocks. - -2001-01-30 Antoine Leca - - * include/freetype/ttnameid.h: Latest updates to Microsoft language - ID codes. - -2001-01-24 Tom Kacvinsky - - * src/cff/t1load.c (parse_font_matrix): Added heuristic to get - units_per_EM from the font matrix. - - (parse_dict): Deleted test to see whether the FontInfo keyword has - been seen. Deletion of this test allows fonts without FontInfo - dictionaries to be parsed by the Type 1 driver. - - (T1_Open_Face): Deleted empty subroutines array test to make sure - fonts with no subroutines still are parsed. - -2001-01-17 Francesco Zappa Nardelli - - * src/pcfread.c (pcf_get_properties, pcf_get_metrics, - pcf_get_bitmaps): Fix compiler errors. - -2001-01-11 David Turner - - * src/pcf/pcfread.c: Removed some compilation warnings related - to comparison of signed vs. unsigned integers. - - * include/freetype/internal/ftdebug.h: Changed the debug trace - constants from trace_t2xxxx to trace_cffxxxx to be able to compile - the CFF driver in debug mode. - -2001-01-11 Matthew Crosby - - * builds/unix/freetype-config.in: Fix problems with separate - --prefix and --exec-prefix. - -2001-01-11 David Turner - - * docs/docmaker.py: Added cross-references generation as well as - more robust handling of pathname wildcard matching. - -2001-01-10 Werner Lemberg - - * docs/docmaker.py: Minor improvements to reduce unwanted spaces - and empty lines in output. - -2001-01-09 David Turner - - * docs/docmaker.py: Improved script to generate table of contents - and index pages. It also supports wildcards on non Unix systems. - - * include/freetype/*.h, include/freetype/cache/*.h: Updated comments - to include section definitions/delimitations for the API Reference - generator. - - * include/freetype/freetype.h: Moved declaration of - `FT_Generic_Finalizer' and the `FT_Generic' structure to... - * include/freetype/fttypes.h: here. - -2001-01-04 Werner Lemberg - - * include/freetype/ttnameid.h: Updated Unicode code range comments. - -2001-01-03 Tom Kacvinsky - - * src/cff/rules.mk: Use cffgload.{c,h} instead of t2gload.{c,h}. - - * include/freetype/internal/internal.h: Changed to use cfftypes.h - (cfferrs.h) instead of t2types.h (t2errors.h, respectively). - - * include/freetype/internal/cfftypes.h: Merged in changes from - t2types.h and made this the canonical `types' header for the CFF - driver. - - * include/freetype/internal/t2types.h: This file was merged with - cfftypes.h and is no longer necessary. - - * include/freetype/internal/t2errors.h: Renamed to cfferrs.h. - - * src/cff/cffobjs.c, src/cff/cffobjs.h, src/cff/cffparse.c, - src/cff/cffdrivr.c, src/cff/cff.c, src/cff/cffload.c, - src/cff/cffgload.c, src/cff/cffgload.h: Changed to use - cffgload.{c,h} instead of t2gload.{c,h}. All occurrences of t2_ - (T2_) were replaced with cff_ (CFF_, respectively). - - * src/cff/t2gload.h: Renamed cffgload.h. - - * src/cff/t2gload.c: Renamed cffgload.c - -2000-01-02 Jouk Jansen - - * builds/vms: Support files for VMS architecture added. - * descrip.mms, src/*/descrip.mms: VMS makefiles added. - * README.VMS: New file. - -2000-01-01 Werner Lemberg - - * LICENSE.TXT: Added info about PCF driver license. - -2001-01-01 Francesco Zappa Nardelli - - * src/pcf/*: New driver module for PCF font format (used in - X Window System). - * include/freetype/internal/ftdebug.h (FT_Trace): Added values for - PCF driver. - * include/freetype/internal/pcftypes.h: New file. - * include/freetype/config/ftmodule.h: Added PCF driver module. - -2001-01-01 Werner Lemberg - - * src/winfonts/winfnt.c (FNT_Get_Char_Index): Fix parameter type. - -2000-12-31 Werner Lemberg - - * builds/modules.mk (clean_module_list): Fixed deletion of module - file in case `make make_module_list' is called before `make setup'. - -2000-12-30 Werner Lemberg - - * src/cff/cffload.c (CFF_Load_Charset): Improved error messages. - (CFF_Load_Charset, CFF_Load_Encoding): Remove unnecessary variable - definition. - -2000-12-30 Tom Kacvinsky - - * include/freetype/internal/t2types.h, - include/freetype/internal/cfftypes.h: Changed the structures for - CFF_Encoding and CFF_Encoding for the new implementations of the - charset and encoding parsers in the CFF driver. - - * src/cff/t2gload.c (t2_lookup_glyph_by_stdcharcode, - t2_operator_seac): Added these functions for use in implementing the - seac emulation provided by the Type 2 endchar operator. - (T2_Parse_CharStrings): Added seac emulation for the endchar - operator. - - * src/cff/cffload.c (CFF_Load_Encoding, CFF_Load_Charset, - CFF_Done_Encoding, CFF_Done_Charset): Extended to load and parse the - charset/encoding tables, and free the memory used by them when the - CFF driver is finished with them. Added tables - - cff_isoadobe_charset - cff_expert_charset - cff_expertsubset_charset - cff_standard_encoding - cff_expert_encoding - - so that the encoding/charset parser can handle predefined encodings and - charsets. - -2000-12-24 Tom Kacvinsky - - * src/cff/t2gload.c (T2_Load_Glyph): Added code so that the font - transform is applied. - - * src/cff/cffparse.c (cff_parse_font_matrix): Added code so that - the font matrix numbers are scaled by 1/(matrix->yy). Also, the - offset vector now contains integer values instead of 16.16 fixed - numbers. - -2000-12-22 Tom Kacvinsky - - * src/autohint/ahhint.c (ah_hinter_load_glyph): - Removed unnecessary comments and commented-out code. - -2000-12-21 David Turner - - * src/cid/cidafm.c, src/cid/cidafm.h: removed un-needed files, - we'll work on supporting CID AFM files later I guess :-) - -2000-12-21 Tom Kacvinsky - - * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): - Changed so that fonts with a non-standard FontMatrix render - correctly. Previously, the first glyph rendered from such a - font did not have the transformation matrix applied. - -2000-12-17 Werner Lemberg - - * *.mk: Added lots of `.PHONY' targets. - -2000-12-17 Karsten Fleischer - - * *.mk: Implemented `platform' target to disable auto-detection. - -2000-12-14 Werner Lemberg - - * docs/design/modules.html: Removed. Covered by design-*.html. - - * INSTALL: Added info about makepp. - -2000-12-14 David Turner - - Added support for clipped direct rendering in the smooth renderer. - This should not break binary compatibility of existing applications. - - * include/freetype/fttypes.h, include/freetype/ftimage.h: Move - definition of the FT_BBox structure from the former to the latter. - * include/freetype/ftimage.h: Add `ft_raster_flag_clip' value to - FT_Raster_Flag enumeration. - Add `clip_box' element to FT_Raster_Params structure. - * src/smooth/ftgrays.c (grays_convert_glyph): Implement it. - - * INSTALL: Updated installation instructions on Win32, listing the - new `make setup list' target used to list supported - compilers/targets. - - * src/raster/ftraster.c (ft_black_render): Test for unsupported - direct rendering before testing arguments. - -2000-12-13 David Turner - - * include/freetype/config/ft2build.h, - include/freetype/internal/internal.h: Fixed header inclusion macros - to use direct definitions. This is the only way to do these things - in a portable way :-( The rest of the code should follow shortly - though everything compiles now. - - * builds/compiler/intelc.mk, builds/compiler/watcom.mk: New files. - - * builds/win32/detect.mk: Added support for the Intel C/C++ - compiler, as well as _preliminary_ (read: doesn't work!) support for - Watcom. Also added a new setup target. Type `make setup list' for - a list of supported command-line compilers on Win32. - - * src/base/ftdebug.c: Added dummy symbol to avoid empty file if - conditionals are off. - -2000-12-13 Werner Lemberg - - * builds/unix/ftsystem.c: Fixed typos. Fixed inclusion of wrong - ftconfig.h file. - -2000-12-12 Werner Lemberg - - * include/freetype/config/ft2build.h (FT2_ROOT, FT2_CONFIG_ROOT): - Removed. ANSI C doesn't (explicitly) allow macro expansion in - arguments using `##'. - (FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE): Use directory - names directly. Make them configurable. Use `##' to strip leading - and trailing spaces from arguments. - - * builds/unix/ft2unix.h: Adapted. - - * src/base/ftsystem.c (ft_alloc, ft_realloc, ft_free, ft_io_stream, - ft_close_stream): Use FT_CALLBACK_DEF. - - * builds/unix/ftsystem.c: Use new header scheme. - (FT_Done_Memory): Use free() from FT_Memory structure. - - * src/base/ftinit.c, src/base/ftmac.c: Header scheme fixes. - -2000-12-11 Werner Lemberg - - * include/freetype/config/ft2build.h (FT2_CONFIG_ROOT, - FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE, - FT_SOURCE_FILE): Use `##' operator to be really ANSI C compliant. - -2000-12-09 Werner Lemberg - - * builds/unix/detect.mk: Remove unused USE_CFLAGS variable. - -2000-12-08 Werner Lemberg - - * */*.h: Changed body inclusion macro names to start and end with - `__' (those which haven't converted yet). Fixed minor conversion - issues. - - * src/winfonts/winfnt.c: Updated to new header inclusion scheme. - - * src/truetype/ttinterp.c: Remove unused CALC_Length() macro. - -2000-12-07 David Turner - - * */*.[ch]: Changed source files to adhere to the new - header inclusion scheme. Not completely tested but works for now - here. - - * src/cff/t2driver.c: Renamed and updated to... - * src/cff/cffdrivr.c: New file. - * src/cff/t2driver.h: Renamed and updated to... - * src/cff/cffdrivr.h: New file. - * src/cff/t2load.c: Renamed and updated to... - * src/cff/cffload.c: New file. - * src/cff/t2load.h: Renamed and updated to... - * src/cff/cffload.h: New file. - * src/cff/t2objs.c: Renamed and updated to... - * src/cff/cffobjs.c: New file. - * src/cff/t2objs.h: Renamed and updated to... - * src/cff/cffobjs.h: New file. - * src/cff/t2parse.c: Renamed and updated to... - * src/cff/cffparse.c: New file. - * src/cff/t2parse.h: Renamed and updated to... - * src/cff/cffparse.h: New file. - * src/cff/t2tokens.h: Renamed and updated to... - * src/cff/cfftoken.h: New file. - - * src/cff/cff.c, src/cff/rules.mk: Updated. - -2000-12-06 David Turner - - * src/cache/ftlru.c (FT_Lru_Done): Fixed memory leak. - -2000-12-06 Werner Lemberg - - * builds/module.mk: Replaced `xxx #' with `xxx$(space). - * builds/os2/detekt.mk, builds/win32/detekt.mk: Moved comment to - avoid trailing spaces in variable. - * builds/freetype.mk: Use $(D) instead of $D to make statement more - readable. - - * docs/docmaker.py: Formatting. - -2000-12-05 David Turner - - * src/psaux/psauxmod.c: Fixed a broken inclusion of component - header files (an FT_FLAT_COMPILE test was missing). - - * src/cache/ftcmanag.c (FTC_Manager_Done): Fixed a bug that caused - an occasional crash when the function was called (due to a dangling - pointer). - - * src/base/ftsystem.c (FT_Done_Memory): Fixed an obvious bug: - The ANSI `free()' function was called instead of `memory->free()'. - - * docs/docmaker.py: Added section filtering, multi-page generation - (index page generation is still missing though). - -2000-12-04 David Turner - - * builds/unix/install.mk, builds/unix/ft2unix.h: The file `ft2unix.h' - is now installed as for Unix systems. Note that we - still use the `freetype2/freetype' installation path for now. - - * */*.[ch]: Now using as the default build and setup - configuration file in all public headers. Internal source files - still need some changes though. - - * builds/devel/ft2build.h, builds/devel/ftoption.h: Created a new - directory to hold all development options for both the Unix and - Win32 developer builds. - - * builds/win32/detect.mk, builds/win32/w32-bccd.mk, - builds/win32/w32-dev.mk: Changed the developer build targets to - `devel-gcc' and `devel-bcc' in order to be able to develop with the - Borland C++ compiler. - -2000-12-01 David Turner - - - * Version 2.0.1 released. - ========================= - - - * builds/unix/configure.in, builds/unix/configure, - builds/cygwin/configure.in, builds/cygwin/configure: Setting - `version_info' to 6:1:0 for the 2.0.1 release. - - * CHANGES: Added a summary of changes between 2.0.1 and 2.0. - - * builds/unix/ftconfig.in, builds/cygwin/ftconfig.in: Changes - to allow compilation under Unix with the Unix-specific config - files. - -2000-12-01 Werner Lemberg - - * INSTALL: Revised. - * builds/compiler/bcc-dev.mk, builds/compiler/visualage.mk, - builds/compiler/bcc.mk, builds/win32/w32-bcc.mk, - builds/win32/w32-bccd.mk: Revised. - * include/freetype/config/ftbuild.h, - include/freetype/internal/internal.h: Revised. - * include/freetype/ftimage.h: Updated to new header inclusion scheme. - -2000-11-30 Werner Lemberg - - * builds/toplevel.mk (.PHONY): Adding `distclean'. - * builds/unix/detect.mk (.PHONY): Adding `devel', `unix', `lcc', - `setup'. - -2000-11-30 David Turner - - * INSTALL: Slightly updated the quick starter documentation to - include IDE compilation, prevent against BSD Make, and specify `make - setup' instead of a single `make' for build configuration. - - * include/config/ftbuild.h, include/internal/internal.h: Added new - configuration files used to determine the location of all public, - configuration, and internal header files for FreeType 2. Modified - all headers under `include/freetype' to reflect this change. Note - that we still need to change the library source files themselves - though. - - * builds/compiler/bcc.mk, builds/compiler/bcc-dev.mk, - builds/win32/w32-bcc.mk, builds/win32/w32-bccd.mk, - builds/win32/detect.mk: Added new files to support compilation with - the free Borland C++ command-line compiler. Modified the detection - rules to recognize the new `bcc32' target in `make setup bcc32'. - - * src/sfnt/ttcmap.c, src/sfnt/ttpost.c, src/sfnt/ttsbit.c, - src/truetype/ttobjs.c, src/truetype/ttgload.c, - src/truetype/ttinterp.c: Fixed a few comparisons that Borland C++ - didn't really like. Basically, this compiler complains when FT_UInt - is compared to FT_UShort (apparently, it promotes `UShort' to `Int' - in these cases). - -2000-11-30 Tom Kacvinsky - - * t2objs.c (T2_Init_Face): Added calculation of `face->height' for - pure CFF fonts. - - * t1objs.c (T1_Init_Face): Fixed computation of `face->height'. - -2000-11-29 David Turner - - * src/base/ftbbox.c (BBox_Conic_Check): Fixed a really stupid - bug in the formula used to compute the conic Bézier extrema - of non-monotonous arcs. - -2000-11-29 Werner Lemberg - - * src/base/ftcalc.c (FT_SqrtFixed), src/base/ftobjs.c - (FT_Set_Renderer): Use FT_EXPORT_DEF. - * src/cache/ftcimage.c (FTC_Image_Cache_Lookup), - src/cache/ftcmanag.c (FTC_Manager_Done, FTC_Manager_Reset, - FTC_Manager_Lookup_Face, FTC_Manager_Lookup_Size, - FTC_Manager_Register_Cache), src/cache/ftcsbits.c - (FTC_SBit_Cache_Lookup): Ditto. - - * src/include/freetype/cache/ftcglyph.h (FTC_GlyphNode_Init), - src/include/freetype/ftmac.h (FT_New_Face_From_FOND): Use FT_EXPORT. - -2000-11-29 Werner Lemberg - - * src/sfnt/sfdriver.c: Include ttsbit.h and ttpost.h only - conditionally. - - * src/truetype/ttdriver.c (Set_Char_Sizes, Set_Pixel_Sizes): Set - `size->strike_index' only conditionally. - - * src/type1/t1driver.c, src/type1/t1objs.c: Include t1afm.h only - conditionally. - - * src/winfonts/winfnt.h: Move all type definitions to... - * src/include/freetype/internal/fnttypes.h: New file. - * src/winfonts/winfnt.c: Use it. - -2000-11-29 ??? ??? - - * include/freetype/internal/ftdebug.h: Replaced FT_CAT and FT_XCAT - with a direct solution (which also satisfies picky compilers). - -2000-11-28 YAMANO-UCHI Hidetoshi - - * src/truetype/ttobjs.c (TT_Init_Size): Fix #ifdef's to work with - disabled interpreter also. - - * src/base/ftnames.c (FT_Get_Sfnt_Name_Count): Fix incorrect - parentheses. - -2000-11-26 Tom Kacvinsky - - * src/cff/t2gload.c (T2_Parse_CharStrings): Added logic to glyph - width setting code to take into account even/odd argument counts - and glyph width operand before endchar/hmoveto/vmoveto. - -2000-11-26 Werner Lemberg - - * builds/ansi/ansi.mk: Fix inclusion order of files. - -2000-11-26 Keith Packard - - * src/type1/t1objs.c (T1_Init_Face): Compute style flags. - -2000-11-26 Werner Lemberg - - * builds/compiler/ansi-cc.mk (CLEAN_LIBRARY): Fix rule and - conditional. - -2000-11-23 Werner Lemberg - - * src/type1/t1load.c (parse_subrs, parse_charstrings): Use decrypt - function from PSAux module. - - * src/type1/t1parse.c (T1_Done_Parse): Renamed to... - (T1_Finalize_Parser): New function (to avoid name clash with a - function in the PSAux module). - (T1_Decrypt): Removed since it is duplicated in the PSAux module. - (T1_Get_Private_Dict): Added `psaux' as new parameter; use decrypt - function from PSAux module. - - * src/type1/t1parse.h: Adapted. - -2000-11-22 Tom Kacvinsky - - * src/cff/t2objs.c (T2_Init_Face): For pure CFF fonts, set - `root->num_faces' to `cff->num_faces' and set `units_per_EM' - to 1000. - - * src/cff/t2parse.c (parse_t2_real): Fixed real number parsing - loop. - - * src/cff/t2load.c (T2_Get_String): Called T2_Get_Name with a - sid that was off by one. - -2000-11-16 David Turner - - * src/autohint/ahtypes.h (AH_Hinter): Added new fields to control - auto-hinting of synthetic Type 1 fonts. - - * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): - Added auto-hinting support of synthetic Type 1 fonts. - -2000-11-12 Tom Kacvinsky - - * src/sfnt/ttload.c (TT_LookUp_Table, TT_Load_Generic_Table): Change - tracing output. - - * src/sfnt/sfobjs.c (SFNT_Load_Face): Set boolean variable - `has-outline' to true only if the font has a `glyf' or `CFF ' table. - -2000-11-11 Werner Lemberg - - * builds/win32/visualc/freetype.dsp: Fix raster1->raster and - type1z->type1. - -2000-11-11 Tom Kacvinsky - - * builds/unix/freetype-config.in, builds/cygwin/freetype-config.in: - Added a --libtool option. When freetype-config --libtool is - invoked, the absolute path to the libtool convenience library - is returned. - -2000-11-11 Werner Lemberg - - * builds/cygwin/cygwin-def.in: Same fix as previous. - -2000-11-10 Tom Kacvinsky - - * builds/unix/unix-def.in: Add - - INSTALL_PROGRAM := @INSTALL_PROGRAM@ - INSTALL_SCRIPT := @INSTALL_SCRIPT@ - - so that installation of freetype-config does not fail. - -2000-11-10 Werner Lemberg - - * builds/cygwin/freetype-config.in, builds/unix/freetype-config.in: - Move test down for empty --exec-prefix. - Fix --version. - - * builds/cygwin/install.mk, builds/unix/install.mk: Use - $(INSTALL_SCRIPT) for installation of freetype-config. - - * builds/cygwin/install.mk: Fix clean target names. - -2000-11-09 David Turner - - - * Version 2.0 released. - ======================= - ----------------------------------------------------------------------------- - -Copyright 2000-2015 by -David Turner, Robert Wilhelm, and Werner Lemberg. - -This file is part of the FreeType project, and may only be used, modified, -and distributed under the terms of the FreeType project license, -LICENSE.TXT. By continuing to use, modify, or distribute this file you -indicate that you have read the license and understand and accept it -fully. - - -Local Variables: -version-control: never -coding: utf-8 -End: diff --git a/components/gui/libraries/freetype-2.6.2/ChangeLog.21 b/components/gui/libraries/freetype-2.6.2/ChangeLog.21 deleted file mode 100644 index 5ee9909ffe..0000000000 --- a/components/gui/libraries/freetype-2.6.2/ChangeLog.21 +++ /dev/null @@ -1,9439 +0,0 @@ -2005-06-08 Werner Lemberg - - - * Version 2.1.10 released. - ========================== - - - * src/pcf/readme: Renamed to... - * src/pcf/README: This. - -2005-06-07 Detlef Würkner - - * builds/amiga/*: Added copyright notes, reworked some comments. - -2005-06-05 Werner Lemberg - - * Add copyright notices to all files which don't have one. - - * docs/license.txt: Renamed to... - * docs/LICENSE.TXT: This. - * docs/FTL.txt: Renamed to... - * docs/FTL.TXT: This. - * docs/GPL.txt: Renamed to... - * docs/GPL.TXT: This. - - * docs/PATENTS: Slightly reworded. Suggested by Sylvain Beucler - . - -2005-06-04 Werner Lemberg - - * include/freetype/ftimage.h (FT_Outline_MoveToFunc, - FT_Outline_LineToFunc, FT_Outline_ConicToFunc, - FT_Outline_CubicToFunc, FT_Raster_RenderFunc), - include/freetype/ftrender.h (FT_Glyph_TransformFunc, - FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Don't use - `const' to stay compatible with FreeType 2.1.9. - -2005-06-01 Adam D. Moss - - * src/base/ftstroke.c (ft_stroker_inside): Revert `sigma' patch from - 2004-07-11; this gives much better results under normal - circumstances. - -2005-05-30 Chia I Wu - - * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Minor - documentation improvements. - - * include/freetype/ftoutln.h (FT_Outline_Embolden): Fix typos. - - * src/base/ftbitmap.c (FT_Bitmap_Embolden): Add support for bitmap - of pixel_mode FT_PIXEL_MODE_GRAY2 or FT_PIXEL_MODE_GRAY4. - If xstr is larger than 8 and bitmap is of pixel_mode - FT_PIXEL_MODE_MONO, set xstr to 8 instead of returning error. - -2005-05-29 Chia I Wu - - * src/base/ftbitmap.c (FT_Bitmap_Embolden): Fix emboldening bitmap - of mode FT_PIXEL_MODE_GRAY. Also add support for mode - FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V. - (ft_bitmap_assure_buffer): FT_PIXEL_MODE_LCD and FT_PIXEL_MODE_LCD_V - should have ppb (pixel per byte) 1. - Zero the padding when there's no need to allocate memory. - - * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Handle slot->advance - too. - More suited emboldening strength. - -2005-05-28 Chia I Wu - - * src/base/ftbitmap.c (FT_Bitmap_Embolden): Handle negative pitch. - Handle FT_PIXEL_MODE_GRAY with num_gray != 256. - Improve speed for FT_PIXEL_MODE_GRAY. - (ft_bitmap_assure_buffer): Accept FT_PIXEL_MODE_LCD and - FT_PIXEL_MODE_LCD_V. - -2005-05-27 Chia I Wu - - * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Initialize `error'. - - * src/base/ftobjs.c (ft_cmap_done_internal): New function. - (FT_CMap_Done): Remove cmap from cmap list. - (destroy_charmaps, FT_CMap_New): Don't call FT_CMap_Done but - ft_cmap_done_internal. - -2005-05-26 Werner Lemberg - - * docs/GPL.txt: Update postal address of FSF. - -2005-05-26 Chia I Wu - - * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Improve - documentation. - - * src/base/ftsynth.c (FT_BOLD_THRESHOLD): Removed. - (FT_GlyphSlot_Embolden): Check whether slot is bitmap owner. - Always modify the metrics. - -2005-05-24 Werner Lemberg - - * docs/CHANGES: Updated. - -2005-05-24 Chia I Wu - - * include/freetype/ftbitmap.h (FT_Bitmap_Embolden): New declaration. - - * include/freetype/ftoutln.h (FT_Outline_Embolden): New declaration. - - * src/base/ftbitmap.c (ft_bitmap_assure_buffer): New auxiliary - function. - (FT_Bitmap_Embolden): New function. - - * src/base/ftoutln.c (FT_Outline_Embolden): New function. - - * src/base/ftsynth.c: Don't include FT_INTERNAL_CALC_H and - FT_TRIGONOMETRY_H but FT_BITMAP_H. - (FT_GlyphSlot_Embolden): Use FT_Outline_Embolden or - FT_Bitmap_Embolden. - -2005-05-24 Werner Lemberg - - * configure: Always remove config.mk, builds/unix/unix-def.mk, and - builds/unix/unix-cc.mk. This fixes repeated calls of the script. - Reported by Nelson Beebe and Behdad Esfahbod. - - * README.CVS: Mention file permissions. - -2005-05-23 Werner Lemberg - - * builds/amiga/makefile.os4 (WARNINGS), builds/compiler/gcc-dev.mk - (CFLAGS), builds/compiler/gcc.mk (CFLAGS): Remove - -fno-strict-aliasing. - - * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttsbit0.c -- - it is currently loaded from ttsbit.c. - -2005-05-23 Behdad Esfahbod - - Say you have `(Foo*)x' and want to assign, pass, or return it as - `(Bar*)'. If you simply say `x' or `(Bar*)x', then the C compiler - would warn you that type casting incompatible pointer types breaks - strict-aliasing. The solution is to cast to `(void*)' instead which - is the generic pointer type, so the compiler knows that it should - make no strict-aliasing assumption on `x'. But the problem with - `(void*)x' is that seems like in C++, unlike C, `void*' is not a - generic pointer type and assigning `void*' to `Bar*' without a cast - causes an error. The solution is to cast to `Bar*' too, with - `(Bar*)(void*)x' as the result -- this is what the patch does. - - * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP), - include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): Remove - cast on lvalue, use a temporary pointer instead. - Cast temporarily to (void*) to not break strict aliasing. - - * include/freetype/internal/ftmemory.h (FT_MEM_ALLOC, - FT_MEM_REALLOC, FT_MEM_QALLOC, FT_MEM_QREALLOC, FT_MEM_FREE), - src/base/ftglyph.c (FT_Glyph_To_Bitmap): Cast temporarily to (void*) - to not break strict aliasing. - - * src/base/ftinit.c (FT_USE_MODULE): Fix wrong type information. - - * builds/unix/configure.ac (XX_CFLAGS): Remove -fno-strict-aliasing. - -2005-05-23 David Turner - - Fix Savannah bug #12213 (incorrect behaviour of the cache sub-system - in low-memory conditions). - - * include/freetype/cache/ftccache.h (FTC_CACHE_TRYLOOP, - FTC_CACHE_TRYLOOP_END): New macros. - - * src/cache/ftccache.c (FTC_Cache_NewNode), src/cache/ftcsbits.c - (ftc_snode_compare): Use FT_CACHE_TRYLOOP and FTC_CACE_TRYLOOP_END. - -2005-05-23 Werner Lemberg - - * src/base/rules.mk (BASE_SRC): Don't add ftsynth.c here but... - (BASE_EXT_SRC): Here. - -2005-05-22 Werner Lemberg - - * src/base/ftrfork.c (raccess_guess_apple_generic): Mark - `version_number' and `entry_length' as unused. - (raccess_guess_linux_double_from_file_name): Remove `memory'. - (raccess_make_file_name): Mark `error' as unused. - - * src/bdf/bdflib.c (_bdf_parse_properties): Remove `memory'. - - * src/cid/cidobjs.c (cid_face_init): Remove `psnames'. - - * src/sfnt/sfobjs.c (sfnt_load_face): Remove `memory'. - - * src/truetype/ttgxvar.c (ft_var_readpackedpoints, - ft_var_readpackeddeltas, ft_var_load_avar): Mark `error' as unused. - - * src/base/rules.mk (BASE_SRC): Add ftsynth.c. - -2005-05-21 David Turner - - * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Fix a bug that - produced unpleasant artefacts when trying to embolden very sharp - corners. - -2005-05-20 Werner Lemberg - - * docs/CHANGES: Updated. - -2005-05-20 Chia I Wu - - * src/base/ftbitmap.c: Don't include FT_FREETYPE_H and FT_IMAGE_H - but FT_BITMAP_H. - (FT_Bitmap_Copy): New function (from ftglyph.c). - - * include/freetype/ftbitmap.h (FT_Bitmap_Copy): New public - definition. - - * src/base/ftglyph.c: Include FT_BITMAP_H. - (ft_bitmap_copy): Move to ftbitmap.c. - (ft_bitmap_glyph_init): Remove `memory' variable. - Create new bitmap object if FT_GLYPH_OWN_BITMAP isn't set. - (ft_bitmap_glyph_copy): Use FT_Bitmap_Copy. - (ft_bitmap_glyph_done): Use FT_Bitmap_Done. - (ft_outline_glyph_init): Use FT_Outline_Copy. - - * src/base/ftoutln.c (FT_Outline_Copy): Handle source == target. - (FT_Outline_Done_Internal): Check for valid `memory' pointer. - (FT_Outline_Translate, FT_Outline_Reverse, FT_Outline_Render, - FT_Outline_Transform): Check for valid `outline' pointer. - - * src/base/ftobjs.c (FT_New_GlyphSlot): Prepend glyph slot to - face->glyph, otherwise a new second glyph slot cannot be created. - (FT_Done_GlyphSlot): Fix memory leak. - (FT_Open_Face): Updated -- face->glyph is already managed by - FT_New_GlyphSlot. - - * src/type42/t42objs.c (T42_GlyphSlot_Done): Updated. - -2005-05-20 Kirill Smelkov - - * include/freetype/ftimage.h (FT_Raster_Params), - include/freetype/ftoutln.h (FT_Outline_Translate, - FT_Outline_Transform), src/base/ftoutln.c (FT_Outline_Translate, - FT_Outline_Transform): Decorate parameters with `const' where - appropriate. - Update all callers. - - * src/raster/ftraster.c (ft_black_reset), src/smooth/ftgrays.c - (gray_raster_reset): Remove `const' from `pool_base' argument. - -2005-05-18 Kirill Smelkov - - * src/raster/ftmisc.h: New file. Only needed if ftraster.c is - compiled as stand-alone. - - * src/raster/ftraster.c: Add comment how to compile as stand-alone. - s/FT_CONFIG_OPTION_STATIC_RASTER/FT_STATIC_RASTER/. - s/TT_STATIC_RASTER/FT_STATIC_RASTER/. - [_STANDALONE_]: Include ftimage.h and ftmisc.h. - (FT_TRACE1, FT_TRACE6, ft_memset, FT_MEM_ZERO): Define - conditionally. - (Render_Glyph, Render_Gray_Glyph): Return Raster_Err_None (or - Raster_Err_Unsupported). - (ft_black_new) [_STANDALONE_]: Fix type of `the_raster'. - (ft_black_init, ft_black_reset, ft_black_set_mode, ft_black_render): - Use `ras', not `raster'. - (ft_black_done): Use FT_UNUSED_RASTER. - (Horizontal_Sweep_Init, Horizontal_Sweep_Step, - Horizontal_Gray_Sweep_Span): Use FT_UNUSED_RASTER. - -2005-05-18 Werner Lemberg - - * docs/announce: Start updating. - - * docs/CHANGES: Updated. - -2005-05-16 Vitaliy Pasternak - - * builds/win32/visualc/freetype.vcproj: Updated. - Exclude debug info for `Release' versions to reduce library size. - -2005-05-16 Werner Lemberg - - * src/base/ftobjs.c (FT_Open_Face): Make it work as documented, this - is, ignore `aface' completely if face_index < 0. Reported by David - Osborn . - -2005-05-16 Kirill Smelkov - - * include/freetype/ftimage.h (FT_Outline_MoveToFunc, - FT_Outline_LineTo_Func, FT_Outline_ConicToFunc, - FT_Outline_CubicToFunc), src/smooth/ftgrays.c (gray_render_conic, - gray_render_cubic, gray_move_to, gray_line_to, gray_conic_to, - gray_cubic_to, gray_render_span, gray_sweep): Decorate parameters - with `const' where appropriate. - -2005-05-11 Kirill Smelkov - - * include/freetype/ftimage.h (FT_Raster_RenderFunc), - include/freetype/ftrender.h (FT_Glyph_TransformFunc, - FT_Renderer_Render_Func, FT_Renderer_TransformFunc), - src/base/ftglyph.c (ft_outline_glyph_transform), - src/raster/ftrend1.c (ft_raster1_transform, ft_raster1_render), - src/smooth/ftgrays.c (FT_Outline_Decompose, gray_raster_render), - src/smooth/ftsmooth.c (ft_smooth_transform, - ft_smooth_render_generic, ft_smooth_render, ft_smooth_render_lcd, - ft_smooth_render_lcd_v): Decorate parameters with `const' where - appropriate. - - * src/raster/ftraster.c (RASTER_RENDER_POOL): Removed. Obsolete. - (ft_black_render): Decorate parameters with `const' where - appropriate. - -2005-05-11 Werner Lemberg - - * src/sfnt/ttcmap.c (tt_cmap4_set_range): Fix typo (FT_PEEK_SHORT -> - FT_PEEK_USHORT) which caused crashes. Reported by Ismail Donmez - . - -2005-05-08 Werner Lemberg - - * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE) - [__cplusplus]: Fix typo. - -2005-05-07 Werner Lemberg - - Handle unsorted SFNT type 4 cmaps correctly (reported by Dirck - Blaskey ). - - * src/sfnt/ttcmap.h (TT_CMap): Add member `unsorted'. - * src/sfnt/ttcmac.c: Use SFNT_Err_Ok where appropriate. - - (tt_cmap0_validate, tt_cmap2_validate, tt_cmap6_validate, - tt_cmap8_validate, tt_cmap10_validate, tt_cmap12_validate): Use - `FT_Error' as return type. - (tt_cmap4_validate): Use `FT_Error' as return type. - Return error code for unsorted cmap. - (tt_cmap4_char_index, tt_cmap4_char_next): Use old code for unsorted - cmaps. - (tt_face_build_cmaps): Set `unsorted' variable in cmap. - -2005-05-07 Werner Lemberg - - * src/truetype/ttpload.c (tt_face_get_location): Fix typo. - -2005-05-06 Werner Lemberg - - * src/cff/cffobjs.c (cff_face_init): Set ppem value in top - dictionary for SFNT-based CFF. - -2005-05-05 Werner Lemberg - - Handle malformed `loca' table entries. - - * docs/TODO: Add some bugs which should be fixed. - - * include/freetype/internal/tttypes.h (TT_FaceRec): Add `glyf_len' - element. - - * src/truetype/ttpload.c (tt_face_load_loca): Get length of `glyf' - table. - (tt_face_get_location): Fix computation of `asize' for malformed - `loca' entries. - -2005-05-01 David Turner - - * Jamfile: Remove `otvalid' from the list of compiled modules. - - * include/freetype/internal/ftserv.h: Add compiler pragmas to get - rid of annoying warnings with Visual C++ compiler in maximum warning - mode. - - * src/autofit/afhints.c, src/autofit/aflatin.c, src/base/ftstroke.c, - src/bdf/bdfdrivr.c, src/cache/ftcbasic.c, src/cache/ftccmap.c, - src/cache/ftcmanag.c, src/cff/cffload.c, src/cid/cidload.c, - src/lzw/zopen.c, src/otvalid/otvgdef.c, src/pcf/pcfread.c, - src/sfnt/sfobjs.c, src/truetype/ttgxvar.c: Remove compiler warnings. - -2005-04-28 Werner Lemberg - - * docs/TODO: Updated. - -2005-04-24 Werner Lemberg - - * src/otvalid/otvcommn.c - (otv_GSUBGPOS_have_MarkAttachmentType_flag): Handle table == 0. - -2005-04-16 Werner Lemberg - - * src/cff/cffobjs.c (cff_face_init): Set default upem value in top - font dict also. - Handle font matrix settings in subfonts. - - * src/cff/cffgload.c (cff_slot_load): Use the correct font matrix - for CID-keyed fonts with subfonts. - - * docs/formats.txt: Updated. - -2005-04-14 Kirill Smelkov - - * include/freetype/freetype.h (FT_Vector_Transform), - include/freetype/ftimage.h (FT_Raster_Params), - include/freetype/ftoutln.h, src/base/ftoutln.c (FT_Outline_Get_CBox, - FT_Outline_Copy, FT_Outline_Transform, FT_Vector_Transform, - FT_Outline_Get_Bitmap), src/raster/ftraster.c (ft_black_render), - src/smooth/ftgrays.c (gray_raster_render): Decorate parameters with - `const' where appropriate. - -2005-04-14 Werner Lemberg - - * src/type1/t1load.c (parse_charstrings): Catch this non-standard - beginning of the /CharStrings dictionary: - - /CharStrings 118 dict def - Private begin - CharStrings begin - - * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix arguments - to call of tt_sbit_decoder_load_bitmap. - -2005-04-13 Werner Lemberg - - * docs/TODO: Updated. - - * autogen.sh: Use `--force' for all commands. - -2005-04-09 Werner Lemberg - - * src/pshinter/pshalgo.c (ps_hints_apply): Change scaling values - only if `fitted' is not zero. - -2005-04-06 Werner Lemberg - - * src/truetype/ttgload.c (tt_face_get_metrics) [FT_OPTIMIZE_MEMORY]: - Fix typo which sometimes causes wrong metrics for the last glyph. - -2005-04-04 David Turner - - * devel/ftoption.h, include/freetype/config/ftoption.h - (FT_OPTIMIZE_MEMORY): Comment out this macro for the upcoming 2.1.10 - release. - (*_CHESTER_*): Removed. No longer used. - - * src/autofit/afhints.c (af_axis_hints_new_segment, - af_axis_hints_new_edge): Small tweak to use less heap memory. - -2005-04-03 Werner Lemberg - - * src/type1/t1parse.c (T1_New_Parser): Relax the check for a valid - first line in the font. - -2005-04-03 Werner Lemberg - - * docs/CHANGES, include/freetype/freetype.h: Improve documentation - of FT_Set_Pixel_Sizes and FT_Set_Char_Size. - -2005-03-26 Detlef Würkner - - * builds/amiga/src/base/ftsystem.c (ft_amiga_stream_io): Fix buffer - offsets after a large read. - -2005-03-26 Werner Lemberg - - * src/autofit/afglobal.c (af_face_globals_get_metrics): - s/index/gidx/. - - * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Fix compiler - warnings. - - * src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttsbit0.c. - - * src/sfnt/ttsbit0.h: Dummy file for build with `make'. - -2005-03-26 Detlef Würkner - - Update of the Amiga port. - - * builds/amiga/makefile, builds/amiga/makefile.os4, - builds/amiga/smakefile: Included the base extension files - (ftbitmap.c, ftotval.c, ftpfr.c, ftstroke.c, ftxf86.c). - -2005-03-25 Detlef Würkner - - Update of the Amiga port. - - * builds/amiga/makefile, builds/amiga/smakefile: Handle new modules. - - * builds/amiga/makefile.os4: Makefile for AmigaOS4 SDK. - - * builds/amiga/README: Updated. - - * builds/amiga/include/freetype/config/ftconfig.h: Handle gcc for - AmigaOS4. - - * builds/amiga/include/freetype/config/ftmodule.h: Handle new - modules. - - * builds/amiga/src/base/ftdebug.c: Updated to current version of - default ftdebug.c. - Add various include files and macros to have proper support for - both AmigaOS4 and older AmigaOS versions. - Don't declare KVPrintF explicitly. - Replace getenv with GetVar. - Actually enable debugging code. - - * builds/amiga/src/base/ftsystem.c: Major rewrite. - -2005-03-23 Werner Lemberg - - * tests/*: Removed. - -2005-03-23 Werner Lemberg - - * docs/CHANGES, docs/INSTALL.ANY: Updated. - - * include/freetype/ftmoderr.h: Replace `Autohint' with `Autofit'. - Add `OTvalid'. - - * src/autofit/aferrors.h: New file. - - * src/autofit/afglobal.c, src/autofit/afhints.c, - src/autofit/aflatin.c, src/autofit/afloader.c: s/FT_Err_/AF_Err_/. - Include aferrors.h. - - * src/autofit/rules.mk (AUTOF_DRV_H): Include aferrors.h. - - * src/otvalid/otverror.h: s/FT_Mod_Err_OTV/FT_Mod_Err_OTvalid/. - -2005-03-22 David Turner - - * src/autohint/*: Removed. - * Jamfile: Updated. - -2005-03-15 David Turner - - * src/bdf/bdflib.c: Remove compiler warnings. - (hash_rehash, hash_init): Don't call FT_MEM_ZERO. - (_bdf_list_t): Add `memory' field. - (_bdf_list_init, _bdf_list_done, _bdf_list_ensure): New functions. - (_bdf_shift, _bdf_join): Rename to... - (_bdf_list_shift, _bdf_list_join): This. - (_bdf_split): Renamed to... - (_bdf_list_split): This. Use new functions. - (bdf_internal_readstream): Removed. - (NO_SKIP): New macro. - (_bdf_readstream): Rewritten. - (bdf_create_property, _bdf_add_comment): Improve allocation. - (_bdf_set_default_spacing, _bdf_parse_glyphs): Updated. Improve - allocation. - (_bdf_parse_properties, _bdf_parse_start): Updated. - (bdf_load_font): Updated to use new functions. - - * src/type1/t1parse.c (check_type1_format): New function. - (T1_New_Parser): Use it to check font header before allocating - anything on the heap. - - * src/type42/t42parse.c (t42_parser_init): Modify functions to check - the font header before allocating anything on the heap. - - * include/freetype/internal/ftmemory.h (FT_ARRAY_MAX, - FT_ARRAY_CHECK): New macros. - - * src/base/ftstream.c (FT_Stream_TryRead): New function. - * include/freetype/internal/ftstream.h: Updated. - - * src/pcf/pcfread.c (pcf_read_TOC), src/pcf/pcfutil.c - (BitOrderInvert, TwoByteSwap, FourByteSwap): Minor fixes and - simplifications. Try to protect the PCF driver from doing stupid - things with broken fonts. - - * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Check the LZW header before - doing anything else. This avoids unnecessary heap allocations - (400KByte of heap memory for the LZW decoder). - - * src/gzip/ftgzip.c (FT_Stream_OpenGZip): Ditto for the gzip - decoder, although the code savings are smaller. - - * docs/CHANGES: Updated. - -2005-03-10 David Turner - - * src/tools/glnames.py: Add comment to explain the compression - being used for the Adobe Glyph List. - -2005-03-10 Werner Lemberg - - * src/truetype/ttpload.c (tt_face_load_cvt, tt_face_load_fpgm): - Fix serious typo which prevented correct TT rendering. - - * include/freetype/internal/ftmemory.h: Undo change from 2005-03-03. - To suppress warnings it is sufficient to use `-fno-strict-aliasing'. - -2005-03-10 Werner Lemberg - - * src/tools/glnames.py: Formatted. - Format output to be in sync with other FreeType code. - Import `re' and `os.path'. - (StringTable) <__init__>: Add parameter to initialize master table - name. - (StringTable) : Don't pass master table name. - (StringTable) : Emit explanatory comment. - Simplify and make output more human readable. - (t1_bias, glyph_list, adobe_glyph_names): Removed. Unused. - (main): Use `basename' for file name in header. - - * src/psnames/pstables.h: Regenerated. - -2005-03-09 David Turner - - * src/tools/glnames.py: Rewrite the generator for the `pstables.h' - header file which contains various constant tables related to glyph - names. It now uses a different, more compact storage scheme that - saves about 20KB. This also closes Savannah bug #12262. - - * src/psnames/pstables.h: Regenerated. - - * src/psnames/psmodule.c (ps_unicode_value): Use - `ft_get_adobe_glyph_index', a new function defined in `pstables.h'. - (ps_get_macintosh_name, ps_get_standard_strings): Updated. - - * src/base/ftobjs.c (FT_Set_Char_Sizes): Handle fractional sizes - more carefully. This fixes Savannah bug #12263. - -2005-03-06 David Turner - - * src/otvalid/otvgsub.c, src/otvalid/otvgpos.c: Make static tables - constant. - - * src/autofit/aflatin.c (af_latin_metrics_init): Fix Savannah bug - #12212 (auto-hinter refuses to work if no Unicode charmap in font). - -2005-03-05 Werner Lemberg - - * autogen.sh: New script for bootstrapping. - - * README.CVS: New file which documents bootstrapping. - - * builds/unix/aclocal.m4, builds/unix/config.guess, - builds/unix/config.sub, builds/unix/configure, - builds/unix/ltmain.sh: Removed. - -2005-03-04 Werner Lemberg - - * src/base/ftutil.c: Include FT_INTERNAL_OBJECTS_H. - -2005-03-03 Werner Lemberg - - Various fixes for C and C++ compiling. - - * src/autofit/*: Add copyright messages. - - * src/autofit/afhints.c (af_glyph_hints_done): Don't use - `AF_Dimension' but `int' for loop counter. - - * src/autofit/aflatin.c (af_latin_metrics_init_widths): Don't use - `AF_Dimension' but `int' for loop counter. - Use proper enumeration value for `render_mode'. - (af_latin_metrics_scale_dim): Don't shadow variables. - (af_latin_hints_compute_segments): Use proper cast for `major_dir' - and `segment_dir'. - (af_latin_align_linked_edge, af_latin_hint_edges): Fix arguments of call to - `af_latin_compute_stem_width'. - (af_latin_hints_apply): Don't use `AF_Dimension' but `int' for loop - counter. - - * src/base/ftdbgmem.c (ft_mem_table_get_source, FT_DumpMemory): Use - proper cast for memory allocation. - - * src/cff/cffdrivr.c (cff_get_kerning): Use proper cast for - initialization of `sfnt'. - - * src/sfnt/sfdriver.c: Include `ttkern.h'. - - * src/sfnt/ttkern.c (tt_face_get_kerning): Don't shadow variables. - - * src/truetype/ttgload.c: Include `ttpload.h'. - -2005-03-03 David Turner - - * include/freetype/internal/ftmemory.h (FT_ALLOC, FT_REALLOC, - FT_QALLOC, FT_QREALLOC) [gcc >= 3.3]: Provide macro versions which - avoid compiler warnings. - (FT_NEW, FT_NEW_ARRAY, FT_RENEW_ARRAY, FT_QNEW, FT_QNEW_ARRAY, - FT_QRENEW_ARRAY, FT_ALLOC_ARRAY, FT_REALLOC_ARRAY): Updated. - - * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, - FT_FACE_FIND_GLOBAL_SERVICE, FT_FACE_LOOKUP_SERVICE) [__cplusplus]: - Provide macro versions which avoid compiler warnings. - - * src/base/ftutil.c (ft_highpow2): New utility function. - - * include/freetype/internal/ftobjs.h: Updated. - - * src/pfr/pfrload.c (pfr_get_gindex, pfr_compare_kern_pairs, - pfr_sort_kerning_pairs): Don't define if FT_OPTIMIZE_MEMORY is set. - (pfr_phy_font_done): Don't handle `kern_pairs' if FT_OPTIMIZE_MEMORY - is set. - (pfr_phy_font_load): Don't call `pfr_sort_kerning_pairs' if - FT_OPTIMIZE_MEMORY is set. - - * src/pfr/pfrobjs.c (pfr_slot_load): Comment out some code which - doesn't work with broken fonts. - (pfr_face_get_kerning) [FT_OPTIMIZE_MEMORY]: Implement. - - * src/pfr/pfrtypes.h (PFR_KernItemRec): Optimize member types. - (PFR_NEXT_KPAIR): New macro. - (PFR_PhyFontRec): Don't define `kern_pairs' if FT_OPTIMIZE_MEMORY is - set. - - * src/sfnt/ttsbit0.c (tt_sbit_decoder_load_image): Introduce - temporary variable to avoid gcc warning. - (tt_face_load_sbit_image): Mark unused variables with FT_UNUSED. - - * src/truetype/ttpload.c (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: - Remove redundant variable. - - * include/freetype/config/ftmodule.h: Moving the order of drivers to - speed up font loading. The PCF and BDF loaders are still slow and - consume far too much memory. - -2005-03-03 Werner Lemberg - - * devel/ftoption.h: Updated to recent changes. - -2005-03-02 Werner Lemberg - - * src/autofit/afdummy.c, src/autofit/afdummy.h - (af_dummy_script_class): Fix type. - - * src/autofit/aflatin.c, src/autofit/aflatin.h - (af_latin_script_class): Fix type. - - * src/autofit/rules.mk (AUTOF_DRV_SRC): Fix typo. - -2005-03-01 David Turner - - * src/sfnt/ttkern.c (tt_face_load_kern, tt_face_get_kerning), - src/sfnt/ttsbit0.c (tt_face_load_sbit_strikes, - tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_compound, - tt_sbit_decoder_load_image), src/sfnt/ttload.c - (tt_face_load_metrics): Remove compiler warnings - -- redundant variables, missing initializations, etc. - - * src/sfnt/ttsbit.h: Handle FT_OPTIMIZE_MEMORY. - - * src/autofit/rules.mk, src/autofit/module.mk, - src/autofit/afangles.h: New files. - - * src/autofit/afhints.c (af_axis_hints_new_segment, - af_axis_hints_new_edge): New functions. - (af_glyph_hints_done): Do proper deallocation. - (af_glyph_hints_reload): Only reallocate points array. This - drastically reduces heap usage. - - * src/autofit/afhints.h (AF_PointRec, AF_SegmentRec): Optimize - member types and positions. - (AF_AxisHintsRec): Add `max_segments' and `max_edges'. - (af_axis_hints_new_segment, af_axis_hints_new_edge): New prototypes. - - * src/autofit/aflatin.c (af_latin_metricsc_scale): Don't call - AF_SCALER_EQUAL_SCALES. - (af_latin_hints_compute_segments): Change return type to FT_Error. - Update all callers. - Improve segment allocation. - (af_latin_hints_compute_edges): Change return type to FT_Error. - Update all callers. - Improve edge allocation and link handling. - (af_latin_hints_detect_features): Change return type to FT_Error. - Update all callers. - - * src/autofit/aflatin.h: Updated. - - * src/autofit/afloader.c (af_loader_load_g) - : Assure axis->num_edges > 1. This fixes - a bug with certain fonts. - - * include/freetype/config/ftmodule.h: The auto-fitter is now the - only supported auto-hinting module. - - * include/freetype/config/ftstdlib.h (FT_INT_MAX): New macro. - -2005-02-28 Werner Lemberg - - * src/truetype/ttpload.c (tt_face_load_loca): Fix typo. - - * src/sfnt/ttkern.c: Include `ttkern.h'. - (FT_COMPONENT): Updated. - - * include/freetype/internal/fttrace.h: Add entry for `ttkern'. - - * src/sfnt/ttsbit0.c: s/FT_Err_/SFNT_Err_/. - Decorate constants with `U' and `L' where necessary. - - * src/sfnt/ttcmap.c (tt_cmap4_next): Remove unused variable. - -2005-02-28 David Turner - - * src/base/ftdbgmem.c (FT_DumpMemory): Added sorting of memory - sources according to decreasing maximum cumulative allocations. - (ft_mem_source_compare): New auxiliary function. - - * src/sfnt/ttsbit0.c: New file, implementing a heap-optimized - embedded bitmap loader. - - * src/sfnt/ttsbit.c: Include `ft2build.h', FT_INTERNAL_DEBUG_H, - FT_INTERNAL_STREAM_H, FT_TRUETYPE_TAGS_H. - Load `ttsbit0.c' if FT_OPTIMIZE_MEMORY is set, otherwise use - file contents. - (tt_face_load_sbit_strikes): Set up root fields to indicate the - strikes. This fixes Savannah bug #12107. - Use `static' keyword for `sbit_line_metrics_field', - `strike_start_fields', `strike_end_fields'. - - * include/freetype/internal/tttypes.h (TT_FaceRec): Define - `sbit_table', `sbit_table_size', `sbit_num_strikes' if - FT_OPTIMIZE_MEMORY is set. - Don't define `num_sbit_strikes' and `sbit_strikes' if - FT_OPTIMIZE_MEMORY is set. - - * src/cff/cffobjs.c (sbit_size_reset): Handle FT_OPTIMIZE_MEMORY. - - * src/sfnt/sfobjs.c (sfnt_load_face): Fixed bug that prevented - loading SFNT fonts without a `kern' table. - Properly pass root->face_flags. - Remove code for TT_CONFIG_OPTION_EMBEDDED_BITMAPS. - - * src/sfnt/sfdriver.c (sfnt_interface) - [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Don't use `tt_find_sbit_image' - and `tt_load_sbit_metrics'. - - * src/sfnt/ttcmap.c: Optimize linear charmap scanning for Format 4. - (OPT_CMAP4): New macro. - (TT_CMap4Rec) [OPT_CMAP4]: New structure. - (tt_cmap4_init, tt_cmap4_set_range, tt_cmap4_next, tt_cmap4_reset) - [OPT_CMAP4]: New functions. - (tt_cmap4_char_next) [OPT_CMAP4]: Use `tt_cmap4_next' and - `tt_cmap4_reset'. - (tt_cmap4_class_rec) [OPT_CMAP4]: Use `TT_CMap4Rec' and - `tt_cmap4_init'. - - * src/truetype/ttobjs.c (Reset_SBit_Size): Handle - FT_OPTIMIZE_MEMORY. - - * src/autofit/afhints.h (AF_PointRec, AF_SegmentRec, AF_EdgeRec): - Optimize member types. - - * src/autofit/afloader.c (af_loader_done): Call - `af_glyph_hints_done'. - -2005-02-27 David Turner - - * src/sfnt/ttkern.c (tt_face_load_kern): Fix a small bug which - caused invalid (random) return values for the horizontal kerning. - -2005-02-25 David Turner - - Implement several memory optimizations to drastically reduce the - heap usage of FreeType, especially in the case of memory-mapped - files. The idea is to avoid loading and decoding tables in the - heap, and instead access the raw data whenever possible (i.e., when - it doesn't compromise performance). - - This has several benefits: For example, opening vera.ttf now uses - just a small amount of memory (even when the FT_Library footprint is - accounted for), until you start loading glyphs. Even then, you save - at least 20KB compared to the non-optimized case. Performance of - various operations, including open and close, has also been - dramatically improved. - - More optimizations to come, especially for the auto-hinter. - - * include/freetype/internal/sfnt.h (TT_Face_GetKerningFunc): New - function type. - (SFNT_Interface): Add it. - - * include/freetype/internal/tttypes.h (TT_HdmxEntryRec, TT_HdmxRec, - TT_Kern0_PairRec): Don't define if FT_OPTIMIZE_MEMORY is set. - (TT_FaceRec): Define `horz_metrics', `horz_metrics_size', - `vert_metrics', `vert_metrics_size', `hdmx_table', - `hdmx_table_size', `hdmx_record_count', `hdmx_record_size', - `hdmx_record_sizes', `kern_table', `kern_table_size, - `num_kern_tables', `kern_avail_bits', `kern_order_bits' if - FT_OPTIMIZE_MEMORY is set. - Don't define `hdmx', `num_kern_pairs', `kern_table_index', - `kern_pairs' if FT_OPTIMIZE_MEMORY is set. - - * src/base/ftdbgmem.c (ft_mem_table_set): Don't shadow variable. - Fix compiler warning. - - * src/cff/cffdrivr.c (Get_Kerning): Renamed to... - (cff_get_kerning): This. Simplify. - (cff_driver_class): Updated. - - * src/sfnt/Jamfile (_sources): Add `ttkern'. - * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttkern.c'. - - * src/sfnt/sfdriver.c (sfnt_interface): Add `tt_face_get_kerning'. - - * src/sfnt/sfnt.c: Include `ttkern.c'. - - * src/sfnt/sfobjs.c: Include `ttkern.h'. - (sfnt_load_face): Consider the `kern' and `gasp' table as optional. - (sfnt_done_face): Call `tt_face_done_kern'. - Handle horizontal metrics for FT_OPTIMIZE_MEMORY. - - * src/sfnt/ttkern.c, src/sfnt/ttkern.h: New files. Code has been - taken from `ttload.c' and `ttload.h'. - Provide special versions of `tt_face_load_kern', - `tt_face_get_kerning', and `tt_face_done_kern' for - FT_OPTIMIZE_MEMORY. - - * src/sfnt/ttload.c (tt_face_load_metrics, tt_face_load_hdmx, - tt_face_free_hdmx): Provide version for FT_OPTIMIZE_MEMORY. - (tt_face_load_kern, tt_kern_pair_compare, TT_KERN_INDEX): Moved to - `ttkern.c'. - - * src/sfnt/ttload.h: Updated. - - * src/sfnt/ttsbit.c (sbit_metrics_field): Add `static' keyword. - - * src/truetype/ttdriver.c (Get_Kerning): Renamed to... - (tt_get_kerning): This. Simplify. - (tt_driver_class): Updated. - - * src/truetype/ttgload.c (TT_Get_Metrics): Renamed to... - (tt_face_get_metrics): This. Provide version for FT_OPTIMIZE_MEMORY. - Update all callers. - (Get_Advance_Widths): Replaced with... - (Get_Advance_WidthPtr): This. Provide version for - FT_OPTIMIZE_MEMORY. - Update all callers. - - * src/truetype/ttgload.h: Updated. - -2005-02-22 David Turner - - * src/base/ftdbgmem.c: Partly rewritten. Added the ability to list - all allocation sites in the memory debugger. Also a new function - FT_DumpMemory() was added. It is only available in builds with - FT_DEBUG_MEMORY defined, and you must declare it in your own code to - use it, i.e., with something like: - - extern void FT_DumpMemory( FT_Memory ); - - ... - - FT_DumpMemory( memory ); - - * include/freetype/config/ftoption.h - (TT_CONFIG_OPTION_BYTECODE_INTERPRETER): Comment out definition -- - again. - (FT_OPTIMIZE_MEMORY): New configuration macro to control various - optimizations for reducing the heap footprint of memory-mapped - TrueType files. - - * include/freetype/internal/ftmemory.h (FT_ARRAY_ZERO): New - convenience macro. - - * include/freetype/internal/tttypes.h (TT_FaceRec) - [FT_OPTIMIZE_MEMORY]: Use optimized types for `num_locations' and - `glyph_locations'. - - * src/truetype/ttgload.c (load_truetype_glyph): Call - `tt_face_get_location'. - - * src/truetype/ttobjs.c (tt_face_init) - [FT_CONFIG_OPTION_INCREMENTAL]: Improve error handling. - (tt_face_done): Call `tt_face_done_loca'. - - * src/truetype/ttpload.c (tt_face_get_location, tt_face_done_loca): - New functions. If FT_OPTIMIZE_MEMORY is set, the locations table is - read directly from memory-mapped streams, instead of being decoded - into the heap. - (tt_face_load_loca) [FT_OPTIMIZE_MEMORY]: New implementation. - (tt_face_load_cvt, tt_face_load_fpgm): Only load table if the - bytecode interpreter is compiled in. - - * src/truetype/ttpload.h: Updated. - - * src/autohint/ahglyph.c (ah_outline_load): Improve allocation - logic. - -2005-02-20 Werner Lemberg - - * builds/unix/ltmain.sh: Regenerated with `libtoolize --force - --copy' from libtool 1.5.14. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.9.4. - - * builds/unix/config.guess, builds/unix/config.sub: Updated from - `config' CVS module at subversions.gnu.org. - - * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from - `texinfo' CVS module at subversions.gnu.org. - -2005-02-14 Werner Lemberg - - * src/cff/cffcmap.c (cff_cmap_unicode_init): Don't try to build - a cmap for a CID-keyed font which doesn't have SIDs. - -2005-02-13 Werner Lemberg - - * src/type1/t1load.c (read_binary_data): Return more meaningful - value. - (parse_encoding, parse_subrs, parse_charstrings, parse_dict): Check - parser error value after call to T1_Skip_PS_Token (where necessary). - - * src/type1/t1parse.c (T1_Get_Private_Dict): Check parser error - value after call to T1_Skip_PS_Token. - - * src/cid/cidparse.c (cid_parser_new): Check parser error value - after call to cid_parser_skip_PS_token. - - * src/type42/t42parse.c (t42_parse_encoding, t42_parse_sfnts, - t42_parse_charstrings, t42_parse_dict): Check parser error value - after call to T1_Skip_PS_Token (where necessary). - - * src/psaux/psobjc.c (skip_string, ps_parser_skip_PS_token, - ps_tobytes): Add error messages. - -2005-02-12 Werner Lemberg - - * configure: Output more variables to the created Makefile so that - it can be used for ft2demos also (if the FT2DEMOS variable is - defined). - -2005-02-10 David Turner - - * src/pfr/pfrgload.c (pfr_glyph_load): Fix an unbounded growing - dynamic array when loading a glyph from a PFR font (Savannah bug - #11921). - - * src/base/ftbitmap.c (FT_Bitmap_Convert): Small improvements to the - conversion function (mainly stupid optimization). - - * src/base/Jamfile: Adding ftbitmap.c to the list of compiled files. - -2005-02-10 Werner Lemberg - - * builds/unix/freetype-config.in: Add new flag `--ftversion' to - return the FreeType version. Suggested by George Williams - . - - * docs/CHANGES: Updated. - -2005-02-09 Werner Lemberg - - * src/otvalid/otvmod.c (otv_validate): Deallocate arrays in case - of error. Reported by YAMANO-UCHI Hidetoshi . - -2005-02-08 Werner Lemberg - - * src/psaux/t1decode.c (t1_decoder_parse_charstrings) - : Accept `T1_Parse_Have_Moveto' state also which can - happen in empty glyphs. Reported by Ian Brown - (Savannah bug #11856). - -2005-02-04 Werner Lemberg - - * src/otlayout/*: Removed. Obsolete. - -2004-12-28 Werner Lemberg - - * builds/unix/ltmain.sh: Regenerated with `libtoolize --force - --copy' from libtool 1.5.10. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.9.4. - * builds/unix/configure: Regenerated with autoconf 2.59b. - - * builds/unix/config.guess, builds/unix/config.sub: Updated from - `config' CVS module at subversions.gnu.org. - - * builds/unix/install-sh: Updated from - `texinfo' CVS module at subversions.gnu.org. - - * builds/unix/ftsystem.c (FT_Stream_Open): Add proper cast for - ft_alloc. - Fix compiler warning. - -2004-12-27 Dirck Blaskey - - * src/cff/cffobjs.c (cff_face_init): Improve computation of - FT_STYLE_BOLD_FLAG. - -2004-12-27 Werner Lemberg - - * src/cff/cffobjs.c (cff_face_init): A CFF within an SFNT can have - only a single font. This is undocumented but has been verified on - the opentype list. - -2004-12-26 Werner Lemberg - - * Jamfile (FT2_COMPONENTS): Add `otvalid'. - -2004-12-25 Werner Lemberg - - * src/base/ftbitmap.c (FT_Bitmap_Convert): Fix compiler warning. - -2004-12-15 Werner Lemberg - - * vms_make.com: Add ftbitmap.obj. - -2004-12-14 Werner Lemberg - - * src/base/ftbitmap.c, include/freetype/ftbitmap.h: New files for - handling various bitmap formats. - - * include/freetype/config/ftheader.h (FT_BITMAP_H): New macro. - - * src/base/rules.mk (BASE_EXT_SRC): Add ftbitmap.c. - - * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Don't convert bitmaps to 8bpp - but return them as-is. - - * docs/CHANGES: Mention new bitmap API. - * include/freetype/ftchapter.s: Updated. - -2004-12-11 Robert Clark - - * src/base/ftobjs.c (FT_Get_Kerning): Make kerning amount - dependent on ppem by scaling down for ppem < 25, then do normal - rounding. This gives slightly better results than rounding towards - zero. - -2004-12-09 Werner Lemberg - - * src/base/ftobjs.c (FT_Get_Kerning): Always round towards zero - for FT_KERNING_DEFAULT. This greatly enhances the kerning for - small ppem values. - -2004-12-08 Werner Lemberg - - * src/base/ftobjs.c (ft_glyphslot_clear): Reset `lsb_delta' and - `rsb_delta'. - -2004-12-05 Werner Lemberg - - * builds/unix/install.mk (install): Use $(OBJ_BUILD) for ftconfig.h. - -2004-12-03 Antoine Leca - - * include/freetype/ttnameid.h: Updated to latest - specifications from Microsoft. - -2004-11-26 Jouk Jansen - - * vms_make.com: Include ftbbox.c. - Fix `ccopt'. - Handle `otvalid' module. - Update `vmslib.dat' default values. - Fixes to `libs.opt'. - -2004-11-23 Anders Kaseorg - - * src/base/ftoutln.c (FT_OrientationExtremumRec, - ft_orientation_extremum_compute): Removed. - (FT_Outline_Get_Orientation): Rewritten, simplified. - - * src/autohint/ahglyph.c: Include FT_OUTLINE_H. - (ah_test_extremum, ah_get_orientation): Removed. - (ah_outline_load): Use FT_Outline_Get_Orientation. - - * src/base/ftsynth.c (ft_test_extrama, ft_get_orientation): Removed. - (FT_GlyphSlot_Embolden): Use FT_Outline_Get_Orientation. - -2004-11-23 Fernando Papa - - * src/truetype/ttinterp.h: Fix typo. - -2004-11-22 Antoine Leca - - * builds/win32/detect.mk: Corrected logic that detects Windows NT to - use the previous change even if win32 is forced. Corrected - detection of win32 on Win9X. - - * builds/dos/detect.mk: Added same correction as for win32 about - COPY on Windows NT. Detection of plain DOS 7.x. - -2004-11-22 Werner Lemberg - - * builds/detect.mk: Undo change from 2004-11-20. - * builds/win32/detect.mk: If the `OS' environment variable contains - `Windows_NT', use `cmd.exe /c copy' for copying files. - -2004-11-20 Werner Lemberg - - * builds/detect.mk (dos_setup): Use `cmd.exe' for copying - $(CONFIG_MK) to force lowercase file name under Windows. - -2004-11-19 Werner Lemberg - - Fix a serious bug in the TT hinter. - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Don't shift - points vertically before hinting. - - * docs/CHANGES: Updated. - - * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily, - FTC_GCache_Lookup): A new try to fix comparison with zero. - -2004-11-16 Werner Lemberg - - * builds/unix/configure.ac: Add `-fno-strict-aliasing' if gcc is - used. - * builds/unix/configure: Regenerated. - * builds/unix/config.guess, builds/unix/config.sub: Updated from - `config' CVS module at subversions.gnu.org. - -2004-11-16 Dr. Martin P.J. Zinser - - * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily, - FTC_GCache_Lookup): Fix comparison with zero. - - * docs/INSTALL.VMS: Updated. - - * vms_make.com: Updated. All `descrip.mms' files are now created - automatically. - - * src/*/descrip.mms: Removed. - -2004-11-16 Owen Taylor - - * builds/unix/freetype-config.in: Suppress -L$libdir for - /usr/lib64 as well as /usr/lib. (Reported by Dan Winship - - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=139199) - -2004-11-11 Werner Lemberg - - * src/cff/cffdrivr.c (cff_service_ps_info): Updated. - * src/cid/cidriver.c (cid_service_ps_info): Updated. - * src/type42/t42drivr.c (t42_ps_get_font_private): New function. - (t42_service_ps_info): Updated. - - * src/type42/t42parse.c (t42_parse_dict): Remove compiler warning. - -2004-11-11 David Bevan - - Add new function FT_Get_PS_Font_Private(). - - * include/freetype/internal/services/svpsinfo.h - (PS_GetFontPrivateFunc): New service function. - - * include/freetype/t1tables.h, src/base/fttype1.c - (FT_Get_PS_Font_Private): New function. - - * src/type1/t1driver.c (t1_ps_get_font_private): New function. - (t1_service_ps_info): Updated. - -2004-10-13 Werner Lemberg - - * include/freetype/config/ftstdlib.h: Include `stddef.h'. - (ft_ptrdiff_t): Define. - - * include/freetype/fttypes.h (FT_PtrDist): Use `ft_ptrdiff_t'. - - * src/cid/cidload.c (cid_parse_dict), src/type1/t1load.c - (parse_dict): Fix compiler warning. - -2004-10-11 Joshua Neal - - * src/sfnt/ttcmap.c (tt_face_build_cmaps): Check for pointer - overflow. - - * src/sfnt/ttload.c (tt_face_load_hdmx): Protect against bad input. - Don't use FT_QNEW_ARRAY but FT_NEW_ARRAY to make deallocation work - in case of failure. - - * src/sfnt/ttsbit.c (Load_SBit_Range): Check range intervals. - (tt_face_load_sbit_strikes): Allocate `strike_sbit_ranges' after - frame test. - - * src/truetype/ttgload.c (TTLoad_Simple_Glyph): Add assertion for - `flag'. - -2004-10-09 Werner Lemberg - - * docs/CHANGES: Updated. - -2004-10-09 Boris Letocha - - Fix handling of NPUSHW if skipped in data stream. - - * src/truetype/ttinterp.c (opcode_length): Set value for NPUSHW - to -2. - (SkipCode, TT_RunIns): Use opcode_length value for computation of - bytes to be skipped. - -2004-09-10 Jouk Jansen - - * vms_make.com: Updated. - -2004-09-09 Werner Lemberg - - Adding OpenType validation module. The code is based on the - (unfinished) `otlayout' module but has been heavily modified to make - it much more compact. - - * src/otvalid/*: New module. - - * include/freetype/ftotval.h, src/base/ftotval.c, - include/freetype/internal/services/svotval.h: New files. - - * include/freetype/config/ftmodule.h: Add otv_module_class. - * include/freetype/config/ftheader.h (FT_OPENTYPE_VALIDATE_H): New - macro. - * include/freetype/internal/ftserv.h - (FT_SERVICE_OPENTYPE_VALIDATE_H): New macro. - * include/freetype/internal/fttrace.h (otvmodule, otvcommon, - otvbase, otvgdef, otvgpos, otvgsub, otvjstf): New trace components. - - * include/freetype/ftchapters.h: Updated. - - * src/base/Jamfile (Library), src/base/descrip.mms (OBJS), - src/base/rules.mk (BASE_EXT_SRC): Updated. - - * docs/CHANGES: Updated. - -2004-09-08 Werner Lemberg - - * src/tools/docmaker/sources.py (re_source_block_format2) : - Use lookahead assertion to not match `*/'. This removes spurious - insertions of `/' in the HTML output. - -2004-09-07 Werner Lemberg - - * src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Fix call to - FT_NEW_ARRAY. - -2004-09-04 Werner Lemberg - - * include/freetype/internal/ftobjs.h: Don't include - FT_CONFIG_STANDARD_LIBRARY_H. - (FT_Validator, FT_ValidationLevel, FT_ValidatorRec, FT_VALIDATOR, - ft_validator_init, ft_validator_run, ft_validator_error, FT_INVALID, - FT_INVALID_TOO_SHORT, FT_INVALID_OFFSET, FT_INVALID_FORMAT, - FT_INVALID_GLYPH_ID, FT_INVALID_DATA): Move to... - - * include/freetype/internal/ftvalid.h: New file. - Make FT_INVALID return module-specific error codes. - - * include/freetype/internal/internal.h (FT_INTERNAL_VALIDATE_H): New - macro. - - * include/freetype/fterrors.h: Undefine FT_ERR_PREFIX only if - FT_KEEP_ERR_PREFIX isn't defined. - - * src/base/ftobjs.c: Include FT_INTERNAL_VALIDATE_H. - - * src/sfnt/ttcmap.h: Don't include FT_INTERNAL_OBJECTS_H but - FT_INTERNAL_VALIDATE_H. - - * src/sfnt/ttcmap.c: Don't include FT_INTERNAL_OBJECTS_H but - FT_INTERNAL_VALIDATE_H. - Include sferrors.h before FT_INTERNAL_VALIDATE_H. - s/FT_Err_Ok/SFNT_Err_Ok/. - - * src/sfnt/sferrors.h: Define FT_KEEP_ERR_PREFIX. - - * src/type1/t1afm.c: Include t1errors.h. - -2004-09-03 Werner Lemberg - - * src/base/ftdebug.c (ft_debug_init): Highest debug level is 7, - not 6. - * docs/DEBUG: Updated. - -2004-08-30 Werner Lemberg - - * include/freetype/tttags.h (TTAG_BASE, TTAG_GDEF, TTAG_GPOS, - TTAG_JSTF): New tags. - - * include/freetype/fttypes.h (FT_Bytes, FT_Tag): New typedefs. - (FT_Int): Add `signed'. - -2004-08-29 Werner Lemberg - - * src/otlayout/otlgpos.c (otl_gpos_subtable_validate): Add argument - to pass number of lookups. - Update all callers. - Don't call otl_lookup_list_validate but otl_lookup_validate. - (otl_gpos_validate): Call otl_lookup_list_validate instead of - otl_gpos_subtable_validate. - - * src/otlayout/otlgpos.h: Updated. - - * src/otlayout/otljstf.c (otl_jstf_max_validate): Add argument to - pass number of lookups. - Update all callers. - - - * src/cff/cffparse.c (cff_parse_real): s/exp/exponent/ to avoid - compiler warning. - - - * src/sfnt/ttcmap0.c, src/sfnt/ttcmap0.h: Renamed to... - * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: This. - * src/sfnt/Jamfile, src/sfnt/rules.mk, src/sfnt/sfdriver.c, - src/sfnt/sfnt.c, src/sfnt/sfobjs.c: Updated. - - - * builds/compiler/gcc-dev.mk (CFLAGS): Don't add `-Wnested-externs' - if compiler is g++ (v3.3.3 emits a warning otherwise). - -2004-08-28 Werner Lemberg - - * src/otlayout/otlgpos.c (otl_value_length): Return number of bytes, - not number of 16bit entities. - (otl_gpos_lookup2_validate): Check class definition tables for - format 2. - Fix loop for format 2. - (otl_liga_mark2_validate): Fix offset for otl_anchor_validate. - -2004-08-27 Werner Lemberg - - * src/base/ftmac.c: Don't include truetype/ttobjs.h. - Don't include type1/t1objs.h. - (FT_New_Face_From_FSSpec) [!__MWERKS__]: Remove compiler warnings. - -2004-08-27 Mathieu Malaterre - - * src/base/ftmac.c: Handle OS_INLINE for xlc compiler also. - -2004-08-27 Werner Lemberg - - * src/otlayout/otlayout.h: Add copyright. - (OTL_INVALID_OFFSET): Removed. - - * src/otlayout/otlgdef.h: Include otlayout.h. - Comment out inclusion of otltable.h. - - * src/otlayout/otlgpos.c (otl_gpos_lookup4_validate): Fix call - to otl_base_array_validate. - (otl_liga_mark2_validate): Fix `for' loop. - - * src/otlayout/otlgsub.c (otl_ligature_validate): Check `glyph_id', - not components array. - - * src/otlcommn.c (otl_lookup_get_count, otl_feature_get_count): - Comment out. - (otl_lookup_list_get_count, otl_feature_list_get_count): Activate. - (otl_feature_list_validate, otl_gsubgpos_get_lookup_count): - s/otl_lookup_get_count/otl_lookup_list_get_count/. - (otl_script_list_validate): - s/otl_feature_get_count/otl_feature_list_get_count/. - (otl_script_validate): Call otl_lang_validate for default language. - - * src/otlayout/otlcommn.h: Updated. - -2004-08-16 Werner Lemberg - - * src/otlayout/otlgpos.c (otl_gpos_lookup1_validate, - otl_gpos_lookup2_validate, otl_gpos_lookup3_validate, - otl_gpos_lookup4_validate, otl_gpos_lookup5_validate, - otl_gpos_lookup6_validate, otl_gpos_lookup9_validate, - otl_gpos_validate): Update - function arguments. - (otl_gpos_lookup7_validate, otl_gpos_lookup8_validate): Update - function arguments. - Handle NULL offsets correctly. - Check sequence and lookup indices for format 3. - (otl_pos_rule_validate, otl_chain_pos_rule_validate): Add argument - to pass lookup count. - Check sequence and glyph indices. - (otl_gpos_subtable_validate): Update function arguments. - Update callers. - - * src/otlayout/otlgpos.h: Updated. - - * src/otlayout/otlgsub.c (otl_gsub_lookup1_validate, - otl_gsub_lookup3_validate, otl_gsub_lookup8_validate): Update - function arguments. - Add glyph index checks. - (otl_sequence_validate, otl_alternate_set_validate, - otl_ligature_validate): Add argument to pass glyph count. - Update callers. - Add glyph index check. - (otl_gsub_lookup2_validate, otl_gsub_lookup4_validate): Update - function arguments. - (otl_ligature_set_validate): Add argument to pass glyph count. - Update caller. - (otl_sub_class_rule_validate, - otl_sub_class_rule_set_validate): Removed. - (otl_sub_rule_validate, otl_chain_sub_rule_validate): Add argument - to pass lookup count. - Update callers. - Add lookup index check. - (otl_sub_rule_set_validate, otl_chain_sub_rule_set_validate): Add - argument to pass lookup count. - Update callers. - (otl_gsub_lookup5_validate): Update function arguments. - Handle NULL offsets correctly. - Don't call otl_sub_class_rule_set_validate but - otl_sub_rule_set_validate. - Check sequence and lookup indices for format 3. - (otl_gsub_lookup6_validate): Update function arguments. - Handle NULL offsets correctly. - Check sequence and lookup indices for format 3. - (otl_gsub_lookup7_validate, otl_gsub_validate): Update function - arguments. - - * src/otlayout/otlgsub.h: Updated. - - * src/otlayout/otlbase.c (otl_base_validate): Handle NULL offsets - correctly. - - * src/otlayout/otlcommn.c (otl_class_definition_validate): Fix - compiler warning. - (otl_coverage_get_first, otl_coverage_get_last): New functions. - (otl_lookup_validate): Add arguments to pass lookup and glyph - counts. - Update callers. - (otl_lookup_list_validate): Add argument to pass glyph count. - Update callers. - - * src/otlayout/otlcommn.h: Updated. - - * src/otlayout/otljstf.c (otl_jstf_extender_validate, - otl_jstf_max_validate, otl_jstf_script_validate, - otl_jstf_priority_validate, otl_jstf_lang_validate): Add parameter - to validate glyph indices. - Update callers. - (otl_jstf_validate): Add parameter which specifies number of glyphs - in font. - - * src/otlayout/otljstf.h: Updated. - -2004-08-15 Werner Lemberg - - * src/otlayout/otlgpos.c (otl_liga_mark2_validate): Add parameter - to handle possible NULL values properly. - Update all callers. - -2004-08-15 Werner Lemberg - - * src/otlayout/gpos.c: Rename counting variables to be more - meaningful. - Add copyright. - (otl_liga_attach_validate): Renamed to... - (otl_liga_mark2_validate): This. - Update all callers. - (otl_mark2_array_validate): Removed. - (otl_gpos_lookup6_validate): Call otl_liga_mark2_validate, not - otl_mark2_array_validate. - (otl_pos_class_set_validate, otl_pos_class_rule_validate): Removed. - (otl_gpos_lookup7_validate): Complete code for format 2. - (otl_chain_pos_class_rule_validate, - otl_chain_pos_class_set_validate): Removed. - (otl_gpos_lookup8_validate): Don't call - otl_chain_pos_class_set_validate but - otl_chain_pos_rule_set_validate. - Simplify some code. - - * src/otlayout/otlgpos.h: Add copyright. - -2004-08-14 Werner Lemberg - - * src/otlayout/otljstf.c (otl_jstf_gsub_mods_validate): Removed. - (otl_jstf_gpos_mods_validate): Renamed to... - (otl_jstf_gsubgpos_mods_validate): This. - Test whether lookup_count is zero. - (otl_jstf_priority_validate): Use otl_jstf_gsubgpos_mods_validate. - (otl_jstf_validate): Initialize gsub_lookup_count and - gpos_lookup_count if gsub or gpos is zero. - - * src/otlayout/otlgsub.c: Rename counting variables to be more - meaningful. - Add copyright. - (otl_gsub_lookup1_validate): Simplify code. - (otl_gsub_lookup2_validate, otl_gsub_lookup3_validate, - otl_gsub_lookup4_validate, otl_gsub_lookup7_validate): Remove unused - variables. - (otl_gsub_lookup5_validate): Remove unused variable. - Fix call to otl_sub_rule_set_validate and - otl_sub_class_rule_set_validate. - (otl_chain_sub_class_rule_validate, - otl_chain_sub_class_set_validate): Removed. - (otl_gsub_lookup6_validate): Remove unused variable. - Fix call to otl_chain_sub_rule_set_validate. - (otl_gsub_lookup7_validate): Handle lookup type 8 also. - (otl_gsub_lookup8_validate: New function. - (otl_gsub_lookup1_apply, otl_gsub_lookup2_apply, - otl_gsub_lookup3_apply): Commented out. - (otl_gsub_validate_funcs): Add otl_gsub_lookup7_validate and - otl_gsub_lookup8_validate. - (otl_gsub_validate): Updated. - - * src/otlayout/otlgsub.h: Add copyright. - - * src/otlayout/otlcommn.c, src/otlayout/otlcommn.h - (otl_coverage_get_index): Comment out. - -2004-08-13 Werner Lemberg - - * src/otlayout/otlcommn.c (otl_gsubgpos_get_lookup_count): New - function. - * src/otlayout/otlcommn.h: Updated. - - * src/otlayout/otlbase.c: Rename counting variables to be more - meaningful. - Add copyright message. - * src/otlayout/otlbase.h: Add copyright message. - - * src/otlayout/otlgdef.c: Rename counting variables to be more - meaningful. - Add copyright message. - Use OTL_CHECK everywhere. - (otl_caret_value_validate): Remove unused variable. - (otl_gdef_validate): All tables are optional. - * src/otlayout/otlgdef.h: Add copyright message. - - * src/otlayout/otljstf.c: Rename counting variables to be more - meaningful. - Add copyright message. - (otl_jstf_gsub_mods_validate, otl_jstf_gpos_mods_validate): Add - parameter to pass lookup count. - Update all callers. - Check lookup array. - (otl_jstf_max_validate): - s/otl_gpos_subtable_check/otl_gpos_subtable_validate/. - (otl_jstf_priority_validate, otl_jstf_lang_validate, - otl_jstf_script_validate): Add two parameters to pass lookup counts. - Update all callers. - (otl_jstf_validate): Add two parameters to pass GPOS and GSUB - table offsets; use otl_gsubgpos_get_lookup_count to convert extract - lookup counts. - Fix typo. - * src/otlayout/otljstf.h: Updated. - Add copyright message. - - * src/otlayout/otlgpos.c (otl_gpos_subtable_validate): New function. - (otl_gpos_validate): Use it. - * src/otlayout/otlgpos.h: Updated. - -2004-08-13 Werner Lemberg - - * src/otlayout/otcommn.c: Use OTL_CHECK everywhere. - (otl_coverage_validate): Initialize `p', - s/count/num_glyphs/. - s/start_cover/start_coverage/. - (otl_coverage_get_index): Return OTL_Long, not OTL_Int. - Remove unused variables. - (otl_class_definition_validate): s/count/num_glyphs/. - Remove unused variables. - (otl_class_definition_get_value, otl_device_table_get_start, - otl_device_table_get_end, otl_device_table_get_delta, - otl_lookup_get_table, otl_lookup_list_get_count, - otl_lookup_list_get_lookup, otl_lookup_list_get_table, - otl_feature_get_lookups, otl_feature_list_get_count, - otl_feature_list_get_feature, otl_lang_get_count, - otl_lang_get_req_feature, otl_lang_get_features): Commented out - temporarily until we really need it. - (otl_lookup_validate): Removed. - (otl_lookup_table_validate): Renamed to ... - (otl_lookup_validate): This. Update callers. - (otl_lookup_list_validate): Remove already commented out definition - and move the other definition up. - (otl_feature_validate): Add parameter to pass number of lookups. - Update callers. - Check lookup indices. - (otl_feature_list_validate): Add parameter to pass lookup table. - Update callers. - (otl_lang_validate): Add parameter to pass number of features. - Update callers. - Handle req_feature and check feature indices. - (otl_script_validate): Add parameter to pass number of features. - Update callers. - (otl_script_list_validate): Add parameter to pass feature table. - Update callers. - - * src/otlayout/otcommn.h: s/LOCALDEF/LOCAL/. - Comment out the same functions as in otcommn.c. - (otl_script_list_get_script): Removed. - - * src/otlayout/otlgsub.c (otl_gsub_lookup1_apply): Change `index' to - type OTL_Long. - (otl_gsub_lookup2_apply, otl_gsub_lookup3_apply): Change `index' to - type OTL_Long. - Fix test. - (otl_gsub_validate): Fix order of validation. - - * src/otlayout/otlgpos.c (otl_gpos_validate): Fix order of - validation. - -2004-08-12 Werner Lemberg - - Make otlayout module compile (without actually working). - - * src/otlayout/*: s/OTL_Valid/OTL_Validator/. - s/NULL/0/. - - * src/otlayout/otlayout.h: Fix various typos. - (OTL_Bool): New typedef. - (OTL_Int, OTL_Long, OTL_Int16, OTL_Int32): Use `signed' keyword. - (OTL_Err_InvalidArgument): Removed. - (OTL_Err_InvalidData, OTL_Err_InvalidSize): New enum values. - (OTL_MAKE_TAG): Add missing parenthesis. - (OTL_INVALID_DATA): Use OTL_Err_InvalidData. - (OTL_INVALID_TOO_SHORT): Use OTL_Err_InvalidSize. - (OTL_INVALID_FORMAT, OTL_INVALID_OFFSET): New macros. - - * src/otlayout/otlgpos.c: s/FT_/OTL_/. - s/OTL_Short/OTL_Int16/. - (otl_gpos_pairset_validate): Add return type. - (otl_base_array_validate): Fix call to otl_anchor_validate. - (otl_liga_array_validate): Fix call to otl_liga_attach_validate. - (otl_gpos_lookup5_validate): Fix typos. - (otl_gpos_lookup6_validate): Fix call to otl_mark2_array_validate. - (otl_gpos_lookup7_validate): Comment out unfinished code. - Fix typos. - - * src/otlayout/otlgsub.c: Add forward declaration for - otl_gsub_validate_funcs. - (otl_gsub_lookup1_apply, otl_gsub_lookup2_apply, - otl_gsub_lookup3_apply): Fix call to otl_parser_check_property. - s/otl_coverage_lookup/otl_coverage_get_index/. - (otl_ligature_validate): Add missing variable declaration. - (otl_sub_rule_validate): Fix typo. - (otl_sub_class_rule_validate): Add missing variable declaration. - Fix typo. - (otl_gsub_lookup5_validate): Fix typo. - (otl_gsub_lookup6_validate): Fix call to - otl_chain_sub_class_set_validate. - (otl_gsub_validate_funcs): Don't use `const'. - - * src/otlayout/otlcommn.c (otl_class_definition_get_value, - otl_device_table_validate, otl_device_table_get_delta, - otl_lookup_validate, otl_script_validate): Add missing - variable declarations. - (otl_lookup_list_validate): Comment out first definition. - (otl_lookup_list_foreach, otl_feature_list_foreach): Comment out. - (otl_feature_list_validate): - s/otl_feature_table_validate/otl_feature_validate/. - (otl_script_list_validate): - s/otl_script_table_validate/otl_script_validate/. - - * src/otlayout/otlcommn.h: Comment out first declaration. - (otl_lookup_list_foreach, otl_feature_list_foreach): Comment out. - - * src/otlayout/otlbase.c (otl_base_coord_validate): Fix call to - otl_device_table_validate. - (otl_base_script_validate): Add missing variable declarations. - (otl_base_script_list_validate): Fix call to - otl_base_script_validate. - (otl_axis_table_validate): Fix calls to otl_base_tag_list_validate - and otl_base_script_list_validate. - (otl_base_validate): Fix calls to otl_axis_table_validate. - - * src/otlayout/otlgdef.c (otl_attach_list_validate): Fix call to - otl_attach_point_validate. - (otl_caret_value_validate): Add missing variable declaration. - Fix call to otl_device_table_validate. - (otl_ligature_glyph_validate): Fix call to otl_caret_value_validate. - (otl_ligature_caret_list_validate): Fix call to - otl_ligature_glyph_validate. - (otl_gdef_validate): Fix calls to otl_class_definition_validate, - otl_attach_list_validate, otl_ligature_caret_list_validate, and - otl_class_definition_validate. - - * src/otlayout/otltable.h (otl_table_validate, otl_table_init, - otl_table_set_script): Comment out. - - * src/otlayout/otlparse.h (OTL_ParserRec): - s/OTL_Alternate/OTL_GSUB_Alternate/. - (OTL_ParseError): Add OTL_Err_Parser_Memory and - OTL_Err_Parser_Internal. - (otl_parser_error): Fix typo. - (otl_parser_check_property): Remove third argument. - - * src/otlayout/otlparse.c (otl_string_ensure): - s/OTL_Parse_Err_Memory/OTL_Err_Parser_Memory/. - (OTL_STRING_ENSURE, otl_parser_error, otl_parser_get_index, - otl_parser_replace_1, otl_parser_replace_n): Fix typos. - (OTL_PARSER_UNCOVERED): Removed. - (otl_parser_check_property): Remove third argument. - - * src/otlayout/otljstf.c (otl_jstf_priority_validate): Add missing - variable declaration. - - * src/otlayout/otlutils.h (OTL_MEM_REALLOC): Fix typo. - -2004-08-11 Danny - - * src/base/ftstream.c (FT_Stream_Close): Don't reset stream->close - to NULL. This allows custom close functions to delete the FT_STREAM - object. - -2004-08-11 Werner Lemberg - - Add API to get information about SFNT tables. - - * include/freetype/internal/services/svsfnt.h - (FT_SFNT_Table_Info_Func): New typedef. - (SFNT_Table): Add it. - - * src/base/ftobjs (FT_Sfnt_Table_Info): New function. - - * include/freetype/tttables.h: Updated. - - * src/sfnt/sfdriver.c (sfnt_table_info): New function. - (sfnt_service_sfnt_table): Add it. - - * docs/CHANGES: Updated. - - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 10. - - * builds/unix/configure.ac (version_info): Set to 9:8:3. - * builds/unix/configure: Updated. - - * builds/win32/visualc/index.html, - builds/win32/visualc/freetype.dsp, - builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/. - - * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): - s/2.1.9/2.1.10/. - - * docs/CHANGES, docs/VERSION.DLL: Updated. - -2004-08-11 Detlef Würkner - - * src/base/ftrfork.c (FT_Raccess_Guess) - [!FT_CONFIG_OPTION_GUESSING_EMBEDDED_FORK]: Remove compiler - warnings. - -2004-08-06 Adam Piotrowski - - * src/pfr/pfrload.c (pfr_sort_kerning_pairs): Single-byte - adjustments are unsigned, not signed. - -2004-08-05 David Turner - - `Activate' gray-scale specifing hinting within the TrueType - bytecode interpreter. This is an experimental feature which - should probably be made optional. - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph, - load_truetype_glyph): Move the code to set the pedantic_hinting flag - to... - (TT_Load_Glyph): Here. - Set `grayscale' flag except for `FT_LOAD_TARGET_MONO'. - - * src/truetyep/ttinterp.c (Ins_GETINFO): Return MS rasterizer - version 1.7. - Return rotation and stretching info only if glyph is rotated or - stretched, respectively. - Handle grayscale info. - - * src/truetype/ttinterp.h (TT_ExecContextRec): Add `grayscale' - member. - -2004-08-02 George Williams - - * src/base/ftobjs.c (FT_Attach_File): Initialize `open.stream'. - -2004-08-01 Werner Lemberg - - * docs/CHANGES: Updated. - -2004-08-01 George Williams - - FreeType now can read kerning values from PFM files. - - * src/type1/t1afm.c (T1_Done_AFM): Renamed to... - (T1_Done_Metrics): This. - Update all callers. - (T1_Read_AFM): Make it static. - Don't enter and leave a frame. - (LITTLE_ENDIAN_USHORT, LITTLE_ENDIAN_UINT): New macros. - (T1_Read_PFM): New function. - (T1_Read_Metrics): New higher-level function to be used instead of - T1_Read_AFM. - Update all callers. - -2004-07-31 Werner Lemberg - - * src/pcf/pcfread (pcf_load_font), src/bdf/bdfdrivr.c - (BDF_Face_Init), src/truetype/ttgxvar (TT_Get_MM_Var, - tt_face_vary_cvt): Fix compiler warnings. - -2004-07-26 Søren Sandmann - - * src/pcf/pcfread.c (pcf_interpret_style): Always allocate memory for - face->style_name. - * src/pcf/pcfdrivr.c (PCF_Face_Done): Free `style_name'. - -2004-07-26 Darren J Longhorn - - * include/freetype/config/ftconfig.h (FT_SIZEOF_LONG): Recognize - five-byte `long' (which is avoided then). - -2004-07-25 Detlef Würkner - - * src/pcf/pcfdrivr.c (PCF_Set_Pixel_Size): Compare heights, not - ppem values. - (PCF_Set_Point_Size): Don't call PCF_Set_Pixel_Size but provide own - code to compare ppem values. - * src/bdf/bdfdrivr.c (BDF_Set_Pixel_Size): Compare heights, not - ppem values. - (BDF_Set_Point_Size): Don't call BDF_Set_Pixel_Size but provide own - code to compare ppem values. - -2004-07-25 Kornfeld Eliyahu Peter - - * src/sfnt/sfobjs.c (sfnt_load_face): Handle - TT_NAME_ID_PREFERRED_FAMILY and TT_NAME_ID_PREFERRED_SUBFAMILY. - -2004-07-24 Derek B. Noonburg - - * src/cff/cffload.c (cff_font_load): Always create inverse mapping. - Even if the charstring count is the same as the CID count, it is - still possible that the font uses a different CID -> GID mapping. - -2004-07-23 Werner Lemberg - - * src/truetype/ttobjs.c (tt_face_init): Accept 0x00020000 format tag - found in some Arphic fonts made for Chinese version of Windows 3.1. - -2004-07-17 David Turner - - Fixed a dangling pointer bug in the cache code that happened in very - rare cases, i.e., when a new family object was destroyed by an - out-of-memory condition during a glyph node initialization. The - function FTC_Cache_Lookup would flush the cache and restart the - lookup with a bad pointer. - - * include/freetype/cache/ftcglyph.h (FTC_FAMILY_TREE): New macro. - (FTC_GCACHE_LOOKUP_CMP): Use it. - Handle reference count in `num_nodes' correctly. - - * src/cache/ftcglyph.c (FTC_GNode_UnselectFamily): Use - FTC_FAMILY_FREE. - (FTC_GCache_Lookup): Handle reference count in `num_nodes' correctly. - - * src/cache/ftcmanag.c (FTC_Manager_FlushN): Fixed a cache flushing - bug. - - * src/truetype/ttinterp.c (Normalize): Fixed a bug that caused - long and unnecessary delays while normalizing huge vectors. - -2004-07-15 Werner Lemberg - - * docs/CHANGES: Updated. - - * src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix compiler - warning. - -2004-07-15 David Turner - - * src/base/ftstroke.c (FT_Stroker_ParseOutline): Single points - are not stroked, preventing a bug with pala.ttf and other - fonts. - - * include/freetype/ftstroke.h: Updating documentation comments. - -2004-07-13 Werner Lemberg - - * src/base/ftstroke.c (ft_stroke_border_reverse): Removed. Unused. - -2004-07-12 David Turner - - * src/base/ftstroke.c (ft_stroke_border_close): Add second parameter - to indicate reversion of points. - Update all callers. - (ft_stroke_border_reverse): Fix initialization of `point1' and - `tag1'. - - * src/cache/ftcsbits.c (ftc_snode_load): Fixing advance computation - for transformed glyphs. - -2004-07-11 David Turner - - Fix bugs that prevented the stroker to correctly generate stroked - paths from closed paths, i.e., nearly all glyphs in vectorial fonts. - - The code is still _very_ buggy though; treat with special care. - - * src/base/ftstroke.c (FT_STROKE_TAG_BEGIN_END): New macro. - (ft_stroke_border_reverse): New function. - (ft_stroker_inside): Remove local variable `sigma'; use different - threshold. - (ft_stroker_add_reverse_left): Switch begin/end tags if necessary. - (FT_Stroker_EndSubPath): Call ft_stroker_inside and - ft_stroke_border_reverse. - -2004-06-26 Peter Kovar - - * src/truetype/ttgload.c (load_truetype_glyph): Fix typo. - -2004-06-25 Werner Lemberg - - * src/type1/t1afm.c (afm_atoindex): Fix boundary test. Reported - by Dirck Blaskey. - -2004-06-24 David Turner - - - * Version 2.1.9 released. - ========================= - - - * src/truetype/ttgload.c, src/truetype/ttxgvar.c: Removing - compiler warnings. - -2004-06-23 Werner Lemberg - - * include/freetype/internal/ftmemory.h [FT_DEBUG_MEMORY]: Declare - FT_QAlloc_Debug and FT_QRealloc_Debug. - - * src/base/ftutil.c (FT_QAlloc): Fix error and debug messages. - (FT_QRealloc): Call FT_QAlloc if original pointer is NULL. - Fix error message. - -2004-06-23 David Turner - - * include/freetype/internal/ftmemory.h, src/base/ftutil.c - (FT_QAlloc, FT_QRealloc), src/base/ftdbgmem.c (FT_QAlloc_Debug, - FT_QRealloc_Debug): New functions that perform allocation without - zero-ing out the corresponding blocks. - - * include/freetype/internal/ftmemory.h (FT_MEM_QALLOC, - FT_MEM_QREALLOC, FT_MEM_QNEW, FT_MEM_QNEW_ARRAY, - FT_MEM_QRENEW_ARRAY, FT_QALLOC, FT_QREALLOC, FT_QNEW, FT_QNEW_ARRAY, - FT_QRENEW_ARRAY): New macros. - - * src/base/ftstream.c (FT_Stream_EnterFrame): Use FT_QALLOC. - * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use FT_QNEW_ARRAY. - * src/sfnt/sfobjs.c (tt_face_get_name): Use FT_QNEW_ARRAY. - - * src/sfnt/ttload.c (tt_face_load_directory, tt_face_load_metrics, - tt_face_load_gasp): Use FT_QNEW_ARRAY. - (tt_face_load_kern): Use FT_QNEW_ARRAY. - Small optimization in the kerning table verifier; this speeds up - TrueType face opening by about 7%. - (tt_face_load_hdmx): Use FT_QNEW_ARRAY and FT_QALLOC. - - * include/freetype/config/ftmodule.h: Changed the order of modules, - putting TrueType and Type 1 first. This dramatically improves the - performance of face open/close operations. For example, putting the - TrueType driver first in the list results in a 5x speedup when - opening `Vera.ttf'. - - The very problem is that both the PCF and BDF drivers do a lot more - than necessary to detect that they cannot handle a font file. - -2004-06-22 Werner Lemberg - - * src/pcf/pcfread.c (pcf_read_TOC, pcf_get_properties, - pcf_get_metrics, pcf_get_bitmaps, pcf_get_encodings): Improve - debugging messages. - - * src/pcf/pcfdrivr.c (FT_COMPOMENT): Move up. - (PCF_Face_Init): Simplify code. - - * src/bdf/bdfdrivr.h (BDF_FaceRec): New element `default_glyph'. - - * src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_start), - src/bdf/bdf.h (bdf_font_t): s/default_glyph/default_char/. - - * src/bdf/bdfdrivr.c (BDF_Face_Init): Fix number of glyphs. - Set `default_glyph'. - (BDF_Glyph_Load): Use `default_glyph' for undefined glyph. - - * docs/CHANGES: Updated. - -2004-06-21 Werner Lemberg - - * docs/CHANGES: Updated. - -2004-06-21 David Turner - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph, - load_truetype_glyph): Don't access (unrounded) - `TT_Size.root.metrics' but (rounded) `TT_Size.metrics'. This fixes - a scaling bug that caused incorrect rendering when the bytecode - interpreter was enabled. - -2004-06-14 Huw D M Davies - - * src/winfonts/winfnt.c (FNT_Face_Init): Set x_ppem and y_ppem - based on pixel_width and pixel_height. - (FNT_Size_Set_Pixels): Updated. - -2004-06-14 Werner Lemberg - - * src/lzw/zopen.c: Comment out inclusion of signal.h and unistd.h. - Reported by Hyvärinen Jyrki Juhani. - -2004-06-11 Werner Lemberg - - * docs/CHANGES: Updated. - -2004-06-10 David Turner - - * src/base/ftobject.c, src/base/fthash.c, src/base/ftexcept.c, - src/base/ftsysio.c, src/base/ftsysmem.c, src/base/ftlist.c: Removed. - Obsolete. - - * src/raster/ftraster.c (Alignment, PAlignment): New union to fix - problems with 64bit systems. - (AlignProfileSize): Use it. - -2004-06-08 David Turner - - * include/freetype/freetype.h (FT_GlyphMetrics): Move `lsb_delta' - and `rsb_delta' elements to... - (FT_GlyphSlotRec): Here to retain binary compatibility with older - FreeType versions. - Update all users. - - * src/sfnt/sfobjs.c (tt_face_get_name): Remove compiler warning. - - * src/winfonts/winfnt.c (FNT_Load_Glyph): Add missing initialization - of slot->metrics.width and slot->metrics.height when loading a - Windows FNT glyph. Thanks to Huw Davies. - - * include/freetype/cache/ftcmru.h (FTC_MruNode_CompareFunc): Change - return type to FT_Bool. - - * src/cache/ftbasic.c (ftc_basic_family_compare): Change return - type to FT_Bool. - - * src/cache/ftccache.c (FTC_Cache_Init, ftc_cache_init): Make - the former call the latter, not vice versa. - (FTC_Cache_Done, ftc_cache_done): Ditto. - - * src/cache/ftcglyph.c (FTC_GNode_Compare, ftc_gnode_compare): Make - the former call the latter, not vice versa. - (FTC_GCache_Init, ftc_gcache_init): Ditto. - (FTC_GCache_Done, ftc_gcache_done): Ditto. - - * src/cache/ftcimage.c (FTC_INode_Free, ftc_inode_free): Make the - former call the latter, not vice versa. - (FTC_INode_Weight, ftc_inode_weight): Ditto. - - * src/cache/ftcmanag.c (ftc_size_node_compare, - ftc_size_node_compare_faceid, ftc_face_node_compare): Change return - type to FT_Bool. - - * src/cache/ftcsbits.c (FTC_SNode_Free, ftc_snode_free): Make the - former call the latter, not vice versa. - (FTC_SNode_Weight, ftc_snode_weight): Ditto. - (FTC_SNode_Compare, ftc_snode_compare): Ditto. - - * src/cache/ftcsbits.c: Fix some bugs and inefficiencies in the cache - sub-system. - -2004-06-05 Werner Lemberg - - * src/autofit/afloader.c (af_loader_load_g): Set `lsb_delta' and - `rsb_delta' in slot->metrics and tune side bearings slightly. - -2004-06-04 Werner Lemberg - - * docs/CHANGES: Updated. - -2004-06-04 David Chester - - Improve inter-letter spacing for autohinted glyphs. - - * include/freetype/freetype.h (FT_Glyph_Metrics): Add elements - `lsb_delta' and `rsb_delta'. - - * src/autohint/ahhint.c (ah_hinter_load): Set `lsb_delta' and - `rsb_delta' in slot->metrics and tune side bearings slightly. - -2004-06-04 David Turner - - * src/autofit/*: Important fixes to the auto-fitter. The output - now seems to be 100% equivalent to the auto-hinter, while being - about 2% faster (which proves that script-specific algorithm - selection isn't a performance problem). - - To test it, change `autohint' to `autofit' in - and recompile. - - A few more testing is needed before making this the official - auto-hinting module. - -2004-06-02 Werner Lemberg - - * src/truetype/ttgload.c (compute_glyph_metrics): Fix compiler - warnings. - -2004-06-01 Werner Lemberg - - * src/sfnt/sfobjs.c (tt_face_get_name): Make sure that an English - name record for the Apple platform is preferred to a non-English - entry for the Microsoft platform. Problem reported by HANDA - Ken'ichi. - -2004-05-19 George Williams - - * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): New - auxiliary functions. - (T1_Get_MM_Var): Provide axis tags. - Use mm_axis_unmap and mm_weights_unmap to provide default values - for design and normalized axis coordinates. - - * include/freetype/t1tables.h (PS_DesignMapRec): Change type of - `design_points' to FT_Long. - Update all users. - -2004-05-17 Werner Lemberg - - * src/base/ftbbox.c (BBox_Conic_Check): Fix boundary cases. - Reported by Mikey Anbary . - -2004-05-15 Werner Lemberg - - * src/sfnt/sfobjs.c (sfnt_done_face): Free face->postscript_name. - -2004-05-15 George Williams - - * src/sfnt/ttload.c (tt_face_load_max_profile): Always set - face->root.num_glyphs. - -2004-05-14 Masatake YAMATO - George Williams - - * src/sfnt/ttload.c (sfnt_dir_check): Handle `bhed' properly. - -2004-05-14 Werner Lemberg - - * src/cache/ftcbasic.c (ftc_basic_family_compare, - ftc_basic_family_init, ftc_basic_family_get_count, - ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, - ftc_basic_gnode_compare_faceid): Adjust parameters and return types - to prototypes given in header files from include/freetype/cache. - Use casts to proper types locally. - (ftc_basic_image_family_class, ftc_basic_image_cache_class, - ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): Remove - casts. - - * src/cache/ftccback.h: Adjust parameters and return types to - prototypes given in header files from include/freetype/cache. - - * src/cache/ftcimage.c (ftc_inode_free, ftc_inode_new, - ftc_inode_weight): Adjust parameters and return types to prototypes - given in header files from include/freetype/cache. Use casts to - proper types locally. - - * src/cache/ftcsbits.c (ftc_snode_free, ftc_snode_new, - ftc_snode_weight, ftc_snode_compare): Adjust parameters and return - types to prototypes given in header files from - include/freetype/cache. Use casts to proper types locally. - - * src/cache/ftccmap.c (ftc_cmap_node_free, ftc_cmap_node_new, - ftc_cmap_node_weight, ftc_cmap_node_compare, - ftc_cmap_node_remove_faceid): Adjust parameters and return types to - prototypes given in header files from include/freetype/cache. Use - casts to proper types locally. - (ftc_cmap_cache_class): Remove casts. - - * src/cache/ftcglyph.c (ftc_gnode_compare, ftc_gcache_init, - ftc_gcache_done): Adjust parameters and return types to prototypes - given in header files from include/freetype/cache. Use casts to - proper types locally. - - * src/cache/ftcmanag.c (ftc_size_node_done, ftc_size_node_compare, - ftc_size_node_init, ftc_size_node_reset, - ftc_size_node_compare_faceid, ftc_face_node_init, - ftc_face_node_done, ftc_face_node_compare: Adjust parameters and - return types to prototypes given in header files from - include/freetype/cache. Use casts to proper types locally. - - (ftc_size_list_class, ftc_face_list_class): Remove casts. - -2004-05-13 Werner Lemberg - - * src/autohint/ahmodule.c (ft_autohinter_init, ft_autohinter_done): - Use FT_Module as parameter and do a cast to FT_AutoHinter locally. - (autohint_module_class): Remove casts. - - * src/base/ftglyph.c (ft_bitmap_glyph_init, ft_bitmap_glyph_copy, - ft_bitmap_glyph_done, ft_bitmap_glyph_bbox, ft_outline_glyph_init, - ft_outline_glyph_done, ft_outline_glyph_copy, - ft_outline_glyph_transform, ft_outline_glyph_bbox, - ft_outline_glyph_prepare): Use FT_Glyph as parameter and do a cast - to FT_XXXGlyph locally. - Use FT_CALLBACK_DEF throughout. - (ft_bitmap_glyph_class, ft_outline_glyph_class): Remove casts. - - * src/bdf/bdfdrivr.c (bdf_cmap_init, bdf_cmap_done, - bdf_cmap_char_index, bdf_cmap_char_next): Use FT_CMap as parameter - and do a cast to BDF_CMap locally. - (bdf_cmap_class): Remove casts. - -2004-05-12 Werner Lemberg - - * src/cff/cffgload.h (CFF_Builder): Remove `error'. - * src/cff/cffgload.c (cff_decoder_parse_charstrings): Replace - `Memory_Error' with `Fail' und update all users. - -2004-05-11 Werner Lemberg - - * include/freetype/internal/psaux.h (T1_ParseState): New - enumeration. - (T1_BuilderRec): Replace `path_begun' with `parse_state'. - Remove `error'. - * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Replace - `Memory_Error' with `Fail' and update all users. - Don't use `builder->error'. - Replace `path_begun' with `parse_state' and check parsing states. - - * src/psaux/psobjs.c (t1_builder_init, t1_builder_start_point): - Replace `path_begun' with `parse_state' and check parsing states. - -2004-05-10 George Williams - - * src/truetype/ttxgvar.c (ft_var_load_avar): Do free arrays in case - of error -- `avar' is optional so we can't rely on tt_done_blend - being called automatically. - -2004-05-09 George Williams - - * src/truetype/ttxgvar.c (ft_var_load_avar, ft_var_load_gvar): Fix - error handling. - -2004-05-07 Werner Lemberg - - * src/pfr/pfrobjs.c, src/pfr/pfrobjs.h (pfr_face_init, - pfr_face_done, pfr_face_get_kerning, pfr_slot_init, pfr_slot_done, - pfr_slot_load): Don't use PFR_XXX but FT_XXX arguments which are - typecast to the proper PFR_XXX types within the function. - Update code accordingly. - - * src/pfr/pfrdrivr.c (pfr_get_kerning, pfr_get_advance, - pfr_get_metrics, pfr_get_service): Don't use PFR_XXX but FT_XXX - arguments which are typecast to the proper PFR_XXX types within the - function. - Update code accordingly. - Use FT_CALLBACK_DEF throughout. - (pfr_metrics_service_rec, pfr_driver_class): Remove casts. - -2004-05-06 Masatake YAMATO - - * src/truetype/ttgxvar.c (ft_var_load_gvar): Use FT_FACE_STREAM. - (*): Rename local variable OffsetToData to offsetToData. - -2004-05-06 Werner Lemberg - - * src/cff/cffobjs.c (cff_size_done, cff_size_init, cff_size_reset, - cff_slot_done, cff_slot_init, cff_face_init, cff_face_done): Access - root fields directly. - * src/cff/cffdrivr.c (Load_Glyph): Access root fields directly. - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Save current - frame before calling TT_Vary_Get_Glyph_Deltas. - - * src/pcf/pcfdrivr.c (PCF_CMapRec): Rename `cmap' to `root' for - consistency. - (pcf_cmap_init, pcf_cmap_done, pcf_cmap_char_index, - pcf_cmap_char_next): Don't use PCF_XXX but FT_XXX arguments which - are typecast to the proper PCF_XXX types within the function. - Update code accordingly. - (pcf_cmap_class): Remove casts. - (PCF_Face_Done, PCF_Face_Init, PCF_Set_Pixel_Size): Don't use - PCF_XXX but FT_XXX arguments which are typecast to the proper - PCF_XXX types within the function. - Update code accordingly. - Use FT_CALLBACK_DEF throughout. - (PCF_Set_Point_Size): New wrapper function. - (PCF_Glyph_Load, pcf_driver_requester): Use FT_CALLBACK_DEF. - (pcf_driver_class): Remove casts. - -2004-05-04 Steve Hartwell - - * src/truetype/ttobjs.c (tt_driver_done): Fix typo. - -2004-05-04 Werner Lemberg - - * src/bdf/bdfdrivr.c (BDF_Face_Done, BDF_Face_Init, - BDF_Set_Pixel_Size): Don't use BDF_XXX but FT_XXX arguments which - are typecast to the proper BDF_XXX types within the function. - Update code accordingly. - Use FT_CALLBACK_DEF throughout. - (BDF_Set_Point_Size): New wrapper function. - (bdf_driver_class): Remove casts. - - * src/cff/cffdrivr.c (Get_Kerning, Load_Glyph, cff_get_interface): - Don't use CFF_XXX but FT_XXX arguments which are typecast to the - proper CFF_XXX types within the function. - Update code accordingly. - Use FT_CALLBACK_DEF throughout. - (cff_driver_class): Remove casts. - - * src/cff/cffobjs.h, src/cff/cffobjs.c (cff_size_done, - cff_size_init, cff_size_reset, cff_slot_done, cff_slot_init, - cff_face_init, cff_face_done, cff_driver_init, cff_driver_done): - Don't use CFF_XXX but FT_XXX arguments which are typecast to the - proper CFF_XXX types within the function. - Update code accordingly. - (cff_point_size_reset): New wrapper function. - - * src/cid/cidobjs.h, src/cid/cidobjs.c (cid_slot_done, - cid_slot_init, cid_size_done, cid_size_init, cid_size_reset, - cid_face_done, cid_face_init, cid_driver_init, cid_driver_done): - Don't use CID_XXX but FT_XXX arguments which are typecast to the - proper CID_XXX types within the function. - Update code accordingly. - (cid_point_size_reset): New wrapper function. - - * src/cid/cidgload.c, src/cid/cidgload.h (cid_slot_load_glyph): - Don't use CID_XXX but FT_XXX arguments which are typecast to the - proper CID_XXX types within the function. - Update code accordingly. - - * src/cid/cidriver.c (cid_get_interface): - Don't use CID_XXX but FT_XXX arguments which are typecast to the - proper CID_XXX types within the function. - Update code accordingly. - Use FT_CALLBACK_DEF. - (t1cid_driver_class): Remove casts. - - * src/truetype/ttdriver.c (tt_get_interface): Use FT_CALLBACK_DEF. - * src/truetype/ttgxvar.c (ft_var_load_avar): Don't free non-local - variables (this is done later). - (ft_var_load_avar): Fix call to FT_FRAME_ENTER. - (TT_Get_MM_Var): Fix size for `fvar_fields'. - (TT_Vary_Get_Glyph_Deltas): Handle deallocation of local variables - correctly. - - * src/base/ftdbgmem.c (ft_mem_debug_realloc): Don't abort if - current size is zero. - -2004-05-03 Steve Hartwell - - * src/truetype/ttobjs.h, src/truetype/ttobjs.c (tt_face_init, - tt_face_done, tt_size_init, tt_size_done, tt_driver_init, - tt_driver_done): Don't use TT_XXX but FT_XXX arguments which are - typecast to the proper TT_XXX types within the function. - Update code accordingly. - - * src/truetype/ttdriver.c (Get_Kerning, Set_Char_Sizes, - Set_Pixel_Sizes, Load_Glyph, tt_get_interface): Don't use TT_XXX but - FT_XXX arguments which are typecast to the proper TT_XXX types - within the function. - Update code accordingly. - (tt_driver_class): Remove casts. - -2004-05-02 Werner Lemberg - - * src/sfnt/ttload.c (tt_face_free_names): Check that `table->names' - is not NULL. Reported by Gordon Childs . - -2004-04-29 Werner Lemberg - - * docs/formats.txt: Add more information on PFR format. - -2004-04-28 Werner Lemberg - - * docs/formats.txt: New file. - * docs/CHANGES: Updated. - -2004-04-28 Masatake YAMATO - - * include/freetype/internal/tttypes.h (GX_BlendRec_) - [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix a typo. - - * src/truetype/ttgxvar.h (GX_BlendRec_): Fix a typo. - -2004-04-27 Masatake YAMATO - - * src/truetype/ttgxvar.h: Use FT_LOCAL instead of FT_LOCAL_DEF - for function declarations. - -2004-04-25 George Williams - - * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix typo. - -2004-04-25 Werner Lemberg - - * src/truetype/Jamfile, docs/CHANGES: Updated. - -2004-04-24 Werner Lemberg - - * src/pcf/pcfdrivr.c: Revert change from 2004-04-17. - * src/pcf/pcfutil.c: Use FT_LOCAL_DEF. - * src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H. - Use FT_BEGIN_HEADER and FT_END_HEADER. - Use FT_LOCAL. - -2004-04-24 George Williams - - Add support for Apple's distortable font technology (in GX fonts). - - * devel/ftoption.h, include/freetype/config/ftoption.h - (TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro. - - * include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style, - FT_MM_Var): New structures. - (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, - FT_Set_Var_Blend_Coordinates): New function declarations. - - * include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func, - FT_Set_Var_Design_Func): New typedefs. - Update MultiMasters service. - - * include/freetype/internal/tttypes.h - [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H. - (GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef. - (TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend' - and `blend'. - - * include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New - macros. - - * include/freetype/internal/fttrace.h: Add `ttgxvar'. - - * src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, - FT_Set_Var_Blend_Coordinates): New functions. - - * src/sfnt/sfobjs.c (sfnt_load_face) - [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS - flag for GX var fonts. - - * src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files. - - * src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include - ttgxvar.c. - - * src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include - FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h. - (tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: - New service. - (tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated. - - * src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include - ttgxvar.h. - (TT_Process_Simple_Glyph, load_truetype_glyph) - [TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts. - - * src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include - ttgxvar.h. - (tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call - tt_done_blend. - - * src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include - ttgxvar.h. - (tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call - tt_face_vary_cvt. - - * src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c. - - * src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var - and T1_Set_Var_Design. - - * src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros. - (T1_Get_MM_Var, T1_Set_Var_Design): New functions. - - * src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New - function declarations. - -2004-04-23 Werner Lemberg - - * include/freetype/ftcache.h (FT_Get_CharMap_Index): Rename - declaration and move to... - * include/freetype/freetype.h (FT_Get_Charmap_Index): Here. - (FREETYPE_PATCH): Set to 9. - - * src/base/ftobjs.c (FT_Get_Charmap_Index): New function. - - * builds/unix/configure.ac (version_info): Set to 9:7:3. - * builds/unix/configure: Updated. - - * builds/win32/visualc/index.html, - builds/win32/visualc/freetype.dsp, - builds/win32/visualc/freetype.vcproj: s/218/219/. - - * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): - s/2.1.8/2.1.9/. - - * docs/CHANGES, docs/VERSION.DLL: Updated. - -2004-04-21 Werner Lemberg - - * src/cff/cffparse.c (cff_parser_run), src/psaux/psobjs.c - (ps_parser_load_field): Use FT_CHAR_BIT. - -2004-04-21 David Turner - - - * Version 2.1.8 released. - ========================= - - - * src/cff/cffobjs.c (cff_face_init): Fix a small memory leak. - - * src/autofit/afloader.c (af_loader_load_g), src/autofit/afmodule.c - (af_autofitter_load_glyph), src/base/ftdebug.c (FT_Trace_Get_Name): - Remove compiler warnings. - - * src/autofit/aftypes.h: Undefine AF_DEBUG. - - * src/lzw/zopen.c (rmask), src/pcf/pcfdrivr.c (pcf_service_bdf, - pcf_services), src/pcf/pcfread.c (tableNames), src/psaux/psobjs.c - (ft_char_table), src/type42/t42drivr.c (t42_service_glyph_dict, - t42_service_ps_font_name): Decorate data arrays with `const' to - avoid populating the `.data' segment. - - * src/lzw/Jamfile: New file. - -2004-04-20 Werner Lemberg - - * src/psaux/psobjs.c (T1Radix): Renamed to... - (ps_radix): This. - Update current cursor position. - - * docs/CHANGES: Updated. - -2004-04-18 Werner Lemberg - - * src/truetype/ttgload.c, src/truetype/ttgload.h (TT_Load_Glyph), - src/ttdriver.c (Load_Glyph): Change type of `glyph_index' to - FT_UInt. From Lex Warners. - -2004-04-17 Chisato Yamauchi - - * src/sfnt/ttload.c (tt_face_load_sfnt_header): Really fix change - from 2004-03-19. - - * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `ft_strlen'. - - * src/pcf/pcfutil.c, src/pcf/pcfutil.h: Decorate functions with - `static'. - Remove unused function `RepadBitmap'. - * src/pcf/pcfdrivr.c: Don't include pcfutil.h. - -2004-04-16 Werner Lemberg - - * builds/unix/freetype-config.in (usage): Fix and improve usage - information. - -2004-04-15 Werner Lemberg - - * builds/unix/ftconfig.in, builds/vms/ftconfig.h: Define - FT_CHAR_BIT. - - * src/base/ftobjs.c (FT_Load_Glyph): Don't apply autohinting if - glyph is vertically distorted or mirrored. - - * src/cff/cffgload.c (cff_slot_load): Handle zero `size' properly - for embedded bitmaps. - - * docs/CHANGES: Updated. - -2004-04-15 bytesoftware - - * include/freetype/config/ftconfig.h, src/base/ftstream.c - (FT_Stream_ReadFields): More fixes using FT_CHAR_BIT. - -2004-04-14 Werner Lemberg - - * include/freetype/config/ftconfig.h (FT_CHAR_BIT): New macro. - -2004-04-14 Alex Strelnikov - - * src/cache/ftcsbits.c (ftc_snode_load): Initialize `*asize' in case - of error. - -2004-04-14 Werner Lemberg - - * src/base/ftmac.c [__GNUC__]: Define OS_INLINE. - * builds/unix/configure.ac: Don't try to remove `-ansi' compilation - switch on the Mac. - - * builds/unix/ltmain.sh: Regenerated with `libtoolize --force - --copy' from libtool 1.5.6. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.8a. - * builds/unix/configure: Regenerated with autoconf 2.59a. - -2004-04-13 Werner Lemberg - - * include/freetype/config/ftconfig.h: Use CHAR_BIT to define - size of FT_SIZEOF_xxx. - -2004-04-12 Chisato Yamauchi - - * include/freetype/internal/sfnt.h (TT_Find_SBit_Image_Func, - TT_Load_SBit_Metrics_Func): New typedefs. - (SFNT_Interface): Add find_sbit_image and load_sbit_metrics. - - * src/sfnt/sfdriver.c (sfnt_interface): Updated. - * src/sfnt/ttsbit.h (tt_find_sbit_image, tt_load_sbit_metrics): New - declarations. - * src/sfnt/ttsbit.c (find_sbit_image): Renamed to... - (tt_find_sbit_image): This. - Updated all callers. - (load_sbit_metrics): Renamed to... - (tt_load_sbit_metrics): This. - Updated all callers. - -2004-04-12 Werner Lemberg - - * configure: Accept makepp also. - - * builds/unix/detect.mk: Use proper path to unix-def.mk. - * builds/unix/unix-def.in (BUILD_DIR, PLATFORM): Remove. - * builds/unix/unix.mk (BUILD_DIR, PLATFORM): Define. - Use BUILD_DIR. - - * docs/INSTALL, docs/INSTALL.GNU, docs/INSTALL.UNX: Update - documentation on makepp. - -2004-04-11 Werner Lemberg - - * src/lzw/zopen.c: Don't include sys/param.h and sys/stat.h. - -2004-04-10 Werner Lemberg - - * src/lzw/ftlzw.c: Include zopen.h dependent on - FT_CONFIG_OPTION_USE_LZW. - - * src/base/ftdebug.c: s/index/idx/ to avoid compiler warnings. - -2004-04-02 Werner Lemberg - - * builds/unix/ltmain.sh: Regenerated with `libtoolize --force - --copy' from libtool 1.5.2. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.8a. - * builds/unix/configure: Regenerated with autoconf 2.59a. - -2004-04-01 Werner Lemberg - - * builds/unix/ft-munmap.m4 (FT_MUNMAP_PARAM): Fix arguments of - AC_COMPILE_IFELSE. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.8a. - * builds/unix/configure: Regenerated with autoconf 2.59a. - * builds/unix/config.guess, builds/unix/config.sub: Updated from - `config' CVS module at subversions.gnu.org. - * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from - `texinfo' CVS module at subversions.gnu.org. - * builds/freetype.mk (refdoc): Updated. - -2004-03-31 Werner Lemberg - - Handle broken FNT files which don't have a trailing NULL byte - in the face name string. - - * src/winfonts/winfnt.h (FNT_FontRec): New member `family_name'. - * src/winfonts/winfnt.c (fnt_font_done): Free font->family_name. - (FNT_Face_Init): Append a final zero byte to the font face name. - -2004-03-30 Werner Lemberg - - * src/sfnt/ttload.c (tt_face_load_sfnt_header): Fix change from - 2004-03-19. - -2004-03-27 Werner Lemberg - - * src/base/descrip.mms (OBJS): Add ftbbox.obj. - -2004-03-26 George Williams - - Add vertical phantom points. - - * include/freetype/internal/tttypes.h (TT_LoaderRec): Add - `top_bearing', `vadvance', `pp3', and `pp4'. - - * src/autofit/afloader.c (af_loader_load_g): Handle two more points. - - * src/autohint/ahhint.c (ah_hinter_load): Handle two more points. - * src/truetype/ttgload.c (Get_VMetrics): New function. - (TT_Load_Simple_Glyph, TT_Process_Simple_Glyph): Handle two more - points. - (load_truetype_glyph): Use Get_VMetrics. - Handle two more points. - (compute_glyph_metrics): Thanks to vertical phantom points we now - can always compute `advance_height' and `top_bearing'. - * src/truetype/ttobjs.h (TT_SubglyphRec): Add vertical phantom - points. - - - * src/autohint/ahglyph.c (ah_outline_load): Fix allocation of - `news'. - -2004-03-21 Werner Lemberg - - * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Fix left side bearing. - -2004-03-20 Steve Hartwell - - * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Handle a NULL - value for `selection' as `select all'. - -2004-03-19 Steve Hartwell - - * src/sfnt/ttload.c (tt_face_load_sfnt_header): Reject face_index - values > 0 if loading non-TTC fonts. - - * src/base/ftmac.c (open_face_from_buffer): Set positive face_index - to zero before calling FT_Open_Face. - - * docs/CHANGES: Updated. - -2004-03-04 Werner Lemberg - - * Jamfile, vms_make.com, builds/win32/visualc/freetype.dsp, - builds/win32/visualc/freetype/vcproj, include/freetype/ftmoderr.h: - Add LZW module. - - * Jamfile.in: Removed. - - * docs/CHANGES: Updated. - - * include/freetype/internal/ftobjs.h: s/MIN/FT_MIN/, s/MAX/FT_MAX/, - s/ABS/FT_ABS/. Updated all callers. - - * src/type1/t1load.c (parse_dict), src/pcf/pcfdrivr.c - (PCF_Face_Init): Use FT_ERROR_BASE. - -2004-03-04 Albert Chin - - Add support for PCF fonts compressed with LZW (extension .pcf.Z, - created with `compress'). - - * include/freetype/config/ftoption.h, devel/ftoption.h - (FT_CONFIG_OPTION_USE_LZW): New macro. - - * include/freetype/ftlzw.h: New file. - * include/freetype/config/ftheader.h (FT_LZW_H): New macro for - ftlzw.h. - - * src/lzw/*: New files. - - * src/pcf/pcfdrivr.c: Include FT_LZW_H. - (PCF_Face_Init): Try LZW also. - - * src/gzip/ftgzip.c: s/0/Gzip_Err_Ok/ where appropriate. - Beautify. - -2004-03-03 Werner Lemberg - - * src/pshinter/pshalgo.c (psh_hint_table_init): Simplify code. - -2004-03-02 Werner Lemberg - - Add embedded bitmap support to CFF driver. - - * src/cff/cffobjs.h (CFF_SizeRec): New structure. - - * src/cff/cffgload.c (cff_builder_init): Updated. - (cff_slot_load): Updated. - [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Load sbit. - - * src/cff/cffobjs.c (sbit_size_reset) - [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New function. - (cff_size_get_globals_funcs, cff_size_done, cff_size_init): Updated. - (cff_size_reset): Updated. - [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Call sbit_size_reset. - - * src/cff/cffdrivr.c (Load_Glyph): Updated. - (cff_driver_class): Use CFF_SizeRec. - - * docs/CHANGES: Updated. - -2004-03-01 Werner Lemberg - - * src/pshinter/pshglob.c (psh_globals_scale_widths): Don't use - FT_RoundFix but FT_PIX_ROUND. - (psh_blues_snap_stem): Don't use blue_shift but blue_threshold. - - * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD_MAXIMUM): New macro. - (psh_glyph_find_string_points): Use PSH_STRONG_THRESHOLD_MAXIMUM. - (psh_glyph_find_blue_points): New function. Needed for fonts like - p052003l.pfb (URW Palladio L Roman) which have flex curves at the - base line within blue zones, but the flex curves aren't covered by - hints. - (ps_hints_apply): Use psh_glyph_find_blue_points. - -2004-02-27 Garrick Meeker - - * builds/unix/configure.ac: Fix compiler flags for - `--with-old-mac-fonts'. - * builds/unix/configure: Regenerated. - - * src/base/ftmac.c: s/TARGET_API_MAC_CARBON/!TARGET_API_MAC_OS8/. - (FT_New_Face_From_Resource): New function. - (FT_New_Face): Use FT_New_Face_From_Resource. - (FT_New_Face_From_FSSpec): Use FT_New_Face_From_Resource. - [__MWERKS__]: Don't include FSp_fopen.h. - -2004-02-26 Werner Lemberg - - * src/pshinter/pshglob.c (psh_globals_new): Fix value of - `dim->stdw.count'. - Don't assign default values to blue scale and blue shift. - -2004-02-25 Werner Lemberg - - * docs/CHANGES: Updated. - -2004-02-25 Garrick Meeker - Steve Hartwell - - Improve MacOS fond support. Provide a new API - `FT_New_Face_From_FSSpec' similar to `FT_New_Face'. - - * src/base/ftmac.c [__MWERKS__]: Include FSp_fpopen.h. - STREAM_FILE [__MWERKS__]: New macro. - (ft_FSp_stream_close, ft_FSp_stream_io) [__MWERKS__]: New functions. - (file_spec_from_path) [__MWERKS__]: Updated #if statement. - (get_file_type, make_lwfn_spec): Use `const' for argument. - (is_dfont) [TARGET_API_MAC_CARBON]: Removed. - (count_face_sfnt, count_faces): New functions. - (parse_fond): Do some range checking. - (read_lwfn): Change type of second argument. - No longer call FSpOpenResFile. - (OpenFileAsResource): New function. - (FT_New_Face_From_LWFN): Use `const' for second argument. - Use OpenFileAsResource. - (FT_New_Face_From_Suitcase): Change type of second argument. - No longer call FSpOpenResFile. - Loop over all resource indices. - (FT_New_Face_From_dfont) [TARGET_API_MAC_CARBON]: Removed. - (FT_GetFile_From_Mac_Name): Use `const' for first argument. - (ResourceForkSize): Removed. - (FT_New_Face): Updated to use new functions. - (FT_New_Face_From_FSSpec): New function. - - * include/freetype/ftmac.h: Updated. - -2004-02-24 Malcolm Taylor - - * src/autohint/ahhint.c (ah_hinter_load) : - Handle case where outline->num_vedges is zero while computing hinted - metrics. - -2004-02-24 Gordon Childs - - * src/cff/cffcmap.c (cff_cmap_unicode_init): Provide correct value - for `count'. - -2004-02-24 Werner Lemberg - - * include/freetype/t1tables.h (PS_PrivateRec): Add - `expansion_factor'. - - * src/pshinter/pshglob (psh_blues_scale_zones): Fix computation - of blues->no_overshoots -- `blues_scale' is stored with a - magnification of 1000, and `scale' returns fractional pixels. - - * src/type1/t1load.c (T1_Open_Face): Initialize `blue_shift', - `blue_fuzz', `expansion_factor', and `blue_scale' according to the - Type 1 specification. - - * src/type1/t1tokens.h: Handle `ExpansionFactor'. - - * docs/CHANGES: Updated. - -2004-02-24 Masatake YAMATO - - Provide generic access to MacOS resource forks. - - * src/base/ftrfork.c, include/freetype/internal/ftrfork.h: New - files. - - * src/base/ftobjs.c: Include FT_INTERNAL_RFORK_H. - (Mac_Read_POST_Resource, Mac_Read_sfnt_Resource): Remove arguments - `resource_listoffset' and `resource_data' and adapt code - accordingly. These values are calculated outside of the function - now. - Add new argument `offsets'. - (IsMacResource): Use `FT_Raccess_Get_HeaderInfo' and - `FT_Raccess_Get_DataOffsets'. - (load_face_in_embedded_rfork): New function. - (load_mac_face): Use load_face_in_embedded_rfork. - (ft_input_stream_new): Renamed to... - (FT_Stream_New): This. Use FT_BASE_DEF. Updated all callers. - (ft_input_stream_free): Renamed to... - (FT_Stream_Free): This. Use FT_BASE_DEF. Updated all callers. - - * src/base/ftbase.c: Include ftrfork.c. - - * src/base/rules.mk (BASE_SRC), src/base/Jamfile: Updated. - - * include/freetype/internal/internal.h (FT_INTERNAL_RFORK_H): - New macro. - - * include/freetype/internal/fttrace.h: Added `rfork' as a new - trace definition. - - * include/freetype/internal/ftstream.h: Declare FT_Stream_New and - FT_Stream_Free. - - * include/freetype/config/ftoption.h, devel/ftoption.h - (FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK): New option. - - * include/freetype/config/ftstdlib.h (ft_strrchr): New macro. - -2004-02-23 Werner Lemberg - - * docs/CHANGES: Updated. - - * include/freetype/internal/ftdebug.h: Include FT_FREETYPE_H. - -2004-02-23 Masatake YAMATO - - Provide a simple API to control FreeType's tracing levels. - - * include/freetype/internal/ftdebug.h (FT_Trace_Get_Count, - FT_Trace_Get_Name): New declarations. - - * src/base/ftdebug.c (FT_Trace_Get_Count, FT_Trace_Get_Name): New - functions. - -2004-02-23 David Turner - - * src/autofit/afhints.c, src/autofit/afhints.h, - src/autofit/aflatin.c, src/autofit/afloader.c, src/types.h: Grave - bugs have been fixed. The auto-fitter works, doesn't crash, but - still produces unexpected results... - -2004-02-21 Werner Lemberg - - * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD): Changed to hold - the accepted shift for strong points in fractional pixels (which - is a heuristic value). - (psh_glyph_find_strong_points): Compute threshold for - psh_hint_table_find_strong_points. - (psh_hint_table_find_strong_point): Add parameter to pass threshold. - -2004-02-20 Werner Lemberg - - * src/pshinter/pshrec.c (ps_mask_table_set_bits): Don't call - ps_mask_table_alloc but ps_mask_table_last. - (ps_hints_t2mask): Use correct position and number for vertical - and horizontal hinter mask bits. - - * docs/CHANGES: Updated. - -2004-02-19 Werner Lemberg - - * src/base/ftstroke.c (FT_Glyph_StrokeBorder): Fix enum handling. - * src/cff/cffdrivr.c (cff_get_cmap_info): Remove compiler warning. - -2004-02-18 Werner Lemberg - - * include/freetype/freetype.h: Document FT_LOAD_TARGET_XXX properly. - - * src/base/ftglyph.c (ft_bitmap_glyph_class, - ft_outline_glyph_class): Tag with FT_CALLBACK_TABLE_DEF. - - * src/smooth/ftsmooth.c (ft_smooth_render): Handle - FT_RENDER_MODE_LIGHT. - -2004-02-17 Werner Lemberg - - Fix callback functions in cache module. - - * src/cache/ftccback.h: New file for callback declarations. - - * src/cache/ftcbasic.c (ftc_basic_family_compare, - ftc_basic_family_init, ftc_basic_family_get_count, - ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, - ftc_basic_gnode_compare_faceid): Use FT_CALLBACK_DEF. - (ftc_basic_image_family_class, ftc_basic_image_cache_class, - ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): - Use FT_CALLBACK_TABLE_DEF and local wrapper functions. - - * src/cache/ftccache.c: Include ftccback.h. - (ftc_cache_init, ftc_cache_done): New wrapper functions which use - FT_LOCAL_DEF. - - * src/cache/ftccmap.c: Include ftccback.h. - (ftc_cmap_cache_class): Use local wrapper functions. - - * src/cache/ftcglyph.c: Include ftccback.h. - (ftc_gnode_compare, ftc_gcache_init, ftc_gcache_done): New wrapper - functions which use FT_LOCAL_DEF. - - * src/cache/ftcimage.c: Include ftccback.h. - (ftc_inode_free, ftc_inode_new, ftc_inode_weight): New wrapper - functions which use FT_LOCAL_DEF. - - * src/cache/ftcmanag.c (ftc_size_list_class, ftc_face_list_class): - Use FT_CALLBACK_TABLE_DEF. - - * src/cache;/ftcsbits.c: Include ftccback.h. - (ftc_snode_free, ftc_snode_new, ftc_snode_weight, - ftc_snode_compare): New wrapper functions which use FT_LOCAL_DEF. - - * src/cache/rules.mk (CACHE_DRV_H): Add ftccback.h. - -2004-02-17 Masatake YAMATO - - * include/freetype/ftmac.h (FT_GetFile_From_Mac_Name): Fix a typo - (FT_EXPORT_DEF -> FT_EXPORT). - - * include/freetype/ftxf86.h (FT_Get_X11_Font_Format): Ditto. - -2004-02-15 Werner Lemberg - - * src/base/ftobjs.c (FT_Set_Char_Size): Fix typo. - -2004-02-14 Masatake YAMATO - - * builds/unix/ftsystem.c: Include errno.h. - (ft_close_stream): Renamed to... - (ft_close_stream_by_munmap): This. - (ft_close_stream_by_free): New function. - (FT_Stream_Open): Use fallback method if mmap fails. - Use proper function for closing the stream. - -2004-02-14 Werner Lemberg - - * src/type1/t1load.c (parse_dict): Initialize `start_binary'. - -2004-02-13 Robert Etheridge - - * src/type42/t42objs.c (T42_Face_Init), src/type1/t1objs.c - (T1_Face_Init), src/cid/cidobjs.c (cid_face_init): Fix computation - of underline_position and underline_thickness. - -2004-02-12 Werner Lemberg - - * src/base/ftobjs.c (FT_Set_Char_Size): Return immediately if - ppem values don't change. Suggested by Graham Asher. - -2004-02-11 Werner Lemberg - - * src/cid/cidload.c (cid_face_open): Always allocate - face->cid_stream so that we can deallocate it safely. - -2004-02-10 Werner Lemberg - - Make the PS parser more tolerant w.r.t. non-standard font data. In - general, an error is only reported in case of a syntax error; a - wrong type is now simply ignored (if possible). To be independent - of the order of various MM-specific keywords, the parse_shared_dict - routine has been removed -- the PS parser is now capable to skip - this data. It no longer fails on parsing e.g. - - dup /WeightVector exch def - - Since the token following /WeightVector isn't `[' (starting an - array) it is simply ignored. - - * include/freetype/fterrdef.h: Define `FT_Err_Ignore' (0xA2) as a - new internal error value. - - * src/type1/t1load.c (parse_blend_axis_types, - parse_blend_design_positions, parse_blend_design_map): Return - T1_Err_Ignore if no proper array is following the keyword. - (parse_weight_vector): Use T1_ToTokenArray, initializing `blend' - structure, if necessary. - Return T1_Err_Ignore if no proper array is following the keyword. - (parse_shared_dict): Removed. - (parse_encoding): Set parser->root.error to return T1_Err_Ignore - if no result can be obtained. - Check for errors before accessing `elements' array. - (t1_keywords): Remove /shareddict. - (parse_dict): Reset error if t1_load_keyword returns T1_Err_Ignore. - Set keyword_flag only in case of success. - Check error code if skipping an unrecognized token. - (T1_Open_Face) [!T1_CONFIG_OPTION_NO_MM_SUPPORT]: Call T1_Done_Blend - if blend commands haven't set up a proper MM font. - - * src/psaux/psobjs.c (ps_parser_load_field_table): Remove special - code for synthetic fonts. - Return PSaux_Err_Ignore if no proper value has been found. - -2004-02-09 Werner Lemberg - - * src/cff/cffgload.c (cff_decoder_parse_charstrings) - : Preserve glyph width before calling - cff_operator_seac. - -2004-02-09 Martin Muskens - - * src/cff/cffgload.c (cff_decoder_parse_charstrings): Handle special - first argument for `hintmask' and `cntrmask' operators also. - -2004-02-08 Werner Lemberg - - * builds/unix/configure.in: Call AC_SUBST for `enable_shared', - `hardcode_libdir_flag_spec', and `wl'. - * builds/unix/configure: Regenerated. - - * builds/unix/freetype-config.in: Make --prefix and --exec-prefix - actually work. - Report a proper --rpath (or -R) value for --libs argument if a - shared library has been built. - - * docs/CHANGES: Updated. - -2004-02-07 Keith Packard - - * src/bdf/bdfdrivr.c (BDF_Face_Init, BDF_Set_Pixel_Size): Fix - computation of various vertical and horizontal metric values. - - * src/pcfdrivr.c (PCF_Set_Pixel_Size), src/pcfread (pcf_load_font): - Ditto. - -2004-02-07 Werner Lemberg - - * builds/win32/visualc/index.html, - builds/win32/visualc/freetype.dsp, - builds/win32/visualc/freetype.dsw, docs/CHANGES: Updated. - -2004-02-07 Vitaliy Pasternak - - * builds/win32/visualc/freetype.sln, - builds/win32/visualc/freetype.vcproj: New files for VS.NET 2003. - -2004-02-03 Werner Lemberg - - * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): - Initialize `node'. - * src/type1/t1load.c (parse_dict): Initialize `have_integer'. - -2004-02-02 Werner Lemberg - - * src/type1/t1load.c (parse_dict): Handle `RD' and `-|' commands - outside of /Subrs or /CharStrings. This can happen if there is - additional code manipulating those two arrays so that FreeType - doesn't recognize them properly. - (T1_Open_Face): Improve an error message. - -2004-02-01 Werner Lemberg - - * src/type1/t1load.c (parse_charstrings): Exit immediately if - there are no elements in /CharStrings. This is needed for fonts - like Optima-Oblique which not only define /CharStrings but access it - also. - -2004-02-01 David Turner - - * src/sfnt/Jamfile: Removing `ttcmap' from the list of sources. - - * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP) - : Provide macro version which doesn't use inline code. - * include/freetype/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP) - : Ditto. - Use FTC_MRULIST_LOOKUP_CMP. - * include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): New - macro. - (FTC_MRULIST_LOOKUP): Use it. - - * src/cache/Jamfile (_sources), src/cache/descrip.mms: Updated. - * src/cache/ftcbasic.c: Fix compiler warnings. - * src/cache/ftcmanag.c (FTC_Manager_LookupSize, - FTC_Manager_LookupFace) : Use FTC_MRULIST_LOOKUP_CMP. - * src/cache/ftcmru.c (FTC_MruList_Find): Fix a bug (found after - heavy testing). - - * Jamfile: Updating `refdoc' target, and adding `autohint' to the - list of modules to build. Both the autohinter and autofitter will - be built by default. But which one will be used is determined by - the content of `ftmodule.h'. - - * src/autofit/*: Many updates, but the code is still buggy... - -2004-01-31 Werner Lemberg - - * src/cff/cffgload.c (cff_operator_seac): Fix magnitude of - accent offset. - Update code similarly to the seac support for Type 1 fonts. - (cff_decoder_parse_charstrings) : Fix magnitude - of accent offset. - Don't hint glyphs twice if seac is emulated. - : Assign correct point tags. - * docs/CHANGES: Updated. - -2004-01-30 Werner Lemberg - - * src/type1/t1parse.c (T1_Get_Private_Dict): Use FT_MEM_MOVE, not - FT_MEM_COPY, for copying the private dict. - - * src/type1/t1load.c (parse_subrs): Assign number of subrs only - in first run. - (parse_charstrings): Parse /CharStrings in second run without - assigning values. - (parse_dict): Skip all /CharStrings arrays but the first. We need - this for non-standard fonts like `Optima' which have different - outlines depending on the resolution. Note that there is no - guarantee that we get fitting /Subrs and /CharStrings arrays; this - can only be done by a real PS interpreter. - -2004-01-29 Antoine Leca - - * builds/win32/visualc/index.html: New file, giving detailed - explanations about forcing CR+LF line endings for the VC++ project - files. - -2004-01-22 Garrick Meeker - - * src/cff/cffload.c (cff_subfont_load): Initialize `dict'. - -2004-01-22 Werner Lemberg - - Add support for the hexadecimal representation of binary data - started with `StartData' in CID-keyed Type 1 fonts. - - * include/freetype/internal/t1types.h (CID_FaceRec): Add new - members `binary_data' and `cid_stream'. - - * src/cid/cidload.c (cid_read_subrs): Use `face->cid_stream'. - (cid_hex_to_binary): New auxiliary function. - (cid_face_open): Add new argument `face_index' to return quickly - if less than zero. Updated all callers. - Call `cid_hex_to_binary', then open and assign memory stream to - `face->cid_stream' if `parser->binary_length' is non-zero. - * src/cid/cidload.h: Updated. - - * src/cid/cidobjs.c (cid_face_done): Free `binary_data' and - `cid_stream'. - - * src/cid/cidparse.c (cid_parser_new): Check arguments to - `StartData' and set parser->binary_length accordingly. - * src/cid/cidparse.h (CID_Parser): New member `binary_length'. - - * src/cid/cidgload.c (cid_load_glyph): Use `face->cid_stream'. - - * docs/CHANGES: Updated. - -2004-01-21 Werner Lemberg - - include/freetype/config/ftstdlib.h (ft_atoi): Replaced with... - (ft_atol): This. - * src/base/ftdbgmem.c: s/atol/ft_atol/. - * src/type42/t42drivr.c: s/ft_atoi/ft_atol/. - -2004-01-20 Masatake YAMATO - - * include/freetype/ftcache.h: Delete duplicated definition of - FTC_FaceID. - - * src/cff/cffdrivr.c (cff_get_cmap_info): Call sfnt module's TT CMap - Info service function if the cmap comes from sfnt. Return 0 if the - cmap is sythesized in cff module. - -2004-01-20 David Turner - - * src/cache/ftcmanag.c (ftc_size_node_compare): Call - FT_Activate_Size. - -2004-01-20 Werner Lemberg - - * src/type1/t1parse.c (T1_Get_Private_Dict): Skip exactly one - CR, LF, or CR/LF after `eexec'. - -2004-01-18 David Turner - - * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Remove compiler - warning. - - * src/tools/docmaker/*: Updating beautifier tool. - -2004-01-15 David Turner - - * src/base/ftoutln.c (ft_orientation_extremum_compute): Fix - infinite loop bug. - - * include/freetype/ftstroke.h: Include FT_GLYPH_H. - (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_Glyph_StrokeBorder): New - declarations. - - * src/base/ftstroke.c: Include FT_INTERNAL_OBJECTS_H. - (FT_Outline_GetOutsideBorder): Inverse result. - (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_GlyphStrokeBorder): New - functions. - (FT_Stroker_EndSubPath): Close path if needed. - (FT_Stroker_Set, FT_Stroker_ParseOutline): Use FT_Stroker_Rewind. - - * include/freetype/cache/ftcmanag.h (FTC_ScalerRec, - FTC_Manager_LookupSize): Moved to... - * include/freetype/ftcache.h (FTC_ScalerRec, - FTC_Manager_LookupSize): Here. - - * src/tools/docmaker/docbeauty.py: New file to beautify the - documentation comments (e.g., to convert them to single block border - mode). - * src/tools/docmaker/docmaker.py (file_exists, make_file_list): - Moved to... - * src/tools/docmaker/utils.py (file_exists, make_file_list): Here. - -2004-01-14 David Turner - - * include/freetype/internal/ftmemory.h (FT_ARRAY_COPY, - FT_ARRAY_MOVE): New macros to make copying arrays easier. - Updated all relevant code to use them. - -2004-01-14 Werner Lemberg - - * src/cff/cffload.c (cff_font_load): Load charstrings_index earlier. - Use number of charstrings as argument to CFF_Load_FD_Select (as - documented in the CFF specs). - -2004-01-13 Graham Asher - - * src/pshinter/pshalgo.c (psh_glyph_init): Move assignment of - `glyph->memory' up to free arrays properly in case of failure. - -2004-01-10 Masatake YAMATO - - Make `FT_Get_CMap_Language_ID' work with CFF. Bug reported by - Steve Hartwell . - - * src/cff/cffdrivr.c: Include FT_SERVICE_TT_CMAP_H. - (cff_services): Added an entry for FT_SERVICE_ID_TT_CMAP. - (cff_get_cmap_info): New function. - (cff_service_get_cmap_info) New entry for cff_services. - - * src/sfnt/ttcmap0.c: Exit loop after a format match has been found. - Suggested by Steve Hartwell . - -2004-01-03 Masatake YAMATO - - * src/base/ftobjs.c (destroy_charmaps): New function. - (destroy_face, open_face): Use `destroy_charmaps'. - -2004-01-01 Werner Lemberg - - * docs/CHANGES: Updated. - -2004-01-01 Michael Jansson - - * src/winfonts/winfnt.c (FNT_Size_Set_Pixels): Fix sign of - size->metrics.descender. - -2003-12-31 Wolfgang Domröse - - * src/cff/cffgload.c (cff_decoder_parse_charstrings) - [FT_DEBUG_LEVEL_TRACE]: Use `%ld' in FT_TRACE4. - : Change type of dx and dy to FT_Pos and remove - cast for accessing arguments. - -2003-12-31 Werner Lemberg - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Revert previous - change. It's not necessary. - -2003-12-29 Smith Charles - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle `repeated - flags set' correctly. - -2003-12-29 Werner Lemberg - - * src/cff/cffobjs.c (cff_face_init): Fix memory leak by deallocating - `full' and `weight' properly. - * src/cff/cffgload.c (cff_decoder_parse_charstrings) - [FT_DEBUG_LEVEL_TRACE]: Use `0x' as prefix for - tracing output. - -2003-12-26 Werner Lemberg - - * include/freetype/internal/sfnt.h (TT_Set_SBit_Strike_Func): - Use FT_UInt for ppem values. - * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use FT_UInt for - ppem values. - * src/sfnt/ttsbit.h: Updated. - - * src/base/ftobjs.c (FT_Set_Pixel_Sizes): Don't allow ppem values - larger than -0FFFF. - -2003-12-25 Werner Lemberg - - * src/base/fttrigon.c, src/base/ftgloadr.c: Inlude - FT_INTERNAL_OBJECTS_H. - - * src/base/ftstroke.c (FT_Outline_GetInsideBorder, - FT_Outline_GetOutsideBorder): s/or/o/ to make it compile with - C++ compilers. - - * src/cache/ftcmru.c, include/freetype/cache/ftcmru.h: - s/select/selection/ to avoid compiler warning. - * src/cff/cffload.h: s/select/ftselect/ to avoid potential - compiler warning. - -2003-12-24 Werner Lemberg - - * src/cache/ftcsbits.c (FTC_SNode_Weight): - s/FTC_SBIT_ITEM_PER_NODE/FTC_SBIT_ITEMS_PER_NODE/. - -2003-12-24 David Turner - - * Fixed compilation problems in the cache sub-system. - - * Partial updates to src/autofit. - - * Jamfile (FT2_COMPONENTS): Add autofit module. - -2003-12-23 Werner Lemberg - - * src/cff/cffgload.c (cff_lookup_glyph_by_stdcharcode): Handle - CID-keyed fonts. - -2003-12-23 David Turner - - * include/freetype/internal/ftobjs.h (FT_PAD_FLOOR, FT_PAD_ROUND, - FT_PAD_CEIL, FT_PIX_FLOOR, FT_PIX_ROUND, FT_CEIL): New macros. They - are used to avoid compiler warnings with very pedantic compilers. - Note that `(x) & -64' causes a warning if (x) is not signed. Use - `(x) & ~63' instead! - Updated all related code. - - Add support for extraction of `inside' and `outside' borders. - - * src/base/ftstroke.c (FT_StrokerBorder): New enumeration. - (FT_Outline_GetInsideBorder, FT_Outline_GetOutsideBorder, - FT_Stroker_GetBorderCounts, FT_Stroker_ExportBorder): New functions. - (FT_StrokeBorderRec): New boolean member `valid'. - (ft_stroke_border_get_counts): Updated. - * include/freetype/ftstroke.h: Updated. - -2003-12-22 Werner Lemberg - - * include/freetype/ftwinfnt.h (FT_WinFNT_ID_*): New definitions - to describe the `charset' field in FT_WinFNT_HeaderRec. - * src/winfonts/winfnt.c (FNT_Face_Init): Set encoding to - FT_ENCODING_NONE except for FT_WinFNT_ID_MAC. - - * include/freetype/freetype.h (FT_Encoding): Improve comment, - based on work by Detlef Würkner . - - * docs/CHANGES: Updated. - -2003-12-22 David Turner - - * include/freetype/ftcache.h, - include/freetype/cache/ftcmanag.h, - include/freetype/cache/ftccache.h, - include/freetype/cache/ftcmanag.h, - include/freetype/cache/ftcmru.h (added), - include/freetype/cache/ftlru.h (removed), - include/freetype/cache/ftcsbits.h, - include/freetype/cache/ftcimage.h, - include/freetype/cache/ftcglyph.h, - src/cache/ftcmru.c, - src/cache/ftcmanag.c, - src/cache/ftccache.c, - src/cache/ftcglyph.c, - src/cache/ftcimage.c, - src/cache/ftcsbits.c, - src/cache/ftccmap.c, - src/cache/ftcbasic.c (added), - src/cache/ftclru.c (removed): - - *Complete* rewrite of the cache sub-system to `solve' the - following points: - - - all public APIs have been moved to FT_CACHE_H, everything - under `include/freetype/cache' is only needed by client - applications that want to implement their own caches - - - a new function named FTC_Manager_RemoveFaceID to deal - with the uninstallation of FaceIDs - - - the image and sbit cache are now abstract classes, that - can be extended much more easily by client applications - - - better performance in certain areas. Further optimizations - to come shortly anyway... - - - the FTC_CMapCache_Lookup function has changed its signature, - charmaps can now only be retrieved by index - - - FTC_Manager_Lookup_Face => FTC_Manager_LookupFace - FTC_Manager_Lookup_Size => FTC_Manager_LookupSize (still in - private header for the moment) - -2003-12-21 Werner Lemberg - - * src/type1/t1load.c (parse_dict): Stop parsing if `eexec' keyword - is encountered. - -2003-12-19 Werner Lemberg - - * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 32. For - example, the Japanese Hiragino font already contains 15 subfonts. - - * src/cff/cffload.c (cff_font_load): Deallocate `sids' array for - CID-keyed fonts. - - * devel/ftoption.h: Define FT_DEBUG_MEMORY. - -2003-12-18 Werner Lemberg - - * include/freetype/ttnameid.h (TT_ADOBE_ID_LATIN_1): New macro. - * src/type1/t1objs.c (T1_Face_Init): Use TT_ADOBE_ID* values. - -2003-12-18 Werner Lemberg - - * src/cff/cfftypes.h (CFF_FontRecDictRec): Change type of - `cid_count' to `FT_ULong'. - - * src/cff/cffgload.c (cff_slot_load): Take care of empty `cids' - array. - - * src/cff/cffload.c (cff_charset_done): Free `cids' array. - (cff_font_load): Create cids array only for CID-keyed fonts which - are subsetted. - - * src/cff/cffobjs.c (cff_face_init): Check the availability of - the PSNames modules for non-pure CFFs also. - Set FT_FACE_FLAG_GLYPH_NAMES for a non-pure CFF also if it isn't - CID-keyed. - - * src/cff/rules.mk (CFF_DRV_H): Add cfftypes.h. - -2003-12-17 Werner Lemberg - - * src/sfnt/sfobjs.c (sfnt_init_face): Don't set - FT_FACE_FLAG_GLYPH_NAMES if the font contains a version 3.0 `post' - table. - - * docs/CHANGES: Updated. - -2003-12-17 Masatake YAMATO - - Add new function FT_Get_CMap_Language_ID to extract the language ID - for TrueType/sfnt fonts. - - * include/freetype/internal/services/svttcmap.h: New file. - * include/freetype/internal/ftserv.h (FT_SERVICE_TT_CMAP_H): Add - svttcmap.h. - - * src/sfnt/sfdriver.c: Include ttcmap0.h. - (tt_service_get_cmap_info): New service. - (sfnt_services): Updated. - - * src/sfnt/ttcmap0.c (tt_cmap*_get_info): New functions. - (tt_cmap*_class_rec): Add tt_cmap*_get_info members. - (tt_get_cmap_info): New function. - * src/sfnt/ttcmap0.h: Include FT_SERVICE_TT_CMAP_H. - (TT_CMap_ClassRec): New field `get_cmap_info'. - (tt_get_cmap_info): New declaration. - - * src/base/ftobjs.c: Include FT_SERVICE_TT_CMAP_H. - (FT_Get_CMap_Language_ID): New function implementation. - * include/freetype/tttables.h (FT_Get_CMap_Language_ID): New - function declaration. - -2003-12-16 Werner Lemberg - - * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: Removed. Obsolete. - - * include/freetype/internal/sfnt.h (SFNT_Interface): Remove - obsolete fields `load_charmap' and `free_charmap'. - (TT_CharMap_Load_Func, TT_CharMap_Free_Func): Removed. - * src/sfnt/sfnt.c: Don't include ttcmap.c. - * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttcmap.c. - * src/sfnt/ttload.c: Don't include ttcmap.h. - * src/sfnt/sfdriver.c: Don't include ttcmap.h. - (sfnt_interface): Updated. - - * include/freetype/internal/tttypes.h (TT_TableDirRec, - TT_CMapDirRec, TT_CMapDirEntryRec, TT_CMap0, TT_CMap2SubHeaderRec, - TT_CMap2Rec, TT_CMap4Segment, TT_CMap4Rec, TT_CMap6, - TT_CMapGroupRec, TT_CMap8_12Rec, TT_CMap10Rec, TT_CharMap_Func, - TT_CharNext_Func, TT_CMapTableRec, TT_CharMapRec): Removed. - Obsolete. - * src/cff/cffobjs.h (CFF_CharMapRec): Removed. Obsolete. - -2003-12-15 Werner Lemberg - - * docs/CHANGES: Updated. - -2003-12-15 Wolfgang Domröse - - * builds/atari/*: New directory for building FreeType 2 on Atari - with the PureC compiler. - -2003-12-12 Wolfgang Domröse - - * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add - cast. - * src/cff/cffdrivr.c (cff_ps_has_glyph_names): Assure that return - value is either 0 or 1. - -2003-12-12 Werner Lemberg - - * src/cff/cffdrivr.c (cff_get_glyph_name): Improve error message. - (cff_get_name_index): Return if no PSNames service is available. - (cff_ps_has_glyph_names): Handle CID-keyed fonts correctly. - * src/cff/cfftypes.h (CFF_CharsetRec): New field `cids', used for - CID-keyed fonts. This is the inverse mapping of `sids'. - * src/cff/cffload.c (cff_charset_load): New argument `invert'. - Initialize charset->cids if `invert' is set. - (cff_font_load): In call to cff_charset_load, set `invert' to true - for CID-keyed fonts. - * src/cff/cffgload.c (cff_slot_load): Handle glyph index as CID - and map it to the real glyph index. - - * docs/CHANGES: Updated. - -2003-12-11 Werner Lemberg - - * src/cff/cffobjs.c (cff_face_init): Don't set - FT_FACE_FLAG_GLYPH_NAMES for CID-keyed fonts. - Don't construct a cmap for CID-keyed fonts. - -2003-12-10 Werner Lemberg - - Use implementation specific SID value 0xFFFF to indicate that - a dictionary element is missing. - - * src/cff/cffload.c (cff_subfont_load): Initialize all fields - which hold SIDs to 0xFFFF. - (cff_index_get_sid_string): Handle SID value 0xFFFF. - Handle case where `psnames' is zero. - (cff_font_load): Updated. - Don't load encoding for CID-keyed CFFs. - - * src/cff/cffobjs.c (cff_face_init): Updated. - Don't check for PSNames module if font is CID-keyed. - Compute style name properly (using the same algorithm as in the - CID driver). - Fix computation of style flags. - - * src/cff/cfftoken.h: Comment out handling of base_font_name. - Rename `postscript' field to `embedded_postscript' - * src/cff/cfftypes.h (CFF_FontRecDictRec): Remove `base_font_name' - and `postscript'. - -2003-12-10 Detlef Würkner - - * src/pcf/pcfdrivr.c (pcf_get_charset_id): New function (a clone - of the similar BDF function). - (pcf_service_bdf): Use it. - -2003-12-09 Werner Lemberg - - * src/sfnt/sfobjs.c (sfnt_load_face): Set FT_FACE_FLAG_GLYPH_NAMES - only if a `post' table is present. - -2003-12-09 George Williams - - * src/base/ftobjs.c (load_mac_face): Recent versions of Linux - support Mac's HFS+ file system, thus enable code to read /rsrc on - non-Macintosh platforms also. - -2003-12-08 Werner Lemberg - - * include/freetype/internal/psaux.h (PS_TableRec): Change type - of `lengths' to FT_PtrDist. - (T1_DecoderRec): Change type of `subrs_len' to FT_PtrDist. - * include/freetype/internal/t1types.h (T1_FontRec): Change type - of `subrs_len' and `charstrings_len' to FT_PtrDist. - - * src/base/ftobjs.c (Mac_Read_POST_Resource): Replace `junk' - variable with better solution. - (IsMacResource): Remove unused variable `map_len'. - Replace `junk' variable with better solution. - (FT_Open_Face) [!FT_MACINTOSH]: Add conditional - FT_CONFIG_OPTION_MAC_FONTS. - -2003-12-08 Wolfgang Domröse - - * src/autohint/ahhint.c (ah_hinter_hint_edges, - ah_hinter_align_strong_points): Add some casts. - - * src/base/ftoutln.c (FT_OrientationExtremumRec): Change type - of `pos' to FT_Long. - - * src/base/ftobjs.c (Mac_Read_POST_Resource, - Mac_Read_sfnt_Resource): Change type of `len' to FT_Long. - - * src/type42/t42parse.c (t42_parse_dict): Add cast for `n_keywords'. - -2003-12-07 Werner Lemberg - - * docs/raster.txt: New file, taken from FreeType 1 and completely - revised. - -2003-12-04 Masatake YAMATO - - * src/type1/t1driver.c (Get_Interface): Remove FT_UNUSED for - t1_interface. t1_interface is used. - -2003-11-27 David Turner - - * src/pfr/pfrdrivr.c (pfr_get_metrics): Revert incorrect change of - 2003-11-23: For PFR fonts, metrics->x_scale and metrics->y_scale are - the scaling values for outline units, not for metric units. - -2003-11-25 Werner Lemberg - - * src/base/ftcalc.c, include/freetype/internal/ftcalc.h - (FT_MulDiv_No_Round): Surround code with `#ifdef - TT_CONFIG_OPTION_BYTECODE_INTERPRETER ... #endif'. - -2003-11-23 Werner Lemberg - - * src/base/ftcalc.c (FT_MulDiv_No_Round): New function (32 and - 64 bit version). - * include/freetype/internal/ftcalc.h: Updated. - - * src/truetype/ttinterp.c (TT_MULDIV_NO_ROUND): New macro. - (TT_INT64): Removed. - (DO_DIV): Use TT_MULDIV_NO_ROUND. - - * src/pfr/pfrdrivr.c (pfr_get_metrics): Directly use - metrics->x_scale and metrics->y_scale. - -2003-11-22 Rogier van Dalen - - * src/truetype/ttinterp.c (CUR_Func_move_orig): New macro. - (Direct_Move_Orig, Direct_Move_Orig_X, Direct_Move_Orig_Y): New - functions. Similar to Direct_Move, Direct_Move_X, and - Direct_Move_Y but without touching. - (Compute_Funcs): Use new functions. - - (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid, - Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, - Round_Super_45): Fix rounding of value zero. - - (DO_DIV): Don't use TT_MULDIV. - - (Ins_SHC): This instruction actually touches the points. - (Ins_MSIRP): Fix undocumented behaviour. - - * src/truetype/ttinterp.h (TT_ExecContextRec): Updated. - -2003-11-22 Werner Lemberg - - * docs/VERSION.DLL, docs/CHANGES: Updated. - - * src/base/ftobjs.c (FT_Set_Char_Size): Make metrics->x_scale and - metrics->y_scale really precise. - - (FT_Load_Glyph): Update computation of linearHoriAdvance and - linearVertAdvance. - - * src/truetype/ttinterp.c (Update_Max): Use FT_REALLOC. - -2003-11-22 David Turner - - * src/autofit/*: More updates. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8. - * builds/unix/configure.ac (version_info): Set to 9:6:3. - * README: Updated. - -2003-11-13 John A. Boyd Jr. - - * src/bdf/bdfdrivr.c (bdf_interpret_style), src/pcf/pcfread.c - (pcf_interpret_style): Replace spaces with dashes in properties - SETWIDTH_NAME and ADD_STYLE_NAME to simplify parsing. - -2003-11-11 Werner Lemberg - - * docs/CHANGES: Updated. - -2003-11-11 John A. Boyd Jr. - - Handle SETWIDTH_NAME and ADD_STYLE_NAME properties for BDF and PCF - fonts. - - * src/bdf/bdfdrivr.c (bdf_interpret_style): New auxiliary function. - (BDF_Face_Init): Don't handle style properties but call - bdf_interpret_style. - - * src/pcf/pcfread.c (pcf_interpret_style): New auxiliary function. - (pcf_load_font): Don't handle style properties but call - pcf_interpret_style. - -2003-11-07 Werner Lemberg - - - * Version 2.1.7 released. - ========================= - - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7. - - * builds/unix/ft2unix.h: Fix comments. - - * builds/unix/ftconfig.in: Synchronized with ANSI version. - Use `#undef' in templates as recommended in the autoconf - documentation. - Since real `#undef' lines don't survive during configuration, use - `/undef' instead; the postprocessing facility of the - AC_CONFIG_HEADERS autoconf macro converts them to `#undef'. - - * builds/unix/install.mk (install): Install Unix version of - `ftconfig.h'. - - * builds/unix/unix-cc.in (CFLAGS): Set FT_CONFIG_CONFIG_H macro - to include the correct `ftconfig.h' file. - - * builds/unix/ft-munmap.m4 (FT_MUNMAP_DECL): Removed. - (FT_MUNMAP_PARAM): Updated syntax to autoconf 2.59. - - * builds/unix/freetype2.m4: Updated syntax to autoconf 2.59. - - * builds/unix/configure.ac: Use AC_CONFIG_HEADERS instead of - AC_CONFIG_HEADER to create ftconfig.h, and use second argument - to replace `/undef' with `#undef'. - Don't use FT_MUNMAP_DECL but AC_CHECK_DECLS to check for munmap. - Use AS_HELP_STRING in AC_ARG_WITH. - Update syntax to autoconf 2.59. - - * builds/unix/ltmain.sh: Regenerated with `libtoolize --force - --copy' from libtool 1.5. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.7.8. - * builds/unix/configure: Regenerated with autoconf 2.59. - * builds/unix/config.guess, builds/unix/config.sub: Updated from - `config' CVS module at subversions.gnu.org - * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from - `texinfo' CVS module at subversions.gnu.org. - - * builds/vms/ftconfig.h: Synchronized with ANSI version. - - * docs/CUSTOMIZE: Fix documentation error. - * docs/CHANGES, docs/VERSION.DLL, docs/release: Updated. - - * builds/freetype.mk (refdoc): Updated --title. - -2003-11-07 David Turner - - - * Version 2.1.6 released. - ========================= - - - * install: Removed. Obsolete. - -2003-11-04 Werner Lemberg - - * src/sfnt/sfdriver.c: Include FT_SERVICE_SFNT_H. - (sfnt_service_sfnt_table): New service. - (sfnt_services): Updated. - - * docs/license.txt: Reworded. - -2003-11-03 Werner Lemberg - - * include/freetype/*: Add a guard to all public header files which - load FT_FREETYPE_H to reject freetype.h from FreeType 1. - -2003-11-02 Patrick Welche - - * builds/unix/freetype2.m4, builds/unix/ft-munmap.m4: Protect - first argument of AC_DEFUN with brackets to avoid possible - expansion. - -2003-11-02 Werner Lemberg - - * include/freetype/cache/ftcglyph.h: Don't include stddef.h. - - * include/freetype/freetype.h: Fix check for ft2build.h. - -2003-11-01 Werner Lemberg - - * include/freetype/freetype.h: Check that ft2build.h has been - loaded first. - - * src/base/fttype1.c (FT_Get_PS_Font_Info): Fix incorrectly applied - patch. - -2003-10-31 Detlef Würkner - - * src/base/fttype1.c (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): - Fix parameter order in calls to FT_FACE_FIND_SERVICE. - -2003-10-31 Werner Lemberg - - * include/freetype/internal/ftserv.h - (FT_SERVICE_POSTSCRIPT_NAMES_H): Removed. Unused. - - * src/type42/t42drivr.c (t42_services): Updated. - -2003-10-29 David Turner - - * include/freetype/internal/bdftypes.h: Removed. Obsolete. - * src/base/ftbdf.c: Updated. - - * include/freetype/internal/cfftypes.h: Moved to... - * src/cff/cfftypes.h: This place since no other module needs to - know about those types. - - * include/freetype/internal/t42types.h: Moved to... - * src/type42/t42types.h: This place since no other module needs to - know about those types. - - * include/freetype/internal/services/svbdf.h: Include FT_BDF_H. - - * include/freetype/internal/services/svpsname.h: Renamed to... - * include/freetype/internal/services/svpscmap.h: This. - Updated `FT_Service_PsNames' -> `FT_Service_PsCMaps' and - `POSTSCRIPT_NAMES' -> `POSTSCRIPT_CMAPS' everywhere. - - * include/freetype/internal/services/svpsinfo.h: New file, providing - PostScript info service. - - * include/freetype/internal/ftserv.h (FT_SERVICE_POSTSCRIPT_CMAPS_H, - FT_SERVICE_POSTSCRIPT_INFO_H): New macros for svpscmap.h and - svpsinfo.h. - * include/freetype/internal/internal.h (FT_INTERNAL_TYPE42_TYPES_H, - FT_INTERNAL_CFF_TYPES_H, FT_INTERNAL_BDF_TYPES_H): Removed. - - * src/base/fttype1.c: Don't include FT_INTERNAL_TYPE1_TYPES_H and - FT_INTERNAL_TYPE42_TYPES_H but FT_INTERNAL_SERVICE_H and - FT_SERVICE_POSTSCRIPT_INFO_H. - (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): Use new - POSTSCRIPT_INFO service. - - * src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. - (cff_ps_has_glyph_names): New function. - (cff_service_ps_info): New service. - (cff_services): Updated. - - * src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h: Don't - include FT_INTERNAL_CFF_TYPES_H but cfftypes.h directly. - - * src/cif/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. - (cid_ps_get_font_info): New function. - (cid_service_ps_info): New service. - (cid_services): Updated. - - * src/type1/t1driver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. - (t1_ps_get_font_info, t1_ps_has_glyph_names): New functions. - (t1_service_ps_info): New service. - (t1_services): Updated. - - * src/type42/t42drivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. - (t42_ps_get_font_info, t42_ps_has_glyph_names): New functions. - (t42_service_ps_info): New service. - - * src/type42/t42objs.h: Don't include FT_INTERNAL_TYPE42_TYPES_H - but t42types.h directly. - - * src/psnames/psmodule.c (psnames_interface, psnames_services): - Renamed to... - (pscmaps_interface, pscmaps_services): This. - Updated all users. - - - * src/gzip/infblock.c (inflate_blocks): Remove compiler warning. - -2003-10-22 Werner Lemberg - - * src/type1/t1load.c (parse_encoding): Handle `/Encoding [ ... ]'. - - * src/type1/t1parse.c (T1_Get_Private_Dict): Test whether `eexec' - is real. - - * src/type42/t42parse.c (t42_parse_encoding): Improve boundary - checking while parsing. - - * docs/CHANGES: Updated. - -2003-10-21 Josselin Mouette - - * include/freetype/internal/t1types.h (T1_FontRec): `paint_type' - and `stroke_width' aren't pointers. - - * src/type42/t42objs.c (T42_Face_Done), src/type1/t1objs.c - (T1_Face_Done): Don't free `paint_type' and `stroke_width'. - -2003-10-20 Graham Asher - - * src/winfonts/winfnt.c (fnt_cmap_class): Fix position of `const'. - -2003-10-19 Werner Lemberg - - * src/autohint/ahhint.c (ah_hinter_load_glyph): Patch from - 2003-08-18 introduced a severe bug (FT_Render_Glyph was called - twice under some circumstances, causing strange results). This - is fixed now by clearing the FT_LOAD_RENDER bit of `load_flags'. - - * src/base/ftpfr.c (FT_Get_PFR_Metrics): Initialize `error'. - * src/psaux/psobjs.c (ps_tobytes): Initialize `n'. - * src/type42/t42parse.c (t42_parse_sfnts): Initialize `string_size'. - -2003-10-16 Werner Lemberg - - Completely revised Type 42 parser. It now handles both fonts - produced with ttftot42 (tested version 0.3.1) and - TrueTypeToType42.ps (tested version May 2001; it is necessary to - fix the broken header comment to be `%!PS-TrueTypeFont...'). - - * src/type42/t42objs.c (T42_GlyphSlot_Load): Change fourth - parameter to `FT_UInt'. - * src/type42/t42objs.h: Updated. - - * src/type42/t42parse.h (T42_ParserRec): Change type of `in_memory' - to FT_Bool. - (T42_Loader): Change type of `num_chars' and `num_glyphs' to - FT_UInt. - Add `swap_table' element. - * src/type42/t42parse.c (T42_KEYWORD_COUNT, T1_ToFixed, - T1_ToCoordArray, T1_ToTokenArray): Removed. - (T1_ToBytes): New macro. - (t42_is_alpha, t42_hexval): Removed. - (t42_is_space): Handle `\0'. - (t42_parse_encoding): Updated to use new PostScript parser routines - from psaux. - Handle `/Encoding [ ... ]' also. - (T42_Load_Status): New enumeration. - (t42_parse_sfnts): Updated to use new PostScript parser routines - from psaux. - (t42_parse_charstrings): Updated to use new PostScript parser - routines from psaux. - Handle `/CharStrings << ... >>' also. - Don't expect that /.notdef is the first element in dictionary. Copy - code from type1 module to handle this. - (t42_parse_dict): Updated to use new PostScript parser routines - from psaux. - Remove code for synthetic fonts (which can't occur in Type 42 - fonts). - (t42_loader_done): Release `swap_table'. - - * src/psaux/psobjs.c (skip_string): Increase `cur' properly. - - * src/type1/t1load.c (parse_charstrings): Make test for `.notdef' - faster. - -2003-10-15 Graham Asher - - * src/autohint/ahglobal.c (blue_chars), src/winfonts/winfnt.c - (fnt_cmap_class_rec, fnt_cmap_class), src/bdf/bdflib.c (empty, - _num_bdf_properties), src/gzip/infutil.c (inflate_mask), - src/gzip/inffixed.h (fixed_bl, fixed_bd, fixed_tl, fixed_td), - src/gzip/inftrees.h (inflate_trees_fixed), srf/gzip/inftrees.c - (inflate_trees_fixed): Decorate with more `const' to avoid - writable global variables which are disallowed on ARM. - -2003-10-08 Werner Lemberg - - * src/type1/t1load.c (parse_font_matrix, parse_charstrings): Remove - code specially for synthetic fonts; this is handled elsewhere. - (parse_encoding): Remove code specially for synthetic fonts; this is - handled elsewhere. - Improve boundary checking while parsing. - (parse_dict): Improve boundary checking while parsing. - Use ft_memcmp to simplify code. - -2003-10-07 Werner Lemberg - - * src/type1/t1load.c (parse_subrs, parse_dict): Handle synthetic - fonts properly. - (parse_charstrings): Copy correct number of characters into - `name_table'. - -2003-10-06 Werner Lemberg - - Heavy modification of the PS parser to handle comments and strings - correctly. This doesn't slow down the loading of PS fonts - significantly since charstrings aren't affected. - - * include/freetype/config/ftstdlib.h (ft_xdigit): Renamed to... - (ft_isxdigit): This. Updated all callers. - (ft_isdigit): New alias to `isdigit'. - - * include/freetype/internal/psaux.h (PS_Parser_FuncsRec): Renamed - `skip_alpha' to `skip_PS_token'. - Add parameter to `to_bytes' and change some argument types. - - * src/psaux/psauxmod.c (ps_parser_funcs): Updated. - * src/psaux/psobjs.c (ft_char_table): New array to map character - codes (ASCII and EBCDIC) of digits to numbers. - (OP): New auxiliary macro holding either `>=' or `<' depending on - the character encoding. - (skip_comment): New function. - (skip_spaces): Use it. - (skip_alpha): Removed. - (skip_literal_string, skip_string): New functions. - (ps_parser_skip_PS_token): New function. This is a better - replacement of... - (ps_parser_skip_alpha): Removed. - (ps_parser_to_token, ps_parser_to_token_array): Updated. - (T1Radix): Rewritten, using `ft_char_table'. - (t1_toint): Renamed to... - (ps_toint): This. Update all callers. - Use `ft_char_table'. - (ps_tobytes): Add parameter to handle delimiters and change some - argument types. - Use `ft_char_table'. - (t1_tofixed): Renamed to... - (ps_tofixed): This. Update all callers. - Use `ft_char_table'. - (t1_tocoordarray): Renamed and updated to... - (ps_tocoordarray): This. Update all callers. - (t1_tofixedarray): Renamed and updated to... - (ps_tofixedarray): This. Update all callers. - (t1_tobool): Renamed to... - (ps_tobool): This. Update all callers. - (ps_parser_load_field): Updated. - (ps_parser_load_field_table): Use `T1_MAX_TABLE_ELEMENTS' - everywhere. - (ps_parser_to_int, ps_parser_to_fixed, ps_parser_to_coord_array, - ps_parser_to_fixed_array): Skip spaces. Updated. - (ps_parser_to_bytes): Add parameter to handle delimiters and change - some argument types. Updated. - * src/psaux/psobjs.h: Updated. - - * src/cid/cidload.c (cid_parse_dict): Updated. - * src/cid/cidparse.c (cid_parser_new): Check whether the `StartData' - token was really found. - * src/cid/cidparse.h (cid_parser_skip_alpha): Updated and renamed - to... - (cid_parser_skip_PS_token): This. - - * src/type1/t1parse.h (T1_ParserRec): Use `FT_Bool' for boolean - fields. - (T1_Skip_Alpha): Replaced with... - (T1_Skip_PS_Token): This new macro. - * src/type1/t1parse.c (hexa_value): Removed. - (T1_Get_Private_Dict): Use `ft_isxdigit' and - `psaux->ps_parser_funcs_to_bytes' for handling ASCII hexadecimal - encoding. - After decrypting, replace the four random bytes at the beginning - with whitespace. - * src/type1/t1load.c (t1_allocate_blend): Use proper error values. - (parser_blend_design_positions, parse_blend_design_map, - parse_weight_vector): Updated. - (is_space): Handle `\f' also. - (is_name_char): Removed. - (read_binary_data): Updated. - (parse_encoding): Use `ft_isdigit'. - Updated. - (parse_subrs): Updated. - (TABLE_EXTEND): New macro. - (parse_charstrings): Updated. - Provide a workaround for buggy fonts which have more entries in the - /CharStrings dictionary then expected; the function now adds some - slots and skips entries which still exceed the new limit. - (parse_dict): Updated. - Terminate on the token `closefile'. - - * src/type42/t42parse.c (T1_Skip_Alpha): Replaced with... - (T1_Skip_PS_Token): This new macro. Updated all callers. - (t42_parse_encoding): Use `ft_isdigit'. - - - * src/base/ftmm.c (ft_face_get_mm_service): Return FT_Err_OK if - success. - -2003-10-05 Werner Lemberg - - * include/freetype/ftmodule.h: Renamed to... - * include/freetype/ftmodapi.h: This to avoid duplicate file names. - * include/freetype/config/ftheader.h (FT_MODULE_H): Updated. - -2003-10-04 Werner Lemberg - - * src/base/ftoutln.c (FT_OrientationExtremumRec, - FT_Outline_Get_Orientation): Trivial typo fixes to make it compile. - -2003-10-02 Markus F.X.J. Oberhumer - - * src/winfonts/winfnt.c (FT_WinFNT_HeaderRec): `color_table_offset' - has four bytes, not two. - Fix all users. - (fnt_font_load, FNT_Load_Glyph): Add more font validity tests. - -2003-10-01 David Turner - - * src/autofit/*: Adding first source files of the new multi-script - `auto-fitter'. - - * include/freetype/ftoutln.h (FT_Orientation): New enumeration. - (FT_Outline_Get_Orientation): New declaration. - - * src/base/ftoutln.c (FT_OrientationExtremumRec): New structure. - (ft_orientation_extremum_compute): New auxiliary function. - (FT_Outline_Get_Orientation): New function to compute the fill - orientation of a given glyph outline. - - * include/freetype/internal/ftserv.h (FT_FACE_LOOKUP_SERVICE): Fixed - trivial bug which could crash the font engine when a cached service - pointer was retrieved. - -2003-09-30 Werner Lemberg - - * src/cid/cidload.c (cid_parse_dict): Skip token if no keyword is - found. - - * src/type1/t1parse.c (IS_T1_WHITESPACE, IS_T1_LINESPACE, - IS_T1_SPACE): Removed. - (PFB_Tag): Removed. - (read_pfb_tag): Don't use PFB_Tag. - - * src/type42/t42parse.c (t42_is_space): Handle `\f' also. - (t42_parse_encoding): Handle synthetic fonts. - -2003-09-29 Werner Lemberg - - * include/freetype/internal/t1types.h: Don't include - FT_INTERNAL_OBJECTS_H but FT_INTERNAL_SERVICE_H. - * src/truetype/ttobjs.c: Don't include - FT_SERVICE_POSTSCRIPT_NAMES_H. - -2003-09-29 David Turner - - Added new service to handle glyph name dictionaries, replacing the - old internal header named `psnames.h' by `services/svpsname.h'. - Note that this is different from `services/svpostnm.h' which only - handles the retrieval of PostScript font names for a given face. - (Should we merge these two services into a single header?) - - * include/freetype/internal/psnames.h: Removed. Most of its - contents is moved to... - * include/freetype/internal/services/svpsname.h: New file. - - * include/freetype/internal/services/svpostnm.h - (FT_SERVICE_ID_POSTSCRIPT_NAME): Replaced with... - (FT_SERVICE_ID_POSTSCRIPT_FONT_NAME): New macro. - (PsName): Service named changed to... - (PsFontName): This. - Updated `FT_Service_PsName' -> `FT_Service_PsFontName' and - `POSTSCRIPT_NAME' -> `POSTSCRIPT_FONT_NAME' everywhere. - - * include/freetype/internal/internal.h - (FT_INTERNAL_POSTSCRIPT_NAMES_H): Removed. - * include/freetype/internal/psaux.h: Include - FT_SERVICE_POSTSCRIPT_NAMES_H. - (T1_DecoderRec): Updated type of `psnames'. - * include/freetype/internal/t1types.h: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - Include FT_INTERNAL_OBJECTS_H. - * include/freetype/internal/t42types.h: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H. - * include/freetype/internal/tttypes.h (TT_FaceRec): Updated. - - * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): Changed - order of parameters. All callers updated. - (FT_FACE_FIND_GLOBAL_SERVICE): New macro to look up a service - globally, checking all modules. - (FT_ServiceCacheRec): Updated. - (FT_SERVICE_POSTSCRIPT_NAMES_H): New macro for accessing - `svpsname.h'. - - * include/freetype/internal/ftobjs.h, src/base/ftobjs.c - (ft_module_get_service): New function. - - * src/cff/cffdrivr.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - (cff_get_glyph_name, cff_get_name_index): Use new POSTSCRIPT_NAMES - service. - * src/cff/cffcmap.c (cff_cmap_unicode_init): Updated. - * src/cff/cffload.c, src/cff/cffload.h: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - (cff_index_get_sid_string): Updated. - * src/cff/cffobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - (cff_face_init): Use new POSTSCRIPT_NAMES service. - * src/cff/cffobjs.h: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - - * src/cid/cidobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - (cid_face_init): Use new POSTSCRIPT_NAMES service. - * src/cid/cidriver.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H. - - * src/psaux/t1cmap.c (t1_cmap_std_init, t1_cmap_unicode_init): Use - new POSTSCRIPT_NAMES service. - * src/psaux/t1decode.h (t1_lookup_glyph_by_stdcharcode, - t1_decode_init): Use new POSTSCRIPT_NAMES service. - * src/psaux/t1cmap.h, src/psaux/t1decode.h: Dont' include - FT_INTERNAL_POSTSCRIPT_NAMES_H. - - * src/psnames/psmodule.c: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - (ps_build_unicode_table): Renamed to... - (ps_unicodes_init): This. - (ps_lookup_unicode): Renamed to... - (ps_unicodes_char_index): This. - (ps_next_unicode): Renamed to... - (ps_unicodes_char_next): This. - (psnames_interface): Updated. - (psnames_services): New services list. - (psnames_get_service): New function. - (psnames_module_class): Updated. - - * src/sfnt/sfobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - (sfnt_init_face): Use new POSTSCRIPT_NAMES service. - * src/sfnt/ttpost.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - (tt_face_get_ps_name): Updated. - - * src/truetype/ttobjs.c: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - - * src/type1/t1driver.c: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - * src/type1/t1objs.c: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - (T1_Face_Init): Use new POSTSCRIPT_NAMES service. - - * src/type42/t42drivr.c (t42_get_ps_name): Renamed to... - (t42_get_ps_font_name): This. - (t42_service_ps_name): Renamed to... - (t42_service_ps_font_name): This. - (t42_services): Updated. - * src/type42/t42objs.c (T42_Face_Init): Use new POSTSCRIPT_NAMES - service. - * src/type42/t42objs.h: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - - - * src/base/ftglyph.c (FT_Get_Glyph): Don't access `slot' before - testing its validity. Reported by Henry Maddocks - . - -2003-09-21 Werner Lemberg - - * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): - Fix compilation warning (s/pptr/Pptr/). - - * include/freetype/internal/internal.h (FT_INTERNAL_PFR_H, - FT_INTERNAL_FNT_TYPES_H): Removed. - -2003-09-21 David Turner - - Migrating the PFR and WINFNT drivers to the new service-based - internal API. - - * include/freetype/internal/fnttypes.h: Removed. Most of its data - are moved to winfnt.h and... - * include/freetype/internal/services/svwinfnt.h: New file. - - * include/freetype/internal/pfr.h: Removed. Most of its data are - moved to... - * include/freetype/internal/services/svpfr.h: New file. - - * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, - FT_FACE_LOOKUP_SERVICE): Simplify fix of 2003-09-16 by removing - pointer type argument. - Updated all callers. - Update macro names of services header files. - - * src/base/ftobjs.c (FT_Get_Name_Index): Simplified code. - - * src/base/ftpfr.c: Include FT_SERVICE_PFR_H instead of - FT_INTERNAL_PFR_H. - (ft_pfr_check, FT_Get_PFR_Metrics, FT_Get_PFR_Kerning, - FT_Get_PFR_Advance): Use services provided in `PFR_METRICS'. - - * src/base/ftwinfnt.c: Include FT_SERVICE_WINFNT_H instead of - FT_INTERNAL_FNT_TYPES_H. - (FT_Get_WinFNT_Header): Use service provided in `WINFNT'. - - * src/pfr/pfrdrivr.c: Include FT_SERVICE_PFR_H and - FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_PFR_H. - (pfr_service_bdf): Updated. - (pfr_services): New services list. - (pfr_get_service): New function. - (pfr_driver_class): Updated. - - * src/winfonts/winfnt.c: Include FT_SERVICE_WINFNT_H and - FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_FNT_TYPES_H. - (winfnt_get_header, winfnt_get_service): New functions. - (winfnt_service_rec): New structure providing WINFNT services. - (winfnt_services): New services list. - (winfnt_driver_class): Updated. - * src/winfonts/winfnt.h: Add most of the removed fnttypes.h data. - - * src/sfnt/sfdriver.c (sfnt_service_ps_name): Fix typo. - - * src/type1/t1driver.c (t1_service_ps_name): Fix typo. - - * src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrsbit.c, - src/psaux/psobjs.c, src/sfnt/sfobjs.c, src/truetype/ttobjs.c, - src/type1/t1objs.c, src/type42/t42objs.c: Removing various compiler - warnings. - -2003-09-19 David Bevan - - * src/type1/t1parse.c (pfb_tag_fields): Removed. - (read_pfb_tag): Fix code so that it doesn't fail on end-of-file - indicator (0x8003). - * docs/CHANGES: Updated. - -2003-09-16 Werner Lemberg - - * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, - FT_FACE_LOOKUP_SERVICE): Add parameter to pass pointer type. - Ugly, I know, but this is needed for compilation with C++ -- - maybe someone knows a better solution? - Updated all callers. - - * src/base/ftobjs.c (FT_Get_Name_Index, FT_Get_Glyph_Name): Remove - C++ compiler warnings. - - * src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): - Fix order of arguments passed to FT_FACE_FIND_SERVICE. - -2003-09-15 Werner Lemberg - - Avoid header files with identical names. - - * include/freetype/internal/services/bdf.h: Renamed to... - * include/freetype/internal/services/svbdf.h: This. - Add copyright notice. - * include/freetype/internal/services/glyfdict.h: Renamed to... - * include/freetype/internal/services/svgldict.h: This. - Add copyright notice. - * include/freetype/internal/services/multmast.h: Renamed to... - * include/freetype/internal/services/svmm.h: This. - Add copyright notice. - Add FT_BEGIN_HEADER and FT_END_HEADER. - * include/freetype/internal/services/sfnt.h: Renamed to... - * include/freetype/internal/services/svsfnt.h: This. - Add copyright notice. - * include/freetype/internal/services/postname.h: Renamed to... - * include/freetype/internal/services/svpostnm.h: This. - Add copyright notice. - * include/freetype/internal/services/xf86name.h: Renamed to... - * include/freetype/internal/services/svxf86nm.h: This. - Add copyright notice. - - * include/freetype/internal/ftserv.h: Add FT_BEGIN_HEADER and - FT_END_HEADER. - Add copyright notice. - Update macro names of services header files. - - * builds/freetype.mk (SERVICES_DIR): New variable. - (BASE_H): Add services header files. - -2003-09-11 Werner Lemberg - - * builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'. - - * src/cff/cffdrivr.c: Don't load headers twice. - - * include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro. - * src/base/ftobjs.c: Include FT_SERVICE_SFNT_H. - - * src/cff/cffcmap.c: Include `cfferrs.h'. - * src/pfr/pfrdrivr.c: Include `pfrerror.h'. - * src/sfnt/sfdriver.c: Include `sferrors.h'. - * src/psaux/psobjs.h: Add declaration for `ps_parser_to_bytes'. - -2003-09-11 David Turner - - Introducing the concept of `module services'. This is the first - step towards a massive simplification of the engine's internals, in - order to get rid of various numbers of hacks. - - Note that these changes will break source & binary compatibility for - authors of external font drivers. - - * include/freetype/config/ftconfig.h (FT_BEGIN_STMNT, FT_END_STMNT, - FT_DUMMY_STMNT): New macros. - - * include/freetype/internal/ftserv.h: New file, containing the new - structures and macros to provide `services'. - - * include/freetype/internal/internal.h (FT_INTERNAL_EXTENSION_H, - FT_INTERNAL_EXTEND_H, FT_INTERNAL_HASH_H, FT_INTERNAL_OBJECT_H): - Removed, obsolete. - (FT_INTERNAL_SERVICE_H): New macro for `ftserv.h'. - - * include/freetype/internal/services/bdf.h, - include/freetype/internal/services/glyfdict.h, - include/freetype/internal/services/postname.h, - include/freetype/internal/services/xf86name.h: New files. - - * include/freetype/ftmm.h (FT_Get_MM_Func, FT_Set_MM_Design_Func, - FT_Set_MM_Blend_Func): Function pointers moved (in modified form) - to... - * include/freetype/internal/services/multmast.h: New file. - - * include/freetype/internal/sfnt.h (SFNT_Interface): `get_interface' - is now of type `FT_Module_Requester'. - (SFNT_Get_Interface_Func, SFNT_Load_Table_Func): Function pointers - moved (in modified form) to... - * include/freetype/internal/services/sfnt.h: New file. - - * include/freetype/tttables.h (FT_Get_Sfnt_Table_Func): Function - pointer moved (in modified form) to `services/sfnt.h'. - - * include/freetype/ftmodule.h (FT_Module_Interface): Make it a - a typedef to `FT_Pointer'. - - * include/freetype/internal/tttypes.h (TT_FaceRec): Add - `postscript_name'. - * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove - `postscript_name'. - Add `services' element. - (FT_LibraryRec): Remove `meta_class'. - - * src/base/ftbdf.c: Include FT_SERVICE_BDF_H. - (test_font_type): Removed. - (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Use services - provided in `FT_SERVICE_ID_BDF'. - - * src/base/ftmm.c: Include FT_SERVICE_MULTIPLE_MASTERS_H. - (ft_face_get_mm_service): New auxiliary function to get services - from `FT_SERVICE_ID_MULTI_MASTERS'. - (FT_Get_Multi_Master, FT_Set_MM_Design_Coordinates, - FT_Set_MM_Blend_Coordinates): Use `ft_face_get_mm_service'. - - * src/base/ftobjs.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and - FT_SERVICE_GLYPH_DICT_H. - (ft_service_list_lookup): New function to get a specific service. - (destroy_face): Updated. - (Mac_Read_POST_Resource): Simplify some code. - (IsMacResource): Fix warnings. - (FT_Get_Name_Index, FT_Get_Glyph_Name): Use services provided in - `FT_SERVICE_ID_GLYPH_DICT'. - (FT_Get_Postscript_Name): Use service provided in - `FT_SERVICE_ID_POSTSCRIPT_NAME'. - (FT_Get_Sfnt_Table, FT_Load_Sfnt_Table): Use services provided in - `FT_SERVICE_ID_SFNT_TABLE'. - - * src/base/ftxf86.c: Include FT_SERVICE_XFREE86_NAME_H. - (FT_Get_X11_Font_Format): Use service provided in - `FT_SERVICE_ID_XF86_NAME'. - - * src/bdf/bdfdrivr.c: Include FT_SERVICE_BDF_H and - FT_SERVICE_XFREE86_NAME_H. - (bdf_get_charset_id): New function. - (bdf_service_bdf): New structure providing BDF services. - (bdf_services): New services list. - (bdf_driver_requester): Use `ft_service_list_lookup'. - - * src/cff/cffdrivr.c: Include FT_SERVICE_XFREE86_NAME_H and - FT_SERVICE_GLYPH_DICT_H. - (cff_service_glyph_dict): New structure providing CFF services. - (cff_services): New services list. - (cff_get_interface): Use `ft_service_list_lookup'. - - * src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and - FT_SERVICE_XFREE86_NAME_H. - (cid_service_ps_name): New structure providing CID services. - (cid_services): New services list. - (cid_get_interface): Use `ft_service_list_lookup'. - - * src/pcf/pcfdrivr.c: Include FT_SERVICE_BDF_H and - FT_SERVICE_XFREE86_NAME_H. - (pcf_service_bdf): New structure providing PCF services. - (pcf_services): New services list. - (pcf_driver_requester): Use `ft_service_list_lookup'. - - * src/sfnt/sfdriver.c: Include FT_SERVICE_GLYPH_DICT_H and - FT_SERVICE_POSTSCRIPT_NAME_H. - (get_sfnt_glyph_name): Renamed to... - (sfnt_get_glyph_name): This. - (get_sfnt_postscript_name): Renamed to... - (sfnt_get_ps_name): This. - Updated. - (sfnt_service_glyph_dict, sfnt_service_ps_name): New structures - providing services. - (sfnt_services): New services list. - (sfnt_get_interface): Use `ft_service_list_lookup'. - - * src/truetype/ttdriver.c: Include FT_SERVICE_XFREE86_NAME_H. - (tt_services): New services list. - (tt_get_interface): Use `ft_service_list_lookup'. - - * src/type1/t1driver.c: Include FT_SERVICE_MULTIPLE_MASTERS_H, - FT_SERVICE_GLYPH_DICT_H, FT_SERVICE_XFREE86_NAME_H, and - FT_SERVICE_POSTSCRIPT_NAME_H. - (t1_service_glyph_dict, t1_service_ps_name, - t1_service_multi_masters): New structures providing Type 1 services. - (t1_services): New services list. - (Get_Interface): Use `ft_service_list_lookup'. - - * src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H, - FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H. - (t42_service_glyph_dict, t42_service_ps_name): New strucures - providing Type 42 services. - (t42_services): New services list. - (T42_Get_Interface): Use `ft_service_list_lookup'. - - - * README, docs/CHANGES: Updating version numbers for 2.1.6, and - removing obsolete warnings in the documentation. - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6. - * builds/unix/configure.ac (version_info): Set to 9:5:3. - * builds/unix/configure: Regenerated. - - * include/freetype/internal/ftcore.h, - include/freetype/internal/ftexcept.h, - include/freetype/internal/fthash.h, - include/freetype/internal/ftobject.h: Removed. Obsolete. - -2003-09-09 David Turner - - Fixing PFR kerning support. The tables within the font file contain - (charcode,charcode) kerning pairs, we need to convert them to - (gindex,gindex). - - * src/base/ftpfr.c (ft_pfr_check): Fix serious typo. - * src/pfr/prfload.c: Remove dead code. - (pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs): - New functions. - (pfr_phy_font_done): Free `kern_pairs'. - (pfr_phy_font_load): Call `pfr_sort_kerning_pairs'. - * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix kerning extraction. - * src/pfr/pfrtypes.h (PFR_KERN_PAIR_INDEX): New macro. - (PFR_KernPairRec): Make `kerning' an FT_Int. - (PFR_PhyFontRec): New element `kern_pairs'. - (PFR_KernFlags): Values of PFR_KERN_2BYTE_CHAR and - PFR_KERN_2BYTE_ADJ were erroneously reversed. - - * include/freetype/ftoption.h: Commenting out the macro - TT_CONFIG_OPTION_BYTECODE_INTERPRETER. - -2003-09-02 David Turner - - - * Version 2.1.5 released. - ========================= - - -2003-08-31 Manish Singh - - * src/bdf/bdflib.c (_bdf_readstream): Don't use FT_MEM_COPY but - FT_MEM_MOVE. - -2003-08-30 Werner Lemberg - - * include/freetype/freetype.h (FT_ENCODING_SJIS, FT_ENCODING_GB2312, - FT_ENCODING_BIG5, FT_ENCODING_WANSUNG, FT_ENCODING_JOHAB): New - enumerations of FT_Encoding. The FT_ENCODING_MS_* variants except - FT_ENCODING_MS_SYMBOL are now deprecated. - Updated all users. - * docs/CHANGES: Document it. - -2003-08-27 Werner Lemberg - - * src/bdf/bdfdrivr.c (BDF_Face_Init): Accept lowercase characters - for spacing. - -2003-08-27 Mike FABIAN - - * src/pcf/pcfread.c (pcf_load_font), src/bdf/bdfdrivr.c - (BDF_Face_Init): Accept lowercase characters for slant and weight. - -2003-08-18 David Turner - - * include/freetype/config/ftoption.h: Disabling TrueType bytecode - interpreter until the UNPATENTED_HINTING works as advertised. - - * src/autohint/ahhint.c (ah_hinter_load_glyph): Use `|' for - setting `load_flags'. - - * Jamfile: Adding the `refdoc' target to the Jamfile in order to - build the API Reference in `docs/reference' automatically. - - * include/freetype/t1tables.h (PS_FontInfoRec), src/cid/cidtoken.h, - src/type1/t1tokens.h, src/type42/t42parse.c: Resetting the types of - `italic_angle', `underline_position', and `underline_thickness' to - their previous values (i.e., long, short, and ushort) in order to - avoid breaking binary compatibility. - - * include/freetype/ttunpat.h: Fixing documentation comment. - - * include/freetype/config/ftoption.h, devel/ftoption.h - (TT_CONFIG_OPTION_OPTION_COMPILE_UNPATENTED_HINTING): Replaced - with... - (TT_CONFIG_OPTION_UNPATENTED_HINTING): This. Updated all users. - (TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING): Removed. - - * include/freetype/internal/ftobjs.h (FT_DEBUG_HOOK_TYPE1): Removed. - (FT_DEBUG_HOOK_UNPATENTED_HINTING): New macro. Use this with - `FT_Set_Debug_Hook' to get the same effect as the removed - TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING. - - * src/truetype/ttobjs.c (tt_face_init): Use - `FT_DEBUG_HOOK_UNPATENTED_HINTING'. - -2003-08-06 Werner Lemberg - - * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c - (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Fix - previous change. - -2003-08-05 Werner Lemberg - - * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c - (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Apply - font matrix to advance width also. - * docs/CHANGES: Updated. - -2003-07-26 Werner Lemberg - - * builds/unix/configure.ac (version_info): Set to 9:4:3. - * builds/unix/configure: Updated. - * docs/CHANGES, docs/VERSION.DLL: Updated. - - * include/freetype/freetype.h (FT_GlyphSlot): Change 2003-06-16 - also breaks binary compatibility. Reintroduce an unsigned integer - at the old position of `flags' called `reserved'. - -2003-07-25 Werner Lemberg - - Make API reference valid HTML 4.01 transitional. - - * src/tools/docmaker/tohtml.py (html_header_1): Add doctype - and charset. - (html_header_2): Fix style elements and add some more. - Fix syntax. - (block_header, block_footer, description_header, description_footer, - marker_header, marker_footer, source_header, source_footer, - chapter_header): Don't use
...
but `align=center' - table attribute. - (chapter_inter, chapter_footer): Add
  • and use special