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

📄 flash.cc

📁 linux下的flash播放器源程序
💻 CC
字号:
/////////////////////////////////////////////////////////////// Flash Plugin and Player// Copyright (C) 1998,1999 Olivier Debon// // This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation; either version 2// of the License, or (at your option) any later version.// // This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.// // You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.// /////////////////////////////////////////////////////////////////  Author : Olivier Debon  <odebon@club-internet.fr>//  #include "swf.h"#include "graphic16.h"#include "graphic24.h"#include "graphic32.h"#ifdef RCSIDstatic char *rcsid = "$Id: flash.cc,v 1.1 2003/09/08 19:41:58 jasonk Exp $";#endif// Interface with standard Cextern "C" {FlashHandleFlashNew(){	FlashMovie *fh;	fh = new FlashMovie;        fh->main = new CInputScript;	return (FlashHandle)fh;}intFlashParse(FlashHandle flashHandle, int level, char *data, long size){	FlashMovie *fh;	CInputScript *script;	int status = FLASH_PARSE_ERROR;	fh = (FlashMovie *)flashHandle;	for(script = fh->main; script != NULL; script = script->next) {		if (script->level == level) {			status = script->ParseData(fh, data, size);			if (status & FLASH_PARSE_START) {				fh->msPerFrame = 1000/fh->main->frameRate;				script->program->rewindMovie();			}			break;		}	}	return status;}voidFlashGetInfo(FlashHandle flashHandle, struct FlashInfo *fi){	FlashMovie *fh;	fh = (FlashMovie *)flashHandle;	fi->version = fh->main->m_fileVersion;	fi->frameRate = fh->main->frameRate;	fi->frameCount = fh->main->frameCount;	fi->frameWidth = fh->main->frameRect.xmax - fh->main->frameRect.xmin;	fi->frameHeight = fh->main->frameRect.ymax - fh->main->frameRect.ymin;}long FlashGraphicInit(FlashHandle flashHandle, FlashDisplay *fd){	FlashMovie *fh;	fh = (FlashMovie *)flashHandle;	switch (fd->bpp) {		case 4:			fh->gd = new GraphicDevice32(fd);			break;		case 3:			fh->gd = new GraphicDevice24(fd);			break;		case 2:			fh->gd = new GraphicDevice16(fd);			break;		default:			fprintf(stderr, "Unsupported depth\n");	}	fh->gd->setMovieDimension(fh->main->frameRect.xmax - fh->main->frameRect.xmin,				  fh->main->frameRect.ymax - fh->main->frameRect.ymin);	return 1;	// Ok}voidFlashSoundInit(FlashHandle flashHandle, char *device){	FlashMovie *fh;	fh = (FlashMovie *)flashHandle;	fh->sm = new SoundMixer(device);}voidFlashZoom(FlashHandle flashHandle, int zoom){	FlashMovie *fh;	fh = (FlashMovie *)flashHandle;	fh->gd->setMovieZoom(zoom);}voidFlashOffset(FlashHandle flashHandle, int x, int y){	FlashMovie *fh;	fh = (FlashMovie *)flashHandle;	fh->gd->setMovieOffset(x,y);}longFlashExec(FlashHandle flashHandle, long flag,           FlashEvent *fe, struct timeval *wakeDate){	FlashMovie *fh;	long wakeUp = 0;	fh = (FlashMovie *)flashHandle;	if (fh->main == NULL) return 0; // Not ready	if (fh->main->program == NULL) return 0; // Not ready	if (fh->main->program->nbFrames == 0) return 0; // Still not ready	if (fh->gd == 0) return 0;	switch (flag & FLASH_CMD_MASK) {		case FLASH_STOP:			fh->main->program->pauseMovie();			wakeUp = 0;			break;		case FLASH_CONT:			fh->main->program->continueMovie();			wakeUp = FLASH_STATUS_WAKEUP;			break;		case FLASH_REWIND:			fh->main->program->rewindMovie();			wakeUp = 0;			break;		case FLASH_STEP:			fh->main->program->nextStepMovie();			wakeUp = 0;			break;	}	if (flag & FLASH_WAKEUP) {		// Compute next wakeup time		gettimeofday(wakeDate,0);		wakeDate->tv_usec += fh->msPerFrame*1000;		if (wakeDate->tv_usec > 1000000) {			wakeDate->tv_usec -= 1000000;			wakeDate->tv_sec++;		}                		// Play frame                wakeUp = fh->processMovie(fh->gd, fh->sm);	}        if (checkFlashTimer(&fh->scheduledTime)) {            if (fh->handleEvent(fh->gd, fh->sm, &fh->scheduledEvent)) {                wakeUp = 1;            }                        setFlashTimer(&fh->scheduledTime, -1);        }	if (flag & FLASH_EVENT) {            wakeUp = fh->handleEvent(fh->gd, fh->sm, fe);            if (wakeUp) {                /* Wake up at once, except for mouse move (40 ms after) */                gettimeofday(wakeDate,0);                if (fe->type == FeMouseMove) {                    wakeDate->tv_usec += 40*1000;                    if (wakeDate->tv_usec > 1000000) {			wakeDate->tv_usec -= 1000000;			wakeDate->tv_sec++;                    }                }            }	}	return wakeUp || (fh->scheduledTime.tv_sec != -1);}void FlashSetGetSwfMethod(FlashHandle flashHandle, void (*getSwf)(char *url, int level, void *clientData), void *clientData){	FlashMovie *fh;	fh = (FlashMovie *)flashHandle;	fh->getSwf = getSwf;	fh->getSwfClientData = clientData;}voidFlashSetCursorOnOffMethod(FlashHandle flashHandle, void (*cursorOnOff)(int , void *), void *clientData){	FlashMovie *fh;	fh = (FlashMovie *)flashHandle;	fh->cursorOnOff = cursorOnOff;	fh->cursorOnOffClientData = clientData;}voidFlashSetGetUrlMethod(FlashHandle flashHandle, void (*getUrl)(char *, char *, void *), void *clientData){	FlashMovie *fh;	fh = (FlashMovie *)flashHandle;	fh->getUrl = getUrl;	fh->getUrlClientData = clientData;}voidFlashClose(FlashHandle flashHandle){	FlashMovie *fh;	fh = (FlashMovie *)flashHandle;	delete fh;}voidFlashSettings(FlashHandle flashHandle, long settings){	FlashMovie *fh;	fh = (FlashMovie *)flashHandle;	fh->main->program->modifySettings( settings );}int shape_size,shape_nb,shaperecord_size,shaperecord_nb,style_size,style_nb;void flash_dump(void){    printf("flash: shape_size=%d (nb=%d)\n",shape_size,shape_nb);    printf("flash: shaperecord_size=%d (nb=%d)\n",shaperecord_size,shaperecord_nb);    printf("flash: style_size=%d (nb=%d)\n",style_size,style_nb);}}; /* end of extern C */

⌨️ 快捷键说明

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