⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vod.cpp

📁 vod vod vod vod
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#include <fastgl/fastgl.h>#include <fastgl/widgets.h>
#include <png.h>
#include <iconv.h>
//wav 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <linux/soundcard.h>
#include <limits.h>

#include <tds.h>
#include <tdsconvert.h>
#include "sqldb.h"
#include "notepic.h"
#include "wavfuncs.h"
#include "osd.h"
static int value=300;
static fgl::FGTimer *tmr;

fgl::FGDrawBuffer txtbk(540,20,fgl::FGDrawBuffer::BMP_MEM, FGColor(255,255,255));

int wav_recording = 0; //false
int wav_playing = 0; //false

bool wav_play_pthread=false;
bool wav_record_pthread=false;
bool GetSQLTime();
pthread_t rec_id;
int Layer[10];
int ln=0;

int LEFTTOP=80;
char mem_name[12];
char mem_pass[4];

char LR_val[10];
char openrecsong_val[10];
char poweroff_val[12];
char hostname[128];
char expenseid[20];
char pystr[20];
char str_defsql[256];
CLinkList star;
CLinkList songs;
CLinkList LS_recsong;
CLinkList SelSongs;
CLinkList LS_AD;




int search_path_count=0;
int CurPage=0;
int CurSongsPage=0;
int MaxStarPage,MaxStar,MaxSongs,MaxSongsPage;
int MaxSongPerPage=15;
int CurSelectSong=0;
int LastSelectSong=-1;

//*****************sqlserver del
	TDSSOCKET *tds;
	TDSLOGIN *login;
	TDSCONTEXT *context;
	TDSCONNECTION *connection;
//*****************sqlserver del

struct RECT
{
int x;
int y;
int width;
int height;
}rect[8],rct[8];


struct STRUsong
{
char songname[100];
char songer[20];
char songcode[10];
};
int const MAX_SELECT_SONG=14;




bool karaok =true; //true为无伴唱,false为有伴唱
int  code_one_bit=0; //0左 karaok 1右 karaok 
int  code_sec_bit=0;  //0单轨 1 双轨 一轨karaok 2 双轨 二轨karaok

char curplaycode[10]="NULL";
char curplaysongname[80]="NULL";
char curplaypath[50]="NULL";
char curwavfile[80];

fgl::FGWindow *wnd; //主窗口
fgl::FGWindow *wndsonglist; //主窗口
fgl::FGWindow *wndtimeup; //主窗口
	fgl::FGBitmap *b; //背景图片
fgl::FGBitmap *vip; //会员提示图片
fgl::FGBitmap *bmpsong; //已点歌曲清单图片
fgl::FGBitmap *icon; //按键图标
	
	fgl::FGBitmap *gif; //按键图标
	

	fgl::FGDrawBuffer *textbuf;	
	
NotePic notepicture;	 //提示图片类	

fgl::FGDrawBuffer labbk(640,40,fgl::FGDrawBuffer::BMP_MEM, CYELLOW);

fgl::FGFontProperty *song18;
fgl::FGFontProperty *songosd;
fgl::FGFontProperty *yao20;
fgl::FGFontProperty *asc;

//定义流动字幕颜色
int RED   =255;
int GREEN =255;
int BLUE  =255;


int win_name;//lase_win_name;
#define	MENU    						1000	
#define	STAR     						1008	
#define	SONGS								1002
#define	SONG								1003
#define	ID			    				1004
#define	LANGUAGE	    			1005 
#define	WORDS		    				1006
#define	WORDSLETTER  				1036
#define	TOP100		    			1007

#define	DEFSQL		    			1040

#define	CHORUS							1009//合唱
#define	SONGLIST						1010
#define	RECSONG							1011
#define	RECSONGLIST					1012
#define	MEMBER        			1013
#define	ISMEMBER      			1014
#define	MEMBERLISTSONG      1015
#define	PY                	1017
#define	STARTYPE           	1018
#define	STARPY           	  1019
#define	IFMEMBER         	  1020 //1.注册2.登陆 
#define	MEMBERREGISTER      1021 //注册 register
#define	LOGINNAME           1022 //登陆
#define	LOGINPASS           1023 //登陆
#define	REGNAME             1025 //注册名
#define	REGPASS             1026 //注册密
#define	CHANGEPASS          1037 //注册密

#define	EXITMEMBER          1024 //退出会员
#define	LETTER              1027 //语种按字母分类letter.jpg
#define	TIMEOUTUP           1029 //时间到

#define	DISCO               1033 //DISCO
#define	POWEROFF            1034 
#define	AD			            1035 //广告

char memberid[20];
bool MEMBERLOGINED=false; //会员登陆状态
bool MESSAGED=false; //是否弹出对话框
bool MEMBERADDSONG =false; //会员加歌状态
bool ISTIMEUP = false; //房间超时
bool LASTISTIMEUP = false; //上一次房间超时

int timeuploop=0; //超时循环测试300(1分钟)
 char str_id[10];
 char str_key[2];
 int wordlen=0;
//********************dvd def
#define ALLOW_OS_CODE 
#include "rmexternalapi.h"
#include <sys/stat.h>
#include <unistd.h>  
#include <setjmp.h>
#include <sys/time.h>
#include <pthread.h>
#include <signal.h>
#include <sys/time.h>

#define TOTAL_MEMORY_NEEDED_PER_BOARD (8*1024*1024)
RMTcontrolInterface ctrl = {(RMTcontrolInterface) NULL, };
RMTfileControl ctrl_file; //????
#define PAL_SCREEN_WIDTH 720
#define PAL_SCREEN_HEIGHT 576
#define NTSC_SCREEN_WIDTH 720
#define NTSC_SCREEN_HEIGHT 480
static jmp_buf g_env;
RMuint32 memoryPeakUsage;
RMuint8 *pStart;
#define PLAYING  90001
#define STOPPING 90002
bool IFMute=false;
bool IFFastPlay=false;
bool IFPause=false;
bool IFDISCO=false;

int dvd_play_stats=STOPPING;
RMuint32 seektime;
int line=0;
int movex=600;
int timeout=0;//播放wav回到播放dvd时设置的延时
unsigned short *utmp;
 char out[255];
 char ctmp[256]="我饿发";
 char ctmpsongid[50]="你选择了";
 char ctmprec[50]="录歌中";
 char ctmpplay[50]="回放时间";
 char dispstr[50]="";


int id_times=0;//osd显示延时
//int word_times=0;//gui文件显示延时
int osd_disp_stat; //10显示流动字幕,1显示编码点歌,2显示录音进度,3录音回放,4提示按键图表

RMuint32 duration=1;
RMuint32 tolsec=1;
RMuint32 playtime=1;
RMuint32 toltime=1;

char wavpath[50];
static int  Tcount=1;
int count_min=0;
//********************dvd defend


#pragma hdrstop#pragma argsused


int show_cur_rec_song();
int keystop();
int keyplay();
int keyLR();
int LR(int left_right);
void *play_wav_file(void *);
bool UpdateHits(char *hits);

//读取配置文件
 int INI_MoveTitle(FILE * fp,char *title)
            {
            	char tmpline[80]; 
		          	while (!feof(fp)) 
		          	{
		          		if( fgets(tmpline,80,fp )!=NULL )
                       {
                       	if (strstr(tmpline,title)!=0)
                    					 break;
                       	}
		          		}
          	}
          
int INI_GetKey( char  val[256],char *filename, char *title,char *key) 
{ 
    FILE * fp; 
    char tmpline[256]; 
    char *delim="=";
    char *p;
    
     
    if ((fp = fopen( filename, "r")) == NULL ) 
    {return 0; } 
    	
    	INI_MoveTitle(fp,title); //fp移至[xxxx]处
    	while (!feof(fp)) 
				{
        	if((fgets(tmpline,80,fp )!=NULL)&&(strstr(tmpline,"[")==0)&&(strstr(tmpline,"]")==0))
        		{		                      		 
          		 if(strcmp(key,strtok(tmpline,delim))==0)
          		 	{
          		 		strcpy(val,strtok(NULL,delim));
          		 		val[strlen(val)-2]=0;//将字符串尾部的'\0'替换成0
          		 		return 1;
          		 		}
        		}
        	else
        		break;
    		} 
    		
    fclose ( fp ); 
    return 0; 
} 

