📄 cplot.c
字号:
/**
\file cplot.c
\brief C functions for 2D plotting directly to a compressed bitmap.
\author Glenn D. MacGougan (GDM)
\date 2008-04-23
\since 2007-12-19
\b "LICENSE INFORMATION" \n
Copyright (c) 2007, refer to 'author' doxygen tags \n
All rights reserved. \n
Redistribution and use in source and binary forms, with or without
modification, are permitted provided the following conditions are met: \n
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer. \n
- 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. \n
- The name(s) of the contributor(s) may not be used to endorse or promote
products derived from this software without specific prior written
permission. \n
THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
*/
#include <stdio.h> // for FILE*
#include <stdlib.h> // for calloc, malloc, free
#include <string.h> // for strlen, sprintf, strstr, strcmp, and others
#include <ctype.h> // for isalpha
#include <math.h>
#include <float.h>
#include "cplot.h"
// deal with msvc empty projects
#ifndef WIN32
#ifdef _WIN32
#define WIN32
#endif
#endif
#if defined _MSC_VER && _MSC_VER < 1400
#define _CRT_SECURE_NO_DEPRECATE
#endif
#ifndef _MSC_VER
#define _CRT_SECURE_NO_DEPRECATE
#endif
//#define INTEL_IPPS
#ifdef INTEL_IPPS // the intel performance primitives acceleration libraries
#include <ippcore.h>
#include <ipps.h>
#include <ippvm.h>
#include <ippdc.h>
// you must call "ippStaticInit();" before using this class! if IPPS is enabled
// In Windows, for static linking you must include ippcore.lib and ipps.lib
// in your project
#endif
#define CPLOT_SIZEOF_BITMAPFILEHEADER (14) //!< True size of disk (one byte packing required).
#define CPLOT_SIZEOF_BITMAPINFOHEADER (40) //!< True size of disk (one byte packing required).
#define CPLOT_RGB_WHITE { 255, 255, 255, 0 }
#define CPLOT_RGB_BLACK { 0, 0, 0, 0 }
#define CPLOT_RGB_BLUE { 255, 0, 0, 0 }
#define CPLOT_RGB_GREEN { 0, 128, 0, 0 }
#define CPLOT_RGB_CYAN { 255, 255, 0, 0 }
#define CPLOT_RGB_RED { 0, 0, 255, 0 }
#define CPLOT_RGB_INDIANRED { 0, 0, 128, 0 }
#define CPLOT_RGB_YELLOW { 0, 255, 255, 0 }
#define CPLOT_RGB_LIMEGREEN { 0, 255, 0, 0 }
#define CPLOT_RGB_DARKBLUE { 128, 64, 0, 0 }
#define CPLOT_RGB_BABYBLUE { 255, 128, 0, 0 }
#define CPLOT_RGB_PAISLYBLUE { 192, 128, 0, 0 }
#define CPLOT_RGB_LIGHTPURPLE { 255, 0, 128, 0 }
#define CPLOT_RGB_PURPLE { 255, 0, 128, 0 }
#define CPLOT_RGB_DARKPURPLE { 128, 0, 64, 0 }
#define CPLOT_RGB_PINK { 255, 128, 255, 0 }
#define CPLOT_RGB_GREYPURPLE { 192, 128, 128, 0 }
#define CPLOT_RGB_BROWN { 64, 64, 128, 0 }
#define CPLOT_RGB_GREY { 128, 128, 128, 0 }
#define CPLOT_RGB_LIGHTGREY { 192, 192, 192, 0 }
#define CPLOT_RGB_MAGENTA { 128, 0, 128, 0 }
#define CPLOT_RGB_ORANGE { 0, 128, 255, 0 }
#define CPLOT_LARGEFONT (14) //!< The width and height of CPLOT's large font.
#define CPLOT_LARGEFONT_NBYTES (196) //!< The number of bytes in a large font letter.
#define CPLOT_SMALLFONT_HGT (7) //!< The heigHt of CPLOT's small font.
#define CPLOT_SMALLFONT_WIDTH (6) //!< The width of CPLOT's small font.
#define CPLOT_SMALLFONT_NBYTES (42) //!< The number of bytes in a small font letter.
#define CPLOT_PIXELS_PER_CM (38) //!< The number of pixels per centimeter.
#define CPLOT_POINT_SIZE (5) //!< The width/height for a point [pixels].
#define CPLOT_LARGEPOINT_SIZE (8) //!< The width/height for a large point [pixels].
#define CPLOT_DEFAULT_PLOT_WIDTH_CM (15) //!< The default plot width [cm].
#define CPLOT_DEFAULT_PLOT_HEIGHT_CM (13) //!< The default plot height [cm].
typedef unsigned char byte;
/*
const CPLOT_structRGB kRGB_White = CPLOT_RGB_WHITE;
const CPLOT_structRGB kRGB_Black = CPLOT_RGB_BLACK;
const CPLOT_structRGB kRGB_Blue = CPLOT_RGB_BLUE;
const CPLOT_structRGB kRGB_Green = CPLOT_RGB_GREEN;
const CPLOT_structRGB kRGB_Cyan = CPLOT_RGB_CYAN;
const CPLOT_structRGB kRGB_Red = CPLOT_RGB_RED;
const CPLOT_structRGB kRGB_IndianRed = CPLOT_RGB_INDIANRED;
const CPLOT_structRGB kRGB_Yellow = CPLOT_RGB_YELLOW;
const CPLOT_structRGB kRGB_LimeGreen = CPLOT_RGB_LIMEGREEN;
const CPLOT_structRGB kRGB_DarkBlue = CPLOT_RGB_DARKBLUE;
const CPLOT_structRGB kRGB_BabyBlue = CPLOT_RGB_BABYBLUE;
const CPLOT_structRGB kRGB_PaislyBlue = CPLOT_RGB_PAISLYBLUE;
const CPLOT_structRGB kRGB_LightPurple = CPLOT_RGB_LIGHTPURPLE;
const CPLOT_structRGB kRGB_Purple = CPLOT_RGB_PURPLE;
const CPLOT_structRGB kRGB_DarkPurple = CPLOT_RGB_DARKPURPLE;
const CPLOT_structRGB kRGB_Pink = CPLOT_RGB_PINK;
const CPLOT_structRGB kRGB_GreyPurple = CPLOT_RGB_GREYPURPLE;
const CPLOT_structRGB kRGB_Brown = CPLOT_RGB_BROWN;
const CPLOT_structRGB kRGB_Grey = CPLOT_RGB_GREY;
const CPLOT_structRGB kRGB_LightGrey = CPLOT_RGB_LIGHTGREY;
const CPLOT_structRGB kRGB_Magenta = CPLOT_RGB_MAGENTA;
const CPLOT_structRGB kRGB_Orange = CPLOT_RGB_ORANGE;
*/
const CPLOT_structColorTable CPLOT_DefaultColorTable = {
CPLOT_RGB_WHITE,
CPLOT_RGB_BLACK,
CPLOT_RGB_BLUE,
CPLOT_RGB_GREEN,
CPLOT_RGB_PURPLE,
CPLOT_RGB_MAGENTA,
CPLOT_RGB_DARKBLUE,
CPLOT_RGB_INDIANRED,
CPLOT_RGB_BABYBLUE,
CPLOT_RGB_PAISLYBLUE,
CPLOT_RGB_LIGHTPURPLE,
CPLOT_RGB_DARKPURPLE,
CPLOT_RGB_GREYPURPLE,
CPLOT_RGB_BROWN,
CPLOT_RGB_RED,
CPLOT_RGB_PINK,
CPLOT_RGB_YELLOW,
CPLOT_RGB_ORANGE,
CPLOT_RGB_CYAN,
CPLOT_RGB_LIMEGREEN,
CPLOT_RGB_GREY,
CPLOT_RGB_LIGHTGREY,
};
const byte CPLOT_Point[CPLOT_POINT_SIZE][CPLOT_POINT_SIZE] =
{{ 0,0,1,0,0 },
{ 0,1,1,1,0 },
{ 1,1,1,1,1 },
{ 0,1,1,1,0 },
{ 0,0,1,0,0 },};
const byte CPLOT_LargePoint[CPLOT_LARGEPOINT_SIZE][CPLOT_LARGEPOINT_SIZE] =
{{ 0,0,1,1,0,0 },
{ 0,1,1,1,1,0 },
{ 1,1,1,1,1,1 },
{ 1,1,1,1,1,1 },
{ 0,1,1,1,1,0 },
{ 0,0,1,1,0,0 },};
const byte CPLOT_LARGEFONT_sigma[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //11
{
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,1,1,1,1,1,1,1,1,1,1,1 },
{ 0,0,1,1,1,1,1,1,1,1,1,1,1,1 },
{ 0,1,1,1,0,0,0,0,1,1,0,0,0,0 },
{ 0,1,1,0,0,0,0,0,0,1,1,0,0,0 },
{ 0,1,1,0,0,0,0,0,0,1,1,0,0,0 },
{ 0,1,1,0,0,0,0,0,0,1,1,0,0,0 },
{ 0,0,1,1,0,0,0,0,1,1,1,0,0,0 },
{ 0,0,0,1,1,1,1,1,1,1,0,0,0,0 },
{ 0,0,0,0,1,1,1,1,1,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_A[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //11
{
{ 0,0,0,1,1,1,0,0,0,0,0,0,0,0 },
{ 0,0,0,1,1,1,0,0,0,0,0,0,0,0 },
{ 0,0,1,1,0,1,1,0,0,0,0,0,0,0 },
{ 0,0,1,1,0,1,1,0,0,0,0,0,0,0 },
{ 0,0,1,1,0,1,1,0,0,0,0,0,0,0 },
{ 0,1,1,0,0,0,1,1,0,0,0,0,0,0 },
{ 0,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 0,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_B[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //11
{
{ 1,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_C[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //11
{
{ 0,0,0,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 0,1,1,0,0,0,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,0,0,0,0,0,0 },
{ 0,1,1,0,0,0,1,1,1,0,0,0,0,0 },
{ 0,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 0,0,0,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_D[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //11
{
{ 1,1,1,1,1,1,0,0,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,1,1,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,1,1,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_E[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //11
{
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_F[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //11
{
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_G[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //11
{
{ 0,0,0,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 0,1,1,0,0,0,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,1,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,1,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 0,1,1,0,0,0,1,1,1,0,0,0,0,0 },
{ 0,1,1,1,1,1,1,1,0,0,0,0,0,0 },
{ 0,0,0,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_H[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //11
{
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_I[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //3
{
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_J[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //9
{
{ 0,0,0,0,0,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,1,1,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,1,1,0,0,0,0,0,0,0 },
{ 1,1,1,0,0,1,1,0,0,0,0,0,0,0 },
{ 0,1,1,1,1,1,0,0,0,0,0,0,0,0 },
{ 0,0,1,1,1,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_K[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //11
{
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,1,1,0,0,0,0,0,0 },
{ 1,1,0,0,0,1,1,0,0,0,0,0,0,0 },
{ 1,1,0,0,1,1,1,0,0,0,0,0,0,0 },
{ 1,1,0,1,1,1,1,0,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,0,0,0,0,0,0,0 },
{ 1,1,1,0,0,1,1,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,1,1,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,1,1,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,1,1,1,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,1,1,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
const byte CPLOT_LARGEFONT_L[CPLOT_LARGEFONT][CPLOT_LARGEFONT] = //9
{
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,0,0,0,0,0,0,0 },
{ 1,1,1,1,1,1,1,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -