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

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

?? skinload.c

?? uclinux下mplayer的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * MPlayer GUI for Win32 * Copyright (C) 2003 Sascha Sommer <saschasommer@freenet.de> * Copyright (C) 2006 Erik Augustson <erik_27can@yahoo.com> * Copyright (C) 2006 Gianluigi Tiesi <sherpya@netfarm.it> * * This file is part of MPlayer. * * MPlayer 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. * * MPlayer 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 MPlayer; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */#include <stdlib.h>#include <stdio.h>#include <inttypes.h>#include <windows.h>#include "mp_msg.h"#include "cpudetect.h"#include "libswscale/rgb2rgb.h"#include "libswscale/swscale.h"#include "gui.h"#include "bitmap.h"#define MAX_LINESIZE 256typedef struct{    int msg;    char *name;} evName;static const evName evNames[] ={    {   evNone,                 "evNone"                },    {   evPlay,                 "evPlay"                },    {   evDropFile,             "evDropFile"            },    {   evStop,                 "evStop"                },    {   evPause,                "evPause"               },    {   evPrev,                 "evPrev"                },    {   evNext,                 "evNext"                },    {   evLoad,                 "evLoad"                },    {   evEqualizer,            "evEqualizer"           },    {   evEqualizer,            "evEqualeaser"          },    {   evPlayList,             "evPlaylist"            },    {   evExit,                 "evExit"                },    {   evIconify,              "evIconify"             },    {   evIncBalance,           "evIncBalance"          },    {   evDecBalance,           "evDecBalance"          },    {   evFullScreen,           "evFullScreen"          },    {   evFName,                "evFName"               },    {   evMovieTime,            "evMovieTime"           },    {   evAbout,                "evAbout"               },    {   evLoadPlay,             "evLoadPlay"            },    {   evPreferences,          "evPreferences"         },    {   evSkinBrowser,          "evSkinBrowser"         },    {   evBackward10sec,        "evBackward10sec"       },    {   evForward10sec,         "evForward10sec"        },    {   evBackward1min,         "evBackward1min"        },    {   evForward1min,          "evForward1min"         },    {   evBackward10min,        "evBackward10min"       },    {   evForward10min,         "evForward10min"        },    {   evIncVolume,            "evIncVolume"           },    {   evDecVolume,            "evDecVolume"           },    {   evMute,                 "evMute"                },    {   evIncAudioBufDelay,     "evIncAudioBufDelay"    },    {   evDecAudioBufDelay,     "evDecAudioBufDelay"    },    {   evPlaySwitchToPause,    "evPlaySwitchToPause"   },    {   evPauseSwitchToPlay,    "evPauseSwitchToPlay"   },    {   evNormalSize,           "evNormalSize"          },    {   evDoubleSize,           "evDoubleSize"          },    {   evSetMoviePosition,     "evSetMoviePosition"    },    {   evSetVolume,            "evSetVolume"           },    {   evSetBalance,           "evSetBalance"          },    {   evHelp,                 "evHelp"                },    {   evLoadSubtitle,         "evLoadSubtitle"        },    {   evPlayDVD,              "evPlayDVD"             },    {   evPlayVCD,              "evPlayVCD"             },    {   evSetURL,               "evSetURL"              },    {   evLoadAudioFile,        "evLoadAudioFile"       },    {   evDropSubtitle,         "evDropSubtitle"        },    {   evSetAspect,            "evSetAspect"           }};static const int evBoxs = sizeof(evNames) / sizeof(evName);static char *geteventname(int event){    int i;    for(i=0; i<evBoxs; i++)        if(evNames[i].msg == event)            return evNames[i].name;    return NULL;}static inline int get_sws_cpuflags(void){    return (gCpuCaps.hasMMX ? SWS_CPU_CAPS_MMX : 0) |           (gCpuCaps.hasMMX2 ? SWS_CPU_CAPS_MMX2 : 0) |           (gCpuCaps.has3DNow ? SWS_CPU_CAPS_3DNOW : 0);}/* reads a complete image as is into image buffer */static image *pngRead(skin_t *skin, unsigned char *fname){    int i;    txSample bmp;    image *bf;    char *filename = NULL;    FILE *fp;    if(!stricmp(fname, "NULL")) return 0;    /* find filename in order file file.png */    if(!(fp = fopen(fname, "rb")))    {        filename = calloc(1, strlen(skin->skindir) + strlen(fname) + 6);        sprintf(filename, "%s\\%s.png", skin->skindir, fname);        if(!(fp = fopen(filename, "rb")))        {            mp_msg(MSGT_GPLAYER, MSGL_ERR, "[png] cannot find image %s\n", filename);            free(filename);            return 0;        }    }    fclose(fp);    for (i=0; i < skin->imagecount; i++)        if(!strcmp(fname, skin->images[i]->name))        {#ifdef DEBUG            mp_msg(MSGT_GPLAYER, MSGL_DBG4, "[png] skinfile %s already exists\n", fname);#endif            free(filename);            return skin->images[i];        }    (skin->imagecount)++;    skin->images = realloc(skin->images, sizeof(image *) * skin->imagecount);    bf = skin->images[(skin->imagecount) - 1] = calloc(1, sizeof(image));    bf->name = strdup(fname);    bpRead(filename ? filename : fname, &bmp);    free(filename);    bf->width = bmp.Width; bf->height = bmp.Height;#ifdef DEBUG    mp_msg(MSGT_GPLAYER, MSGL_DBG4, "[png] loaded image %s\n", fname);    mp_msg(MSGT_GPLAYER, MSGL_DBG4, "[png] size: %dx%d bits: %d\n", bf->width, bf->height, BPP);    mp_msg(MSGT_GPLAYER, MSGL_DBG4, "[png] imagesize: %u\n", imgsize);#endif    bf->size = bf->width * bf->height * skin->desktopbpp / 8;    if (skin->desktopbpp == 32)      bf->data = bmp.Image;    else {      bf->data = malloc(bf->size);      rgb32tobgr32(bmp.Image, bmp.Image, bmp.ImageSize);      if(skin->desktopbpp == 16) rgb32tobgr15(bmp.Image, bf->data, bmp.ImageSize);      else if(skin->desktopbpp == 24) rgb32tobgr24(bmp.Image, bf->data, bmp.ImageSize);      free(bmp.Image);    }    return bf;}/* frees all skin images */static void freeimages(skin_t *skin){    unsigned int i;    for (i=0; i<skin->imagecount; i++)    {        if(skin->images && skin->images[i])        {            if(skin->images[i]->data) free(skin->images[i]->data);            if(skin->images[i]->name) free(skin->images[i]->name);            free(skin->images[i]);        }    }    free(skin->images);}#ifdef DEBUGvoid dumpwidgets(skin_t *skin){    unsigned int i;    for (i=0; i<skin->widgetcount; i++)        mp_msg(MSGT_GPLAYER, MSGL_V, "widget %p id %i\n", skin->widgets[i], skin->widgets[i]->id);}#endifstatic int counttonextchar(const char *s1, char c){    unsigned int i;    for (i=0; i<strlen(s1); i++)        if(s1[i] == c) return i;    return 0;}static char *findnextstring(char *temp, const char *desc, int *base){    int len = counttonextchar(*base + desc, ',');    memset(temp, 0, strlen(desc) + 1);    if(!len) len = strlen(desc);    memcpy(temp, *base + desc, len);    *base += (len+1);    return temp;}static void freeskin(skin_t *skin){    unsigned int i;    if(skin->skindir)    {        free(skin->skindir);        skin->skindir = NULL;    }    for (i=1; i<=skin->lastusedid; i++)        skin->removewidget(skin, i);    if(skin->widgets)    {        free(skin->widgets);        skin->widgets = NULL;    }    freeimages(skin);    for(i=0; i<skin->windowcount; i++)    {        if(skin->windows[i]->name)        {            free(skin->windows[i]->name);            skin->windows[i]->name = NULL;        }        free(skin->windows[i]);    }    free(skin->windows);    skin->windows = NULL;    for (i=0; i<skin->fontcount; i++)    {        unsigned int x;        if(skin->fonts[i]->name)        {            free(skin->fonts[i]->name);            skin->fonts[i]->name = NULL;        }        if(skin->fonts[i]->id)        {            free(skin->fonts[i]->id);            skin->fonts[i]->id = NULL;        }        for (x=0; x<skin->fonts[i]->charcount; x++)        {            free(skin->fonts[i]->chars[x]);            skin->fonts[i]->chars[x] = NULL;        }        if(skin->fonts[i]->chars)        {            free(skin->fonts[i]->chars);            skin->fonts[i]->chars = NULL;        }        free(skin->fonts[i]);        skin->fonts[i] = NULL;    }    free(skin->fonts);    skin->fonts = NULL;#ifdef DEBUG    mp_msg(MSGT_GPLAYER, MSGL_DBG4, "[SKIN FREE] skin freed\n");#endif    free(skin);    skin = NULL;}static void removewidget(skin_t *skin, int id){    unsigned int i;    unsigned int pos=0;    widget **temp = calloc(skin->widgetcount - 1, sizeof(widget *));    for (i=0; i<skin->widgetcount; i++)    {        if(skin->widgets[i]->id == id)        {            if(skin->widgets[i]->label)                free(skin->widgets[i]->label);            free(skin->widgets[i]);            skin->widgets[i] = NULL;        }        else        {            temp[pos] = skin->widgets[i];            pos++;        }    }    if (pos != i)    {        (skin->widgetcount)--;        free(skin->widgets);        skin->widgets = temp;#ifdef DEBUG        mp_msg(MSGT_GPLAYER, MSGL_DBG4, "removed widget %i\n", id);#endif        return;    }    free(temp);    mp_msg(MSGT_GPLAYER, MSGL_ERR, "widget %i not found\n", id);}static void addwidget(skin_t *skin, window *win, const char *desc){    widget *mywidget;    char *temp = calloc(1, strlen(desc) + 1);    (skin->widgetcount)++;    (skin->lastusedid)++;    skin->widgets = realloc(skin->widgets, sizeof(widget *) * skin->widgetcount);    mywidget = skin->widgets[(skin->widgetcount) - 1] = calloc(1, sizeof(widget));    mywidget->id = skin->lastusedid;    mywidget->window = win->type;    /* parse and fill widget specific info */    if(!strncmp(desc, "base", 4))    {        int base = counttonextchar(desc, '=') + 1;        mywidget->type = tyBase;        mywidget->bitmap[0] = pngRead(skin, findnextstring(temp, desc, &base));        mywidget->wx = mywidget->x = atoi(findnextstring(temp, desc, &base));        mywidget->wy = mywidget->y = atoi(findnextstring(temp, desc, &base));        mywidget->wwidth = mywidget->width = atoi(findnextstring(temp, desc, &base));        mywidget->wheight = mywidget->height = atoi(findnextstring(temp, desc, &base));        win->base = mywidget;#ifdef DEBUG        mp_msg(MSGT_GPLAYER, MSGL_DBG4, "[SKIN] [ITEM] [BASE] %s %i %i %i %i\n",              (mywidget->bitmap[0]) ? mywidget->bitmap[0]->name : NULL,               mywidget->x, mywidget->y, mywidget->width, mywidget->height);#endif    }    else if(!strncmp(desc, "button", 6))    {        int base = counttonextchar(desc, '=') + 1;        int i;        mywidget->type = tyButton;        mywidget->bitmap[0] = pngRead(skin, findnextstring(temp, desc, &base));        mywidget->wx = mywidget->x = atoi(findnextstring(temp, desc, &base));        mywidget->wy = mywidget->y = atoi(findnextstring(temp, desc, &base));        mywidget->wwidth = mywidget->width = atoi(findnextstring(temp, desc, &base));        mywidget->wheight = mywidget->height = atoi(findnextstring(temp, desc, &base));        findnextstring(temp, desc, &base);        /* Assign corresponding event to the widget */        mywidget->msg = evNone;        for (i=0; i<evBoxs; i++)        {            if(!strcmp(temp, evNames[i].name))            {                mywidget->msg = evNames[i].msg;                break;            }        }#ifdef DEBUG        mp_msg(MSGT_GPLAYER, MSGL_DBG4, "[SKIN] [ITEM] [BUTTON] %s %i %i %i %i msg %i\n",              (mywidget->bitmap[0]) ? mywidget->bitmap[0]->name : NULL,               mywidget->x, mywidget->y, mywidget->width, mywidget->height, mywidget->msg);#endif    }    else if(!strncmp(desc, "hpotmeter", 9) || !strncmp(desc, "vpotmeter", 9))    {        int base = counttonextchar(desc, '=') + 1;        int i;        /* hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message */        if(!strncmp(desc, "hpotmeter", 9)) mywidget->type = tyHpotmeter;        else mywidget->type = tyVpotmeter;        mywidget->bitmap[0] = pngRead(skin, findnextstring(temp, desc, &base));        mywidget->width = atoi(findnextstring(temp, desc, &base));        mywidget->height = atoi(findnextstring(temp, desc, &base));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丝袜自拍制服另类| 不卡一卡二卡三乱码免费网站| 不卡视频免费播放| 91精品国产91久久久久久一区二区| 国产精品亲子乱子伦xxxx裸| 蜜臀va亚洲va欧美va天堂| 91小视频免费看| 国产免费观看久久| 久久99精品久久久久久国产越南 | 亚洲v中文字幕| caoporm超碰国产精品| 欧美一区二区三区免费观看视频| 亚洲精品中文字幕在线观看| 国产精品一区二区三区99| 91精品国产色综合久久| 一级特黄大欧美久久久| 99国产精品国产精品久久| 久久精品人人做人人综合 | 蜜桃视频一区二区三区在线观看 | 久久精品国产免费看久久精品| 色女孩综合影院| 综合在线观看色| 国产91对白在线观看九色| 日韩你懂的电影在线观看| 亚洲国产精品影院| 91色乱码一区二区三区| 中文字幕第一区二区| 国产久卡久卡久卡久卡视频精品| 欧美成人性战久久| 蜜臀av在线播放一区二区三区| 欧美日韩国产一区二区三区地区| 一区二区三区中文字幕| 色乱码一区二区三区88| 亚洲欧洲精品一区二区三区不卡| 风流少妇一区二区| 国产清纯在线一区二区www| 国产剧情一区二区三区| 久久精品一区二区三区不卡牛牛| 紧缚奴在线一区二区三区| 欧美成人精品福利| 久草在线在线精品观看| 精品蜜桃在线看| 久久 天天综合| 久久夜色精品一区| 国产寡妇亲子伦一区二区| 国产女同性恋一区二区| 成人激情免费视频| 亚洲少妇中出一区| 91亚洲男人天堂| 亚洲永久免费av| 777午夜精品视频在线播放| 日韩电影一区二区三区| 日韩精品一区二区在线| 国产在线国偷精品免费看| 国产视频亚洲色图| av亚洲精华国产精华| 一区二区三区日韩精品| 欧美日韩一区二区电影| 日韩成人免费在线| 久久久久成人黄色影片| a在线播放不卡| 96av麻豆蜜桃一区二区| 亚洲一区二区综合| 欧美高清一级片在线| 裸体歌舞表演一区二区| 久久久久高清精品| 91在线丨porny丨国产| 午夜视频在线观看一区二区三区| 日韩欧美成人激情| 丁香激情综合国产| 亚洲黄一区二区三区| 91精品国产乱| 懂色av中文一区二区三区| 亚洲美女在线一区| 日韩欧美成人一区二区| 成人福利电影精品一区二区在线观看| 亚洲色图第一区| 日韩午夜激情免费电影| 成人毛片老司机大片| 亚洲福利视频三区| 久久综合九色综合97婷婷| 91伊人久久大香线蕉| 日本午夜一本久久久综合| 国产欧美精品国产国产专区| 欧美性感一区二区三区| 久久精品国产99国产| 日韩一区中文字幕| 91精品国产欧美一区二区18 | 一区二区三区资源| 日韩欧美一区二区免费| 成人动漫视频在线| 青青草国产精品97视觉盛宴| 国产精品午夜在线观看| 欧美精品tushy高清| 国产成人精品免费在线| 亚洲成人免费视频| 国产亚洲人成网站| 在线免费一区三区| 国产传媒欧美日韩成人| 亚洲成人激情社区| 亚洲国产精品传媒在线观看| 欧美色精品在线视频| 国产剧情一区二区| 三级欧美在线一区| 亚洲欧洲国产日本综合| 精品卡一卡二卡三卡四在线| 欧美在线一区二区三区| 国产成人精品亚洲午夜麻豆| 天天操天天综合网| 亚洲欧洲日韩女同| 久久这里只有精品6| 亚洲欧美激情视频在线观看一区二区三区| 91精品啪在线观看国产60岁| eeuss鲁片一区二区三区 | 亚洲高清一区二区三区| 欧美激情综合网| 欧美一级电影网站| 欧美亚洲国产bt| 国产99久久久久| 免费观看一级欧美片| 亚洲综合久久av| 国产精品青草久久| 久久女同性恋中文字幕| 91精品国产欧美一区二区成人| 色婷婷激情综合| 成人av手机在线观看| 韩国精品久久久| 午夜天堂影视香蕉久久| 亚洲欧美电影院| 国产精品电影一区二区| 26uuu亚洲综合色| 欧美一级二级三级蜜桃| 欧美三级日韩三级| 一本色道久久综合狠狠躁的推荐| 国产成人一区在线| 国产尤物一区二区| 另类调教123区| 蜜臀av性久久久久蜜臀aⅴ流畅| 一区二区视频在线| 亚洲欧洲日韩一区二区三区| 欧美韩国日本一区| 久久久久青草大香线综合精品| 日韩精品专区在线影院重磅| 日韩中文字幕区一区有砖一区 | 青青青伊人色综合久久| 亚洲综合在线五月| 亚洲欧美日韩国产一区二区三区| 中日韩免费视频中文字幕| 国产欧美日韩卡一| 久久精品视频一区| 国产女人aaa级久久久级| 国产亚洲欧美中文| 国产日韩欧美a| 中文一区一区三区高中清不卡| 26uuu国产在线精品一区二区| 精品久久一区二区| 久久综合九色综合97婷婷| 久久一区二区三区四区| 久久这里只有精品6| 久久久三级国产网站| 久久网站最新地址| 久久久www免费人成精品| 国产亚洲精品资源在线26u| 国产亚洲午夜高清国产拍精品| 国产人成一区二区三区影院| 日本一区二区三区高清不卡| 国产精品女上位| 亚洲欧美日韩一区| 亚洲一卡二卡三卡四卡五卡| 亚洲成人av免费| 日本美女一区二区三区视频| 麻豆一区二区在线| 韩国av一区二区三区在线观看| 国产精品18久久久| av一二三不卡影片| 在线免费观看不卡av| 欧美日韩午夜精品| 日韩三级高清在线| 久久久精品黄色| 国产精品毛片高清在线完整版| 亚洲欧洲中文日韩久久av乱码| 亚洲女与黑人做爰| 天天av天天翘天天综合网色鬼国产| 日韩国产欧美视频| 国产精品一级二级三级| av一本久道久久综合久久鬼色| 色偷偷88欧美精品久久久| 亚洲线精品一区二区三区 | 国产精品色噜噜| 亚洲裸体xxx| 日韩国产欧美视频| 国产精品中文字幕一区二区三区| 成人教育av在线| 欧美主播一区二区三区| 欧美tickling挠脚心丨vk| 欧美激情一区二区三区四区| 亚洲综合丁香婷婷六月香| 免费成人av资源网| 成人一级片网址| 欧美日韩一区二区三区不卡|