int INI_SQL( char  val[256],char *filename) 
{ 
    FILE * fp; 
    char tmpline[256]; 
    strcpy(tmpline,"");
    strcpy(val,"");
       
    if ((fp = fopen( filename, "r")) == NULL ) 
    {return 0; } 
    	
  
    	while (!feof(fp)) 
				{
        	if(fgets(tmpline,256,fp )!=NULL)
        		{		                      		 
          		 
          		 		//strcat(val,tmpline);
          		 		printf("tmpline:%s %d\n",tmpline,strlen(tmpline));
          		 		memcpy(val,tmpline,strlen(tmpline));
          		 		printf("val:%s %d\n",val,strlen(val));
          		 		//val[strlen(tmpline)]=0;
          		 	//	val[strlen(val)-2]=0;//将字符串尾部的'\0'替换成0
          	return 1;	 		
          	}
        		
        	else
        		break;
    		} 
    		
    fclose ( fp ); 
    return 0; 
} 


//gb18030转unicode
int code_convert(char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;

cd = iconv_open("unicode","gb18030");
if (cd==0) return -1;
memset(outbuf,0,outlen);
if (iconv(cd,pin,(size_t*)&inlen,pout,(size_t*)&outlen)==-1) return -1;
iconv_close(cd);
return 0;
}


//***********
//画透明文本*
//***********
void redrawtext(fgl::FGWindow *wnd,fgl::FGBitmap *b, char instr[],int x,int y,int w,int h,fgl::FGFontProperty *font)
{
unsigned short *xx;
char out[255];

code_convert(instr,strlen(instr),out,255);
xx=(unsigned short*)&out[2];

	wnd->bitblit(x,y,x,y,w,h,b,fgl::BITBLIT_COPY  );	
	//font->Bold(1);
	//
	wnd->WindowTextUnicode(x+2,y,w,xx, font, FGColor(1,1,1), 0);
	font->Solid();
	//font->Bold(0);
	wnd->WindowTextUnicode(x,y,w,xx, font, FGColor(249,124,0), 0);
	wnd->WindowRepaintUser(x,y,w,h);
}

void WriteSongRow(fgl::FGWindow *wnd,fgl::FGBitmap *b, char instr1[],char instr2[],int row,fgl::FGFontProperty *font,int select)
{
unsigned short *xx;
char out[255];
int x,y,w,h;


if (select==0)//当前歌曲
	{
	
	wnd->bitblit(60,row*20+LEFTTOP,60,row*20+LEFTTOP,540,20,b,fgl::BITBLIT_COPY  );	
	wnd->bitblit(60,row*20+LEFTTOP,0,0,540,20,&txtbk,fgl::BITBLIT_COPY  );	
	
		x=80;
		y=row*20+LEFTTOP;
		w=420;
		h=20;
  code_convert(instr1,strlen(instr1),out,255);
  xx=(unsigned short*)&out[2];
	wnd->WindowTextUnicode(x,y,w,xx, font, FGColor(255,255,125), 0);
	
		x=500;
		y=row*20+LEFTTOP;
		w=80;
		h=20;
	code_convert(instr2,strlen(instr2),out,255);
  xx=(unsigned short*)&out[2];
	wnd->WindowTextUnicode(x,y,w,xx, font, FGColor(255,255,125), 0);

	wnd->WindowRepaintUser(60,row*20+LEFTTOP,540,20);
	}

if (select==1)//非当前歌曲
	{
		wnd->bitblit(60,row*20+LEFTTOP,60,row*20+LEFTTOP,540,20,b,fgl::BITBLIT_COPY  );	
	
		x=80;
		y=row*20+LEFTTOP;
		w=420;
		h=20;
  code_convert(instr1,strlen(instr1),out,255);
  xx=(unsigned short*)&out[2];
	wnd->WindowTextUnicode(x,y,w,xx, font, FGColor(249,124,0), 0);
	
		x=500;
		y=row*20+LEFTTOP;
		w=80;
		h=20;
	code_convert(instr2,strlen(instr2),out,255);
  xx=(unsigned short*)&out[2];
	wnd->WindowTextUnicode(x,y,w,xx, font, FGColor(249,124,0), 0);

	wnd->WindowRepaintUser(60,row*20+LEFTTOP,540,20);
	}

if (select==2)//选中当前歌曲
	{
	
	wnd->bitblit(60,row*20+LEFTTOP,60,row*20+LEFTTOP,540,20,b,fgl::BITBLIT_COPY  );	
	wnd->bitblit(60,row*20+LEFTTOP,0,0,540,20,&txtbk,fgl::BITBLIT_COPY  );	
	
		x=80;
		y=row*20+LEFTTOP;
		w=420;
		h=20;
  code_convert(instr1,strlen(instr1),out,255);
  xx=(unsigned short*)&out[2];
	wnd->WindowTextUnicode(x,y,w,xx, font,FGColor(190,252,3), 0);
	
		x=500;
		y=row*20+LEFTTOP;
		w=80;
		h=20;
	code_convert(instr2,strlen(instr2),out,255);
  xx=(unsigned short*)&out[2];
	wnd->WindowTextUnicode(x,y,w,xx, font, FGColor(190,252,3), 0);

	wnd->WindowRepaintUser(60,row*20+LEFTTOP,540,20);
	}



}



