📄 compress.c
字号:
//*****************************************************************************
//
// compress.c - Program to compress the 24x32 raster font so that it does not
// use as much flash space.
//
// Copyright (c) 2006-2007 Luminary Micro, Inc. All rights reserved.
//
// Software License Agreement
//
// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
// exclusively on LMI's microcontroller products.
//
// The software is owned by LMI and/or its suppliers, and is protected under
// applicable copyright laws. All rights are reserved. Any use in violation
// of the foregoing restrictions may subject the user to criminal sanctions
// under applicable laws, as well as to civil liability for the breach of the
// terms and conditions of this license.
//
// THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
//
// This is part of revision 220 of sw01246.
//
//*****************************************************************************
#include <stdio.h>
//*****************************************************************************
//
//! An array to hold the start column of each character glyph.
//
//*****************************************************************************
unsigned char g_pucStart[256];
//*****************************************************************************
//
//! An array to hold the column width of each character glyph.
//
//*****************************************************************************
unsigned char g_pucSize[256];
//*****************************************************************************
//
//! An array that holds the bit representation of the character glyph being
//! compressed. Each byte represents a single pixel of the glyph; zero means
//! the pixel is turned off and non-zero means it is turned on.
//
//*****************************************************************************
unsigned char g_pucBits[24 * 32];
//*****************************************************************************
//
//! An array that is used to perform the test decompression of the compressed
//! glyph.
//
//*****************************************************************************
unsigned char g_pucBytes[3 * 32];
//*****************************************************************************
//
//! An array that holds the compressed data for the current character glyph.
//
//*****************************************************************************
unsigned char g_pucChar[256];
//*****************************************************************************
//
//! The uncompressed data for the 24x32 font. Each glyph has three bytes for
//! each scan line, with the MSB of the first byte being the left-most pixel
//! on that scan line and the LSB of the third byte being the right-most pixel
//! on that scan line. The scan lines are organized from top to bottom. Each
//! glpyh consumes 96 bytes.
//
//*****************************************************************************
const unsigned char g_pucFont24x32[] =
{
//
// ' '
//
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '!'
//
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x10, 0x00,
0x00, 0x10, 0x00,
0x00, 0x10, 0x00,
0x00, 0x10, 0x00,
0x00, 0x10, 0x00,
0x00, 0x10, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '"'
//
0x01, 0xc7, 0x00,
0x01, 0xc7, 0x00,
0x01, 0xc7, 0x00,
0x01, 0xc7, 0x00,
0x01, 0xc7, 0x00,
0x01, 0xc7, 0x00,
0x01, 0xc7, 0x00,
0x00, 0x82, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '#'
//
0x00, 0x70, 0xe0,
0x00, 0x70, 0xe0,
0x00, 0xf1, 0xc0,
0x00, 0xe1, 0xc0,
0x00, 0xe1, 0xc0,
0x00, 0xe1, 0xc0,
0x1f, 0xff, 0xf0,
0x1f, 0xff, 0xf0,
0x1f, 0xff, 0xf0,
0x01, 0xc3, 0x80,
0x01, 0xc3, 0x80,
0x03, 0xc7, 0x80,
0x03, 0x87, 0x00,
0x03, 0x87, 0x00,
0x1f, 0xff, 0xf0,
0x1f, 0xff, 0xf0,
0x1f, 0xff, 0xf0,
0x07, 0x0e, 0x00,
0x07, 0x0e, 0x00,
0x07, 0x0e, 0x00,
0x07, 0x1e, 0x00,
0x0e, 0x1c, 0x00,
0x0e, 0x1c, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '$'
//
0x00, 0x7e, 0x00,
0x01, 0xff, 0x80,
0x03, 0xff, 0xc0,
0x07, 0x99, 0xc0,
0x07, 0x18, 0xe0,
0x07, 0x18, 0xe0,
0x07, 0x18, 0x00,
0x07, 0x18, 0x00,
0x03, 0xd8, 0x00,
0x03, 0xf8, 0x00,
0x01, 0xff, 0x00,
0x00, 0x3f, 0xc0,
0x00, 0x1f, 0xe0,
0x00, 0x19, 0xe0,
0x00, 0x18, 0xf0,
0x00, 0x18, 0x70,
0x0e, 0x18, 0x70,
0x0e, 0x18, 0x70,
0x0f, 0x18, 0xf0,
0x07, 0x99, 0xe0,
0x03, 0xff, 0xc0,
0x01, 0xff, 0x80,
0x00, 0x7f, 0x00,
0x00, 0x18, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '%'
//
0x1e, 0x00, 0xe0,
0x7f, 0x81, 0xc0,
0x73, 0x81, 0xc0,
0xe1, 0xc3, 0x80,
0xe1, 0xc3, 0x80,
0xe1, 0xc7, 0x00,
0xe1, 0xc7, 0x00,
0xe1, 0xce, 0x00,
0xe1, 0xce, 0x00,
0x73, 0x9c, 0x00,
0x7f, 0x1c, 0x00,
0x1e, 0x38, 0xf0,
0x00, 0x3b, 0xfc,
0x00, 0x73, 0x9c,
0x00, 0xf7, 0x0e,
0x00, 0xe7, 0x0e,
0x01, 0xe7, 0x0e,
0x01, 0xc7, 0x0e,
0x03, 0x87, 0x0e,
0x03, 0x87, 0x0e,
0x07, 0x03, 0x9c,
0x07, 0x03, 0xfc,
0x0e, 0x00, 0xf0,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '&'
//
0x00, 0x7c, 0x00,
0x00, 0xff, 0x00,
0x01, 0xff, 0x00,
0x03, 0xc7, 0x80,
0x03, 0x83, 0x80,
0x03, 0x83, 0x80,
0x03, 0x83, 0x80,
0x01, 0xc7, 0x00,
0x00, 0xfe, 0x00,
0x00, 0xfc, 0x00,
0x01, 0xf8, 0x00,
0x03, 0xf8, 0x00,
0x07, 0x9c, 0x00,
0x0e, 0x0e, 0x38,
0x1c, 0x07, 0x70,
0x1c, 0x07, 0x70,
0x1c, 0x03, 0xe0,
0x1c, 0x01, 0xc0,
0x1e, 0x01, 0xe0,
0x0f, 0x07, 0xf0,
0x07, 0xff, 0xb8,
0x03, 0xff, 0x38,
0x00, 0xfc, 0x10,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '\''
//
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x10, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '('
//
0x00, 0x03, 0x00,
0x00, 0x06, 0x00,
0x00, 0x0c, 0x00,
0x00, 0x1c, 0x00,
0x00, 0x18, 0x00,
0x00, 0x38, 0x00,
0x00, 0x30, 0x00,
0x00, 0x70, 0x00,
0x00, 0x70, 0x00,
0x00, 0x70, 0x00,
0x00, 0xe0, 0x00,
0x00, 0xe0, 0x00,
0x00, 0xe0, 0x00,
0x00, 0xe0, 0x00,
0x00, 0xe0, 0x00,
0x00, 0xe0, 0x00,
0x00, 0xe0, 0x00,
0x00, 0xe0, 0x00,
0x00, 0xe0, 0x00,
0x00, 0x70, 0x00,
0x00, 0x70, 0x00,
0x00, 0x70, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x18, 0x00,
0x00, 0x1c, 0x00,
0x00, 0x0c, 0x00,
0x00, 0x06, 0x00,
0x00, 0x03, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// ')'
//
0x00, 0xc0, 0x00,
0x00, 0x60, 0x00,
0x00, 0x30, 0x00,
0x00, 0x38, 0x00,
0x00, 0x18, 0x00,
0x00, 0x1c, 0x00,
0x00, 0x0c, 0x00,
0x00, 0x0e, 0x00,
0x00, 0x0e, 0x00,
0x00, 0x0e, 0x00,
0x00, 0x07, 0x00,
0x00, 0x07, 0x00,
0x00, 0x07, 0x00,
0x00, 0x07, 0x00,
0x00, 0x07, 0x00,
0x00, 0x07, 0x00,
0x00, 0x07, 0x00,
0x00, 0x07, 0x00,
0x00, 0x07, 0x00,
0x00, 0x0e, 0x00,
0x00, 0x0e, 0x00,
0x00, 0x0e, 0x00,
0x00, 0x1c, 0x00,
0x00, 0x1c, 0x00,
0x00, 0x18, 0x00,
0x00, 0x38, 0x00,
0x00, 0x30, 0x00,
0x00, 0x60, 0x00,
0x00, 0xc0, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '*'
//
0x00, 0x18, 0x00,
0x00, 0x18, 0x00,
0x00, 0x18, 0x00,
0x01, 0xdb, 0x80,
0x01, 0xff, 0x80,
0x00, 0x7e, 0x00,
0x00, 0x3c, 0x00,
0x00, 0x7e, 0x00,
0x00, 0xe7, 0x00,
0x00, 0x42, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '+'
//
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x0f, 0xff, 0xe0,
0x0f, 0xff, 0xe0,
0x0f, 0xff, 0xe0,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// ','
//
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x38, 0x00,
0x00, 0x18, 0x00,
0x00, 0x18, 0x00,
0x00, 0x18, 0x00,
0x00, 0x10, 0x00,
0x00, 0x30, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '-'
//
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x01, 0xff, 0x00,
0x01, 0xff, 0x00,
0x01, 0xff, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
//
// '.'
//
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -