annotate gui/win32/skinload.c @ 36892:f50427ad9ff6

Internally map item 'potmeter' onto 'hpotmeter'. Former version of the GUI treated a potmeter very similar to a hpotmeter (the Win32 GUI still does so) and lots of skins are solely using potmeters instead of hpotmeters, although this doesn't make sense at all. The current version of the GUI is treating a potmeter differently, but in order to not break old skins, restore the old behaviour. For the X11/GTK GUI, a potmeter is now simply a hpotmeter with button=NULL and (button)width=(button)height=0. For the Win32 GUI (where skins unfortunately are handled a bit differently and things are more complicated) a potmeter is now a hpotmeter without button but (button)width=(widget)width and (button)height=(widget)height. Additionally, print a legacy information, because the item 'potmeter' is obsolete now and oughtn't be used any longer.
author ib
date Mon, 10 Mar 2014 17:32:29 +0000
parents c5ee0fc2ec75
children 87e6a09a07a7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1 /*
23079
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
2 * MPlayer GUI for Win32
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
3 * Copyright (C) 2003 Sascha Sommer <saschasommer@freenet.de>
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
4 * Copyright (C) 2006 Erik Augustson <erik_27can@yahoo.com>
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
5 * Copyright (C) 2006 Gianluigi Tiesi <sherpya@netfarm.it>
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
6 *
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
7 * This file is part of MPlayer.
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
8 *
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
9 * MPlayer is free software; you can redistribute it and/or modify
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
10 * it under the terms of the GNU General Public License as published by
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
12 * (at your option) any later version.
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
13 *
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
14 * MPlayer is distributed in the hope that it will be useful,
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
17 * GNU General Public License for more details.
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
18 *
26457
9ba6d4487292 Use standard GPL header.
diego
parents: 26372
diff changeset
19 * You should have received a copy of the GNU General Public License along
9ba6d4487292 Use standard GPL header.
diego
parents: 26372
diff changeset
20 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
9ba6d4487292 Use standard GPL header.
diego
parents: 26372
diff changeset
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23079
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
22 */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
23
33761
16286ee1fc71 Fix Win32 GUI compilation problems.
ib
parents: 33621
diff changeset
24 #include <string.h>
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
25 #include <stdlib.h>
23796
298fedea557d fopen is in stdio.h, so add this include.
reimar
parents: 23266
diff changeset
26 #include <stdio.h>
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
27 #include <inttypes.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
28 #include <windows.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
29
23091
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
30 #include "mp_msg.h"
36891
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
31 #include "help_mp.h"
23091
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
32 #include "cpudetect.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
33 #include "libswscale/swscale.h"
32833
c4891d10ddbb Adjust #include paths after the merge of libavcore into libavutil in FFmpeg.
diego
parents: 32537
diff changeset
34 #include "libavutil/imgutils.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
35 #include "gui.h"
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
36 #include "gui/util/mem.h"
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents: 32833
diff changeset
37 #include "gui/util/bitmap.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
38
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
39 #define MAX_LINESIZE 256
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
40
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
41 typedef struct
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
42 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
43 int msg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
44 char *name;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
45 } evName;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
46
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
47 static const evName evNames[] =
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
48 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
49 { evNone, "evNone" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
50 { evPlay, "evPlay" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
51 { evStop, "evStop" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
52 { evPause, "evPause" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
53 { evPrev, "evPrev" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
54 { evNext, "evNext" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
55 { evLoad, "evLoad" },
34317
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
56 { evLoadPlay, "evLoadPlay" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
57 { evLoadAudioFile, "evLoadAudioFile" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
58 { evLoadSubtitle, "evLoadSubtitle" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
59 { evDropSubtitle, "evDropSubtitle" },
34321
daebf766dea6 Cosmetic: Synchronize evPlaylist event and message names.
ib
parents: 34320
diff changeset
60 { evPlaylist, "evPlaylist" },
34387
0ba85cad4c7e Add audio CD playback support to the X11/GTK GUI.
ib
parents: 34326
diff changeset
61 { evPlayCD, "evPlayCD" },
34317
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
62 { evPlayVCD, "evPlayVCD" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
63 { evPlayDVD, "evPlayDVD" },
34324
58aaa0d8cc82 Replace evSetURL by evLoadURL for consistency.
ib
parents: 34322
diff changeset
64 { evLoadURL, "evSetURL" }, // legacy
58aaa0d8cc82 Replace evSetURL by evLoadURL for consistency.
ib
parents: 34322
diff changeset
65 { evLoadURL, "evLoadURL" },
36429
28ea255e40ce Add support for TV/DVB to the GUI.
ib
parents: 35707
diff changeset
66 { evPlayTV, "evPlayTV" },
34317
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
67 { evPlaySwitchToPause, "evPlaySwitchToPause" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
68 { evPauseSwitchToPlay, "evPauseSwitchToPlay" },
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
69 { evBackward10sec, "evBackward10sec" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
70 { evForward10sec, "evForward10sec" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
71 { evBackward1min, "evBackward1min" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
72 { evForward1min, "evForward1min" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
73 { evBackward10min, "evBackward10min" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
74 { evForward10min, "evForward10min" },
34317
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
75 { evSetMoviePosition, "evSetMoviePosition" },
34320
e3e77ce76c13 Add evHalfSize event to the Win32 GUI.
ib
parents: 34317
diff changeset
76 { evHalfSize, "evHalfSize" },
34317
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
77 { evDoubleSize, "evDoubleSize" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
78 { evFullScreen, "evFullScreen" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
79 { evNormalSize, "evNormalSize" },
34322
6075b19ad3ad Cosmetic: Add evSetAspect event to video events.
ib
parents: 34321
diff changeset
80 { evSetAspect, "evSetAspect" },
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
81 { evIncVolume, "evIncVolume" },
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
82 { evDecVolume, "evDecVolume" },
34317
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
83 { evSetVolume, "evSetVolume" },
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
84 { evMute, "evMute" },
34317
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
85 { evSetBalance, "evSetBalance" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
86 { evEqualizer, "evEqualizer" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
87 { evAbout, "evAbout" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
88 { evPreferences, "evPreferences" },
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
89 { evSkinBrowser, "evSkinBrowser" },
34458
1e84148527ab Add user event evMenu.
ib
parents: 34450
diff changeset
90 { evMenu, "evMenu" },
34317
e905a896243d Cosmetic: Rearrange and group GUI user events.
ib
parents: 34315
diff changeset
91 { evIconify, "evIconify" },
34326
d188b59d3fa4 Remove non-existing GUI user events.
ib
parents: 34324
diff changeset
92 { evExit, "evExit" }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
93 };
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
94
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
95 static const int evBoxs = sizeof(evNames) / sizeof(evName);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
96
36890
8f38fea0b91b Make linenumber global.
ib
parents: 36889
diff changeset
97 static int linenumber;
8f38fea0b91b Make linenumber global.
ib
parents: 36889
diff changeset
98
36891
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
99 /**
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
100 * @brief Print a legacy information on an entry.
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
101 *
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
102 * @param old identifier (and deprecated entry)
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
103 * @param data pointer to additional data necessary for checking and
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
104 * to print the information on @a old
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
105 */
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
106 static void skin_legacy (const char *old, const char *data)
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
107 {
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
108 const char *p;
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
109
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
110 if (strcmp(old, "fontid") == 0)
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
111 {
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
112 p = strchr(data, ',');
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
113
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
114 if (p) mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_GUI_MSG_SkinLegacy, linenumber, p, "font = fontfile");
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
115 }
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
116 else if (strcmp(old, "$l") == 0)
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
117 {
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
118 p = strstr(old, data);
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
119
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
120 if (p && (p == data || p[-1] != '$')) mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_GUI_MSG_SkinLegacy, linenumber, old, "$p");
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
121 }
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
122 else if (strcmp(old, "evSetURL") == 0 && strcmp(data, old) == 0)
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
123 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_GUI_MSG_SkinLegacy, linenumber, old, "evLoadURL");
36892
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
124 else if (strcmp(old, "sub") == 0 || strcmp(old, "potmeter") == 0)
36891
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
125 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_GUI_MSG_SkinLegacy, linenumber, old, data);
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
126 }
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
127
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
128 static char *geteventname(int event)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
129 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
130 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
131 for(i=0; i<evBoxs; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
132 if(evNames[i].msg == event)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
133 return evNames[i].name;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
134 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
135 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
136
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
137 /* reads a complete image as is into image buffer */
33784
72adb79f5a16 Change fname parameter to const in pngRead().
ib
parents: 33783
diff changeset
138 static image *pngRead(skin_t *skin, const char *fname)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
139 {
34996
ebcc17a3c165 Fix compiler warnings (comparison between signed and unsigned).
ib
parents: 34697
diff changeset
140 unsigned int i;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33047
diff changeset
141 guiImage bmp;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
142 image *bf;
23266
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
143 char *filename = NULL;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
144 FILE *fp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
145
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
146 if(!stricmp(fname, "NULL")) return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
147
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
148 /* find filename in order file file.png */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
149 if(!(fp = fopen(fname, "rb")))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
150 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
151 filename = calloc(1, strlen(skin->skindir) + strlen(fname) + 6);
34092
dbf5042ab255 Don't use the Windows style path separator character in Win32 GUI.
ib
parents: 33784
diff changeset
152 sprintf(filename, "%s/%s.png", skin->skindir, fname);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
153 if(!(fp = fopen(filename, "rb")))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
154 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
155 mp_msg(MSGT_GPLAYER, MSGL_ERR, "[png] cannot find image %s\n", filename);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
156 free(filename);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
157 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
158 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
159 }
23266
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
160 fclose(fp);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
161
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
162 for (i=0; i < skin->imagecount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
163 if(!strcmp(fname, skin->images[i]->name))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
164 {
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
165 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[png] skinfile %s already exists\n", fname);
23266
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
166 free(filename);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
167 return skin->images[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
168 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
169 (skin->imagecount)++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
170 skin->images = realloc(skin->images, sizeof(image *) * skin->imagecount);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
171 bf = skin->images[(skin->imagecount) - 1] = calloc(1, sizeof(image));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
172 bf->name = strdup(fname);
23266
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
173 bpRead(filename ? filename : fname, &bmp);
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
174 free(filename);
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
175 bf->width = bmp.Width; bf->height = bmp.Height;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
176
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
177 bf->size = bf->width * bf->height * skin->desktopbpp / 8;
23266
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
178 if (skin->desktopbpp == 32)
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
179 bf->data = bmp.Image;
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
180 else {
32028
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
181 const uint8_t *src[4] = { bmp.Image, NULL, NULL, NULL};
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
182 int src_stride[4] = { 4 * bmp.Width, 0, 0, 0 };
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
183 uint8_t *dst[4] = { NULL, NULL, NULL, NULL };
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
184 int dst_stride[4];
35707
4ba6b8d3197e Replace PixelFormat and PIX_FMT_FOO by their AV_-prefixed counterparts.
diego
parents: 35501
diff changeset
185 enum AVPixelFormat out_pix_fmt = PIX_FMT_NONE;
32028
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
186 struct SwsContext *sws;
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
187 if (skin->desktopbpp == 16) out_pix_fmt = PIX_FMT_RGB555;
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
188 else if (skin->desktopbpp == 24) out_pix_fmt = PIX_FMT_RGB24;
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
189 av_image_fill_linesizes(dst_stride, out_pix_fmt, bmp.Width);
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
190 sws = sws_getContext(bmp.Width, bmp.Height, PIX_FMT_RGB32,
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
191 bmp.Width, bmp.Height, out_pix_fmt,
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
192 SWS_POINT, NULL, NULL, NULL);
23266
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
193 bf->data = malloc(bf->size);
32028
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
194 dst[0] = bf->data;
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
195 sws_scale(sws, src, src_stride, 0, bmp.Height, dst, dst_stride);
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 26457
diff changeset
196 sws_freeContext(sws);
23266
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
197 free(bmp.Image);
6cd7f1c23d90 Reuse linux code for reading png images for windows Gui,
reimar
parents: 23091
diff changeset
198 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
199 return bf;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
200 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
201
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
202 /* frees all skin images */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
203 static void freeimages(skin_t *skin)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
204 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
205 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
206 for (i=0; i<skin->imagecount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
207 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
208 if(skin->images && skin->images[i])
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
209 {
32537
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 32028
diff changeset
210 free(skin->images[i]->data);
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 32028
diff changeset
211 free(skin->images[i]->name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
212 free(skin->images[i]);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
213 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
214 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
215 free(skin->images);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
216 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
217
33621
18b47d32b0d0 win32 gui: Mark debug function only used within the file as static.
diego
parents: 33620
diff changeset
218 static void dumpwidgets(skin_t *skin)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
219 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
220 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
221 for (i=0; i<skin->widgetcount; i++)
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
222 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "widget %p id %i\n", skin->widgets[i], skin->widgets[i]->id);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
223 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
224
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
225 static int counttonextchar(const char *s1, char c)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
226 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
227 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
228 for (i=0; i<strlen(s1); i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
229 if(s1[i] == c) return i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
230 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
231 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
232
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
233 static char *findnextstring(char *temp, const char *desc, int *base)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
234 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
235 int len = counttonextchar(*base + desc, ',');
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
236 memset(temp, 0, strlen(desc) + 1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
237 if(!len) len = strlen(desc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
238 memcpy(temp, *base + desc, len);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
239 *base += (len+1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
240 return temp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
241 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
242
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
243 static void freeskin(skin_t *skin)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
244 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
245 unsigned int i;
32537
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 32028
diff changeset
246
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
247 nfree(skin->skindir);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
248
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
249 for (i=1; i<=skin->lastusedid; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
250 skin->removewidget(skin, i);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
251
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
252 nfree(skin->widgets);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
253
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
254 freeimages(skin);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
255 for(i=0; i<skin->windowcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
256 {
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
257 nfree(skin->windows[i]->name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
258 free(skin->windows[i]);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
259 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
260
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
261 nfree(skin->windows);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
262
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
263 for (i=0; i<skin->fontcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
264 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
265 unsigned int x;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
266
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
267 nfree(skin->fonts[i]->name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
268
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
269 for (x=0; x<skin->fonts[i]->charcount; x++)
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
270 nfree(skin->fonts[i]->chars[x]);
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
271
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
272 nfree(skin->fonts[i]->chars);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
273
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
274 nfree(skin->fonts[i]);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
275 }
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
276 nfree(skin->fonts);
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
277 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN FREE] skin freed\n");
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
278 nfree(skin);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
279 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
280
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
281 static void removewidget(skin_t *skin, int id)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
282 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
283 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
284 unsigned int pos=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
285 widget **temp = calloc(skin->widgetcount - 1, sizeof(widget *));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
286
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
287 for (i=0; i<skin->widgetcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
288 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
289 if(skin->widgets[i]->id == id)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
290 {
32537
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 32028
diff changeset
291 free(skin->widgets[i]->label);
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
292 nfree(skin->widgets[i]);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
293 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
294 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
295 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
296 temp[pos] = skin->widgets[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
297 pos++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
298 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
299 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
300 if (pos != i)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
301 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
302 (skin->widgetcount)--;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
303 free(skin->widgets);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
304 skin->widgets = temp;
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
305 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "removed widget %i\n", id);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
306 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
307 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
308 free(temp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
309 mp_msg(MSGT_GPLAYER, MSGL_ERR, "widget %i not found\n", id);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
310 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
311
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
312 static void addwidget(skin_t *skin, window *win, const char *desc)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
313 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
314 widget *mywidget;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
315 char *temp = calloc(1, strlen(desc) + 1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
316 (skin->widgetcount)++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
317 (skin->lastusedid)++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
318 skin->widgets = realloc(skin->widgets, sizeof(widget *) * skin->widgetcount);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
319 mywidget = skin->widgets[(skin->widgetcount) - 1] = calloc(1, sizeof(widget));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
320 mywidget->id = skin->lastusedid;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
321 mywidget->window = win->type;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
322 /* parse and fill widget specific info */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
323 if(!strncmp(desc, "base", 4))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
324 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
325 int base = counttonextchar(desc, '=') + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
326 mywidget->type = tyBase;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
327 mywidget->bitmap[0] = pngRead(skin, findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
328 mywidget->wx = mywidget->x = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
329 mywidget->wy = mywidget->y = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
330 mywidget->wwidth = mywidget->width = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
331 mywidget->wheight = mywidget->height = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
332 win->base = mywidget;
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
333 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [ITEM] [BASE] %s %i %i %i %i\n",
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
334 (mywidget->bitmap[0]) ? mywidget->bitmap[0]->name : NULL,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
335 mywidget->x, mywidget->y, mywidget->width, mywidget->height);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
336 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
337 else if(!strncmp(desc, "button", 6))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
338 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
339 int base = counttonextchar(desc, '=') + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
340 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
341 mywidget->type = tyButton;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
342 mywidget->bitmap[0] = pngRead(skin, findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
343 mywidget->wx = mywidget->x = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
344 mywidget->wy = mywidget->y = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
345 mywidget->wwidth = mywidget->width = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
346 mywidget->wheight = mywidget->height = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
347 findnextstring(temp, desc, &base);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
348
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
349 /* Assign corresponding event to the widget */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
350 mywidget->msg = evNone;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
351 for (i=0; i<evBoxs; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
352 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
353 if(!strcmp(temp, evNames[i].name))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
354 {
36891
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
355 // legacy
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
356 skin_legacy("evSetURL", temp);
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
357
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
358 mywidget->msg = evNames[i].msg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
359 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
360 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
361 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
362
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
363 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [ITEM] [BUTTON] %s %i %i %i %i msg %i\n",
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
364 (mywidget->bitmap[0]) ? mywidget->bitmap[0]->name : NULL,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
365 mywidget->x, mywidget->y, mywidget->width, mywidget->height, mywidget->msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
366 }
36892
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
367 else if(!strncmp(desc, "hpotmeter", 9) || !strncmp(desc, "vpotmeter", 9) || /* legacy */ !strncmp(desc, "potmeter", 8))
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
368 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
369 int base = counttonextchar(desc, '=') + 1;
36892
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
370 int i = 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
371 /* hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message */
36892
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
372 if(!strncmp(desc, "vpotmeter", 9)) mywidget->type = tyVpotmeter;
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
373 else mywidget->type = tyHpotmeter;
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
374 if (*desc != 'p')
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
375 {
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
376 mywidget->bitmap[i++] = pngRead(skin, findnextstring(temp, desc, &base));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
377 mywidget->width = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
378 mywidget->height = atoi(findnextstring(temp, desc, &base));
36892
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
379 }
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
380 mywidget->bitmap[i] = pngRead(skin, findnextstring(temp, desc, &base));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
381 mywidget->phases = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
382 mywidget->value = atof(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
383 mywidget->x = mywidget->wx = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
384 mywidget->y = mywidget->wy = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
385 mywidget->wwidth = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
386 mywidget->wheight = atoi(findnextstring(temp, desc, &base));
36892
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
387 if (*desc == 'p')
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
388 {
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
389 // legacy
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
390 skin_legacy("potmeter", "hpotmeter");
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
391
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
392 mywidget->width = mywidget->wwidth;
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
393 mywidget->height = mywidget->wheight;
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36891
diff changeset
394 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
395 findnextstring(temp, desc, &base);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
396 mywidget->msg = evNone;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
397 for (i=0; i<evBoxs; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
398 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
399 if(!strcmp(temp, evNames[i].name))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
400 {
36891
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
401 // legacy
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
402 skin_legacy("evSetURL", temp);
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
403
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
404 mywidget->msg = evNames[i].msg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
405 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
406 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
407 }
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
408 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [ITEM] %s %s %i %i %s %i %f %i %i %i %i msg %i\n",
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
409 (mywidget->type == tyHpotmeter) ? "[HPOTMETER]" : "[VPOTMETER]",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
410 (mywidget->bitmap[0]) ? mywidget->bitmap[0]->name : NULL,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
411 mywidget->width, mywidget->height,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
412 (mywidget->bitmap[1]) ? mywidget->bitmap[1]->name : NULL,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
413 mywidget->phases, mywidget->value,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
414 mywidget->wx, mywidget->wy, mywidget->wwidth, mywidget->wwidth,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
415 mywidget->msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
416 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
417 else if(!strncmp(desc, "potmeter", 8))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
418 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
419 int base = counttonextchar(desc, '=') + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
420 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
421 /* potmeter = phases, numphases, default, X, Y, width, height, message */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
422 mywidget->type = tyPotmeter;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
423 mywidget->bitmap[0] = pngRead(skin, findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
424 mywidget->phases = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
425 mywidget->value = atof(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
426 mywidget->wx = mywidget->x = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
427 mywidget->wy = mywidget->y = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
428 mywidget->wwidth = mywidget->width = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
429 mywidget->wheight = mywidget->height = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
430 findnextstring(temp, desc, &base);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
431 mywidget->msg = evNone;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
432 for (i=0; i<evBoxs; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
433 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
434 if(!strcmp(temp, evNames[i].name))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
435 {
36891
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
436 // legacy
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
437 skin_legacy("evSetURL", temp);
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
438
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
439 mywidget->msg=evNames[i].msg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
440 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
441 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
442 }
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
443 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [ITEM] [POTMETER] %s %i %i %i %f %i %i msg %i\n",
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
444 (mywidget->bitmap[0]) ? mywidget->bitmap[0]->name : NULL,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
445 mywidget->width, mywidget->height,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
446 mywidget->phases, mywidget->value,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
447 mywidget->x, mywidget->y,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
448 mywidget->msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
449 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
450 else if(!strncmp(desc, "menu", 4))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
451 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
452 int base = counttonextchar(desc, '=') + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
453 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
454 mywidget->type = tyMenu;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
455 mywidget->wx=atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
456 mywidget->x=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
457 mywidget->wy=mywidget->y=atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
458 mywidget->wwidth=mywidget->width=atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
459 mywidget->wheight=mywidget->height=atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
460 findnextstring(temp, desc, &base);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
461 mywidget->msg = evNone;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
462 for (i=0; i<evBoxs; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
463 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
464 if(!strcmp(temp, evNames[i].name))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
465 {
36891
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
466 // legacy
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
467 skin_legacy("evSetURL", temp);
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
468
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
469 mywidget->msg = evNames[i].msg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
470 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
471 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
472 }
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
473 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [ITEM] [MENU] %i %i %i %i msg %i\n",
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
474 mywidget->x, mywidget->y, mywidget->width, mywidget->height, mywidget->msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
475 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
476 else if(!strncmp(desc, "selected", 8))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
477 {
36840
511047e8e0a2 Remove unnecessary casts.
ib
parents: 36429
diff changeset
478 win->base->bitmap[1] = pngRead(skin, desc + 9);
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
479 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [ITEM] [BASE] added image %s\n", win->base->bitmap[1]->name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
480 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
481 else if(!strncmp(desc, "slabel",6))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
482 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
483 int base = counttonextchar(desc, '=') + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
484 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
485 mywidget->type = tySlabel;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
486 mywidget->wx = mywidget->x = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
487 mywidget->wy = mywidget->y = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
488 findnextstring(temp, desc, &base);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
489 mywidget->font = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
490 for (i=0; i<skin->fontcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
491 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
492 if(!strcmp(temp, skin->fonts[i]->name))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
493 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
494 mywidget->font = skin->fonts[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
495 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
496 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
497 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
498 mywidget->label = strdup(findnextstring(temp, desc, &base));
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
499 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [ITEM] [SLABEL] %i %i %s %s\n",
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
500 mywidget->x, mywidget->y, mywidget->font->name, mywidget->label);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
501 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
502 else if(!strncmp(desc, "dlabel", 6))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
503 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
504 int base = counttonextchar(desc, '=') + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
505 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
506 mywidget->type = tyDlabel;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
507 mywidget->wx = mywidget->x = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
508 mywidget->wy = mywidget->y = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
509 mywidget->length = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
510 mywidget->align = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
511 findnextstring(temp, desc, &base);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
512 mywidget->font = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
513 for (i=0; i<skin->fontcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
514 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
515 if(!strcmp(temp, skin->fonts[i]->name))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
516 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
517 mywidget->font=skin->fonts[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
518 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
519 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
520 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
521 mywidget->label=strdup(findnextstring(temp, desc, &base));
36891
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
522
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
523 // legacy
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
524 skin_legacy("$l", mywidget->label);
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
525
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
526 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [ITEM] [DLABEL] %i %i %i %i %s \"%s\"\n",
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
527 mywidget->x, mywidget->y, mywidget->length, mywidget->align, mywidget->font->name, mywidget->label);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
528 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
529 free(temp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
530 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
531
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
532 static void loadfonts(skin_t* skin)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
533 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
534 unsigned int x;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
535 for (x=0; x<skin->fontcount; x++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
536 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
537 FILE *fp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
538 char *filename;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
539 char *tmp = calloc(1, MAX_LINESIZE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
540 char *desc = calloc(1, MAX_LINESIZE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
541 filename = calloc(1, strlen(skin->skindir) + strlen(skin->fonts[x]->name) + 6);
34092
dbf5042ab255 Don't use the Windows style path separator character in Win32 GUI.
ib
parents: 33784
diff changeset
542 sprintf(filename, "%s/%s.fnt", skin->skindir, skin->fonts[x]->name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
543 if(!(fp = fopen(filename,"rb")))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
544 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
545 mp_msg(MSGT_GPLAYER, MSGL_ERR, "[FONT LOAD] Font not found \"%s\"\n", skin->fonts[x]->name);
33783
a450fade6a83 Fix memory leaks in the Win32 GUI.
ib
parents: 33770
diff changeset
546 free(tmp);
a450fade6a83 Fix memory leaks in the Win32 GUI.
ib
parents: 33770
diff changeset
547 free(desc);
a450fade6a83 Fix memory leaks in the Win32 GUI.
ib
parents: 33770
diff changeset
548 free(filename);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
549 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
550 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
551 while(!feof(fp))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
552 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
553 int pos = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
554 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
555 fgets(tmp, MAX_LINESIZE, fp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
556 memset(desc, 0, MAX_LINESIZE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
557 for (i=0; i<strlen(tmp); i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
558 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
559 /* remove spaces and linebreaks */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
560 if((tmp[i] == ' ') || (tmp[i] == '\n') || (tmp[i] == '\r')) continue;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
561 /* remove comments */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
562 if((tmp[i] == ';') && ((i < 1) || (tmp[i-1] != '\"')))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
563 {
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
564 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[FONT LOAD] Comment: %s", tmp + i + 1);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
565 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
566 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
567 desc[pos] = tmp[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
568 pos++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
569 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
570 if(!strlen(desc)) continue;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
571 /* now we have "readable" output -> parse it */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
572 if(!strncmp(desc, "image", 5))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
573 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
574 skin->fonts[x]->image = pngRead(skin, desc + 6);
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
575 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[FONT] [IMAGE] \"%s\"\n", desc + 6);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
576 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
577 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
578 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
579 int base = 4;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
580 if(*desc != '"') break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
581 if(*(desc + 1) == 0) break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
582 (skin->fonts[x]->charcount)++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
583 skin->fonts[x]->chars = realloc(skin->fonts[x]->chars, sizeof(char_t *) *skin->fonts[x]->charcount);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
584 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]=calloc(1, sizeof(char_t));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
585 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]->c = ((*(desc + 1) == '"') && (*(desc + 2) != '"')) ? ' ': *(desc + 1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
586 if((*(desc + 1) == '"') && (*(desc + 2) != '"')) base = 3;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
587 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]->x = atoi(findnextstring(tmp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
588 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]->y = atoi(findnextstring(tmp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
589 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]->width = atoi(findnextstring(tmp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
590 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]->height = atoi(findnextstring(tmp, desc, &base));
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
591 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[FONT] [CHAR] %c %i %i %i %i\n",
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
592 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]->c,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
593 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]->x,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
594 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]->y,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
595 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]->width,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
596 skin->fonts[x]->chars[skin->fonts[x]->charcount - 1]->height);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
597 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
598 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
599 free(desc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
600 free(filename);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
601 free(tmp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
602 fclose(fp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
603 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
604 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
605
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
606 skin_t* loadskin(char* skindir, int desktopbpp)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
607 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
608 FILE *fp;
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 34998
diff changeset
609 int reachedendofwindow = FALSE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
610 skin_t *skin = calloc(1, sizeof(skin_t));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
611 char *filename;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
612 char *tmp = calloc(1, MAX_LINESIZE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
613 char *desc = calloc(1, MAX_LINESIZE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
614 window* mywindow = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
615
36890
8f38fea0b91b Make linenumber global.
ib
parents: 36889
diff changeset
616 linenumber = 0;
8f38fea0b91b Make linenumber global.
ib
parents: 36889
diff changeset
617
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
618 /* setup funcs */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
619 skin->freeskin = freeskin;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
620 skin->pngRead = pngRead;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
621 skin->addwidget = addwidget;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
622 skin->removewidget = removewidget;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
623 skin->geteventname = geteventname;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
624 skin->desktopbpp = desktopbpp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
625 skin->skindir = strdup(skindir);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
626
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
627 filename = calloc(1, strlen(skin->skindir) + strlen("skin") + 2);
34092
dbf5042ab255 Don't use the Windows style path separator character in Win32 GUI.
ib
parents: 33784
diff changeset
628 sprintf(filename, "%s/skin", skin->skindir);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
629 if(!(fp = fopen(filename, "rb")))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
630 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
631 mp_msg(MSGT_GPLAYER, MSGL_FATAL, "[SKIN LOAD] Skin \"%s\" not found\n", skindir);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
632 skin->freeskin(skin);
33783
a450fade6a83 Fix memory leaks in the Win32 GUI.
ib
parents: 33770
diff changeset
633 free(tmp);
a450fade6a83 Fix memory leaks in the Win32 GUI.
ib
parents: 33770
diff changeset
634 free(desc);
a450fade6a83 Fix memory leaks in the Win32 GUI.
ib
parents: 33770
diff changeset
635 free(filename);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
636 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
637 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
638
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
639 while(!feof(fp))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
640 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
641 int pos = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
642 unsigned int i;
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 34998
diff changeset
643 int insidequote = FALSE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
644 fgets(tmp, MAX_LINESIZE, fp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
645 linenumber++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
646 memset(desc, 0, MAX_LINESIZE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
647 for (i=0; i<strlen(tmp); i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
648 {
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 34998
diff changeset
649 if((tmp[i] == '"') && !insidequote) { insidequote=TRUE; continue; }
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 34998
diff changeset
650 else if((tmp[i] == '"') && insidequote) { insidequote=FALSE ; continue; }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
651 /* remove spaces and linebreaks */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
652 if((!insidequote && (tmp[i] == ' ')) || (tmp[i] == '\n') || (tmp[i] == '\r')) continue;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
653 /* remove comments */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
654 else if(tmp[i] == ';')
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
655 {
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
656 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN LOAD] Comment: %s", tmp + i + 1);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
657 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
658 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
659 desc[pos] = tmp[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
660 pos++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
661 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
662
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
663 if(!strlen(desc)) continue;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
664 /* now we have "readable" output -> parse it */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
665 /* parse window specific info */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
666 if(!strncmp(desc, "section", 7))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
667 {
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
668 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [SECTION] \"%s\"\n", desc + 8);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
669 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
670 else if(!strncmp(desc, "window", 6))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
671 {
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
672 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [WINDOW] \"%s\"\n", desc + 7);
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 34998
diff changeset
673 reachedendofwindow = FALSE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
674 (skin->windowcount)++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
675 skin->windows = realloc(skin->windows, sizeof(window *) * skin->windowcount);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
676 mywindow = skin->windows[(skin->windowcount) - 1] = calloc(1, sizeof(window));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
677 mywindow->name = strdup(desc + 7);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
678 if(!strncmp(desc + 7, "main", 4)) mywindow->type = wiMain;
36885
1f4661a5495e Cosmetic: Relocate comment.
ib
parents: 36840
diff changeset
679 else if(!strncmp(desc+7, "video", 5) || /* legacy */ !strncmp(desc+7, "sub", 3))
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
680 {
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34458
diff changeset
681 mywindow->type = wiVideo;
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 34998
diff changeset
682 mywindow->decoration = TRUE;
36891
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
683 // legacy
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
684 if (desc[7] == 's') skin_legacy("sub", "video");
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
685 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
686 else if(!strncmp(desc + 7, "menu", 4)) mywindow->type = wiMenu;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
687 else if(!strncmp(desc + 7, "playbar", 7)) mywindow->type = wiPlaybar;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
688 else mp_msg(MSGT_GPLAYER, MSGL_V, "[SKIN] warning found unknown windowtype");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
689 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
690 else if(!strncmp(desc, "decoration", 10) && !strncmp(desc + 11, "enable", 6))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
691 {
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 34998
diff changeset
692 mywindow->decoration = TRUE;
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
693 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [DECORATION] enabled decoration for window \"%s\"\n", mywindow->name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
694 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
695 else if(!strncmp(desc, "background", 10))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
696 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
697 int base = counttonextchar(desc, '=') + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
698 char temp[MAX_LINESIZE];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
699 mywindow->backgroundcolor[0] = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
700 mywindow->backgroundcolor[1] = atoi(findnextstring(temp, desc, &base));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
701 mywindow->backgroundcolor[2] = atoi(findnextstring(temp, desc, &base));
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
702 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [BACKGROUND] window \"%s\" has backgroundcolor (%i,%i,%i)\n", mywindow->name,
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
703 mywindow->backgroundcolor[0],
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
704 mywindow->backgroundcolor[1],
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
705 mywindow->backgroundcolor[2]);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
706 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
707 else if(!strncmp(desc, "end", 3))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
708 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
709 if(reachedendofwindow)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
710 {
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
711 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [END] of section\n");
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
712 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
713 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
714 {
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 34998
diff changeset
715 reachedendofwindow = TRUE;
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
716 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [END] of window \"%s\"\n", mywindow->name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
717 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
718 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
719 else if(!strncmp(desc, "font", 4))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
720 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
721 int id = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
722 char temp[MAX_LINESIZE];
36888
47c6c14f386b Cosmetic: Adjust indent.
ib
parents: 36887
diff changeset
723 int base = counttonextchar(desc, '=') + 1;
47c6c14f386b Cosmetic: Adjust indent.
ib
parents: 36887
diff changeset
724 findnextstring(temp, desc, &base);
47c6c14f386b Cosmetic: Adjust indent.
ib
parents: 36887
diff changeset
725 id = skin->fontcount;
47c6c14f386b Cosmetic: Adjust indent.
ib
parents: 36887
diff changeset
726 (skin->fontcount)++;
47c6c14f386b Cosmetic: Adjust indent.
ib
parents: 36887
diff changeset
727 skin->fonts = realloc(skin->fonts, sizeof(font_t *) * skin->fontcount);
47c6c14f386b Cosmetic: Adjust indent.
ib
parents: 36887
diff changeset
728 skin->fonts[id]=calloc(1, sizeof(font_t));
47c6c14f386b Cosmetic: Adjust indent.
ib
parents: 36887
diff changeset
729 skin->fonts[id]->name = strdup(temp);
36891
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
730
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
731 // legacy
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
732 skin_legacy("fontid", desc);
c5ee0fc2ec75 Print an information on deprecated skin config file entries.
ib
parents: 36890
diff changeset
733
36887
2b3ede5f8424 Remove needless fontid from Win32 GUI.
ib
parents: 36885
diff changeset
734 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [FONT] name \"%s\"\n", skin->fonts[id]->name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
735 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
736 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
737 skin->addwidget(skin, mywindow, desc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
738 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
739
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
740 free(desc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
741 free(filename);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
742 free(tmp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
743 fclose(fp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
744 loadfonts(skin);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
745 mp_msg(MSGT_GPLAYER, MSGL_V, "[SKIN LOAD] loaded skin \"%s\"\n", skin->skindir);
34450
74622554a386 Remove all #ifdef MP_DEBUG from Win32 GUI code.
ib
parents: 34387
diff changeset
746 dumpwidgets(skin);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
747 return skin;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
748 }