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

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

?? skinload.c

?? 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));

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91富婆露脸刺激对白| 亚洲人妖av一区二区| 国产精品自在在线| 欧美不卡一二三| av电影一区二区| 日一区二区三区| 欧美国产亚洲另类动漫| 日本精品一区二区三区四区的功能| 亚洲成人www| 久久综合五月天婷婷伊人| 91一区二区三区在线观看| 人禽交欧美网站| 亚洲欧美影音先锋| 精品国产伦一区二区三区免费 | 亚洲免费观看在线观看| 91精品国产综合久久精品| 国产福利视频一区二区三区| 亚洲午夜成aⅴ人片| 国产日韩精品一区二区三区| 欧美精品黑人性xxxx| 狠狠狠色丁香婷婷综合激情 | 欧美精品aⅴ在线视频| 国产成人精品免费在线| 五月天一区二区| 中文字幕第一区第二区| 欧美一区二区在线视频| 国产成人精品www牛牛影视| 亚洲精品免费播放| 国产欧美日韩精品a在线观看| 91精品国产综合久久蜜臀| av一区二区三区四区| 国产一区二区三区在线观看精品| 亚洲一区二区偷拍精品| 欧美国产亚洲另类动漫| 制服丝袜激情欧洲亚洲| 色哟哟精品一区| 久久99精品久久久久久久久久久久| 一二三区精品福利视频| 久久久久88色偷偷免费| 日韩精品一区二区三区在线播放 | 91亚洲大成网污www| 国产精品一二三| 国产在线精品免费| 久久精品国产一区二区三区免费看| 亚洲特黄一级片| 国产精品人妖ts系列视频| 久久这里只有精品首页| 91精选在线观看| 亚洲高清不卡在线| 亚洲欧美国产高清| 2020国产精品久久精品美国| 91福利国产精品| 色综合天天综合| 色综合久久九月婷婷色综合| 97久久超碰国产精品电影| 国产99久久久国产精品| 国产精品1区二区.| 国产福利一区二区| 大白屁股一区二区视频| 国产不卡在线视频| 成人av网址在线| 91视频一区二区三区| 色综合天天做天天爱| 91丝袜呻吟高潮美腿白嫩在线观看| 99久久久无码国产精品| 波多野结衣在线aⅴ中文字幕不卡| 成人网在线播放| 91小宝寻花一区二区三区| 色哟哟欧美精品| 在线不卡一区二区| 91精选在线观看| 久久免费美女视频| 亚洲精品一区二区三区精华液| 久久久另类综合| 国产精品沙发午睡系列990531| 国产精品久久久久影院色老大 | 亚洲成av人片在线观看无码| 亚洲精品日韩综合观看成人91| 亚洲精品一二三四区| 亚洲一区自拍偷拍| ...中文天堂在线一区| 亚洲一区二区免费视频| 午夜精品久久久久久不卡8050| 日韩综合小视频| 精品亚洲成a人在线观看| 成人免费视频视频| 欧美三级日韩在线| 日韩久久久精品| 国产精品久久久久久久久免费丝袜| 国产欧美综合色| 亚洲一区二区在线免费看| 精品在线你懂的| 波多野洁衣一区| 欧美一区二区三区免费在线看 | 国产精品女人毛片| 午夜欧美2019年伦理| 国产精品一级片在线观看| 色综合欧美在线视频区| 欧美一区二区三区免费在线看| 国产亚洲成aⅴ人片在线观看| 一区二区三区四区国产精品| 免费成人在线视频观看| 99久久免费国产| 日韩一区二区三| 亚洲啪啪综合av一区二区三区| 亚洲第一电影网| 国产成人免费高清| 欧美色成人综合| 国产亚洲成av人在线观看导航| 亚洲综合另类小说| 韩国三级在线一区| 欧美亚洲自拍偷拍| 国产精品久久久久一区二区三区 | 国产不卡视频一区二区三区| 色婷婷国产精品| 久久久久久电影| 日韩av在线发布| 色综合久久综合| 久久蜜臀精品av| 日韩福利电影在线观看| 色婷婷香蕉在线一区二区| 国产精品欧美一级免费| 国产精品一二一区| 久久久青草青青国产亚洲免观| 青娱乐精品视频| 91精品国产综合久久精品性色| 亚洲一卡二卡三卡四卡五卡| 91社区在线播放| 日韩伦理av电影| 91蝌蚪porny| 亚洲精品视频免费观看| 91蜜桃网址入口| 亚洲精品视频一区| 欧美性猛交xxxxxxxx| 一区二区三区四区中文字幕| 91精品91久久久中77777| 亚洲卡通欧美制服中文| 色天使色偷偷av一区二区| 亚洲午夜在线视频| 欧美日韩一区三区| 男男gaygay亚洲| 久久只精品国产| 波波电影院一区二区三区| 亚洲免费资源在线播放| 色久综合一二码| 日韩国产一区二| 久久人人爽爽爽人久久久| 国产成人免费高清| 中文字幕中文在线不卡住| 91蜜桃视频在线| 日韩影院免费视频| 精品国产91洋老外米糕| 国产一区二区导航在线播放| 日本一区二区电影| 日本高清不卡aⅴ免费网站| 亚洲福利一二三区| 日韩精品一区在线观看| 风间由美一区二区三区在线观看| 国产精品卡一卡二卡三| 在线观看欧美黄色| 免费黄网站欧美| 国产日产欧美精品一区二区三区| 成人av影院在线| 视频在线观看国产精品| 久久亚洲一级片| 99re热这里只有精品视频| 亚洲图片一区二区| 欧美成人精精品一区二区频| 成人性视频免费网站| 亚洲制服丝袜av| 欧美一级淫片007| 国产麻豆精品在线| 亚洲激情欧美激情| 精品少妇一区二区三区在线播放| 懂色av一区二区夜夜嗨| 亚洲黄一区二区三区| 日韩丝袜情趣美女图片| 99精品视频一区| 蜜桃视频第一区免费观看| 国产精品看片你懂得| 欧美一区二区视频在线观看2020| 国产综合色在线视频区| 亚洲精品第1页| 精品处破学生在线二十三| 97国产一区二区| 久久www免费人成看片高清| 亚洲女女做受ⅹxx高潮| 精品国产自在久精品国产| 一本大道久久精品懂色aⅴ | 国产成人在线网站| 亚洲第一在线综合网站| 国产精品美女一区二区| 欧美一区二区三区四区视频| 99精品欧美一区二区三区综合在线| 蜜臀av亚洲一区中文字幕| 一区二区不卡在线视频 午夜欧美不卡在| 日韩欧美高清dvd碟片| 在线视频欧美区| www.66久久| 国产suv精品一区二区883|