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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? native.c

?? 嵌入式系統(tǒng)圖形用戶界面編程
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*** $Id: native.c,v 1.56 2003/11/22 11:49:29 weiym Exp $**** native.c: Native Low Level Graphics Engine's interface file**** Copyright (C) 2002, 2003 Feynman Software.** Copyright (C) 2000 ~ 2002 Song Lixin, Wei Yongming, and Chen Lei.**** Add code for MiniGUI-Lite by Wei Yongming, 2001/01/01** Clean code for MiniGUI 1.1.x by Wei Yongming, 2001/09/18** Coordinates transfering for iPAQ by Chen Lei, 2001/12/12** Cleanup for coordinates transfering for iPAQ by Wei Yongming, 2003/05/21**** Created by Song Lixin, 2000/10/18*//*** 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 <signal.h>#include <unistd.h>#include <string.h>#include "common.h"#include "minigui.h"#include "gdi.h"#include "window.h"#include "gal.h"#include "native.h"#ifndef _COOR_TRANS#define _COOR_TRANS     0#define _ROT_DIR_CCW    0#endif#if defined(_LITE_VERSION) && !(_STAND_ALONE)#include "ourhdr.h"#include "client.h"#include "sharedres.h"static int __mg_saved_clip_minx, __mg_saved_clip_miny, __mg_saved_clip_maxx, __mg_saved_clip_maxy;static void rotatecoor (int *x1, int *y1, int *x2, int *y2, int Tw, int dir);static int set_effective_clip_rect (PSD psd){    if (__mg_saved_clip_minx < SHAREDRES_CLI_SCR_LX)        psd->clipminx = SHAREDRES_CLI_SCR_LX;    else        psd->clipminx = __mg_saved_clip_minx;    if (__mg_saved_clip_miny < SHAREDRES_CLI_SCR_TY)        psd->clipminy = SHAREDRES_CLI_SCR_TY;    else        psd->clipminy = __mg_saved_clip_miny;        if (__mg_saved_clip_maxx > (SHAREDRES_CLI_SCR_RX + 1))        psd->clipmaxx = SHAREDRES_CLI_SCR_RX;    else        psd->clipmaxx = __mg_saved_clip_maxx;    if (__mg_saved_clip_maxy > (SHAREDRES_CLI_SCR_BY + 1))        psd->clipmaxy = SHAREDRES_CLI_SCR_BY;    else        psd->clipmaxy = __mg_saved_clip_maxy;    if (psd->clipmaxx < psd->clipminx)        return -1;    else if (psd->clipmaxy < psd->clipminy)        return -1;    if (_COOR_TRANS)        rotatecoor (&psd->clipminx, &psd->clipminy, &psd->clipmaxx, &psd->clipmaxy,                     _ROT_DIR_CCW?psd->xres:psd->yres, _ROT_DIR_CCW?0:1);    psd->clipmaxx ++;    psd->clipmaxy ++;    return 0;}#define BLOCK_DRAW_SEM                                  \    if (!mgIsServer && cur_gfx->phygc.psd == gc.psd)    \        lock_draw_sem ();                               \    if (((!mgIsServer && (SHAREDRES_TOPMOST_LAYER != __mg_layer)) || __mg_switch_away)) \        goto leave_drawing;                             \    if (!mgIsServer && cur_gfx->phygc.psd == gc.psd)    \        if (set_effective_clip_rect (gc.psd))                 \            goto leave_drawing;#define UNBLOCK_DRAW_SEM                                \    if (!mgIsServer && cur_gfx->phygc.psd == gc.psd)    \leave_drawing:                                          \        unlock_draw_sem ()#else#define BLOCK_DRAW_SEM#define UNBLOCK_DRAW_SEM#endif#ifdef _DEBUG#define debug(fmt, args...)        fprintf(stderr, " <native>-%s\t" fmt, __FUNCTION__, ##args);#else#define debug(fmt, args...)#endif/* * leon -- the following drafts will help us */#if 0    Drafts:    rects:          -/-------------------  Tw  --------------------/-                  Porg                    Px1      Px2          Vorg                                  Vy2      Vy1        Vy <--------------------------------------------->  Px   -/-           |                      |        |             |        |           |                      |   Pw   |             |        |      Py1  |---------------------------------------------|Vx1     |           |                      |        |             |        |           |                      |        |             |        |           |                   Ph |        |Vw           |           |                      |        |             |        Th           |                      |        |             |           |                      |  Vh    |             |        |      Py2  |---------------------------------------------|Vx2     |           |                                             |        |           |                                             |        |           |                                             |        |           |                                             |       -/-               Py                                            Vx        Tw: Total width        Th: Total height        Porg:   Physical origal               Vorg:    Virtual origal        Px1:    Physical x1                   Vx1:     Virtual x1        Px2:    Physical x2                   Vx2:     Virtual x2        Py1:    Physical y1                   Vy1:     Virtual y1        Py2:    Physical y2                   Vy2:     Virtual y2        Pw:     Physical width                Vw:      Virtual width        Ph:     Physical height               Vh:      Virtual height//////////////////////////////////////////////////////////////////////    for the buffer refered by putbox, getbox:               -/---      Tw     ---/-              Px0        Po    Vy0           Vo    Vy    <-------------------> Px  -/-        |     |             |        |        |     |             |        |        |     |             |        |        |     | P0          |             Py0    |_____._____________| Vx0    Th        |                   |                 |-------------------|        |        |                   |        |        Py                  Vx      -/-#endif/* * help rutines for coordinate transfer begin */static void swapval (int* v1, int* v2){    int tmp;    tmp = *v1;    *v1 = *v2;    *v2 = tmp;}static void rotatecoor (int *x1, int *y1, int *x2, int *y2, int Tw, int dir /* 0: V->P, 1: P->V */){    int tmp1, tmp2;    switch (dir) {        case 0:            tmp1 = *x1;            tmp2 = *x2;            *x1 = Tw - 1 - *y2;            *x2 = Tw - 1 - *y1;            *y1 = tmp1;            *y2 = tmp2;            break;        case 1:            tmp1 = *y1;            tmp2 = *y2;            *y1 = Tw - 1 - *x2;            *y2 = Tw - 1 - *x1;            *x1 = tmp1;            *x2 = tmp2;            break;    }}static void rotaterect (int* x, int* y, int* w, int* h, int Tw, int dir /* 0: V->P, 1: P->V */){    int tmp;    switch (dir) {        case 0:            tmp = *y;            *y = *x;            *x = Tw - (tmp + *h);            swapval (w, h);            break;        case 1:            tmp = *x;            *x = *y;            *y = Tw - (tmp + *w);            swapval (w, h);            break;    }}static void rotatepoint (int* x, int* y, int Tw , int dir /* 0: V->P, 1: P->V */){    int tmp;    switch (dir) {        case 0:            tmp = *x;            *x = Tw  - 1 - *y;            *y = tmp;            break;        case 1:            tmp = *y;            *y = Tw - 1 - *x;            *x = tmp;            break;    }}static void reverse_buff (char* dst, const char* src, int size, int Bpp){    int i;    switch (Bpp) {    case 1:        for (i = 0; i < size; i++)            dst [i] = src [size - i - 1];        break;    case 2:        {            Uint16* _dst = (Uint16*)dst;            Uint16* _src = (Uint16*)src;            for (i = 0; i < size; i++)                _dst [size - i - 1] = _src [i];            break;        }    case 3:        {            for (i = 0; i < size * Bpp; i+=3) {                dst [size - i - 1] = src [i];                dst [size - i - 2] = src [i + 1];                dst [size - i - 3] = src [i + 2];            }            break;        }    case 4:        {            Uint32* _dst = (Uint32*)dst;            Uint32* _src = (Uint32*)src;            for (i = 0; i < size; i++)                _dst [size - i - 1] = _src [i];            break;        }    default:        return;    }}/* * help rutines for coordinate transfer end *//* * Low Level Graphics Operations */static int bytesperpixel (GAL_GC gc) {     return (gc.psd->bpp + 7) / 8; }static int bitsperpixel (GAL_GC gc) {     return gc.psd->bpp; }static int width (GAL_GC gc) {     if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd)        return gc.psd->yres;     else        return gc.psd->xres; }static int height (GAL_GC gc) {     if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd)        return gc.psd->xres;     else        return gc.psd->yres; }static int colors (GAL_GC gc) {        return gc.psd->ncolors; }static int setclipping (GAL_GC gc, int x1, int y1, int x2, int y2){    PSD psd;    psd = gc.psd;    if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd) {        if (x1 < 0) x1 = 0;        if (y1 < 0) y1 = 0;        if (x2 > psd->yres - 1) x2 = psd->yres - 1;        if (y2 > psd->xres - 1) y2 = psd->xres - 1;    }    else {        if (x1 < 0) x1 = 0;        if (y1 < 0) y1 = 0;        if (x2 > psd->xres - 1) x2 = psd->xres - 1;        if (y2 > psd->yres - 1) y2 = psd->yres - 1;    }    psd->doclip = 1;#if defined(_LITE_VERSION) && !(_STAND_ALONE)    if (!mgIsServer && psd == cur_gfx->phygc.psd) {        __mg_saved_clip_minx = x1;        __mg_saved_clip_miny = y1;        __mg_saved_clip_maxx = x2;        __mg_saved_clip_maxy = y2;    }    else {#endif        if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd)            rotatecoor (&x1, &y1, &x2, &y2, _ROT_DIR_CCW?psd->xres:psd->yres, _ROT_DIR_CCW?0:1);                psd->clipminx = x1;        psd->clipminy = y1;        psd->clipmaxx = x2 + 1;        psd->clipmaxy = y2 + 1;#if defined(_LITE_VERSION) && !(_STAND_ALONE)    }#endif    return 0;}static void enableclipping (GAL_GC gc){    PSD psd;    psd = gc.psd;    if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd)        setclipping (gc, 0, 0, psd->yres - 1, psd->xres - 1);    else        setclipping (gc, 0, 0, psd->xres - 1, psd->yres - 1);}static void disableclipping (GAL_GC gc){    PSD psd;    psd = gc.psd;    psd->doclip = 0;}static int getclipping (GAL_GC gc, int* x1, int* y1, int* x2, int* y2){    PSD psd;    psd = gc.psd;#if defined(_LITE_VERSION) && !(_STAND_ALONE)    if (!mgIsServer && psd == cur_gfx->phygc.psd) {        *x1 = __mg_saved_clip_minx;        *y1 = __mg_saved_clip_miny;        *x2 = __mg_saved_clip_maxx;        *y2 = __mg_saved_clip_maxy;    }    else {#endif        *x1 = psd->clipminx;        *y1 = psd->clipminy;        *x2 = psd->clipmaxx - 1;        *y2 = psd->clipmaxy - 1;    #if defined(_LITE_VERSION) && !(_STAND_ALONE)    }#endif    if (_COOR_TRANS && gc.psd == cur_gfx->phygc.psd)        rotatecoor (x1, y1, x2, y2, _ROT_DIR_CCW?gc.psd->xres:gc.psd->yres, _ROT_DIR_CCW?1:0);    return 0;}/* * Allocation and release of graphics context */static int allocategc (GAL_GC gc, int width, int height, int depth, GAL_GC* newgc){    int linelen, size;    PSD newpsd;    void* pixels;    int bpp;    bpp = gc.psd->bpp;    newpsd = gc.psd->AllocateMemGC (gc.psd);    if (!newpsd)        return -1;        if (!native_gen_calcmemgcalloc (newpsd, width, height, 0, bpp, &size, &linelen))        goto fail;        pixels = malloc(size);    if (!pixels)        goto fail;    if (gc.psd->flags & PSF_MSBRIGHT)        newpsd->flags |= PSF_MSBRIGHT;    newpsd->flags |= PSF_ADDRMALLOC;    if (!newpsd->MapMemGC (newpsd, width, height, gc.psd->planes, bpp, linelen, size, pixels))        goto fail;    newgc->psd = newpsd;    setclipping (*newgc, 0, 0, width - 1, height - 1);    return 0;fail:    newpsd->FreeMemGC (newpsd);    return -1;}static void freegc (GAL_GC gc){    PSD psd;    psd = gc.psd;    if(gc.psd->flags & PSF_ADDRMALLOC)        free (gc.psd->addr);    psd->FreeMemGC (psd);}/* * Background and foreground colors */static int getbgcolor (GAL_GC gc, gal_pixel* color){    PSD psd;    psd = gc.psd;    *color = psd->gr_background;        return 0;}static int setbgcolor (GAL_GC gc, gal_pixel color){    PSD psd;    psd = gc.psd;    psd->gr_background = color;        return 0;}static int getfgcolor (GAL_GC gc, gal_pixel* color){    PSD psd;    psd = gc.psd;    *color = psd->gr_foreground;        return 0;}static int setfgcolor (GAL_GC gc, gal_pixel color){    PSD psd;    psd = gc.psd;    psd->gr_foreground = color;        return 0;}/* * Convertion between GAL_Color and gal_pixel

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜美腿亚洲一区| 粉嫩av一区二区三区粉嫩| 久久久国产精品不卡| 日韩欧美另类在线| 日韩精品最新网址| 国产精品久久久一本精品| 首页欧美精品中文字幕| 91亚洲午夜精品久久久久久| 26uuu色噜噜精品一区二区| 亚洲午夜在线观看视频在线| 国产乱人伦偷精品视频不卡 | 精品国产成人在线影院| 一二三四社区欧美黄| av电影天堂一区二区在线观看| 成人国产亚洲欧美成人综合网| 亚洲精品一二三四区| 亚洲成人av中文| 一区二区三区小说| 成人精品视频网站| 久久久亚洲精华液精华液精华液| 日韩精品高清不卡| 欧美日韩久久久| 亚洲午夜三级在线| 欧美亚洲国产一区二区三区| 夜夜爽夜夜爽精品视频| 欧美最新大片在线看| 亚洲综合在线第一页| 91女厕偷拍女厕偷拍高清| 亚洲欧美国产高清| 欧洲精品一区二区| 亚洲午夜在线电影| 欧美一区二视频| 蜜桃精品在线观看| 欧美videofree性高清杂交| 日本午夜精品一区二区三区电影| 欧美日韩激情在线| 久久99精品久久久久久动态图 | 成人午夜激情在线| 国产精品大尺度| 色94色欧美sute亚洲13| 亚洲一区二区在线视频| 欧美军同video69gay| 蜜桃视频免费观看一区| 久久女同互慰一区二区三区| 国产一区二区三区最好精华液| 国产亚洲精品资源在线26u| 懂色av噜噜一区二区三区av| 自拍av一区二区三区| 91成人免费在线| 免费成人小视频| 欧美国产综合一区二区| 日本韩国一区二区| 蜜桃视频第一区免费观看| 国内精品国产成人| 91丨九色丨尤物| 欧美国产激情二区三区| 国产高清在线观看免费不卡| yourporn久久国产精品| 国产精品一二三| 久久在线免费观看| 91啪亚洲精品| 日韩黄色一级片| 国产精品日产欧美久久久久| 欧美日韩一区中文字幕| 精品一二线国产| 亚洲精品午夜久久久| 91精品国产免费| av高清久久久| 免费成人在线观看视频| 综合电影一区二区三区 | 国产精品久久久久久久久免费相片| 亚洲精品你懂的| 91福利视频在线| 国产精品18久久久久久vr| 亚洲在线观看免费| 久久久www成人免费无遮挡大片| 亚洲欧洲另类国产综合| 国产亚洲精久久久久久| 美女网站视频久久| 亚洲免费观看高清完整版在线观看 | 国产精品久久一级| 欧美日韩亚洲综合在线| 高清日韩电视剧大全免费| 亚洲一区中文日韩| 欧美极品aⅴ影院| 日韩欧美一级二级| 欧美性受xxxx| 91蝌蚪porny九色| 精品视频全国免费看| 国产福利电影一区二区三区| 国产精品三级在线观看| 欧美一区二区三区小说| 91啪亚洲精品| 99这里只有久久精品视频| 国产在线播放一区三区四| 免费精品视频最新在线| 亚洲图片欧美综合| 亚洲精选一二三| 中文字幕亚洲一区二区va在线| 久久精品人人爽人人爽| 欧美一区二区在线视频| 欧美三级视频在线观看| 日本精品一区二区三区高清| www.av精品| 成人激情图片网| 成人夜色视频网站在线观看| 国产麻豆精品久久一二三| 国产一区二区在线视频| 久久疯狂做爰流白浆xx| 麻豆91免费看| 久久99国产精品尤物| 国产尤物一区二区| 国产精品一区一区三区| 国产精品影视在线观看| 国产成人超碰人人澡人人澡| 国产91丝袜在线播放0| 国产成人免费av在线| 成人激情小说网站| 色综合婷婷久久| 欧美色欧美亚洲另类二区| 欧美日韩免费电影| 777午夜精品免费视频| 日韩欧美国产一二三区| 久久久不卡影院| 免费成人你懂的| 亚洲精品免费在线播放| 欧美国产乱子伦 | 777xxx欧美| 国产精品久久久久久久久动漫| 国产精品日韩成人| 亚洲精品亚洲人成人网 | 欧美激情在线一区二区三区| 日本一区二区三区电影| 亚洲欧洲成人av每日更新| 亚洲一区二区视频在线观看| 首页欧美精品中文字幕| 国产精品99久久久久久久女警 | 18欧美亚洲精品| 亚洲国产成人91porn| 久久成人免费日本黄色| 99久久久无码国产精品| 在线观看日韩电影| 26uuu亚洲婷婷狠狠天堂| 最新日韩av在线| 日韩av电影天堂| 不卡大黄网站免费看| 精品视频一区二区不卡| 亚洲国产高清aⅴ视频| 午夜亚洲国产au精品一区二区| 久久精品99久久久| 91国产丝袜在线播放| 日韩片之四级片| 亚洲男同性恋视频| 激情小说欧美图片| 欧美视频在线一区二区三区| 日韩欧美的一区| 亚洲欧美一区二区三区国产精品| 日韩福利视频网| 99麻豆久久久国产精品免费优播| 欧美精品一卡两卡| 亚洲欧洲国产专区| 国产精一区二区三区| 欧美男女性生活在线直播观看| 久久精品视频免费| 日韩国产一区二| 在线一区二区三区四区| 国产精品久久久久一区| 激情深爱一区二区| 欧美精品高清视频| 一区二区欧美精品| voyeur盗摄精品| 久久久亚洲欧洲日产国码αv| 午夜精品一区二区三区免费视频 | 成人av免费在线| 日韩一区二区三区三四区视频在线观看| 国产精品国产三级国产普通话99| 九九精品一区二区| 在线播放亚洲一区| 亚洲综合免费观看高清完整版| 成人av网站大全| 欧美国产精品专区| 精品亚洲国内自在自线福利| 69堂成人精品免费视频| 亚洲国产成人91porn| 91福利视频在线| 亚洲欧美韩国综合色| 成人高清免费观看| 国产欧美日韩在线看| 国产精品综合久久| 久久色成人在线| 韩国精品免费视频| 久久久91精品国产一区二区精品| 久久爱另类一区二区小说| 欧美成人vr18sexvr| 香蕉成人伊视频在线观看| 欧美肥胖老妇做爰| 日本v片在线高清不卡在线观看| 欧美日韩大陆一区二区| 午夜精品福利视频网站| 欧美一级欧美三级|