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

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

?? native.c

?? 嵌入式系統圖形用戶界面編程
?? 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影院| 国产电影一区在线| 欧美熟乱第一页| 国产情人综合久久777777| 亚洲国产欧美在线| 91色综合久久久久婷婷| 日韩免费看的电影| 亚洲成a人片在线观看中文| 国产成人aaaa| 精品第一国产综合精品aⅴ| 亚洲国产毛片aaaaa无费看 | 久久久久久99久久久精品网站| |精品福利一区二区三区| 狠狠色狠狠色综合系列| 欧美精品乱码久久久久久按摩 | 不卡在线观看av| 精品国产精品网麻豆系列| 亚洲bt欧美bt精品777| 91麻豆免费看片| 中文欧美字幕免费| 国产福利一区二区三区视频 | 久久99蜜桃精品| 欧美影院一区二区三区| 亚洲精选视频免费看| 99久久99久久精品免费看蜜桃| 久久久精品2019中文字幕之3| 国产综合久久久久久久久久久久| 欧美一区二区三区色| 日韩av电影免费观看高清完整版| 91成人免费网站| 亚洲在线观看免费视频| 在线视频国内自拍亚洲视频| 亚洲精品免费一二三区| 91福利在线导航| 亚洲午夜久久久久久久久电影院 | 成人av在线播放网站| 欧美高清在线一区二区| 粉嫩嫩av羞羞动漫久久久| 欧美国产激情二区三区| 91免费看视频| 亚洲自拍欧美精品| 欧美人动与zoxxxx乱| 日韩精品久久理论片| 欧美一级理论片| 国产麻豆成人精品| 国产精品家庭影院| 日本道在线观看一区二区| 亚洲成人激情自拍| wwwwww.欧美系列| 粉嫩aⅴ一区二区三区四区| 中文字幕一区二区三区四区| 一本到不卡免费一区二区| 亚洲国产精品久久久久婷婷884 | 欧美日韩一区高清| 青青青爽久久午夜综合久久午夜| 日韩三级伦理片妻子的秘密按摩| 韩国精品一区二区| 国产精品的网站| 欧美另类久久久品| 国产精品小仙女| 亚洲午夜av在线| 精品久久久久久久久久久久包黑料| 国产高清视频一区| 一区二区三区四区高清精品免费观看 | 日韩欧美国产麻豆| 99re成人在线| 奇米影视一区二区三区| 国产精品久久久久久久久久免费看 | 看电影不卡的网站| 亚洲欧洲av一区二区三区久久| 欧美亚州韩日在线看免费版国语版| 日韩电影免费一区| 国产精品久久久久久久午夜片 | 蜜桃在线一区二区三区| 国产人久久人人人人爽| 欧美这里有精品| 粉嫩欧美一区二区三区高清影视 | 亚洲视频一二三区| 日韩美女天天操| 在线一区二区观看| 国产精品一区二区男女羞羞无遮挡| 一区二区免费视频| 中文一区在线播放| 欧美一级二级三级蜜桃| 日本丶国产丶欧美色综合| 风间由美一区二区三区在线观看| 日韩高清不卡一区二区三区| 18成人在线观看| 国产亚洲一区二区三区| 欧美男生操女生| 欧美艳星brazzers| 99国产精品久久久久| 国产精品中文有码| 美女尤物国产一区| 亚洲成人自拍偷拍| 亚洲猫色日本管| 国产精品久久久久久久岛一牛影视| 欧美精品一区二区精品网| 717成人午夜免费福利电影| 在线精品国精品国产尤物884a| 高清国产一区二区三区| 国产精品自拍一区| 国产一区二区精品在线观看| 捆绑调教一区二区三区| 久久国产精品区| 美女任你摸久久| 免费av成人在线| 日韩电影免费在线看| 奇米精品一区二区三区在线观看 | 91精品国产福利| 欧美日韩亚州综合| 欧美日韩在线播放一区| 欧美日韩国产一级| 欧美久久婷婷综合色| 欧美美女一区二区在线观看| 欧美日韩三级在线| 9191成人精品久久| 欧美一级高清片| 欧美精品一区二区久久婷婷 | 日韩欧美中文字幕一区| 69堂国产成人免费视频| 日韩欧美国产午夜精品| 久久精品视频免费| 国产精品久久久久国产精品日日| 中文字幕一区二| 亚洲女人****多毛耸耸8| 亚洲免费观看高清完整版在线 | 视频一区国产视频| 日本免费新一区视频| 国产在线观看免费一区| 国产高清视频一区| 99国产精品久久久久久久久久 | 欧美色图激情小说| 日韩一区二区麻豆国产| 久久九九久久九九| 18涩涩午夜精品.www| 性做久久久久久| 国产精品2024| 在线观看网站黄不卡| 日韩三级高清在线| 中文字幕在线一区| 亚洲18女电影在线观看| 国模套图日韩精品一区二区 | 国产麻豆精品一区二区| 91女神在线视频| 日韩免费性生活视频播放| 国产精品美女久久久久aⅴ国产馆| 亚洲三级电影网站| 久久精品国产精品亚洲综合| 不卡电影免费在线播放一区| 欧美日韩另类一区| 国产日韩精品一区二区三区在线| 尤物视频一区二区| 激情综合亚洲精品| 91精彩视频在线| 久久蜜桃一区二区| 亚洲bdsm女犯bdsm网站| 国产成人精品免费视频网站| 欧美日韩在线观看一区二区| 国产欧美日韩另类一区| 丝袜诱惑亚洲看片| 99久久er热在这里只有精品66| 91精品国产综合久久香蕉麻豆| 欧美激情资源网| 美女爽到高潮91| 91福利资源站| 国产精品情趣视频| 精品一区二区久久| 欧美日韩二区三区| 成人免费一区二区三区在线观看| 久久精品国产澳门| 欧美日韩国产综合视频在线观看| 亚洲欧洲美洲综合色网| 国产精选一区二区三区| 91精品国产免费| 亚洲一二三四久久| 波波电影院一区二区三区| 亚洲精品一区二区三区影院| 视频在线观看国产精品| 色狠狠一区二区三区香蕉| 国产精品视频线看| 国产制服丝袜一区| 精品裸体舞一区二区三区| 首页国产丝袜综合| 欧美三级日韩三级国产三级| 亚洲精品视频在线| 91蝌蚪porny九色| 国产精品成人免费| 成人精品一区二区三区中文字幕| 久久午夜电影网| 国内精品久久久久影院一蜜桃| 欧美大白屁股肥臀xxxxxx| 日韩电影在线免费看| 欧美日韩一区视频| 五月婷婷激情综合网| 欧美日韩高清不卡| 日本不卡一区二区三区| 欧美一区二区三区的| 奇米影视在线99精品|