# HG changeset patch # User ib # Date 1395059386 0 # Node ID 40ad45360c8a58a99e7768392133d55b56bc079d # Parent 5c297b4d616dc1f1877e8c690b2fe5ace7377b57 Replace old item 'potmeter' by new item 'pimage'. Recent versions of the X11/GTK GUI didn't allow to control a potmeter, because that didn't seem to make any sense. In order to get rid of the confusing potmeter that doesn't distinguish from a hpotmeter and in order to allow the more useful behaviour recent versions of the X11/GTK GUI have been utilized (and because we're still supporting item 'potmeter' for reasons of compatibility with old skins), introduce new item 'pimage' that reuses most of the current potmeter code. Additionally, remove remaining code and documentation of 'potmeter'. diff -r 5c297b4d616d -r 40ad45360c8a Changelog --- a/Changelog Sun Mar 16 13:30:18 2014 +0000 +++ b/Changelog Mon Mar 17 12:29:46 2014 +0000 @@ -40,6 +40,7 @@ * Console message with information on deprecated (but still supported) entries in the skin configuration file * New symbol character (r) and new dynamic label variables ($D, $U, $P) + * New item: pimage 1.1: "We gave up on 1.0" diff -r 5c297b4d616d -r 40ad45360c8a DOCS/xml/cs/skin.xml --- a/DOCS/xml/cs/skin.xml Sun Mar 16 13:30:18 2014 +0000 +++ b/DOCS/xml/cs/skin.xml Mon Mar 17 12:29:46 2014 +0000 @@ -99,8 +99,7 @@ A potenciometr (hlavně používaný pro lištu převíjení a ovládání hlasitosti/stereováhy) může mít libovolný počet fází dělících jeho obraz na jednotlivé části pod sebou. Detaily viz - hpotenciometr a - potenciometr. + hpotenciometr. @@ -463,19 +462,6 @@ - potmeter = fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva - - - hpotmeter bez tlačítka. (soudil bych, že byl míněn jako - otočný, ale reaguje pouze na horizontální tažení.) Popis parametrů je stejný - jako v hpotmeter. - fáze mohou být NULL, ale je to vcelku - k ničemu, jelikož nemůžete vidět, jak je nastaven potmeter. - - - - - font = soubor_fontu, id_fontu diff -r 5c297b4d616d -r 40ad45360c8a DOCS/xml/de/skin.xml --- a/DOCS/xml/de/skin.xml Sun Mar 16 13:30:18 2014 +0000 +++ b/DOCS/xml/de/skin.xml Mon Mar 17 12:29:46 2014 +0000 @@ -99,8 +99,7 @@ die Suchleiste und die Lautstärke-/Balance-Regler) kann durch die Aufteilung der Grafik in verschiedene untereinander liegende Teile eine beliebige Anzahl von Phasen haben. Siehe - hpotmeter und - potmeter für Details. + hpotmeter für Details. Labels sind ein wenig speziell: Die Buchstaben und Zeichen, @@ -527,19 +526,29 @@ - potmeter = phases, numphases, default, X, Y, width, height, message + pimage = phases, numphases, default, X, Y, width, height, message - Ein hpotmeter ohne einen Button. (ich schätze, es ist dazu - bestimmt, herumgedreht zu werden, reagiert aber nur auf horizontales Ziehen.) - Eine Beschreibung der Parameter findest du unter - hpotmeter. - phases können NULL sein, dies ist aber ziemlich - sinnlos, da du nicht sehen kannst, wo das Potentiometer hingesetzt - wurde. + Platziere verschiedene Phasen einer Grafik an Position X,Y. + Dieses Element kann sehr gut zusammen mit Potentiometern + verwendet werden, um deren Zustand zu visualisieren. + phases kann NULL sein, + was aber ziemlich sinnlos ist, weil dann nichts angezeigt wird. + Eine Beschreibung der Parameter findet sich unter + hpotmeter. Der einzige + Unterschied zu den Parametern dort betrifft die Nachricht: + + + + message - die Nachricht, auf die + reagiert werden (d. h. eine Änderung von + pimage bewirken) soll + + + diff -r 5c297b4d616d -r 40ad45360c8a DOCS/xml/en/skin.xml --- a/DOCS/xml/en/skin.xml Sun Mar 16 13:30:18 2014 +0000 +++ b/DOCS/xml/en/skin.xml Mon Mar 17 12:29:46 2014 +0000 @@ -47,8 +47,7 @@ A potmeter (mainly used for the seek bar and volume/balance control) can have any number of phases by dividing its image into different parts below each other. See - hpotmeter and - potmeter for details. + hpotmeter for details. @@ -438,15 +437,21 @@ - potmeter = phases, numphases, default, X, Y, width, height, message + pimage = phases, numphases, default, X, Y, width, height, message - A hpotmeter without a button. (I guess it is meant to be - turned around, but it reacts to horizontal dragging only.) For the description - of the parameters see hpotmeter. - phases can be NULL, but it is quite - useless, since you cannot see where the potmeter is set. - + Place different phases of an image at position X,Y. + This element goes nicely with potentiometers to visualize their state. + phases can be NULL, but this is quite + useless, since nothing will be displayed then. + For a description of the parameters see + hpotmeter. There is only a difference + concerning the message: + + message - the message to be reacted on, i.e. which + shall cause a change of pimage. + + diff -r 5c297b4d616d -r 40ad45360c8a DOCS/xml/es/skin.xml --- a/DOCS/xml/es/skin.xml Sun Mar 16 13:30:18 2014 +0000 +++ b/DOCS/xml/es/skin.xml Mon Mar 17 12:29:46 2014 +0000 @@ -103,8 +103,7 @@ Un medidor (usado principalmente para la barra de búsqueda y el control de volumen/balance) puede tener cualquier número de fases dividiendo su imagen en diferentes partes unas debajo de otras. Vea - hpotmeter y - potmeter para detalles. + hpotmeter para detalles. Etiquetas son un poco especiales: Los caractere necesarios para pintarlas se toman de un archivo de imagen, y los caracteres en @@ -445,19 +444,6 @@ - potmeter = fases, numfases, defecto, X, Y, ancho, alto, mensaje - - -Un hpotmeter sin un botón. (Creo que está hecho para hacer una especie -de botón que gire sobre sí mismo, pero reacciona a arrastre horizontal solamente). Para la -descripción de los parámetros vea hpotmeter. -fases puede ser NULL, pero es poco útil, -porque no le permite ver donde está establecido el valor del potmeter. - - - - - font = fontfile, fontid diff -r 5c297b4d616d -r 40ad45360c8a DOCS/xml/fr/skin.xml --- a/DOCS/xml/fr/skin.xml Sun Mar 16 13:30:18 2014 +0000 +++ b/DOCS/xml/fr/skin.xml Mon Mar 17 12:29:46 2014 +0000 @@ -86,8 +86,7 @@ Un podomètre (principalement utilisé pour la barre d'avancement et le contrôle du volume/balance) peut posséder n'importe quel nombre d'états en empilant ces images, verticalement. Voir - hpotmeter et - potmeter pour plus de détails. + hpotmeter pour plus de détails. Les labels sont un peu particuliers : les caractères nécessaires pour les dessiner sont récupérés depuis un fichier image, @@ -425,19 +424,6 @@ - potmeter = phases, numphases, default, X, Y, largeur, hauteur, message - - -Un hpotmeter sans bouton. (je suppose qu'il est censé tourner -en rond, mais il réagit uniquement aux tractions horizontales.) Pour une -description de ses paramètres lisez hpotmeter. -Ses phases peuvent être fixées à NULL, mais ce n'est -pas vraiment utile, puisque vous ne pouvez pas voir son niveau. - - - - - font = fontfile, fontid diff -r 5c297b4d616d -r 40ad45360c8a DOCS/xml/hu/skin.xml --- a/DOCS/xml/hu/skin.xml Sun Mar 16 13:30:18 2014 +0000 +++ b/DOCS/xml/hu/skin.xml Mon Mar 17 12:29:46 2014 +0000 @@ -48,8 +48,7 @@ Egy potmeternek (főként a kereső sáv és a hangerő/balansz állító) bármennyi fázisa lehet a képének egymás alatti tetszőleges feldarabolásával. Lásd a - hpotmetert és - potmetert a részletekért. + hpotmetert a részletekért. @@ -433,19 +432,6 @@ - potmeter = phases, numphases, default, X, Y, width, height, message - - - Egy hpotmeter gomb nélkül. (Gondolom a megfordítása volt az - eredeti cél, de csak a vízszintes vonszolásra reagál.) A paraméterek leírását - lásd a hpotmeter-nél. - A phases lehet NULL, de ez eléggé haszontalan, - mivel akkor nem látod, hogy a potmeter hova van állítva. - - - - - font = fontfile, fontid diff -r 5c297b4d616d -r 40ad45360c8a DOCS/xml/pl/skin.xml --- a/DOCS/xml/pl/skin.xml Sun Mar 16 13:30:18 2014 +0000 +++ b/DOCS/xml/pl/skin.xml Mon Mar 17 12:29:46 2014 +0000 @@ -91,8 +91,7 @@ jako pasek przewijania i kontrolka głośności/balansu) może składać się z każdej liczby stanów poprzez podzielenie jego obrazka na wiele części, z których jedna jest pod drugą. Zobacz - hpotmeter oraz - potmeter, by dowiedzieć się więcej. + hpotmeter by dowiedzieć się więcej. Etykiety są nieco specyficzne: Znaki potrzebne do ich narysowania są pobierane z pliku graficznego, a znaki @@ -433,19 +432,6 @@ - potmeter = fazy, liczba_faz, domyślny, X, Y, szerokość, wysokość, sygnał - - -hpotmeter bez przycisku. (domyślam się, że chodzi o to, aby -nim kręcić, ale reaguje on tylko na poziome przesuwanie). Opis parametrów znajdziesz w części o -hpotmeter. -Parametr fazy może mieć wartość NULL, ale -jest to zupełnie bezużyteczne, gdyż nie widać wtedy położenia potencjometru. - - - - - font = plik_czcionek, id_czcionki diff -r 5c297b4d616d -r 40ad45360c8a DOCS/xml/ru/skin.xml --- a/DOCS/xml/ru/skin.xml Sun Mar 16 13:30:18 2014 +0000 +++ b/DOCS/xml/ru/skin.xml Mon Mar 17 12:29:46 2014 +0000 @@ -99,8 +99,7 @@ Ползунок (в основном используется для полосы перемещения и управления громкостью/балансом) может иметь любое количество положений, задаваемых делением его изображения на различные части одна под другой. Смотрите - hpotmeter и - potmeter для подробностей. + hpotmeter для подробностей. @@ -464,21 +463,6 @@ - potmeter = phases, numphases, default, X, Y, width, height, message - - - hpotmeter без кнопки. - (Я предполагаю, что это означает повернутый вокруг, - но он реагирует только на перетаскивание по горизонтали.) Для описания параметров смотрите - hpotmeter. - phases может быть равен NULL, но это совершенно - бесполезно, поскольку вы не сможете определить в каком положении - находится potmeter. - - - - - font = fontfile, fontid diff -r 5c297b4d616d -r 40ad45360c8a gui/app/app.h --- a/gui/app/app.h Sun Mar 16 13:30:18 2014 +0000 +++ b/gui/app/app.h Mon Mar 17 12:29:46 2014 +0000 @@ -100,7 +100,7 @@ itDLabel, itHPotmeter, itVPotmeter, - itPotmeter, + itPimage, itMenu, itPLMButton = 100, itPRMButton diff -r 5c297b4d616d -r 40ad45360c8a gui/app/gui.h --- a/gui/app/gui.h Sun Mar 16 13:30:18 2014 +0000 +++ b/gui/app/gui.h Mon Mar 17 12:29:46 2014 +0000 @@ -51,6 +51,6 @@ #define hasButton(item) (item.type == itButton || item.type == itHPotmeter || item.type == itVPotmeter) /// Check whether #guiItem @a item utilizes member 'value' -#define hasValue(item) (item.type == itHPotmeter || item.type == itVPotmeter || item.type == itPotmeter) +#define hasValue(item) (item.type == itHPotmeter || item.type == itVPotmeter || item.type == itPimage) #endif /* MPLAYER_GUI_GUI_H */ diff -r 5c297b4d616d -r 40ad45360c8a gui/skin/skin.c --- a/gui/skin/skin.c Sun Mar 16 13:30:18 2014 +0000 +++ b/gui/skin/skin.c Mon Mar 17 12:29:46 2014 +0000 @@ -713,6 +713,8 @@ * * Syntax: potmeter=phases,numphases,default,x,y,width,height,message * + * @note THIS ITEM IS DEPRECATED. + * * @param in definition to be analyzed * * @return 0 (ok) or 1 (error) @@ -727,13 +729,25 @@ snprintf(param, sizeof(param), "NULL,0,0,%s", in); return item_hpotmeter(param); -/* +} + +/** + * @brief Parse a @a pimage definition. + * + * Syntax: pimage=phases,numphases,default,x,y,width,height,message + * + * @param in definition to be analyzed + * + * @return 0 (ok) or 1 (error) + */ +static int item_pimage(char *in) +{ unsigned char phfname[256]; unsigned char buf[512]; int ph, d, x, y, w, h, message; guiItem *item; - if (!window_item("potmeter")) + if (!window_item("pimage")) return 1; if (in_window("video")) @@ -760,7 +774,7 @@ else skin_legacy("evSetURL", buf); - mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[skin] potmeter image: %s %d,%d %dx%d\n", phfname, x, y, w, h); + mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[skin] pimage image: %s %d,%d %dx%d\n", phfname, x, y, w, h); mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[skin] numphases: %d, default: %d%%\n", ph, d); mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[skin] message: %s (#%d)\n", buf, message); @@ -769,7 +783,7 @@ if (!item) return 1; - item->type = itPotmeter; + item->type = itPimage; item->x = x; item->y = y; item->width = w; @@ -791,7 +805,6 @@ } return 0; -*/ } /** @@ -1024,6 +1037,7 @@ { "font", item_font }, { "hpotmeter", item_hpotmeter }, { "menu", item_menu }, + { "pimage", item_pimage }, { "potmeter", item_potmeter }, // legacy { "section", item_section }, { "selected", item_selected }, diff -r 5c297b4d616d -r 40ad45360c8a gui/ui/main.c --- a/gui/ui/main.c Sun Mar 16 13:30:18 2014 +0000 +++ b/gui/ui/main.c Mon Mar 17 12:29:46 2014 +0000 @@ -146,7 +146,6 @@ value=0; switch( itemtype ) { - case itPotmeter: case itHPotmeter: btnModify( item->message,100.0 * ( X - item->x ) / item->width ); uiEvent( item->message,item->value ); @@ -173,7 +172,7 @@ if (currentselected != - 1) { item=&guiApp.mainItems[currentselected]; - if ( ( item->type == itHPotmeter )||( item->type == itVPotmeter )||( item->type == itPotmeter ) ) + if ( ( item->type == itHPotmeter )||( item->type == itVPotmeter ) ) { item->value+=value; btnModify( item->message,item->value ); @@ -196,7 +195,6 @@ case itVPotmeter: item->value=100.0 - 100.0 * ( Y - item->y ) / item->height; goto potihandled; - case itPotmeter: case itHPotmeter: item->value=100.0 * ( X - item->x ) / item->width; potihandled: diff -r 5c297b4d616d -r 40ad45360c8a gui/ui/playbar.c --- a/gui/ui/playbar.c Sun Mar 16 13:30:18 2014 +0000 +++ b/gui/ui/playbar.c Mon Mar 17 12:29:46 2014 +0000 @@ -175,7 +175,6 @@ switch( itemtype ) { - case itPotmeter: case itHPotmeter: btnModify( item->message,100.0 * ( X - item->x ) / item->width); uiEvent( item->message,item->value ); @@ -198,7 +197,7 @@ if (currentselected != - 1) { item=&guiApp.playbarItems[currentselected]; - if ( ( item->type == itHPotmeter )||( item->type == itVPotmeter )||( item->type == itPotmeter ) ) + if ( ( item->type == itHPotmeter )||( item->type == itVPotmeter ) ) { item->value+=value; btnModify( item->message,item->value ); @@ -217,7 +216,6 @@ case itVPotmeter: item->value=100.0 - 100.0 * ( Y - item->y ) / item->height; goto potihandled; - case itPotmeter: case itHPotmeter: item->value=100.0 * ( X - item->x ) / item->width; potihandled: diff -r 5c297b4d616d -r 40ad45360c8a gui/ui/render.c --- a/gui/ui/render.c Sun Mar 16 13:30:18 2014 +0000 +++ b/gui/ui/render.c Mon Mar 17 12:29:46 2014 +0000 @@ -358,7 +358,7 @@ PutImage(&item->Bitmap, item->x, item->y, 3, ofs); break; - case itPotmeter: + case itPimage: if (item->numphases == 1) SimplePotmeterPutImage(&item->Bitmap, item->x, item->y, item->value / 100.0); diff -r 5c297b4d616d -r 40ad45360c8a gui/win32/gui.c --- a/gui/win32/gui.c Sun Mar 16 13:30:18 2014 +0000 +++ b/gui/win32/gui.c Mon Mar 17 12:29:46 2014 +0000 @@ -304,10 +304,10 @@ if(!hwnd) return; - /* load all potmeters hpotmeters vpotmeters */ + /* load all hpotmeters vpotmeters pimages */ for(i=0; iskin->widgetcount; i++) { - if(gui->skin->widgets[i]->type == tyHpotmeter || gui->skin->widgets[i]->type == tyVpotmeter || gui->skin->widgets[i]->type == tyPotmeter) + if(gui->skin->widgets[i]->type == tyHpotmeter || gui->skin->widgets[i]->type == tyVpotmeter || gui->skin->widgets[i]->type == tyPimage) { if(gui->skin->widgets[i]->msg == evSetVolume) gui->skin->widgets[i]->value = guiInfo.Volume; @@ -825,7 +825,7 @@ gui->mousey = GET_Y_LPARAM(lParam); /* inside a widget */ gui->activewidget = clickedinsidewidget(gui, get_windowtype(hWnd), gui->mousex, gui->mousey); - if(gui->activewidget) + if(gui->activewidget && gui->activewidget->type != tyPimage) { gui->activewidget->pressed = 1; gui->mousewx = gui->mousex - gui->activewidget->x; @@ -942,13 +942,8 @@ item->y = GET_Y_LPARAM(lParam) - gui->mousewy; item->value = 100.0 - 100.0 * (item->y - item->wy) / (item->wheight - item->height); } - if(item->type == tyPotmeter) - { - gui->mousewx = GET_X_LPARAM(lParam) - gui->activewidget->x; - item->value = 100.0 * gui->mousewx / item->wwidth; - } - if((item->type == tyPotmeter) || (item->type == tyHpotmeter) || (item->type == tyVpotmeter)) + if((item->type == tyHpotmeter) || (item->type == tyVpotmeter)) { /* Bound checks */ if(item->value > 100.0f) diff -r 5c297b4d616d -r 40ad45360c8a gui/win32/skinload.c --- a/gui/win32/skinload.c Sun Mar 16 13:30:18 2014 +0000 +++ b/gui/win32/skinload.c Mon Mar 17 12:29:46 2014 +0000 @@ -421,12 +421,12 @@ mywidget->wx, mywidget->wy, mywidget->wwidth, mywidget->wwidth, mywidget->msg); } - else if(!strncmp(desc, "potmeter", 8)) + else if(!strncmp(desc, "pimage", 6)) { int base = counttonextchar(desc, '=') + 1; int i; - /* potmeter = phases, numphases, default, X, Y, width, height, message */ - mywidget->type = tyPotmeter; + /* pimage = phases, numphases, default, X, Y, width, height, message */ + mywidget->type = tyPimage; mywidget->bitmap[0] = pngRead(skin, findnextstring(temp, desc, &base)); mywidget->phases = atoi(findnextstring(temp, desc, &base)); mywidget->value = atof(findnextstring(temp, desc, &base)); @@ -447,7 +447,7 @@ break; } } - mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [ITEM] [POTMETER] %s %i %i %i %f %i %i msg %i\n", + mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[SKIN] [ITEM] [PIMAGE] %s %i %i %i %f %i %i msg %i\n", (mywidget->bitmap[0]) ? mywidget->bitmap[0]->name : NULL, mywidget->width, mywidget->height, mywidget->phases, mywidget->value, diff -r 5c297b4d616d -r 40ad45360c8a gui/win32/skinload.h --- a/gui/win32/skinload.h Sun Mar 16 13:30:18 2014 +0000 +++ b/gui/win32/skinload.h Mon Mar 17 12:29:46 2014 +0000 @@ -117,7 +117,7 @@ #define tyButton 2 #define tyHpotmeter 3 #define tyVpotmeter 4 -#define tyPotmeter 5 +#define tyPimage 5 #define tyMenu 6 #define tySlabel 7 #define tyDlabel 8 diff -r 5c297b4d616d -r 40ad45360c8a gui/win32/widgetrender.c --- a/gui/win32/widgetrender.c Sun Mar 16 13:30:18 2014 +0000 +++ b/gui/win32/widgetrender.c Mon Mar 17 12:29:46 2014 +0000 @@ -318,13 +318,13 @@ int y; if(!dest) return; - if((item->type == tyButton) || (item->type == tyHpotmeter) || (item->type == tyVpotmeter) || (item->type == tyPotmeter)) + if((item->type == tyButton) || (item->type == tyHpotmeter) || (item->type == tyVpotmeter) || (item->type == tyPimage)) img = item->bitmap[0]; if(!img) return; y = item->y; - if(/* item->type == tyPotmeter */ /* legacy (potmeter) */ item->type == tyHpotmeter && item->width == item->wwidth) + if(item->type == tyPimage || /* legacy (potmeter) */ (item->type == tyHpotmeter && item->width == item->wwidth)) { height = img->height / item->phases; y = height * (int)(item->value * item->phases / 100); @@ -341,7 +341,7 @@ if(item->type == tyButton) render(skin->desktopbpp, dest, find_background(skin,item), item->x, item->y, item->x, item->y, img->width, height, 1); - if((item->type == tyHpotmeter) || (item->type == tyVpotmeter) || (item->type == tyPotmeter)) + if((item->type == tyHpotmeter) || (item->type == tyVpotmeter) || (item->type == tyPimage)) { if(item->type == tyVpotmeter) {