📄 display.c
字号:
#include "stdhead.h"
#include <fvid.h>
#include <edc.h>
#include <vport.h>
#include <vportcap.h>
#include <vportdis.h>
#include <saa7105.h>
#include <saa7115.h>
#include <evmdm642.h>
#include "evmdm642_vdisparams.h"
#include "char_lib.h"
#include "musicsource.h"
#include "font.h"
#define WHITE_Y 180
#define WHITE_CB 128
#define WHITE_CR 128
#define YELLOW_Y 162
#define YELLOW_CB 44
#define YELLOW_CR 142
#define CYAN_Y 131
#define CYAN_CB 156
#define CYAN_CR 44
#define GREEN_Y 112
#define GREEN_CB 72
#define GREEN_CR 58
#define MAGENTA_Y 84
#define MAGENTA_CB 184
#define MAGENTA_CR 198
#define RED_Y 65
#define RED_CB 100
#define RED_CR 212
#define BLUE_Y 35
#define BLUE_CB 212
#define BLUE_CR 114
#define BLACK_Y 17
#define BLACK_CB 128
#define BLACK_CR 128
void display_character( unsigned char character[32], Int row, Int volume, FVID_Frame *disFrameBuf)
{
Uint32 i = 0;
Int x,y;
unsigned char m_even[32];
unsigned char m_odd[32];
unsigned char m[64];
unsigned char buf[64][4];
for( i=0; i<32; i++)
{
m_even[i] = character[i]/16;
m_odd[i] = character[i]%16;
m[2*i] = m_even[i];
m[2*i+1] = m_odd[i];
}
for( i=0; i<64; i++)
{
switch(m[i])
{
case 0x0:
buf[i][0] = 17;
buf[i][1] = 17;
buf[i][2] = 17;
buf[i][3] = 17;
break;
case 0x1:
buf[i][0] = 17;
buf[i][1] = 17;
buf[i][2] = 17;
buf[i][3] = 180;
break;
case 0x2:
buf[i][0] = 17;
buf[i][1] = 17;
buf[i][2] = 180;
buf[i][3] = 17;
break;
case 0x3:
buf[i][0] = 17;
buf[i][1] = 17;
buf[i][2] = 180;
buf[i][3] = 180;
break;
case 0x4:
buf[i][0] = 17;
buf[i][1] = 180;
buf[i][2] = 17;
buf[i][3] = 17;
break;
case 0x5:
buf[i][0] = 17;
buf[i][1] = 180;
buf[i][2] = 17;
buf[i][3] = 180;
break;
case 0x6:
buf[i][0] = 17;
buf[i][1] = 180;
buf[i][2] = 180;
buf[i][3] = 17;
break;
case 0x7:
buf[i][0] = 17;
buf[i][1] = 180;
buf[i][2] = 180;
buf[i][3] = 180;
break;
case 0x8:
buf[i][0] = 180;
buf[i][1] = 17;
buf[i][2] = 17;
buf[i][3] = 17;
break;
case 0x9:
buf[i][0] = 180;
buf[i][1] = 17;
buf[i][2] = 17;
buf[i][3] = 180;
break;
case 0xA:
buf[i][0] = 180;
buf[i][1] = 17;
buf[i][2] = 180;
buf[i][3] = 17;
break;
case 0xB:
buf[i][0] = 180;
buf[i][1] = 17;
buf[i][2] = 180;
buf[i][3] = 180;
break;
case 0xC:
buf[i][0] = 180;
buf[i][1] = 180;
buf[i][2] = 17;
buf[i][3] = 17;
break;
case 0xD:
buf[i][0] = 180;
buf[i][1] = 180;
buf[i][2] = 17;
buf[i][3] = 180;
break;
case 0xE:
buf[i][0] = 180;
buf[i][1] = 180;
buf[i][2] = 180;
buf[i][3] = 17;
break;
case 0xF:
buf[i][0] = 180;
buf[i][1] = 180;
buf[i][2] = 180;
buf[i][3] = 180;
break;
default:
break;
}
}
for( x=row; x<row+16; x++ )
{
for( y=volume; y<volume+4; y++ )
{
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2))<=buf[(x-row)*4][y-volume])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2)) = buf[(x-row)*4][y-volume];//RED_Y;
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2))<=buf[(x-row)*4][y-volume])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2)) = buf[(x-row)*4][y-volume];//RED_Y;
}
for( y=volume+4; y<volume+8; y++ )
{
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2))<=buf[(x-row)*4+1][y-volume-4])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2)) = buf[(x-row)*4+1][y-volume-4];//RED_Y;
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2))<=buf[(x-row)*4+1][y-volume-4])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2)) = buf[(x-row)*4+1][y-volume-4];//RED_Y;
}
for( y=volume+8; y<volume+12; y++ )
{
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2))<=buf[(x-row)*4+2][y-volume-8])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2)) = buf[(x-row)*4+2][y-volume-8];//RED_Y;
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2))<=buf[(x-row)*4+2][y-volume-8])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2)) = buf[(x-row)*4+2][y-volume-8];//RED_Y;
}
for( y=volume+12; y<volume+16; y++ )
{
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2))<=buf[(x-row)*4+3][y-volume-12])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2)) = buf[(x-row)*4+3][y-volume-12];//RED_Y;
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2))<=buf[(x-row)*4+3][y-volume-12])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2)) = buf[(x-row)*4+3][y-volume-12];//RED_Y;
}
}
}
void display_number( unsigned char number[16], Int row, Int volume, FVID_Frame *disFrameBuf)
{
Uint32 i = 0;
Int x,y;
unsigned char m_even[16];
unsigned char m_odd[16];
unsigned char m[32];
unsigned char buf[32][4];
for( i=0; i<16; i++)
{
m_even[i] = number[i]/16;
m_odd[i] = number[i]%16;
m[2*i] = m_even[i];
m[2*i+1] = m_odd[i];
}
for( i=0; i<32; i++)
{
switch(m[i])
{
case 0x0:
buf[i][0] = 17;
buf[i][1] = 17;
buf[i][2] = 17;
buf[i][3] = 17;
break;
case 0x1:
buf[i][0] = 17;
buf[i][1] = 17;
buf[i][2] = 17;
buf[i][3] = 180;
break;
case 0x2:
buf[i][0] = 17;
buf[i][1] = 17;
buf[i][2] = 180;
buf[i][3] = 17;
break;
case 0x3:
buf[i][0] = 17;
buf[i][1] = 17;
buf[i][2] = 180;
buf[i][3] = 180;
break;
case 0x4:
buf[i][0] = 17;
buf[i][1] = 180;
buf[i][2] = 17;
buf[i][3] = 17;
break;
case 0x5:
buf[i][0] = 17;
buf[i][1] = 180;
buf[i][2] = 17;
buf[i][3] = 180;
break;
case 0x6:
buf[i][0] = 17;
buf[i][1] = 180;
buf[i][2] = 180;
buf[i][3] = 17;
break;
case 0x7:
buf[i][0] = 17;
buf[i][1] = 180;
buf[i][2] = 180;
buf[i][3] = 180;
break;
case 0x8:
buf[i][0] = 180;
buf[i][1] = 17;
buf[i][2] = 17;
buf[i][3] = 17;
break;
case 0x9:
buf[i][0] = 180;
buf[i][1] = 17;
buf[i][2] = 17;
buf[i][3] = 180;
break;
case 0xA:
buf[i][0] = 180;
buf[i][1] = 17;
buf[i][2] = 180;
buf[i][3] = 17;
break;
case 0xB:
buf[i][0] = 180;
buf[i][1] = 17;
buf[i][2] = 180;
buf[i][3] = 180;
break;
case 0xC:
buf[i][0] = 180;
buf[i][1] = 180;
buf[i][2] = 17;
buf[i][3] = 17;
break;
case 0xD:
buf[i][0] = 180;
buf[i][1] = 180;
buf[i][2] = 17;
buf[i][3] = 180;
break;
case 0xE:
buf[i][0] = 180;
buf[i][1] = 180;
buf[i][2] = 180;
buf[i][3] = 17;
break;
case 0xF:
buf[i][0] = 180;
buf[i][1] = 180;
buf[i][2] = 180;
buf[i][3] = 180;
break;
default:
break;
}
}
for( x=row; x<row+16; x++ )
{
for( y=volume; y<volume+4; y++ )
{
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2))<=buf[(x-row)*2][y-volume])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2)) = buf[(x-row)*2][y-volume];//RED_Y;
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2))<=buf[(x-row)*2][y-volume])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2)) = buf[(x-row)*2][y-volume];//RED_Y;
}
for( y=volume+4; y<volume+8; y++ )
{
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2))<=buf[(x-row)*2+1][y-volume-4])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + (y<<2)) = buf[(x-row)*2+1][y-volume-4];//RED_Y;
if(*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2))<=buf[(x-row)*2+1][y-volume-4])
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * x + 2 + (y<<2)) = buf[(x-row)*2+1][y-volume-4];//RED_Y;
}
}
}
void display_key(unsigned char number, Int row, Int volume, FVID_Frame *disFrameBuf)
{
switch( number )
{
case 0x00:
display_number(number_0,row,volume,disFrameBuf);
break;
case 0x01:
display_number(number_1,row,volume,disFrameBuf);
break;
case 0x02:
display_number(number_2,row,volume,disFrameBuf);
break;
case 0x03:
display_number(number_3,row,volume,disFrameBuf);
break;
case 0x04:
display_number(number_4,row,volume,disFrameBuf);
break;
case 0x05:
display_number(number_5,row,volume,disFrameBuf);
break;
case 0x06:
display_number(number_6,row,volume,disFrameBuf);
break;
case 0x07:
display_number(number_7,row,volume,disFrameBuf);
break;
case 0x08:
display_number(number_8,row,volume,disFrameBuf);
break;
case 0x09:
display_number(number_9,row,volume,disFrameBuf);
break;
default: break;
}
}
void display_color(FVID_Frame *disFrameBuf)
{
Int i,j;
for(i = 0; i < (EVMDM642_vDisParamsChan.imgVSizeFld1); i++)
{//RED
for(j = 0; j < ((EVMDM642_vDisParamsChan.imgHSizeFld1)>>1); j++)
{
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * i + (j<<2)) = BLUE_Y;
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * i + 1 + (j<<2)) = BLUE_CB-128;
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * i + 2 + (j<<2)) = BLUE_Y;
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * i + 3 + (j<<2)) = BLUE_CR-128;
}
}
}
void displayAlarmingType( unsigned char byCh, FVID_Frame *disFrameBuf )
{
int i;
for( i=0; i<4; i++ )
{
if(byWarningType[byCh][i] != 0)
display_character( characterLib+GBK_getOffset(byWarningType[byCh][i]), 200, 20+i*30, disFrameBuf );
}
}
void datcpy(FVID_Frame *disFrameBuf)
{
Int i;
for(i = 0; i < EVMDM642_vDisParamsChan.imgVSizeFld1; i++)
{
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * i) = 0x03;
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * i + 1) = 0x00;
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * i + 2) = 0x03;
*(disFrameBuf->frame.rpFrm.buf + (EVMDM642_vDisParamsChan.imgHSizeFld1<<1) * i + 3) = 0x00;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -