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

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

?? sdl_ph_image.c

?? Simple DirectMedia Layer - Simple DirectMedia Layer 是一個跨平臺的多媒體庫設計用來提供快速圖形framebuffer和音頻驅動。應用MPEG為軟件
?? C
字號:
/*    SDL - Simple DirectMedia Layer    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library 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    Library General Public License for more details.    You should have received a copy of the GNU Library General Public    License along with this library; if not, write to the Free    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    Sam Lantinga    slouken@libsdl.org*/#ifdef SAVE_RCSIDstatic char rcsid = "@(#) $Id: SDL_ph_image.c,v 1.11 2002/05/28 19:31:32 slouken Exp $";#endif#include <stdlib.h>#include <Ph.h>#include <photon/Pg.h>#include "SDL_error.h"#include "SDL_endian.h"#include "SDL_ph_image_c.h"/* remove this line, if photon headers updates */int PgWaitHWIdle(void);int ph_SetupImage(_THIS, SDL_Surface *screen){    PgColor_t* palette=NULL;    int type=0;    int bpp;        bpp=screen->format->BitsPerPixel;    /* Determine image type */    switch(bpp)    {        case 8:{            type = Pg_IMAGE_PALETTE_BYTE;        }        break;        case 15:{            type = Pg_IMAGE_DIRECT_555;         }        break;        case 16:{            type = Pg_IMAGE_DIRECT_565;         }        break;        case 24:{            type = Pg_IMAGE_DIRECT_888;        }        break;        case 32:{            type = Pg_IMAGE_DIRECT_8888;        }        break;        default:{            fprintf(stderr,"ph_SetupImage(): unsupported bbp = %d\n", bpp);            return -1;        }        break;    }    /* palette emulation code */    if ((bpp==8) && (desktoppal==SDLPH_PAL_EMULATE))    {        /* creating image palette */        palette=malloc(_Pg_MAX_PALETTE*sizeof(PgColor_t));        PgGetPalette(palette);        /* using shared memory for speed (set last param to 1) */        if ((SDL_Image = PhCreateImage(NULL, screen->w, screen->h, type, palette, _Pg_MAX_PALETTE, 1)) == NULL)        {            fprintf(stderr,"ph_SetupImage(): PhCreateImage failed for bpp=8.\n");            return -1;        }    }    else    {        /* using shared memory for speed (set last param to 1) */        if ((SDL_Image = PhCreateImage(NULL, screen->w, screen->h, type, NULL, 0, 1)) == NULL)        {            fprintf(stderr,"ph_SetupImage: PhCreateImage failed.\n");            return -1;        }    }        screen->pixels = SDL_Image->image;    screen->pitch = SDL_Image->bpl; /* Recalculated pitch, created by PhCreateImage */    this->UpdateRects = ph_NormalUpdate;    return 0;}int ph_SetupOCImage(_THIS, SDL_Surface *screen){    int type = 0;    int bpp;        bpp=screen->format->BitsPerPixel;    /* Determine image type */    switch(bpp)    {        case 8: {                    type = Pg_IMAGE_PALETTE_BYTE;                }                break;        case 15:{                    type = Pg_IMAGE_DIRECT_555; 		}		break;        case 16:{                    type = Pg_IMAGE_DIRECT_565;                 }                break;        case 24:{                    type = Pg_IMAGE_DIRECT_888;                }                break;        case 32:{                    type = Pg_IMAGE_DIRECT_8888;                }                break;        default:{                    fprintf(stderr,"ph_SetupOCImage(): unsupported bpp = %d\n", bpp);                    return -1;                }                break;    }    OCImage.FrameData0 = (FRAMEDATA *) malloc((size_t)(sizeof(FRAMEDATA)));    OCImage.FrameData1 = (FRAMEDATA *) malloc((size_t)(sizeof(FRAMEDATA)));    memset(OCImage.FrameData0, 0x00, (size_t)(sizeof(FRAMEDATA)));    memset(OCImage.FrameData1, 0x00, (size_t)(sizeof(FRAMEDATA)));    if(OCImage.direct_context == NULL)    {        OCImage.direct_context = PdCreateDirectContext();    }    OCImage.offscreen_context = PdCreateOffscreenContext(0, screen->w, screen->h, Pg_OSC_MEM_PAGE_ALIGN);    if (OCImage.offscreen_context == NULL)    {        fprintf(stderr, "ph_SetupOCImage(): PdCreateOffscreenContext failed !\n");        return -1;    }    screen->pitch = OCImage.offscreen_context->pitch; /* Recalculated pitch */    if (OCImage.flags & SDL_DOUBLEBUF)    {        fprintf(stderr, "ph_SetupOCImage(): Hardware flag for doublebuf offscreen context\n");    }    OCImage.dc_ptr.ptr8 = (unsigned char *) PdGetOffscreenContextPtr(OCImage.offscreen_context);    if (OCImage.dc_ptr.ptr8 == NULL)    {        fprintf(stderr, "ph_SetupOCImage(): PdGetOffscreenContextPtr failed !\n");        return -1;    }    OCImage.CurrentFrameData = OCImage.FrameData0;    OCImage.CurrentFrameData->Y = OCImage.dc_ptr.ptr8;    OCImage.CurrentFrameData->U = NULL;    OCImage.CurrentFrameData->V = NULL;    OCImage.current = 0;    PhDCSetCurrent(OCImage.offscreen_context);    screen->pixels = OCImage.CurrentFrameData->Y;    this->UpdateRects = ph_OCUpdate;    return 0;}int ph_SetupOpenGLImage(_THIS, SDL_Surface* screen){   this->UpdateRects = ph_OpenGLUpdate;      return 0;}void ph_DestroyImage(_THIS, SDL_Surface *screen){    if (OCImage.offscreen_context != NULL)    {        PhDCRelease(OCImage.offscreen_context);        OCImage.offscreen_context = NULL;        free(OCImage.FrameData0);        OCImage.FrameData0 = NULL;        free(OCImage.FrameData1);        OCImage.FrameData1 = NULL;    }    if (SDL_Image)    {        /* if palette allocated, free it */        if (SDL_Image->palette)        {            free(SDL_Image->palette);        }        PgShmemDestroy(SDL_Image->image);        free(SDL_Image);    }    /* Must be zeroed everytime */    SDL_Image = NULL;    if (screen)    {        screen->pixels = NULL;    }}int ph_ResizeImage(_THIS, SDL_Surface *screen, Uint32 flags){    ph_DestroyImage(this, screen);        if (flags & SDL_HWSURFACE)    {        OCImage.flags = flags;  /* needed for SDL_DOUBLEBUF check */        return ph_SetupOCImage(this, screen);    }    else if (flags & SDL_OPENGL)    {        return ph_SetupOpenGLImage(this, screen);    }     else    {        return ph_SetupImage(this, screen);    }      }int ph_AllocHWSurface(_THIS, SDL_Surface *surface){    return(-1);}void ph_FreeHWSurface(_THIS, SDL_Surface *surface){    return;}int ph_FlipHWSurface(_THIS, SDL_Surface *surface){    return(0);}int ph_LockHWSurface(_THIS, SDL_Surface *surface){    if ((surface == SDL_VideoSurface) && blit_queued) {	PgFlush();        blit_queued = 0;    }    return(0);}void ph_UnlockHWSurface(_THIS, SDL_Surface *surface){    return;}void ph_OpenGLUpdate(_THIS, int numrects, SDL_Rect* rects){   this->GL_SwapBuffers(this);      return;}void ph_NormalUpdate(_THIS, int numrects, SDL_Rect *rects){    PhPoint_t ph_pos;    PhRect_t ph_rect;    int i;    for (i=0; i<numrects; ++i)     {    	if (rects[i].w==0) /* Clipped? */        {             continue;        }        ph_pos.x = rects[i].x;        ph_pos.y = rects[i].y;        ph_rect.ul.x = rects[i].x;        ph_rect.ul.y = rects[i].y;        ph_rect.lr.x = rects[i].x + rects[i].w;        ph_rect.lr.y = rects[i].y + rects[i].h;        if (PgDrawPhImageRectmx(&ph_pos, SDL_Image, &ph_rect, 0) < 0)        {            fprintf(stderr,"ph_NormalUpdate(): PgDrawPhImageRectmx failed.\n");        }    }    if (PgFlush() < 0)    {    	fprintf(stderr,"ph_NormalUpdate(): PgFlush failed.\n");    }}void ph_OCUpdate(_THIS, int numrects, SDL_Rect *rects){    int i;    PhPoint_t zero = {0};    PhArea_t src_rect;    PhArea_t dest_rect;    if(OCImage.direct_context == NULL)    {        return;    }    PgSetRegion(PtWidgetRid(window));    PgSetClipping(0, NULL);    PgWaitHWIdle();    for (i=0; i<numrects; ++i)    {        if (rects[i].w == 0)  /* Clipped? */        {            continue;        }        src_rect.pos.x=rects[i].x;        src_rect.pos.y=rects[i].y;        dest_rect.pos.x=rects[i].x;        dest_rect.pos.y=rects[i].y;        src_rect.size.w=rects[i].w;        src_rect.size.h=rects[i].h;        dest_rect.size.w=rects[i].w;        dest_rect.size.h=rects[i].h;        zero.x = 0;        zero.y = 0;        PgSetTranslation(&zero, 0);        PgSetRegion(PtWidgetRid(window));        PgSetClipping(0, NULL);        PgContextBlitArea(OCImage.offscreen_context, &src_rect, NULL, &dest_rect);    }    if (PgFlush() < 0)    {        fprintf(stderr,"ph_OCUpdate(): PgFlush failed.\n");    }        /* later used to toggling double buffer */    if (OCImage.current == 0)    {        OCImage.CurrentFrameData = OCImage.FrameData0;    }    else    {        OCImage.CurrentFrameData = OCImage.FrameData1;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91日韩一区二区三区| 欧美激情资源网| 久久久国产午夜精品| 亚洲人亚洲人成电影网站色| 免费在线观看视频一区| 91丝袜美腿高跟国产极品老师| 欧美一级生活片| 亚洲曰韩产成在线| 99久免费精品视频在线观看| 日韩美一区二区三区| 一区二区三区成人在线视频| 成人精品免费看| 久久久久久电影| 老司机免费视频一区二区 | 欧美成人精品二区三区99精品| 亚洲女人小视频在线观看| 国产精华液一区二区三区| 6080午夜不卡| 亚洲国产欧美另类丝袜| 色老汉av一区二区三区| 国产精品国产三级国产专播品爱网 | 黄色资源网久久资源365| 欧美日韩国产在线观看| 一区二区三区欧美亚洲| 91亚洲午夜精品久久久久久| 国产拍揄自揄精品视频麻豆| 国产精品456露脸| 久久久久久影视| 国产福利一区二区| 欧美国产综合色视频| 成人久久18免费网站麻豆| 国产精品午夜电影| 成人短视频下载| 国产精品国产精品国产专区不蜜 | 亚洲免费在线观看视频| thepron国产精品| 日韩伦理免费电影| 色婷婷精品大在线视频| 一区二区免费视频| 欧美手机在线视频| 日韩高清欧美激情| 日韩欧美另类在线| 国产精品综合二区| 亚洲三级视频在线观看| 欧美日韩中文字幕一区| 日韩电影在线免费观看| 精品久久五月天| 国产成人8x视频一区二区 | 日韩高清欧美激情| 精品av综合导航| 高清国产一区二区| 亚洲另类在线一区| 91精品国产入口在线| 卡一卡二国产精品| 中文字幕av资源一区| 99久久精品免费| 亚洲777理论| 久久久久久**毛片大全| 一本一道久久a久久精品| 亚洲va天堂va国产va久| 久久久久久夜精品精品免费| 99re热这里只有精品免费视频 | 欧美日韩视频不卡| 国模套图日韩精品一区二区| 国产精品国产自产拍高清av | 日韩精品一级二级| 国产日产亚洲精品系列| 在线观看一区日韩| 国产一区啦啦啦在线观看| 国产精品福利av| 日韩欧美一级特黄在线播放| 99免费精品在线| 蜜乳av一区二区| 亚洲美女免费在线| 日韩一级二级三级| 91老司机福利 在线| 国产老妇另类xxxxx| 亚洲综合一区二区| 国产欧美日本一区视频| 717成人午夜免费福利电影| 99久久精品免费| 黄色日韩三级电影| 丝袜美腿亚洲一区二区图片| 国产精品久久久久久妇女6080 | 日韩视频国产视频| 色婷婷综合视频在线观看| 久久精品国产精品亚洲精品| 亚洲国产日韩综合久久精品| 中文字幕av一区二区三区高| 日韩欧美三级在线| 欧美三级日韩三级| av一区二区不卡| 国产精品888| 极品少妇一区二区| 免费成人性网站| 石原莉奈在线亚洲三区| 亚洲视频小说图片| 一区视频在线播放| 欧美国产成人精品| 久久精品一区二区三区四区| 欧美一区二区美女| 51久久夜色精品国产麻豆| 欧美三级一区二区| 欧美最新大片在线看 | xfplay精品久久| 日韩一区二区在线观看视频| 911精品国产一区二区在线| 在线观看亚洲精品视频| 在线欧美小视频| 91久久精品一区二区三区| 99vv1com这只有精品| 99久久精品免费看| 色综合久久综合网欧美综合网| 99久久国产综合色|国产精品| av亚洲精华国产精华| 91在线观看污| 日本二三区不卡| 欧美亚洲一区二区在线| 欧美日韩一卡二卡三卡| 欧美日韩国产小视频| 欧美日韩性生活| 91精品麻豆日日躁夜夜躁| 日韩欧美高清在线| 精品久久久久一区二区国产| 久久久久高清精品| 国产精品久久三| 亚洲精品成人精品456| 亚洲电影一级片| 裸体一区二区三区| 国产成人免费视频| 91蝌蚪porny成人天涯| 欧美色电影在线| 欧美电影免费观看完整版| 国产日韩v精品一区二区| 自拍视频在线观看一区二区| 亚洲一区二区中文在线| 日韩av电影一区| 国产九九视频一区二区三区| 91亚洲国产成人精品一区二区三| 91黄色免费观看| 欧美成人猛片aaaaaaa| 中文字幕一区二区不卡 | 亚洲欧洲综合另类| 日本中文字幕不卡| 岛国精品在线播放| 欧美日韩一区在线观看| 国产亚洲人成网站| 亚洲一区二区三区免费视频| 精东粉嫩av免费一区二区三区| av在线播放成人| 欧美一区二区三区影视| 国产欧美一区二区三区在线看蜜臀| 伊人性伊人情综合网| 国产综合一区二区| 在线观看亚洲成人| 国产女同互慰高潮91漫画| 一区二区欧美视频| 国产成a人无v码亚洲福利| 欧美精品tushy高清| 国产精品久久久久久久午夜片| 日韩福利电影在线| 91麻豆国产香蕉久久精品| 精品久久久久av影院| 亚洲伊人色欲综合网| 国产精品99久久久久久有的能看| 欧美私人免费视频| 自拍偷拍国产亚洲| 国产jizzjizz一区二区| 3d动漫精品啪啪一区二区竹菊 | 亚洲超碰精品一区二区| www.一区二区| 国产色产综合产在线视频| 美女国产一区二区三区| 欧美亚洲国产一区在线观看网站| 国产视频亚洲色图| 美女视频免费一区| 91精品午夜视频| 亚洲综合激情另类小说区| 成人禁用看黄a在线| 久久看人人爽人人| 久久精品国产免费| 日韩精品专区在线影院重磅| 日韩影院精彩在线| 欧美亚洲丝袜传媒另类| 亚洲精品久久久蜜桃| 波多野结衣中文字幕一区二区三区| 26uuu国产一区二区三区| 日韩电影在线一区二区三区| 欧美视频第二页| 一区二区不卡在线播放| 色综合色狠狠综合色| 亚洲裸体xxx| 亚洲一区二区在线视频| 91精品久久久久久久91蜜桃| 爽好多水快深点欧美视频| 亚洲免费观看高清完整版在线观看熊| 男人操女人的视频在线观看欧美| 91麻豆产精品久久久久久| 亚洲日韩欧美一区二区在线| 成人免费视频国产在线观看|