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

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

?? gralleg.c

?? Demo for Free type 2.2.1
?? C
字號:
/*******************************************************************
 *
 *  ft2demos/graph/allegro/gralleg.c
 *
 *  Allegro driver for MiGS (minimalist graphics subsystem). Allegro
 *  (Allegro Low LEvel Gaming ROutines) is a library for sound,
 *  graphics, timers, etc., and is available on 32-bit DOS, Windows,
 *  UNIX (X11, DGA, DGA2), Linux (svgalib, framebuffer) and BeOS.
 *
 *    http://www.talula.demon.co.uk/allegro/
 *    http://sourceforge.net/projects/alleg/
 *
 ******************************************************************/

/* FT graphics subsystem */
#include "grobjs.h"
#include "grdevice.h"

/* Allegro header */
#include <allegro.h>

static void set_graypalette()
{
    PALETTE pal;
    int i = 0;

    for(; i < 256; i++) {
        pal[i].r = i >> 2;
        pal[i].g = i >> 2;
        pal[i].b = i >> 2;
    }

    set_palette(pal);
}

static int almodes[] = {
    32,
    24,
    16,
    15,
    8,
    0
};

static int gray[256];

static int init_device(void)
{
    int* almode = almodes;

    if(allegro_init()) return -1;
    if(install_keyboard()) return -1;

    while(*almode) {
        set_color_depth(*almode);
        if(*almode == 8) set_graypalette();
        if(set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0) == 0) {
            int i = 0;
            for(; i < 256; i++) gray[i] = makecol(i, i, i);

            clear(screen);
            return 0;
        }
        almode++;
    }

    return -1;
}

static void done_device(void)
{
    allegro_exit();
}

static void alset_title(grSurface* surface, const char* title_string)
{
    set_window_title(title_string);
}

static void alrefresh_rect(grSurface* surface, int x, int y, int width, int height)
{
    unsigned char* bufptr = surface->bitmap.buffer;
    int cx = 0, cy = 0;

    switch(surface->bitmap.mode) {
        case gr_pixel_mode_mono:
            for(; cy < height; cy++) {
                for(cx = 0; cx < width; cx++) {
                    putpixel(screen, cx + x, cy + y, (*bufptr++ ? gray[255] : gray[0]));
                }
            }
            break;

        case gr_pixel_mode_gray:
            for(; cy < height; cy++) {
                for(cx = 0; cx < width; cx++) {
                    putpixel(screen, cx + x, cy + y, gray[*bufptr++]);
                }
            }
            break;

        default:
            break;
    }
}

static void aldone(grSurface* surface)
{
    grDoneBitmap(&(surface->bitmap));
}

static int key_translator[] = {
    KEY_F1, grKeyF1,
    KEY_F2, grKeyF2,
    KEY_F3, grKeyF3,
    KEY_F4, grKeyF4,
    KEY_F5, grKeyF5,
    KEY_F6, grKeyF6,
    KEY_F7, grKeyF7,
    KEY_F8, grKeyF8,
    KEY_F9, grKeyF9,
    KEY_F10, grKeyF10,
    KEY_F11, grKeyF11,
    KEY_F12, grKeyF12,
    KEY_LEFT, grKeyLeft,
    KEY_RIGHT, grKeyRight,
    KEY_UP, grKeyUp,
    KEY_DOWN, grKeyDown,
    KEY_INSERT, grKeyIns,
    KEY_DEL, grKeyDel,
    KEY_HOME, grKeyHome,
    KEY_END, grKeyEnd,
    KEY_PGUP, grKeyPageUp,
    KEY_PGDN, grKeyPageDown,
    KEY_ESC, grKeyEsc,
    KEY_TAB, grKeyTab,
    KEY_BACKSPACE, grKeyBackSpace,
    KEY_ENTER, grKeyReturn,
    0, 0
};

static int translateKey(int scancode)
{
    int* trans = key_translator;

    while(*trans) {
        if(scancode == *trans++) {
            return *trans;
        }
        trans++;
    }

    return 0;
}

static int allisten_event(grSurface* surface, int event_mode, grEvent* event)
{
    int ch = 0, ascii = 0, scancode = 0, shifts = 0;

    event->type = gr_event_key;

    while(1) {
        ch = readkey();

        shifts = 0;

        if(key_shifts & KB_SHIFT_FLAG) shifts |= grKeyShift;
        if(key_shifts & KB_CTRL_FLAG) shifts |= grKeyCtrl;
        if(key_shifts & KB_ALT_FLAG) shifts |= grKeyAlt;

        ascii = ch & 0xFF;
        scancode = ch >> 8;

        if(ascii > 31 && ascii < 127) {
            event->key = ascii | shifts;
            return 1;
        }

        if( (ch = translateKey(scancode)) ) {
            event->key = ch | shifts;
            return 1;
        }
    }

    return 0;
}

static int init_surface(grSurface* surface, grBitmap* bitmap)
{
    if(grNewBitmap(bitmap->mode, bitmap->grays, bitmap->width, bitmap->rows, bitmap)) return 0;

    surface->device = &gr_alleg_device;
    surface->bitmap = *bitmap;
    surface->refresh = 0;
    surface->owner = 0;
    surface->saturation = 0;
    surface->blit_mono = 0;

    surface->refresh_rect = alrefresh_rect;
    surface->set_title = alset_title;
    surface->listen_event = allisten_event;
    surface->done = aldone;

    return 1;
}

grDevice gr_alleg_device =
{
    sizeof(grSurface),
    "Allegro",

    init_device,
    done_device,

    init_surface,

    0,
    0
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲人在线观看| 日本不卡1234视频| 中文字幕一区二区三区四区不卡 | 亚洲精品成人悠悠色影视| 久久日韩精品一区二区五区| 欧美一区二区三区色| 欧美男人的天堂一二区| 欧美日韩国产经典色站一区二区三区| 欧洲精品视频在线观看| 91国产视频在线观看| 欧美性大战久久久久久久| 欧美喷潮久久久xxxxx| 69av一区二区三区| 日韩午夜激情视频| 久久久久亚洲综合| 中文字幕一区二区三区四区不卡| 亚洲女人小视频在线观看| 亚洲国产美女搞黄色| 婷婷久久综合九色综合伊人色| 日本免费在线视频不卡一不卡二| 日本一道高清亚洲日美韩| 精品一区二区三区免费观看 | 日韩电影在线免费看| 久久精品国产精品亚洲精品| 国产高清在线精品| 色综合中文字幕| 欧美岛国在线观看| 国产精品毛片a∨一区二区三区| 亚洲激情网站免费观看| 日本在线观看不卡视频| 国产91精品精华液一区二区三区| 一本一道久久a久久精品| 欧美另类高清zo欧美| 久久久一区二区| 亚洲免费观看高清完整版在线观看 | 中文字幕中文字幕一区| 亚洲午夜三级在线| 国产精品性做久久久久久| 色婷婷激情久久| 久久这里都是精品| 日本最新不卡在线| 色网站国产精品| 国产日韩欧美一区二区三区综合| 一区二区三区丝袜| 国产精品自拍毛片| 欧美另类z0zxhd电影| 欧美国产国产综合| 九九国产精品视频| 欧美色视频在线| 日韩美女久久久| 国产成人8x视频一区二区| 69p69国产精品| 亚洲韩国精品一区| av电影天堂一区二区在线观看| 欧美一二三区在线观看| 亚洲综合色噜噜狠狠| 成人av网址在线| 精品久久人人做人人爱| 日韩 欧美一区二区三区| 91福利视频久久久久| 中文字幕av一区二区三区免费看| 久久精品99国产精品日本| 欧美日韩国产成人在线免费| 亚洲嫩草精品久久| 91亚洲精品乱码久久久久久蜜桃| 国产欧美一区二区在线| 久久精品国产一区二区| 6080日韩午夜伦伦午夜伦| 香蕉加勒比综合久久| 欧美在线观看视频一区二区三区| 最新日韩av在线| 94-欧美-setu| 亚洲美女电影在线| 91麻豆高清视频| 国产精品嫩草影院av蜜臀| 国产高清在线精品| 国产精品色在线| 白白色 亚洲乱淫| 亚洲人成在线播放网站岛国 | 欧美aaa在线| 欧美一区二区视频免费观看| 亚洲第一精品在线| 在线综合+亚洲+欧美中文字幕| 日本网站在线观看一区二区三区| 欧美一卡二卡在线观看| 久久激情五月婷婷| 久久婷婷综合激情| 成人动漫在线一区| 一区二区三区在线观看欧美| 欧美视频一区二| 精品一区二区三区欧美| 亚洲国产精品黑人久久久| 本田岬高潮一区二区三区| 亚洲人成网站影音先锋播放| 在线免费观看一区| 蜜桃视频第一区免费观看| 久久一区二区三区四区| 91免费小视频| 久久精品国产精品亚洲综合| 国产精品乱码久久久久久| 日本韩国一区二区三区| 日韩不卡一二三区| 欧美国产精品一区| 欧美在线一区二区| 国内精品自线一区二区三区视频| 国产精品免费aⅴ片在线观看| 91高清视频在线| 久久99精品国产.久久久久| 国产免费成人在线视频| 欧美日韩亚洲另类| 国产白丝网站精品污在线入口| 玉米视频成人免费看| 久久久亚洲高清| 欧美日韩在线播放一区| 高清av一区二区| 蜜臀av一区二区| 亚洲乱码日产精品bd| 91精品国产一区二区| av亚洲精华国产精华精| 久久精品国产亚洲aⅴ| 亚洲一区二区三区激情| 国产精品萝li| 久久亚洲综合色| 91精品福利在线一区二区三区 | 最新高清无码专区| 久久综合国产精品| 欧美麻豆精品久久久久久| av一区二区久久| 国产福利一区二区三区视频| 性久久久久久久久| 亚洲精品欧美综合四区| 国产精品欧美精品| 久久―日本道色综合久久| 3d动漫精品啪啪1区2区免费| 一本一道波多野结衣一区二区| 国产乱人伦精品一区二区在线观看| 亚瑟在线精品视频| 亚洲自拍与偷拍| 亚洲精品亚洲人成人网在线播放| 欧美激情资源网| 国产亚洲欧洲997久久综合 | 91年精品国产| 91在线精品一区二区| 波多野结衣中文字幕一区| 国产成a人无v码亚洲福利| 国产精品77777| 国产美女久久久久| 久久99国产精品久久99果冻传媒| 五月婷婷综合在线| 日韩高清不卡一区二区| 三级一区在线视频先锋 | 亚洲一区二区三区小说| 亚洲少妇中出一区| 亚洲精品乱码久久久久久久久| 亚洲人成精品久久久久久| 一区在线播放视频| 亚洲美女免费视频| 亚洲一二三四久久| 午夜伦理一区二区| 美女视频网站黄色亚洲| 国产综合久久久久久鬼色| 国产乱一区二区| 成人久久久精品乱码一区二区三区 | 久久网站最新地址| 国产亚洲福利社区一区| 国产精品福利在线播放| 亚洲毛片av在线| 亚洲成人免费视频| 久久精品二区亚洲w码| 国产激情一区二区三区| 色综合久久久久综合99| 欧美另类久久久品| 欧美xxxxx牲另类人与| 国产色产综合产在线视频| 亚洲欧洲日韩一区二区三区| 一区二区三区日韩在线观看| 日本三级韩国三级欧美三级| 国产一区欧美一区| 一本大道久久a久久综合婷婷| 欧美在线观看一区| 欧美精品一区二区三区四区| 国产精品免费看片| 日本网站在线观看一区二区三区| 狠狠色丁香婷综合久久| 成人一级片在线观看| 欧美在线播放高清精品| 精品99999| 一区二区三区四区在线播放| 另类小说欧美激情| 91免费小视频| 欧美经典一区二区| 一区二区三区在线视频免费| 麻豆国产精品一区二区三区| 色悠久久久久综合欧美99| 91精品欧美综合在线观看最新| 国产网站一区二区三区| 石原莉奈在线亚洲二区| 91视频一区二区| 精品88久久久久88久久久| 亚洲成人在线观看视频|