📄 meter.c
字号:
/**********************************************************************
#
# Filename: meter.c
#
# Description:
#
# THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
# ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
# PARTICULAR PURPOSE.
#
# Use of this source code is subject to the terms of the Cirrus end-user
# license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
# If you did not accept the terms of the EULA, you are not authorized to
# use this source code. For a copy of the EULA, please see the
# EULA.RTF on your install media.
#
# Copyright(c) Cirrus Logic Corporation 2005, All Rights Reserved
#
#**********************************************************************/
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "font.h"
//#include "rgb.h"
#define FRAMEBUF_PHYSICAL_MEMORY 0x000C0000
#define FRAMEBUF_VIRTUAL_MEMORY (0xA0000000 + FRAMEBUF_PHYSICAL_MEMORY)
unsigned short *pusFrame;
int iFD;
void
fb_init(void)
{
#ifdef UNDER_CE
pusFrame = (unsigned short *)(FRAMEBUF_VIRTUAL_MEMORY);
#else
iFD = open("/dev/tty1", O_RDWR);
write(iFD, "\033[?25l\033[?1c", 11);
close(iFD);
iFD = open("/dev/fb", O_RDWR);
pusFrame = mmap(NULL, 640 * 480 * 2, PROT_READ | PROT_WRITE, MAP_SHARED,
iFD, 0);
#endif
memset(pusFrame, 0, 640 * 480 * 2);
}
void
fb_cleanup(void)
{
#ifdef UNDER_CE
#else
munmap(pusFrame, 640 * 480 * 2);
close(iFD);
#endif
}
extern HICON hBrzierIco;
void DrawBezierIcon()
{
HDC hdc;
if(hBrzierIco ==NULL) return;
hdc = GetDC(NULL);
if(hdc ==NULL) return;
DrawIcon(hdc, 0 , 0, hBrzierIco);
}
void
DrawBezier(unsigned short *pusBuffer, unsigned long *pulX, unsigned long *pulY,
unsigned short usColor)
{
unsigned long ulX, ulY;
float fT, fT2, fT3, fIT, fIT2, fIT3;
for(fT = 0.0; fT < 1.0; fT += 0.005f)
{
fT2 = fT * fT;
fT3 = fT2 * fT;
fIT = 1.0f - fT;
fIT2 = fIT * fIT;
fIT3 = fIT2 * fIT;
ulX = (unsigned long)( ((fIT3 * pulX[0]) +
(3 * fT * fIT2 * pulX[1]) +
(3 * fT2 * fIT * pulX[2]) +
(fT3 * pulX[3])));
ulY = (unsigned long)( ((fIT3 * pulY[0]) +
(3 * fT * fIT2 * pulY[1]) +
(3 * fT2 * fIT * pulY[2]) +
(fT3 * pulY[3])));
pusBuffer[(ulY * 640) + ulX] = usColor;
}
}
extern void DrawBezierCrunch(unsigned short *pusBuffer, unsigned long *pulX,
unsigned long *pulY, unsigned short usColor);
void (*pfnBezier)(unsigned short *pusBuffer, unsigned long *pulX,
unsigned long *pulY, unsigned short usColor);
void
DrawBand(long *plPointsX, long *plPointsY, unsigned long ulPoints,
unsigned short usColor)
{
unsigned long pulX[4], pulY[4], ulIndex;
for(ulIndex = 0; ulIndex < ulPoints; ulIndex += 2)
{
pulX[0] = (plPointsX[ulIndex] + plPointsX[ulIndex + 1]) / 2;
pulY[0] = (plPointsY[ulIndex] + plPointsY[ulIndex + 1]) / 2;
pulX[1] = plPointsX[ulIndex + 1];
pulY[1] = plPointsY[ulIndex + 1];
pulX[2] = plPointsX[ulIndex + 2];
pulY[2] = plPointsY[ulIndex + 2];
pulX[3] = (plPointsX[ulIndex + 2] + plPointsX[ulIndex + 3]) / 2;
pulY[3] = (plPointsY[ulIndex + 2] + plPointsY[ulIndex + 3]) / 2;
(pfnBezier)(pusFrame, pulX, pulY, usColor);
}
}
#define RGB16(r,g,b) (((b) >> 3) | (((g) >> 2) << 5) | (((r) >> 3) << 11))
unsigned short pusColors[] =
{
RGB16(255, 0, 0),
RGB16(255, 1, 0),
RGB16(255, 2, 0),
RGB16(255, 3, 0),
RGB16(255, 4, 0),
RGB16(255, 5, 0),
RGB16(255, 6, 0),
RGB16(255, 7, 0),
RGB16(255, 8, 0),
RGB16(255, 9, 0),
RGB16(255, 10, 0),
RGB16(255, 11, 0),
RGB16(255, 12, 0),
RGB16(255, 13, 0),
RGB16(255, 14, 0),
RGB16(255, 15, 0),
RGB16(255, 16, 0),
RGB16(255, 17, 0),
RGB16(255, 18, 0),
RGB16(255, 19, 0),
RGB16(255, 20, 0),
RGB16(255, 21, 0),
RGB16(255, 22, 0),
RGB16(255, 23, 0),
RGB16(255, 24, 0),
RGB16(255, 25, 0),
RGB16(255, 26, 0),
RGB16(255, 27, 0),
RGB16(255, 28, 0),
RGB16(255, 29, 0),
RGB16(255, 30, 0),
RGB16(255, 31, 0),
RGB16(255, 32, 0),
RGB16(255, 33, 0),
RGB16(255, 34, 0),
RGB16(255, 35, 0),
RGB16(255, 36, 0),
RGB16(255, 37, 0),
RGB16(255, 38, 0),
RGB16(255, 39, 0),
RGB16(255, 40, 0),
RGB16(255, 41, 0),
RGB16(255, 42, 0),
RGB16(255, 43, 0),
RGB16(255, 44, 0),
RGB16(255, 45, 0),
RGB16(255, 46, 0),
RGB16(255, 47, 0),
RGB16(255, 48, 0),
RGB16(255, 49, 0),
RGB16(255, 50, 0),
RGB16(255, 51, 0),
RGB16(255, 52, 0),
RGB16(255, 53, 0),
RGB16(255, 54, 0),
RGB16(255, 55, 0),
RGB16(255, 56, 0),
RGB16(255, 57, 0),
RGB16(255, 58, 0),
RGB16(255, 59, 0),
RGB16(255, 60, 0),
RGB16(255, 61, 0),
RGB16(255, 62, 0),
RGB16(255, 63, 0),
RGB16(255, 64, 0),
RGB16(255, 65, 0),
RGB16(255, 66, 0),
RGB16(255, 67, 0),
RGB16(255, 68, 0),
RGB16(255, 69, 0),
RGB16(255, 70, 0),
RGB16(255, 71, 0),
RGB16(255, 72, 0),
RGB16(255, 73, 0),
RGB16(255, 74, 0),
RGB16(255, 75, 0),
RGB16(255, 76, 0),
RGB16(255, 77, 0),
RGB16(255, 78, 0),
RGB16(255, 79, 0),
RGB16(255, 80, 0),
RGB16(255, 81, 0),
RGB16(255, 82, 0),
RGB16(255, 83, 0),
RGB16(255, 84, 0),
RGB16(255, 85, 0),
RGB16(255, 86, 0),
RGB16(255, 87, 0),
RGB16(255, 88, 0),
RGB16(255, 89, 0),
RGB16(255, 90, 0),
RGB16(255, 91, 0),
RGB16(255, 92, 0),
RGB16(255, 93, 0),
RGB16(255, 94, 0),
RGB16(255, 95, 0),
RGB16(255, 96, 0),
RGB16(255, 97, 0),
RGB16(255, 98, 0),
RGB16(255, 99, 0),
RGB16(255,100, 0),
RGB16(255,101, 0),
RGB16(255,102, 0),
RGB16(255,103, 0),
RGB16(255,104, 0),
RGB16(255,105, 0),
RGB16(255,106, 0),
RGB16(255,107, 0),
RGB16(255,108, 0),
RGB16(255,109, 0),
RGB16(255,110, 0),
RGB16(255,111, 0),
RGB16(255,112, 0),
RGB16(255,113, 0),
RGB16(255,114, 0),
RGB16(255,115, 0),
RGB16(255,116, 0),
RGB16(255,117, 0),
RGB16(255,118, 0),
RGB16(255,119, 0),
RGB16(255,120, 0),
RGB16(255,121, 0),
RGB16(255,122, 0),
RGB16(255,123, 0),
RGB16(255,124, 0),
RGB16(255,125, 0),
RGB16(255,126, 0),
RGB16(255,127, 0),
RGB16(255,128, 0),
RGB16(255,129, 0),
RGB16(255,130, 0),
RGB16(255,131, 0),
RGB16(255,132, 0),
RGB16(255,133, 0),
RGB16(255,134, 0),
RGB16(255,135, 0),
RGB16(255,136, 0),
RGB16(255,137, 0),
RGB16(255,138, 0),
RGB16(255,139, 0),
RGB16(255,140, 0),
RGB16(255,141, 0),
RGB16(255,142, 0),
RGB16(255,143, 0),
RGB16(255,144, 0),
RGB16(255,145, 0),
RGB16(255,146, 0),
RGB16(255,147, 0),
RGB16(255,148, 0),
RGB16(255,149, 0),
RGB16(255,150, 0),
RGB16(255,151, 0),
RGB16(255,152, 0),
RGB16(255,153, 0),
RGB16(255,154, 0),
RGB16(255,155, 0),
RGB16(255,156, 0),
RGB16(255,157, 0),
RGB16(255,158, 0),
RGB16(255,159, 0),
RGB16(255,160, 0),
RGB16(255,161, 0),
RGB16(255,162, 0),
RGB16(255,163, 0),
RGB16(255,164, 0),
RGB16(255,165, 0),
RGB16(255,166, 0),
RGB16(255,167, 0),
RGB16(255,168, 0),
RGB16(255,169, 0),
RGB16(255,170, 0),
RGB16(255,171, 0),
RGB16(255,172, 0),
RGB16(255,173, 0),
RGB16(255,174, 0),
RGB16(255,175, 0),
RGB16(255,176, 0),
RGB16(255,177, 0),
RGB16(255,178, 0),
RGB16(255,179, 0),
RGB16(255,180, 0),
RGB16(255,181, 0),
RGB16(255,182, 0),
RGB16(255,183, 0),
RGB16(255,184, 0),
RGB16(255,185, 0),
RGB16(255,186, 0),
RGB16(255,187, 0),
RGB16(255,188, 0),
RGB16(255,189, 0),
RGB16(255,190, 0),
RGB16(255,191, 0),
RGB16(255,192, 0),
RGB16(255,193, 0),
RGB16(255,194, 0),
RGB16(255,195, 0),
RGB16(255,196, 0),
RGB16(255,197, 0),
RGB16(255,198, 0),
RGB16(255,199, 0),
RGB16(255,200, 0),
RGB16(255,201, 0),
RGB16(255,202, 0),
RGB16(255,203, 0),
RGB16(255,204, 0),
RGB16(255,205, 0),
RGB16(255,206, 0),
RGB16(255,207, 0),
RGB16(255,208, 0),
RGB16(255,209, 0),
RGB16(255,210, 0),
RGB16(255,211, 0),
RGB16(255,212, 0),
RGB16(255,213, 0),
RGB16(255,214, 0),
RGB16(255,215, 0),
RGB16(255,216, 0),
RGB16(255,217, 0),
RGB16(255,218, 0),
RGB16(255,219, 0),
RGB16(255,220, 0),
RGB16(255,221, 0),
RGB16(255,222, 0),
RGB16(255,223, 0),
RGB16(255,224, 0),
RGB16(255,225, 0),
RGB16(255,226, 0),
RGB16(255,227, 0),
RGB16(255,228, 0),
RGB16(255,229, 0),
RGB16(255,230, 0),
RGB16(255,231, 0),
RGB16(255,232, 0),
RGB16(255,233, 0),
RGB16(255,234, 0),
RGB16(255,235, 0),
RGB16(255,236, 0),
RGB16(255,237, 0),
RGB16(255,238, 0),
RGB16(255,239, 0),
RGB16(255,240, 0),
RGB16(255,241, 0),
RGB16(255,242, 0),
RGB16(255,243, 0),
RGB16(255,244, 0),
RGB16(255,245, 0),
RGB16(255,246, 0),
RGB16(255,247, 0),
RGB16(255,248, 0),
RGB16(255,249, 0),
RGB16(255,250, 0),
RGB16(255,251, 0),
RGB16(255,252, 0),
RGB16(255,253, 0),
RGB16(255,254, 0),
RGB16(255,255, 0),
RGB16(254,255, 0),
RGB16(253,255, 0),
RGB16(252,255, 0),
RGB16(251,255, 0),
RGB16(250,255, 0),
RGB16(249,255, 0),
RGB16(248,255, 0),
RGB16(247,255, 0),
RGB16(246,255, 0),
RGB16(245,255, 0),
RGB16(244,255, 0),
RGB16(243,255, 0),
RGB16(242,255, 0),
RGB16(241,255, 0),
RGB16(240,255, 0),
RGB16(239,255, 0),
RGB16(238,255, 0),
RGB16(237,255, 0),
RGB16(236,255, 0),
RGB16(235,255, 0),
RGB16(234,255, 0),
RGB16(233,255, 0),
RGB16(232,255, 0),
RGB16(231,255, 0),
RGB16(230,255, 0),
RGB16(229,255, 0),
RGB16(228,255, 0),
RGB16(227,255, 0),
RGB16(226,255, 0),
RGB16(225,255, 0),
RGB16(224,255, 0),
RGB16(223,255, 0),
RGB16(222,255, 0),
RGB16(221,255, 0),
RGB16(220,255, 0),
RGB16(219,255, 0),
RGB16(218,255, 0),
RGB16(217,255, 0),
RGB16(216,255, 0),
RGB16(215,255, 0),
RGB16(214,255, 0),
RGB16(213,255, 0),
RGB16(212,255, 0),
RGB16(211,255, 0),
RGB16(210,255, 0),
RGB16(209,255, 0),
RGB16(208,255, 0),
RGB16(207,255, 0),
RGB16(206,255, 0),
RGB16(205,255, 0),
RGB16(204,255, 0),
RGB16(203,255, 0),
RGB16(202,255, 0),
RGB16(201,255, 0),
RGB16(200,255, 0),
RGB16(199,255, 0),
RGB16(198,255, 0),
RGB16(197,255, 0),
RGB16(196,255, 0),
RGB16(195,255, 0),
RGB16(194,255, 0),
RGB16(193,255, 0),
RGB16(192,255, 0),
RGB16(191,255, 0),
RGB16(190,255, 0),
RGB16(189,255, 0),
RGB16(188,255, 0),
RGB16(187,255, 0),
RGB16(186,255, 0),
RGB16(185,255, 0),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -