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

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

?? nxeyes.c

?? microwindows最新源碼
?? C
字號:
/*  * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. *  * The Original Code is NanoXEyes. *  * The Initial Developer of the Original Code is Alex Holden. * Portions created by Alex Holden are Copyright (C) 2002 * Alex Holden <alex@alexholden.net>. All Rights Reserved. *  * Contributor(s): *  * Alternatively, the contents of this file may be used under the terms * of the GNU General Public license (the  "[GNU] License"), in which case the * provisions of [GNU] License are applicable instead of those * above.  If you wish to allow use of your version of this file only * under the terms of the [GNU] License and not to allow others to use * your version of this file under the MPL, indicate your decision by * deleting  the provisions above and replace  them with the notice and * other provisions required by the [GNU] License.  If you do not delete * the provisions above, a recipient may use your version of this file * under either the MPL or the [GNU] License. */#include <time.h>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <nano-X.h>#include <nxcolors.h>#include "nxeyes.h"#define EYE_SPACING 4#define BLINK_CLOSED_TIME 100#define BLINK_MIN_OPEN_TIME 1000#define BLINK_MAX_OPEN_TIME 8000#define MAX_EYE_MOVEMENT 10typedef struct {	GR_WINDOW_ID wid;	GR_GC_ID gc;	int button_down;	int mouse_moved;	GR_COORD x;	GR_COORD y;	GR_COORD mousex;	GR_COORD mousey;	GR_COORD oldx;	GR_COORD oldy;	int eyes_closed;	GR_TIMER_ID tid;	GR_COORD lx;	GR_COORD ly;	GR_COORD rx;	GR_COORD ry;	GR_COORD olx;	GR_COORD oly;	GR_COORD orx;	GR_COORD ory;	int quit;} nxeyes_state;nxeyes_state *init(void);void button_event(GR_EVENT_BUTTON *ev, nxeyes_state *state);void position_event(GR_EVENT_MOUSE *ev, nxeyes_state *state);void start_blink_timer(nxeyes_state *state);void timer_event(GR_EVENT_TIMER *ev, nxeyes_state *state);void calculate_pupil_position(GR_COORD window_x, GR_COORD window_y,		GR_COORD eyecentre_x, GR_COORD eyecentre_y,		GR_COORD mousex, GR_COORD mousey,		GR_COORD *retx, GR_COORD *rety);void draw_eyes(nxeyes_state *state, int full_redraw);nxeyes_state *init(void){	nxeyes_state *state;	GR_REGION_ID rid1, rid2;	GR_SCREEN_INFO si;	GR_WM_PROPERTIES props;	if(!(state = malloc(sizeof(nxeyes_state)))) return NULL;	state->oldx = state->oldy = state->x = state->y = 0;	state->button_down = state->eyes_closed = state->quit = 0;	state->olx = state->orx = EYEMASK_WIDTH / 2;	state->oly = state->ory = EYEMASK_HEIGHT / 2;	GrGetScreenInfo(&si);	state->mousex = si.xpos;	state->mousey = si.ypos;	state->mouse_moved = 1;	state->gc = GrNewGC();	GrSetGCForeground(state->gc, GR_COLOR_WHITE);	GrSetGCBackground(state->gc, GR_COLOR_BLACK);	state->wid = GrNewWindow(GR_ROOT_WINDOW_ID, 0, 0, (EYEFG_HEIGHT * 2) +			EYE_SPACING, EYEFG_HEIGHT, 0, GR_COLOR_WHITE, 0);	rid1 = GrNewBitmapRegion(eyemask_bits, EYEMASK_WIDTH, EYEMASK_HEIGHT);	rid2 = GrNewBitmapRegion(eyemask_bits, EYEMASK_WIDTH, EYEMASK_HEIGHT);	GrOffsetRegion(rid2, EYEMASK_WIDTH + EYE_SPACING, 0);	GrUnionRegion(rid1, rid1, rid2);	GrSetWindowRegion(state->wid, rid1, GR_WINDOW_BOUNDING_MASK);	GrDestroyRegion(rid1);	GrDestroyRegion(rid2);	props.flags = GR_WM_FLAGS_PROPS;	props.props = GR_WM_PROPS_NODECORATE;	GrSetWMProperties(state->wid, &props);	GrSelectEvents(state->wid, GR_EVENT_MASK_CLOSE_REQ |			GR_EVENT_MASK_MOUSE_POSITION |			GR_EVENT_MASK_BUTTON_UP |			GR_EVENT_MASK_BUTTON_DOWN |			GR_EVENT_MASK_EXPOSURE |			GR_EVENT_MASK_TIMER);	GrSelectEvents(GR_ROOT_WINDOW_ID, GR_EVENT_MASK_MOUSE_POSITION);	GrMapWindow(state->wid);	srand(time(0));	start_blink_timer(state);		return state;}void button_event(GR_EVENT_BUTTON *ev, nxeyes_state *state){	if(ev->wid != state->wid) return;	if(ev->type == GR_EVENT_TYPE_BUTTON_DOWN) {		if(ev->buttons & GR_BUTTON_L) {			state->button_down = 1;			state->x = ev->x;			state->y = ev->y;			GrRaiseWindow(state->wid);		}		if(ev->buttons & GR_BUTTON_R) state->quit = 1;	} else state->button_down = 0;}void position_event(GR_EVENT_MOUSE *ev, nxeyes_state *state){	GR_COORD newx, newy;	state->mouse_moved = 1;	state->mousex = ev->rootx;	state->mousey = ev->rooty;	if(ev->wid == GR_ROOT_WINDOW_ID) return;	if(!state->button_down) return;	newx = ev->rootx - state->x;	newy = ev->rooty - state->y;	if(newx != state->oldx || newy != state->oldy) {		GrMoveWindow(ev->wid, newx, newy);		state->oldx = newx;		state->oldy = newy;	}}void start_blink_timer(nxeyes_state *state){	int time;	if(state->eyes_closed) time = BLINK_CLOSED_TIME;	else time = (rand() % (BLINK_MAX_OPEN_TIME - BLINK_MIN_OPEN_TIME)) +		BLINK_MIN_OPEN_TIME;	state->tid = GrCreateTimer(state->wid, time); /*, GR_FALSE); */}void timer_event(GR_EVENT_TIMER *ev, nxeyes_state *state){	if(ev->tid != state->tid) return;	/* Must free timer - even though it's fired, the handle and data structure live on. */	GrDestroyTimer(state->tid);	state->tid = 0;		if(state->eyes_closed) {		state->eyes_closed = 0;		start_blink_timer(state);	} else {		state->eyes_closed = 1;		start_blink_timer(state);	}	draw_eyes(state, 1);}void calculate_pupil_position(GR_COORD window_x, GR_COORD window_y,		GR_COORD eyecentre_x, GR_COORD eyecentre_y,		GR_COORD mousex, GR_COORD mousey,		GR_COORD *retx, GR_COORD *rety){	double a;	int revx, revy;	GR_COORD rx, ry, dx, dy, x, y;	rx = eyecentre_x + window_x;	dx = mousex - rx;	if(dx < 0) {		dx = -dx;		revx = 1;	} else revx = 0;	ry = eyecentre_y + window_y;	dy = mousey - ry;	if(dy < 0) {		dy = -dy;		revy = 1;	} else revy = 0;	if(hypot(dx, dy) <= MAX_EYE_MOVEMENT) {		x = dx;		y = dy;	} else {		a = atan((double)dy / (double)dx);		x = (GR_COORD)(cos(a) * (double)MAX_EYE_MOVEMENT);		y = (GR_COORD)(sin(a) * (double)MAX_EYE_MOVEMENT);	}	if(revx) x = -x;	if(revy) y = -y;	*retx = x + eyecentre_x - (PUPIL_WIDTH / 2);	*rety = y + eyecentre_y - (PUPIL_WIDTH / 2);}void draw_eyes(nxeyes_state *state, int full_redraw){	GR_COORD x, y;	GR_BITMAP *bits;	if(full_redraw) {		if(state->eyes_closed) bits = eyeclose_bits;		else bits = eyefg_bits;		GrBitmap(state->wid, state->gc, 0, 0, EYEFG_WIDTH,				EYEFG_HEIGHT, bits);		GrBitmap(state->wid, state->gc, EYEFG_WIDTH + EYE_SPACING, 0,				EYEFG_WIDTH, EYEFG_HEIGHT, bits);	}	if(state->mouse_moved) {		x = EYEFG_WIDTH / 2;		y = EYEFG_HEIGHT / 2;		calculate_pupil_position(state->oldx, state->oldy,			(EYEFG_WIDTH / 2),			(EYEFG_HEIGHT / 2), state->mousex,			state->mousey, &state->lx, &state->ly);		calculate_pupil_position(state->oldx, state->oldy,			(EYEFG_WIDTH / 2) + EYEFG_WIDTH			+ EYE_SPACING, (EYEFG_WIDTH / 2),			state->mousex, state->mousey, &state->rx, &state->ry);	}	if(state->eyes_closed) return;	GrClearArea(state->wid, state->olx, state->oly, PUPIL_WIDTH,			PUPIL_HEIGHT, 0);	GrBitmap(state->wid, state->gc, state->lx, state->ly, PUPIL_WIDTH,			PUPIL_HEIGHT, pupil_bits);	GrClearArea(state->wid, state->orx, state->ory, PUPIL_WIDTH,			PUPIL_HEIGHT, 0);	GrBitmap(state->wid, state->gc, state->rx, state->ry, PUPIL_WIDTH,			PUPIL_HEIGHT, pupil_bits);	state->olx = state->lx;	state->oly = state->ly;	state->orx = state->rx;	state->ory = state->ry;}int main(void){	GR_EVENT event;	nxeyes_state *state;	if(GrOpen() < 0) {		fprintf(stderr, "Couldn't connect to Nano-X server\n");		return 1;	}	if(!(state = init())) {		fprintf(stderr, "Couldn't allocate state structure\n");		return 1;	}	while(!state->quit) {		GrGetNextEvent(&event);		switch(event.type) {			case GR_EVENT_TYPE_CLOSE_REQ:				state->quit = 1;				break;			case GR_EVENT_TYPE_MOUSE_POSITION:				position_event(&event.mouse, state);				break;			case GR_EVENT_TYPE_BUTTON_UP:			case GR_EVENT_TYPE_BUTTON_DOWN:				button_event(&event.button, state);				break;			case GR_EVENT_TYPE_EXPOSURE:				draw_eyes(state, 1);				break;			case GR_EVENT_TYPE_TIMER:				timer_event(&event.timer, state);				break;			default:				break;		}		if(state->mouse_moved) {			draw_eyes(state, 0);			state->mouse_moved = 0;		}	}	GrClose();	free(state);		return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人综合网站| 国产亚洲欧美在线| 日韩精品国产精品| 4hu四虎永久在线影院成人| 日韩有码一区二区三区| 日韩一级成人av| 国产一本一道久久香蕉| 欧美激情在线观看视频免费| 成人精品免费看| 亚洲欧美国产77777| 欧美三级欧美一级| 日韩经典中文字幕一区| 欧美精品一区二区久久久| 粗大黑人巨茎大战欧美成人| 中文字幕亚洲成人| 88在线观看91蜜桃国自产| 久久精品国产在热久久| 国产精品久久夜| 欧美日韩午夜影院| 国产麻豆精品视频| 亚洲欧美二区三区| 欧美一区二区私人影院日本| 国产一区二区三区在线观看免费视频 | 国产真实乱子伦精品视频| 亚洲国产激情av| 欧美日韩一区二区在线视频| 久久国产剧场电影| 亚洲少妇中出一区| 精品久久久久久综合日本欧美| 成人h动漫精品一区二| 午夜精品视频一区| 国产三级精品视频| 欧美精品欧美精品系列| 福利电影一区二区三区| 亚洲国产美女搞黄色| 久久亚洲一区二区三区四区| 一本在线高清不卡dvd| 精品一区二区三区av| 亚洲免费看黄网站| 久久久精品一品道一区| 欧美日韩精品一区二区三区蜜桃 | 精品国产乱码久久久久久夜甘婷婷| www.日韩av| 国产精品一区二区果冻传媒| 亚洲国产精品欧美一二99| 国产精品美女久久久久久久久久久| 欧美日韩高清一区二区三区| k8久久久一区二区三区 | 色综合久久88色综合天天免费| 秋霞电影网一区二区| 亚洲精品欧美专区| 中文字幕电影一区| 久久人人爽人人爽| 日韩一级完整毛片| 欧美日韩视频在线观看一区二区三区| www.66久久| 懂色av中文一区二区三区| 久久精品国产一区二区三| 婷婷久久综合九色国产成人| 亚洲卡通欧美制服中文| 国产精品美女久久久久久久| 亚洲精品一线二线三线无人区| 欧美精品三级日韩久久| 欧美色视频在线观看| 在线看日本不卡| 色婷婷亚洲精品| 99国产一区二区三精品乱码| 成人白浆超碰人人人人| 大桥未久av一区二区三区中文| 国产精品亚洲视频| 国产精品综合网| 国产传媒久久文化传媒| 国产精品影视网| 国产xxx精品视频大全| 国产精品一区二区视频| 国产盗摄精品一区二区三区在线| 国产综合色精品一区二区三区| 精品系列免费在线观看| 精品制服美女丁香| 国产在线看一区| 国产成人精品一区二区三区四区 | 国产91高潮流白浆在线麻豆| 久国产精品韩国三级视频| 伦理电影国产精品| 久久99精品国产麻豆婷婷洗澡| 蜜臀av亚洲一区中文字幕| 久久激情综合网| 国产美女精品人人做人人爽| 国产精品91一区二区| 成人av先锋影音| 在线视频一区二区免费| 欧美理论在线播放| 日韩欧美国产系列| 国产欧美一区二区精品性色超碰 | 欧美精品一区二区不卡 | 欧美一区二区在线视频| 日韩小视频在线观看专区| 26uuuu精品一区二区| 亚洲国产精品成人久久综合一区 | 欧美精品一区二区久久久| 久久九九久精品国产免费直播| 国产精品网站一区| 一级特黄大欧美久久久| 美女在线一区二区| 岛国一区二区在线观看| 在线观看免费一区| 精品粉嫩超白一线天av| 日韩一区中文字幕| 午夜精品爽啪视频| 丁香婷婷深情五月亚洲| 久久综合中文字幕| 国产精品免费人成网站| 亚洲二区在线观看| 国产99久久久精品| 欧美片在线播放| 国产欧美日本一区二区三区| 一区二区免费视频| 激情久久五月天| 91福利在线播放| 久久这里只有精品首页| 亚洲精品成人在线| 韩国精品主播一区二区在线观看| www.久久精品| 91精品国模一区二区三区| 国产精品久久久久一区| 青青草伊人久久| 97久久久精品综合88久久| 91 com成人网| 一区二区三区四区在线免费观看| 久久狠狠亚洲综合| 欧美在线视频日韩| 中文欧美字幕免费| 久久国产夜色精品鲁鲁99| 色婷婷综合久久久久中文一区二区| 精品久久久久一区二区国产| 伊人开心综合网| 国产精品综合久久| 91精品国产色综合久久不卡电影| 亚洲欧美一区二区在线观看| 久久99国内精品| 在线不卡一区二区| 亚洲一区二区视频在线观看| 成人综合婷婷国产精品久久免费| 日韩一区二区在线看| 亚洲一区二区三区四区在线观看| 高清免费成人av| 精品国产91乱码一区二区三区 | 亚洲v日本v欧美v久久精品| 成人午夜电影小说| 久久久久久日产精品| 麻豆成人av在线| 91精品国产免费| 亚洲成年人影院| 欧美三片在线视频观看| 亚洲激情av在线| 91婷婷韩国欧美一区二区| 国产精品区一区二区三区| 国产九九视频一区二区三区| 亚洲精品一区二区三区精华液| 日韩成人午夜精品| 在线综合视频播放| 午夜精品一区在线观看| 欧美麻豆精品久久久久久| 亚洲国产精品影院| 欧美三级电影网| 亚洲第一激情av| 欧美精品久久99久久在免费线| 亚洲欧美电影院| 欧美性大战xxxxx久久久| 一区二区三区美女| 欧美三级电影一区| 日日夜夜免费精品| 日韩视频免费观看高清完整版| 青娱乐精品在线视频| 日韩欧美精品三级| 国产一区三区三区| 国产精品三级视频| 色综合欧美在线视频区| 亚洲宅男天堂在线观看无病毒| 在线精品亚洲一区二区不卡| 亚洲成人手机在线| 日韩欧美一区二区不卡| 久久99精品久久久久久动态图| 久久久美女毛片| 成人av电影免费在线播放| 亚洲四区在线观看| 欧美日韩精品欧美日韩精品一综合| 性做久久久久久| 久久亚洲综合av| 91在线小视频| 五月综合激情日本mⅴ| 日韩精品一区二区三区蜜臀| 国产激情视频一区二区在线观看| 国产精品久久久久久一区二区三区 | 最新热久久免费视频| 在线免费观看一区| 久久99精品国产.久久久久久| 国产欧美日韩综合精品一区二区| 一本久道久久综合中文字幕| 日韩高清一级片|