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

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

?? linux_qvfb.c

?? mini gui 1.6.8 lib and source
?? C
字號:
/***  $Id: linux_qvfb.c,v 1.12 2005/04/22 12:05:42 weiym Exp $**  **  linux_qvfb.c: A subdriver of shadow NEWGAL engine for Linux QVFB 4bpp/1bpp.****  Copyright (C) 2003 ~ 2005 Feynman Software.*//*** 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*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "common.h"#ifdef _NEWGAL_ENGINE_SHADOW #if defined (__LINUX__) && defined (__TARGET_QVFB__)#include <unistd.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#include <sys/sem.h>#include "minigui.h"#include "newgal.h"#include "shadow.h"#define QT_VFB_MOUSE_PIPE   "/tmp/.qtvfb_mouse-%d"#define QT_VFB_KEYBOARD_PIPE    "/tmp/.qtvfb_keyboard-%d"#define QTE_PIPE "QtEmbedded"struct QVFBHeader{    int width;    int height;    int depth;    int linestep;    int dataoffset;    RECT update;    BOOL dirty;    int  numcols;    unsigned int clut[256];};struct QVFBHeader* qvfb_hdr;static int a_getinfo (struct lcd_info* lcd_info){    lcd_info->width = qvfb_hdr->width;    lcd_info->height = qvfb_hdr->height;    lcd_info->bpp = qvfb_hdr->depth;    if (qvfb_hdr->depth >= 8)        lcd_info->fb = ((BYTE*)qvfb_hdr) + qvfb_hdr->dataoffset;    else        lcd_info->fb = NULL;    lcd_info->rlen = qvfb_hdr->linestep;    lcd_info->type = 0;        return 0;}static int a_setclut_1bpp (int first, int ncolors, GAL_Color *colors){    int i, entry = first;    int set = 0;    for (i = 0; i < ncolors; i++) {        if (entry == 0 || entry == 255) {            set++;            qvfb_hdr->clut [entry/255] =                 (0xff << 24) | ((colors[i].r & 0xff) << 16) | ((colors[i].g & 0xff) << 8) | (colors[i].b & 0xff);        }        entry ++;    }    return set;}static int a_setclut_4bpp (int first, int ncolors, GAL_Color *colors){    int i, entry = first;    int set = 0;    for (i = 0; i < ncolors; i++) {        if (entry == 0 || ((entry + 1) % 16 == 0)) {            set++;            qvfb_hdr->clut [entry/16] =                 (0xff << 24) | ((colors[i].r & 0xff) << 16) | ((colors[i].g & 0xff) << 8) | (colors[i].b & 0xff);        }        entry ++;    }    return set;}static int a_setclut_8bpp (int first, int ncolors, GAL_Color *colors){    int i, entry = first;    int set = 0;    for (i = 0; i < ncolors; i++) {        if (entry < 256) {            unsigned int r = colors[i].r & 0xff;            unsigned int g = colors[i].g & 0xff;            unsigned int b = colors[i].b & 0xff;            qvfb_hdr->clut [entry] = (0xff << 24) | (r << 16) | (g << 8) | (b & 0xff);            set++;            entry++;        }    }    return set;}static int a_init (void){    int x_display;    char file [50];    key_t key;    int shmid;    if (GetMgEtcIntValue ("qvfb", "display", &x_display) < 0)        x_display = 0;    sprintf (file, QT_VFB_MOUSE_PIPE, x_display);    key = ftok (file, 'b');    shmid = shmget (key, 0, 0);    if (shmid == -1)        return 2;    qvfb_hdr = (struct QVFBHeader *) shmat (shmid, 0, 0);    if ((int) qvfb_hdr == -1 || qvfb_hdr == NULL)        return 3;    switch (qvfb_hdr->depth) {        case 1:            __mg_shadow_lcd_ops.setclut = a_setclut_1bpp;            break;        case 4:            __mg_shadow_lcd_ops.setclut = a_setclut_4bpp;            break;        case 8:            __mg_shadow_lcd_ops.setclut = a_setclut_8bpp;            break;    }    SetRect (&qvfb_hdr->update, 0, 0, 0, 0);    qvfb_hdr->dirty = FALSE;    return 0;}static int a_release (void){    shmdt (qvfb_hdr);    return 0;}static void a_sleep (void){    /* 20ms */    usleep (20000);}static unsigned char pixel_bit [] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};static void qvfb_update_1bpp (_THIS){    RECT bound = qvfb_hdr->update;    const BYTE* src_bits;    BYTE* dst_bits;    int width, height;    int x, y, i;    /* round x to be 8-aligned */    bound.left = bound.left & ~0x07;    bound.right = (bound.right + 7) & ~0x07;    width = RECTW (bound);    height = RECTH (bound);    if (width <= 0 || height <= 0)        return;    src_bits = this->hidden->fb;    src_bits += bound.top * this->hidden->pitch + bound.left;    dst_bits = ((BYTE*) qvfb_hdr) + qvfb_hdr->dataoffset;    dst_bits += bound.top * qvfb_hdr->linestep + (bound.left >> 3);    for (y = 0; y < height; y++) {        const BYTE* src_line = src_bits;        BYTE* dst_line = dst_bits;        for (x = 0; x < width; x+=8) {            *dst_line = 0;            for (i = 0; i < 8; i++) {                if (*src_line < 128)                    *dst_line |= pixel_bit [i];                src_line ++;            }            dst_line ++;        }        src_bits += this->hidden->pitch;        dst_bits += qvfb_hdr->linestep;    }}static void qvfb_update_4bpp (_THIS){    RECT bound = qvfb_hdr->update;    const BYTE* src_bits;    BYTE* dst_bits;    int width, height;    int x, y;    /* round x to be 2-aligned */    bound.left = bound.left & ~0x01;    bound.right = (bound.right + 1) & ~0x01;    width = RECTW (bound);    height = RECTH (bound);    if (width <= 0 || height <= 0)        return;    src_bits = this->hidden->fb;    src_bits += bound.top * this->hidden->pitch + bound.left;    dst_bits = (BYTE*) qvfb_hdr + qvfb_hdr->dataoffset;    dst_bits += bound.top * qvfb_hdr->linestep + (bound.left >> 1);    for (y = 0; y < height; y++) {        const BYTE* src_line = src_bits;        BYTE* dst_line = dst_bits;        for (x = 0; x < width; x+=2) {            *dst_line = (*src_line >> 4) | (*(++src_line) & 0xF0);            src_line ++;            dst_line ++;        }        src_bits += this->hidden->pitch;        dst_bits += qvfb_hdr->linestep;    }}static void a_refresh (_THIS, const RECT* update){    RECT bound;    bound = qvfb_hdr->update;    if (bound.right < 0) bound.right = 0;    if (bound.bottom < 0) bound.bottom = 0;    GetBoundRect (&bound, &bound, update);    qvfb_hdr->update = bound;     /* Copy the bits from Shadow FrameBuffer to QVFB FrameBuffer */    if (qvfb_hdr->depth == 1)        qvfb_update_1bpp (this);    else if (qvfb_hdr->depth == 4)        qvfb_update_4bpp (this);    qvfb_hdr->dirty = TRUE;}struct shadow_lcd_ops __mg_shadow_lcd_ops = {    a_init,    a_getinfo,    a_release,    NULL,    a_sleep,    a_refresh};#endif /* __LINUX__ && __TARGET_QVFB__ */#endif /* _NEWGAL_ENGINE_SHADOW */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产一区视频在线观看| 欧美激情综合五月色丁香| 日本一区二区不卡视频| 亚洲第一久久影院| 丰满少妇在线播放bd日韩电影| 欧美午夜在线一二页| 亚洲国产精品黑人久久久| 蜜桃av一区二区在线观看| 91猫先生在线| 国产精品视频看| 国产一区二区91| 欧美一区二区三区免费在线看| 亚洲日本一区二区三区| 国产a区久久久| 欧美变态tickling挠脚心| 亚洲成人7777| 在线观看亚洲a| 亚洲激情五月婷婷| 一本色道久久综合亚洲精品按摩| 国产亚洲一区二区在线观看| 免费观看久久久4p| 欧美一级久久久久久久大片| 亚洲一区二区精品视频| 91浏览器打开| 亚洲男帅同性gay1069| 波多野结衣一区二区三区 | 久久精品国产亚洲a| 欧美日韩在线播放一区| 一区二区三区精密机械公司| a亚洲天堂av| 亚洲三级小视频| 99在线精品免费| 亚洲乱码国产乱码精品精的特点| 成人一级片在线观看| 国产精品久久久久aaaa樱花 | 久久精品一区二区三区不卡| 日本不卡视频一二三区| 欧美一激情一区二区三区| 蜜桃一区二区三区四区| 精品电影一区二区三区| 国产曰批免费观看久久久| 精品国产123| 风间由美一区二区三区在线观看 | 欧美亚洲国产bt| 午夜免费欧美电影| 91精品福利在线一区二区三区| 婷婷开心激情综合| 欧美va日韩va| 成人午夜碰碰视频| 亚洲欧美韩国综合色| 欧美日韩视频在线一区二区| 日本成人在线一区| 久久久久国产免费免费| 99热这里都是精品| 天涯成人国产亚洲精品一区av| 91精品国产综合久久久久| 久久电影网电视剧免费观看| 国产欧美精品国产国产专区| 99re这里只有精品首页| 亚洲国产精品影院| 久久尤物电影视频在线观看| 99综合电影在线视频| 亚洲福利视频三区| 久久精品夜夜夜夜久久| 一本久道久久综合中文字幕 | 99久久亚洲一区二区三区青草 | 91国偷自产一区二区三区成为亚洲经典| 一区二区三区四区av| 欧美一区二区三区视频免费| 国产成人在线色| 亚洲bt欧美bt精品| 国产欧美日韩三级| 91精品国产福利| 国产成人在线影院| 免费在线看成人av| 亚洲欧洲国产专区| 日韩精品中文字幕一区二区三区| 国产.欧美.日韩| 人人精品人人爱| 亚洲免费资源在线播放| 久久众筹精品私拍模特| 欧美人妇做爰xxxⅹ性高电影 | 黄色日韩三级电影| 亚洲精选一二三| 亚洲国产精品成人综合| 欧美三级电影精品| 99精品一区二区三区| 国产美女主播视频一区| 婷婷成人综合网| |精品福利一区二区三区| 久久丝袜美腿综合| 欧美一级二级在线观看| 欧美性猛交xxxxxxxx| 不卡一区二区在线| 狠狠色综合播放一区二区| 日本亚洲三级在线| 亚洲成人一区在线| 一二三区精品视频| 亚洲欧美自拍偷拍色图| 欧美激情一区二区| 久久久久久9999| 久久久亚洲高清| 精品盗摄一区二区三区| 欧美α欧美αv大片| 日韩视频免费观看高清在线视频| 欧美私人免费视频| 欧美视频三区在线播放| 色婷婷久久久亚洲一区二区三区| 成人小视频免费在线观看| 国产精品香蕉一区二区三区| 蜜桃视频在线一区| 玖玖九九国产精品| 久久99精品久久久久久| 久久99国产精品麻豆| 久久精品国产99国产精品| 奇米一区二区三区av| 另类综合日韩欧美亚洲| 看片的网站亚洲| 国产麻豆精品视频| 高潮精品一区videoshd| 成人在线视频一区二区| 99精品欧美一区二区蜜桃免费| k8久久久一区二区三区| 丰满岳乱妇一区二区三区| av色综合久久天堂av综合| 97久久超碰国产精品| 91精彩视频在线观看| 欧美日韩一区二区三区免费看| 欧美欧美午夜aⅴ在线观看| 日韩视频免费直播| 国产亚洲欧美一区在线观看| 国产精品美女久久久久久久久 | 中文字幕乱码亚洲精品一区| 久久精品亚洲精品国产欧美kt∨| 久久香蕉国产线看观看99| 久久精品综合网| 亚洲激情图片qvod| 久久精品国产一区二区| 成人美女视频在线看| 一本色道亚洲精品aⅴ| 欧美一区二区三区四区高清| 亚洲精品在线观看网站| 最近日韩中文字幕| 日本亚洲最大的色成网站www| 国产一区福利在线| 一本大道久久a久久精二百| 91精品欧美福利在线观看| 久久综合精品国产一区二区三区| 最新欧美精品一区二区三区| 亚洲成人av福利| 国产成人夜色高潮福利影视| 91免费视频网| 日韩欧美国产1| 亚洲婷婷在线视频| 精品一二三四区| 91美女片黄在线观看| 日韩欧美在线观看一区二区三区| 欧美国产精品中文字幕| 午夜私人影院久久久久| 东方欧美亚洲色图在线| 欧美人狂配大交3d怪物一区| 国产精品乱码久久久久久| 日韩精品乱码免费| 色综合色综合色综合| 欧美www视频| 午夜国产精品一区| 99久久久精品| 国产亚洲精品精华液| 日韩vs国产vs欧美| 在线观看日韩电影| 国产精品美女一区二区| 国产美女在线精品| 精品国产乱码久久| 亚洲精品成人悠悠色影视| 国产成人综合在线播放| 欧美mv日韩mv国产网站| 亚洲午夜一区二区| 97se亚洲国产综合自在线不卡 | 裸体一区二区三区| 欧美视频完全免费看| 成人欧美一区二区三区白人| 国产中文字幕精品| 日韩一区二区免费高清| 亚洲一二三区不卡| 色婷婷精品大在线视频| 一色屋精品亚洲香蕉网站| 国内精品久久久久影院色| 欧美一区二区三区色| 亚洲一区二区av电影| 91麻豆精东视频| 一区在线播放视频| bt7086福利一区国产| 中文字幕在线观看一区| 国产成人高清视频| 久久精品一区二区三区四区| 国产精品乡下勾搭老头1| 国产天堂亚洲国产碰碰| 国产盗摄视频一区二区三区| 国产丝袜欧美中文另类| 国产精品亚洲人在线观看|