亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? plugin.c

?? Evc編的一個在wince5.0上運行的flash播放器
?? C
?? 第 1 頁 / 共 2 頁
字號:
		}
		if (status & FLASH_PARSE_WAKEUP) {
			flashWakeUp((XtPointer)This, 0);
		}
		if (status & FLASH_PARSE_EOM) {
			/*l->url = "";*/
		}
	}

	return len;		/* The number of bytes accepted */
}

static void
getUrl( char * url, char *target, void *client_data)
{
	NPP instance;

	instance = (NPP)client_data;
	NPN_GetURL(instance, url, target );
}

static void
getSwf(char *url, int level, void *client_data)
{
	PluginInstance* This;
	NPP instance;
	LoadCtxt *l;

	instance = (NPP)client_data;
	if (instance == 0) return;

	This = (PluginInstance*) instance->pdata;
	if (This == 0) return;

	l = (LoadCtxt *)malloc(sizeof(LoadCtxt));
	l->next = This->loading;
	This->loading = l;
	l->level = level;
	l->data = 0;
	l->size = 0;
	l->url = strdup(url);

	NPN_GetURL(instance, url, 0);
} 

static void
cursorOnOff( int on, void *client_data)
{
	PluginInstance* This;
	NPP instance;

	instance = (NPP)client_data;
	if (instance == 0) return;

	This = (PluginInstance*) instance->pdata;
	if (This == 0) return;

	if (on && !This->cursorOver) {
		XDefineCursor(This->dpy, This->win, This->buttonCursor);
		This->cursorOver = 1;
	}
	if (!on && This->cursorOver) {
		XUndefineCursor(This->dpy, This->win);
		This->cursorOver = 0;
	}
	XFlush(This->dpy);
}

NPError 
NPP_DestroyStream(NPP instance, NPStream *stream, NPError reason)
{
	PluginInstance* This;
	LoadCtxt *l,*prev;

	if (instance == NULL)
		return NPERR_INVALID_INSTANCE_ERROR;

	if (reason != NPERR_NO_ERROR)
		return NPERR_INVALID_INSTANCE_ERROR;

	This = (PluginInstance*) instance->pdata;

	if (This == 0) return NPERR_INVALID_INSTANCE_ERROR;

	if (This->fh == 0) {
		return NPERR_INVALID_INSTANCE_ERROR;
	}

	for(l = This->loading; l; l = l->next) {
		if (l->url && strstr(stream->url, l->url)) {
			free(l->data);
			l->data = 0;
			free(l->url);
			l->url = 0;
			break;
		}
	}

	if (!This->gInitDone && This->dpy) {
		FlashGraphicInitX11(This);
		XtAddEventHandler(This->widget, FLASH_XEVENT_MASK,
				  True, (XtEventHandler) flashEvent, (XtPointer)This);
		This->gInitDone = 1;

		flashWakeUp((XtPointer)This, 0);
	}

	return NPERR_NO_ERROR;
}


void 
NPP_StreamAsFile(NPP instance, NPStream *stream, const char* fname)
{
	PluginInstance* This;
	if (instance != NULL)
		This = (PluginInstance*) instance->pdata;
}


void 
NPP_Print(NPP instance, NPPrint* printInfo)
{
	if(printInfo == NULL)
		return;

	if (instance != NULL) {
		PluginInstance* This = (PluginInstance*) instance->pdata;
	
		if (printInfo->mode == NP_FULL) {
		    /*
		     * PLUGIN DEVELOPERS:
		     *	If your plugin would like to take over
		     *	printing completely when it is in full-screen mode,
		     *	set printInfo->pluginPrinted to TRUE and print your
		     *	plugin as you see fit.  If your plugin wants Netscape
		     *	to handle printing in this case, set
		     *	printInfo->pluginPrinted to FALSE (the default) and
		     *	do nothing.  If you do want to handle printing
		     *	yourself, printOne is true if the print button
		     *	(as opposed to the print menu) was clicked.
		     *	On the Macintosh, platformPrint is a THPrint; on
		     *	Windows, platformPrint is a structure
		     *	(defined in npapi.h) containing the printer name, port,
		     *	etc.
		     */

			void* platformPrint =
				printInfo->print.fullPrint.platformPrint;
			NPBool printOne =
				printInfo->print.fullPrint.printOne;
			
			/* Do the default*/
			printInfo->print.fullPrint.pluginPrinted = FALSE;
		}
		else {	/* If not fullscreen, we must be embedded */
		    /*
		     * PLUGIN DEVELOPERS:
		     *	If your plugin is embedded, or is full-screen
		     *	but you returned false in pluginPrinted above, NPP_Print
		     *	will be called with mode == NP_EMBED.  The NPWindow
		     *	in the printInfo gives the location and dimensions of
		     *	the embedded plugin on the printed page.  On the
		     *	Macintosh, platformPrint is the printer port; on
		     *	Windows, platformPrint is the handle to the printing
		     *	device context.
		     */

			NPWindow* printWindow =
				&(printInfo->print.embedPrint.window);
			void* platformPrint =
				printInfo->print.embedPrint.platformPrint;
		}
	}
}

static
long parseAttributes(int16 n, char *argn[], char *argv[])
{
	int16 i;
	int c;
	long attributes;

	attributes = 0;
	for(i=0; i<n; i++)
	{
		if (!strcasecmp(argn[i],"loop")) {
			if (!strcasecmp(argv[i],"true")) {
				attributes |= PLAYER_LOOP;
			}
		}
		if (!strcasecmp(argn[i],"menu")) {
			if (!strcasecmp(argv[i],"true")) {
				attributes |= PLAYER_MENU;
			}
		}
		if (!strcasecmp(argn[i],"quality")) {
			if (!strcasecmp(argv[i],"high")
			 || !strcasecmp(argv[i],"autohigh")) {
				attributes |= PLAYER_QUALITY;
			}
		}
	}
	return attributes;
}

static long
FlashExecX11(PluginInstance *This, long flag, XEvent *event, struct timeval *wakeDate)
{
    FlashEvent fe;
    long wu;

    if (flag & FLASH_EVENT) {
	int keycode;
	KeySym keysym;

        // X to Flash event structure conversion
        switch (event->type) {
        case ButtonPress:
            fe.type = FeButtonPress;
            break;
        case ButtonRelease:
            fe.type = FeButtonRelease;
            break;
        case MotionNotify:
            fe.type = FeMouseMove;
            fe.x = event->xmotion.x;
            fe.y = event->xmotion.y;
	    XSetInputFocus(This->dpy,This->win, RevertToParent, CurrentTime);
            break;
        case Expose:
            fe.type = FeRefresh;
	    if (!This->gInitDone) return 0;
	    XSetFunction(This->dpy,This->gc,GXcopy);
	    XCopyArea(This->dpy,This->canvas,This->win,This->gc,
		      0,0, This->fd.width,This->fd.height, 0,0);
	    XFlush(This->dpy);
	    return 0;
            break;
	case KeyPress:
		keycode = event->xkey.keycode;
		keysym = XLookupKeysym((XKeyEvent*)event, 0);
		fe.type = FeKeyPress;
		fe.key = 0;
		switch (keysym) {
			case XK_Up:
			    fe.key = FeKeyUp;
			    break;
			case XK_Down:
			    fe.key = FeKeyDown;
			    break;
			case XK_Left:
			    fe.key = FeKeyLeft;
			    break;
			case XK_Right:
			    fe.key = FeKeyRight;
			    break;
			case XK_Return:
			    fe.key = FeKeyEnter;
			    break;
		}
	    break;
	default:
            fe.type = FeNone;
	    return 0;
            break;
        }
    }

    return FlashExec(This->fh,flag,&fe,wakeDate);
}

static long
FlashGraphicInitX11(PluginInstance *This)
{
    XWindowAttributes 		 wattr;
    XPixmapFormatValues 	*pf;
    Visual 			*visual;
    int				 nItems;
    int				 n;
    struct shmid_ds		 buf;
    int				 targetWidth;
    int 			 targetHeight;
    long			 bpl;	// Bytes per line
    long			 bpp;	// Bytes per pixel
    long			 pad;	// Scanline pad in byte

    // Platform dependent members
    Window			 target;	// Target window
    Cursor		 	 buttonCursor;	// Window cursor (a hand if over a button)
    Display			*dpy;		// X11 Display
    GC		 		 gc;		// X11 Graphic context
    Pixmap			 canvas;	// Graphic buffer
    XShmSegmentInfo		 segInfo;	// Shared memory information

    dpy = This->dpy;
    target = This->win;

    // Get Window dimension
    XGetWindowAttributes(dpy, target, &wattr);

    // Get first visual, don't care about others, really !
    visual = wattr.visual;

#if PRINT
	printf("BitmapPad  = %d\n", BitmapPad(dpy));
	printf("BitmapUnit = %d\n", BitmapUnit(dpy));
	printf("Depth      = %d\n", DefaultDepth(dpy,DefaultScreen(dpy)));
	printf("RedMask    = %x\n", visual->red_mask);
	printf("GreenMask  = %x\n", visual->green_mask);
	printf("BlueMask   = %x\n", visual->blue_mask);
	printf("Bits/RGB   = %d\n", visual->bits_per_rgb);
#endif

	// Get screen info

	for(pf=XListPixmapFormats(dpy, &n); n--; pf++) {
		if (pf->depth == DefaultDepth(dpy, DefaultScreen(dpy))) {
			bpp = pf->bits_per_pixel/8;
			pad = pf->scanline_pad/8;
		}
#if PRINT
		printf("----------------\n");
		printf("Depth          = %d\n", pf->depth);
		printf("Bits Per Pixel = %d\n", pf->bits_per_pixel);
		printf("Scanline Pad   = %d\n", pf->scanline_pad);
#endif
	}

	targetWidth = wattr.width;
	targetHeight = wattr.height;

#if PRINT
	printf("Target Width  = %d\n", targetWidth);
	printf("Target Height = %d\n", targetHeight);
#endif

	if (bpp) {
		bpl = (targetWidth*bpp + pad-1)/pad*pad;
	} else {
		bpl = (targetWidth/8 + pad-1)/pad*pad;
	}

	XSelectInput(dpy, target, FLASH_XEVENT_MASK);

	// Prepare data for Direct Graphics
	segInfo.readOnly = False;
	segInfo.shmid = shmget (IPC_PRIVATE,targetHeight*bpl,IPC_CREAT|0777);
	if (segInfo.shmid <0) {
		perror("shmget");
		fprintf(stderr,"Size = %d x %d\n", targetWidth, targetHeight);
	}
	segInfo.shmaddr = (char*)shmat (segInfo.shmid, 0, 0);
	if ((long)segInfo.shmaddr == -1) {
		perror("shmat");
	}
	XShmAttach(dpy, &segInfo);
#ifdef linux
	// Warning : this does NOT work properly on Solaris
	// Special Linux shm behaviour is used here
	// When number of attached clients falls down to zero
	// the shm is removed. This is convenient when it crashes.
	if (shmctl(segInfo.shmid, IPC_RMID, &buf) < 0) {
		perror("shmctl");
	}
#endif
	XSync(dpy, False);

	This->fd.pixels = (char*)segInfo.shmaddr;
        This->fd.width = targetWidth;
        This->fd.height = targetHeight;
        This->fd.bpl = bpl;
        This->fd.depth = pf->depth;

	canvas = XShmCreatePixmap(dpy,target,segInfo.shmaddr,&segInfo,targetWidth,targetHeight,DefaultDepth(dpy, DefaultScreen(dpy)));
	XSync(dpy, False);

	This->canvas = canvas;

	This->buttonCursor = XCreateFontCursor(dpy, XC_hand2);
	XFlush(dpy);

	This->cursorOver = 0;

        return FlashGraphicInit(This->fh, &This->fd);
}