//自定义文本颜色
void redrawtext_color(fgl::FGWindow *wnd,fgl::FGBitmap *b, char instr[],int x,int y,int w,int h,fgl::FGFontProperty *font,FGColor color)
{
unsigned short *xx;
char out[255];

code_convert(instr,strlen(instr),out,255);
xx=(unsigned short*)&out[2];
wnd->bitblit(x,y,x,y,w,h,b,fgl::BITBLIT_COPY  );	
wnd->WindowTextUnicode(x,y,w,xx, font, color, 0);
wnd->WindowRepaintUser(x,y,w,h);
//wnd->WindowRect(x,y,w,h,FGColor(255,255,255));

}


//*****************
//设置歌星图片坐标*
//*****************
void initPicRect()
{ rect[0].x=84;
	rect[0].y=83;
	rect[0].width=80;
  rect[0].height=100;
		rct[0].x=85;
		rct[0].y=195;
		rct[0].width=80;
    rct[0].height=20;

	rect[1].x=211;
	rect[1].y=83;
	rect[1].width=80;
  rect[1].height=100;
		rct[1].x=212;
		rct[1].y=195;
		rct[1].width=80;
		rct[1].height=20;

	rect[2].x=340;
	rect[2].y=83;
  rect[2].width=80;
  rect[2].height=100;
		rct[2].x=341;
		rct[2].y=195;
    rct[2].width=80;
    rct[2].height=20;

	rect[3].x=469;
	rect[3].y=83;
	rect[3].width=80;
  rect[3].height=100;
		rct[3].x=470;
		rct[3].y=195;
		rct[3].width=80;
		rct[3].height=20;

	rect[4].x=83;
	rect[4].y=264;
	rect[4].width=80;
  rect[4].height=100;
		rct[4].x=85;
		rct[4].y=376;
		rct[4].width=80;
	  rct[4].height=20;

	rect[5].x=211;
	rect[5].y=264;
	rect[5].width=80;
  rect[5].height=100;
		rct[5].x=212;
		rct[5].y=376;
		rct[5].width=80;
	  rct[5].height=20;

	rect[6].x=340;
	rect[6].y=264;
  rect[6].width=80;
  rect[6].height=100;
		rct[6].x=341;
		rct[6].y=376;
    rct[6].width=80;
    rct[6].height=20;
	
	rect[7].x=469;
	rect[7].y=264;
	rect[7].width=80;
	rect[7].height=100;
		rct[7].x=470;
		rct[7].y=376;
		rct[7].width=80;
	  rct[7].height=20;
}





//*****************
//显示歌星头像图片*
//*****************
void ShowPicture(int x,int y,char *path)
{	 char PicPath[256];
	 fgl::FGBitmap *c;  

printf(PicPath,"/chsimage/%s.jpg",path);
if (access(PicPath,F_OK)!=0)  //无此头像
{strcpy(PicPath,"/chsimage/FHuman.jpg");}
c = new fgl::FGBitmap(PicPath);
wnd->WindowPutBitmap(x, y, 0,0,80, 100, c); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -