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

📄 fb_w3mimg.c

📁 一个终端下的网页浏览器
💻 C
字号:
/* $Id: fb_w3mimg.c,v 1.13 2003/08/29 15:06:52 ukai Exp $ */#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include "w3mimg/fb/fb.h"#include "w3mimg/fb/fb_img.h"#include "w3mimg/w3mimg.h"static intw3mfb_init(w3mimg_op * self){    if (self == NULL)	return 0;    return 1;}static intw3mfb_finish(w3mimg_op * self){    if (self == NULL)	return 0;    return 1;}static intw3mfb_active(w3mimg_op * self){    if (self == NULL)	return 0;    return 1;}static voidw3mfb_set_background(w3mimg_op * self, char *background){    if (self == NULL)	return;    if (background) {	int r, g, b;	if (sscanf(background, "#%02x%02x%02x", &r, &g, &b) == 3)	    fb_image_set_bg(r, g, b);    }}static voidw3mfb_sync(w3mimg_op * self){    return;}static voidw3mfb_close(w3mimg_op * self){    fb_close();}static intw3mfb_clear(w3mimg_op * self, int x, int y, int w, int h){    if (self == NULL)	return 0;    fb_image_clear(x, y, w, h);    return 1;}static intw3mfb_load_image(w3mimg_op * self, W3MImage * img, char *fname, int w, int h){    FB_IMAGE **im;    if (self == NULL)	return 0;    im = fb_image_load(fname, w, h, self->max_anim);    if (!im)	return 0;    img->pixmap = im;    img->width = im[0]->width;    img->height = im[0]->height;    return 1;}static intw3mfb_show_image(w3mimg_op * self, W3MImage * img, int sx, int sy,		 int sw, int sh, int x, int y){    int i;    FB_IMAGE **frame;#define WAIT_CNT 4    if (self == NULL)	return 0;    if (img->pixmap == NULL)	return 0;    frame = (FB_IMAGE **) img->pixmap;    i = frame[0]->id;    fb_image_draw(frame[i],		  x + self->offset_x, y + self->offset_y,		  sx, sy, (sw ? sw : img->width), (sh ? sh : img->height));    if (frame[0]->num > 1) {	if (frame[1]->id > WAIT_CNT) {	    frame[1]->id = 0;	    if (i < frame[0]->num - 1)		frame[0]->id = i + 1;	    else		frame[0]->id = 0;	}	frame[1]->id += 1;    }    return 1;}static voidw3mfb_free_image(w3mimg_op * self, W3MImage * img){    if (self == NULL)	return;    if (img && img->pixmap) {	fb_frame_free((FB_IMAGE **) img->pixmap);	img->pixmap = NULL;	img->width = 0;	img->height = 0;    }}static intw3mfb_get_image_size(w3mimg_op * self, W3MImage * img,		     char *fname, int *w, int *h){    int i;    if (self == NULL)	return 0;    i = get_image_size(fname, w, h);    if (i)	return 0;    return 1;}#ifdef W3MIMGDISPLAY_SETUIDstatic intcheck_tty_console(char *tty){    if (tty == NULL || *tty == '\0')	return 0;    if (strncmp(tty, "/dev/", 5) == 0)	tty += 5;    if (strncmp(tty, "tty", 3) == 0 && isdigit(*(tty + 3)))	return 1;    if (strncmp(tty, "vc/", 3) == 0 && isdigit(*(tty + 3)))	return 1;    return 0;}#else#define check_tty_console(tty)	1#endifw3mimg_op *w3mimg_fbopen(){    w3mimg_op *wop = NULL;    wop = (w3mimg_op *) malloc(sizeof(w3mimg_op));    if (wop == NULL)	return NULL;    memset(wop, 0, sizeof(w3mimg_op));    if (!check_tty_console(getenv("W3M_TTY")) && strcmp("jfbterm", getenv("TERM")) != 0) {	fprintf(stderr, "w3mimgdisplay/fb: tty is not console\n");	goto error;    }    if (fb_open())	goto error;    wop->width = fb_width();    wop->height = fb_height();    wop->init = w3mfb_init;    wop->finish = w3mfb_finish;    wop->active = w3mfb_active;    wop->set_background = w3mfb_set_background;    wop->sync = w3mfb_sync;    wop->close = w3mfb_close;    wop->clear = w3mfb_clear;    wop->load_image = w3mfb_load_image;    wop->show_image = w3mfb_show_image;    wop->free_image = w3mfb_free_image;    wop->get_image_size = w3mfb_get_image_size;    return wop;  error:    free(wop);    return NULL;}

⌨️ 快捷键说明

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