static void
FlashCopyX11(PluginInstance *This)
{
    if (!This->gInitDone) return;
    XSetFunction(This->dpy,This->gc,GXcopy);
    XCopyArea(This->dpy,This->canvas,This->win,This->gc,
              This->fd.clip_x,This->fd.clip_y,
	      This->fd.clip_width,This->fd.clip_height,
              This->fd.clip_x,This->fd.clip_y
	      );
    XFlush(This->dpy);
    This->fd.flash_refresh = 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆精品久久一二三| caoporn国产一区二区| 成人av网站在线观看免费| 欧美人伦禁忌dvd放荡欲情| 国产婷婷一区二区| 美女视频一区二区三区| 色94色欧美sute亚洲13| 欧美韩国一区二区| 毛片av一区二区| 8v天堂国产在线一区二区| 国产精品不卡在线观看| 国产精品99久久久久| 日韩视频一区二区三区在线播放| 亚洲综合区在线| 色香色香欲天天天影视综合网| 久久久五月婷婷| 精品一二线国产| 日韩欧美电影一区| 青青草国产精品97视觉盛宴| 欧美专区日韩专区| 亚洲综合清纯丝袜自拍| 色婷婷久久久亚洲一区二区三区| 中文字幕一区av| av激情成人网| 1024成人网| 91理论电影在线观看| 椎名由奈av一区二区三区| 国产成人午夜视频| 欧美国产一区二区在线观看| 国产乱码精品一区二区三区忘忧草 | 91视频免费观看| 欧美韩日一区二区三区四区| 国产成人aaaa| 国产精品视频一区二区三区不卡| 成人手机电影网| 亚洲日本在线观看| 色综合久久中文字幕| 亚洲自拍与偷拍| 91.xcao| 九九视频精品免费| 欧美韩日一区二区三区| 99久久精品免费看| 亚洲成人动漫在线免费观看| 欧美日韩一区二区在线视频| 蜜桃av一区二区三区电影| 精品噜噜噜噜久久久久久久久试看| 久久99热99| 欧美极品另类videosde| 波多野结衣在线aⅴ中文字幕不卡| 国产精品麻豆一区二区| 在线日韩av片| 蜜桃一区二区三区在线观看| 国产欧美日韩中文久久| 91成人国产精品| 日韩中文字幕区一区有砖一区| 在线综合+亚洲+欧美中文字幕| 精东粉嫩av免费一区二区三区 | 欧美怡红院视频| 日韩精品亚洲一区| 国产午夜久久久久| 91蝌蚪porny| 精品亚洲成a人| 国产精品嫩草影院av蜜臀| 欧美三级韩国三级日本三斤| 韩国女主播一区| 亚洲一区在线播放| 国产亚洲自拍一区| 欧美丝袜丝nylons| 成人在线一区二区三区| 亚洲国产日产av| 欧美国产乱子伦 | 欧美艳星brazzers| 国内成+人亚洲+欧美+综合在线| 亚洲三级视频在线观看| 日韩欧美一级二级| 在线视频欧美精品| 成人午夜激情片| 精品在线一区二区| 亚洲成人综合视频| 中文字幕日韩欧美一区二区三区| 91精品久久久久久蜜臀| 91免费看`日韩一区二区| 麻豆久久久久久| 亚洲一区免费在线观看| 国产日韩v精品一区二区| 欧美精品日日鲁夜夜添| 91伊人久久大香线蕉| 国产成人精品一区二| 免费在线观看一区二区三区| 亚洲一区在线观看免费观看电影高清 | 久久精品国产**网站演员| 亚洲一区二区三区四区的| 国产精品麻豆欧美日韩ww| 日韩精品中文字幕在线一区| 欧美美女bb生活片| 在线观看亚洲精品视频| 成人av电影在线观看| 国产精品自产自拍| 国产在线精品免费| 欧美bbbbb| 日韩—二三区免费观看av| 亚洲综合网站在线观看| 成人免费在线播放视频| 中文字幕av一区 二区| 精品国产sm最大网站| 精品国产乱码久久久久久老虎| 欧美美女激情18p| 欧美巨大另类极品videosbest | 亚洲天堂成人网| 一区在线观看视频| 中文字幕中文字幕在线一区| 国产精品国产三级国产aⅴ中文 | 丁香婷婷深情五月亚洲| 国产美女视频一区| 国内不卡的二区三区中文字幕 | 亚洲美女精品一区| 中文字幕一区二区三区蜜月 | 色天天综合久久久久综合片| 91污片在线观看| 在线观看www91| 91精品国产综合久久久蜜臀图片 | 亚洲欧美日韩综合aⅴ视频| 综合色中文字幕| 亚洲自拍偷拍综合| 日韩精品电影一区亚洲| 日韩精品高清不卡| 国模无码大尺度一区二区三区| 国内精品国产三级国产a久久| 国产美女精品在线| av在线这里只有精品| 色婷婷av一区二区三区大白胸| 欧美色欧美亚洲另类二区| 91精品国产91久久久久久最新毛片| 日韩色在线观看| 国产精品视频yy9299一区| 亚洲免费色视频| 美国一区二区三区在线播放| 国产jizzjizz一区二区| 在线一区二区视频| 日韩美女一区二区三区四区| 国产欧美视频在线观看| 一片黄亚洲嫩模| 韩国一区二区视频| 91啪亚洲精品| 精品免费一区二区三区| 综合婷婷亚洲小说| 久久精品国产99| 色综合色狠狠综合色| 日韩美女视频一区二区在线观看| 国产精品看片你懂得| 日韩不卡一二三区| a4yy欧美一区二区三区| 欧美一区二区三区在线看| 国产精品二三区| 久久不见久久见免费视频7| 92精品国产成人观看免费 | 亚洲欧洲精品成人久久奇米网| 亚洲一区二区三区四区不卡| 激情六月婷婷久久| 欧美吞精做爰啪啪高潮| 国产日韩影视精品| 日韩精品一级二级| 91无套直看片红桃| 国产女同互慰高潮91漫画| 午夜久久电影网| 92国产精品观看| 国产丝袜美腿一区二区三区| 日本视频免费一区| 欧美自拍偷拍一区| 国产精品久久久久久久久动漫| 久久99久久99小草精品免视看| 欧美无砖砖区免费| ...中文天堂在线一区| 韩国精品免费视频| 欧美一二三区精品| 亚洲高清在线精品| 91免费国产在线| 国产免费久久精品| 狠狠色丁香九九婷婷综合五月| 欧美日韩国产欧美日美国产精品| 中文字幕在线观看一区二区| 国产一区欧美二区| 欧美mv和日韩mv国产网站| 五月开心婷婷久久| 欧美在线视频不卡| 一个色综合网站| 99国产欧美另类久久久精品| 久久婷婷国产综合国色天香| 美女视频黄久久| 欧美xxxxx牲另类人与| 日日夜夜免费精品视频| 欧美日韩在线三级| 亚洲图片欧美视频| 欧美亚日韩国产aⅴ精品中极品| 亚洲欧美日韩国产手机在线| 91在线免费播放| 一区二区日韩av| 欧美男男青年gay1069videost | 成人动漫精品一区二区| 国产女同互慰高潮91漫画|