mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-27 23:42:58 +02:00
Merge branch 'master' into pu/mp
This commit is contained in:
@@ -47,6 +47,9 @@ static int cfg_national_subset;
|
||||
|
||||
static int screen_x, screen_y, screen_w, screen_h;
|
||||
|
||||
void FillRect(int x, int y, int w, int h, fb_pixel_t color, bool modeFullColor=false);
|
||||
void FillBorder(fb_pixel_t color, bool modeFullColor=false);
|
||||
|
||||
fb_pixel_t *getFBp(int *y)
|
||||
{
|
||||
if (*y < (int)var_screeninfo.yres)
|
||||
@@ -56,34 +59,31 @@ fb_pixel_t *getFBp(int *y)
|
||||
return lbb;
|
||||
}
|
||||
|
||||
void FillRect(int x, int y, int w, int h, int color)
|
||||
void FillRect(int x, int y, int w, int h, fb_pixel_t color, bool modeFullColor/*=false*/)
|
||||
{
|
||||
if(color < 0 || SIZECOLTABLE < color){
|
||||
printf("FIXME array size %i color %i not in range\n",SIZECOLTABLE,color);
|
||||
return;
|
||||
}
|
||||
fb_pixel_t *p = getFBp(&y);
|
||||
MARK_FB(x, y, w, h);
|
||||
p += x + y * stride;
|
||||
if (w > 0)
|
||||
if (w > 0) {
|
||||
fb_pixel_t col = (modeFullColor) ? color : bgra[color];
|
||||
for (int count = 0; count < h; count++) {
|
||||
fb_pixel_t *dest0 = p;
|
||||
for (int i = 0; i < w; i++)
|
||||
*(dest0++) = bgra[color];
|
||||
*(dest0++) = col;
|
||||
p += stride;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FillBorder(int color)
|
||||
void FillBorder(fb_pixel_t color, bool modeFullColor/*=false*/)
|
||||
{
|
||||
int ys = (var_screeninfo.yres-var_screeninfo.yoffset);
|
||||
FillRect(0 , ys ,StartX ,var_screeninfo.yres ,color);
|
||||
FillRect(StartX, ys ,displaywidth,StartY ,color);
|
||||
FillRect(StartX, ys+StartY+25*fontheight,displaywidth,var_screeninfo.yres-(StartY+25*fontheight),color);
|
||||
FillRect(0 , ys ,StartX ,var_screeninfo.yres ,color, modeFullColor);
|
||||
FillRect(StartX, ys ,displaywidth,StartY ,color, modeFullColor);
|
||||
FillRect(StartX, ys+StartY+25*fontheight,displaywidth,var_screeninfo.yres-(StartY+25*fontheight),color, modeFullColor);
|
||||
|
||||
if (screenmode == 0 )
|
||||
FillRect(StartX+displaywidth, ys,var_screeninfo.xres-(StartX+displaywidth),var_screeninfo.yres ,color);
|
||||
FillRect(StartX+displaywidth, ys,var_screeninfo.xres-(StartX+displaywidth),var_screeninfo.yres ,color, modeFullColor);
|
||||
}
|
||||
|
||||
int getIndexOfPageInHotlist()
|
||||
@@ -258,7 +258,7 @@ void RenderClearMenuLineBB(char *p, tstPageAttr *attrcol, tstPageAttr *attr)
|
||||
memset(p-TOPMENUCHARS, ' ', TOPMENUCHARS); /* init with spaces */
|
||||
}
|
||||
|
||||
void ClearBB(int color)
|
||||
void ClearBB(fb_pixel_t color)
|
||||
{
|
||||
FillRect(0, (var_screeninfo.yres - var_screeninfo.yoffset), var_screeninfo.xres, var_screeninfo.yres, color);
|
||||
}
|
||||
@@ -270,7 +270,7 @@ void ClearFB(int /*color*/)
|
||||
}
|
||||
#if 0
|
||||
//never used
|
||||
void ClearB(int color)
|
||||
void ClearB(fb_pixel_t color)
|
||||
{
|
||||
FillRect(0, 0, var_screeninfo.xres, var_screeninfo.yres, color); /* framebuffer */
|
||||
FillRect(0, var_screeninfo.yres, var_screeninfo.xres, var_screeninfo.yres, color); /* backbuffer */
|
||||
@@ -841,7 +841,7 @@ int eval_triplet(int iOData, tstCachedPage *pstCachedPage,
|
||||
{
|
||||
*pAPy = RowAddress2Row(iAddress); /* new Active Row */
|
||||
|
||||
int color = iData & 0x1f;
|
||||
fb_pixel_t color = iData & 0x1f;
|
||||
int row = *pAPy0 + *pAPy;
|
||||
int maxrow;
|
||||
#if TUXTXT_DEBUG
|
||||
@@ -892,7 +892,7 @@ int eval_triplet(int iOData, tstCachedPage *pstCachedPage,
|
||||
*pAPx = *pAPy = 0; /* new Active Position 0,0 */
|
||||
if (*endcol == 40) /* active object */
|
||||
{
|
||||
int color = iData & 0x1f;
|
||||
fb_pixel_t color = iData & 0x1f;
|
||||
int row = *pAPy0; // + *pAPy;
|
||||
int maxrow;
|
||||
|
||||
@@ -4096,7 +4096,7 @@ void RenderDRCS( //FIX ME
|
||||
}
|
||||
|
||||
|
||||
void DrawVLine(int x, int y, int l, int color)
|
||||
void DrawVLine(int x, int y, int l, fb_pixel_t color)
|
||||
{
|
||||
fb_pixel_t *p = getFBp(&y);
|
||||
MARK_FB(x, y, 0, l);
|
||||
@@ -4109,7 +4109,7 @@ void DrawVLine(int x, int y, int l, int color)
|
||||
}
|
||||
}
|
||||
|
||||
void DrawHLine(int x, int y, int l, int color)
|
||||
void DrawHLine(int x, int y, int l, fb_pixel_t color)
|
||||
{
|
||||
int ltmp;
|
||||
fb_pixel_t *p = getFBp(&y);
|
||||
@@ -4130,7 +4130,7 @@ void FillRectMosaicSeparated(int x, int y, int w, int h, int fgcolor, int bgcolo
|
||||
}
|
||||
}
|
||||
|
||||
void FillTrapez(int x0, int y0, int l0, int xoffset1, int h, int l1, int color)
|
||||
void FillTrapez(int x0, int y0, int l0, int xoffset1, int h, int l1, fb_pixel_t color)
|
||||
{
|
||||
fb_pixel_t *p = getFBp(&y0);
|
||||
MARK_FB(x0, y0, l0, h);
|
||||
@@ -4789,7 +4789,7 @@ void RenderChar(int Char, tstPageAttr *Attribute, int zoom, int yoffset)
|
||||
{
|
||||
for (Bit = 0x80; Bit; Bit >>= 1)
|
||||
{
|
||||
int color;
|
||||
fb_pixel_t color;
|
||||
|
||||
if (--pixtodo < 0)
|
||||
break;
|
||||
@@ -5559,7 +5559,7 @@ void CopyBB2FB()
|
||||
|
||||
/* adapt background of backbuffer if changed */
|
||||
if (StartX > 0 && *lfb != *lbb) {
|
||||
FillBorder(*lbb);
|
||||
FillBorder(*lbb, true);
|
||||
// ClearBB(*(lfb + var_screeninfo.xres * var_screeninfo.yoffset));
|
||||
}
|
||||
|
||||
|
@@ -33,15 +33,19 @@
|
||||
#include <cstring>
|
||||
#include <errno.h>
|
||||
#include <sstream>
|
||||
|
||||
#include <global.h>
|
||||
#include <driver/audioplay.h>
|
||||
#include <zapit/include/audio.h>
|
||||
#include <eitd/edvbstring.h> // UTF8
|
||||
#include "ffmpegdec.h"
|
||||
|
||||
extern "C" {
|
||||
#include <libavutil/opt.h>
|
||||
#include <libavutil/samplefmt.h>
|
||||
#include <libswresample/swresample.h>
|
||||
}
|
||||
|
||||
#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 28, 1)
|
||||
#define av_frame_alloc avcodec_alloc_frame
|
||||
#define av_frame_unref avcodec_get_frame_defaults
|
||||
@@ -63,8 +67,6 @@ extern cAudio * audioDecoder;
|
||||
|
||||
#define ProgName "FfmpegDec"
|
||||
|
||||
#define COVERDIR "/tmp/cover"
|
||||
|
||||
static OpenThreads::Mutex mutex;
|
||||
|
||||
static int cover_count = 0;
|
||||
@@ -517,7 +519,7 @@ bool CFfmpegDec::SetMetaData(FILE *_in, CAudioMetaData* m, bool save_cover)
|
||||
if (save_cover && (avc->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC)) {
|
||||
mkdir(COVERDIR, 0755);
|
||||
std::string cover(COVERDIR);
|
||||
cover += "/" + to_string(cover_count++) + ".jpg";
|
||||
cover += "/cover_" + to_string(cover_count++) + ".jpg";
|
||||
FILE *f = fopen(cover.c_str(), "wb");
|
||||
if (f) {
|
||||
AVPacket *pkt = &avc->streams[i]->attached_pic;
|
||||
|
@@ -1389,9 +1389,10 @@ bool CMP3Dec::SaveCover(FILE * in, CAudioMetaData * const m)
|
||||
data = id3_field_getbinarydata(field, &size);
|
||||
if ( data )
|
||||
{
|
||||
mkdir(COVERDIR, 0755);
|
||||
std::ostringstream cover;
|
||||
cover.str("");
|
||||
cover << "/tmp/cover_" << cover_count++ << ".jpg";
|
||||
cover.str(COVERDIR);
|
||||
cover << "/cover_" << cover_count++ << ".jpg";
|
||||
FILE * pFile;
|
||||
pFile = fopen ( cover.str().c_str() , "wb" );
|
||||
if (pFile)
|
||||
|
@@ -64,6 +64,7 @@ CAudioMetaData::CAudioMetaData( const CAudioMetaData& src )
|
||||
hasInfoOrXingTag( src.hasInfoOrXingTag ), artist( src.artist ),
|
||||
title( src.title ), album( src.album ), sc_station( src.sc_station ),
|
||||
date( src.date ), genre( src.genre ), track( src.track ),cover(src.cover),
|
||||
logo( src.logo ), url( src.url ),
|
||||
cover_temporary( false ),
|
||||
changed( src.changed )
|
||||
{
|
||||
@@ -97,9 +98,10 @@ void CAudioMetaData::operator=( const CAudioMetaData& src )
|
||||
genre = src.genre;
|
||||
track = src.track;
|
||||
cover = src.cover;
|
||||
logo = src.logo;
|
||||
url = src.url;
|
||||
sc_station = src.sc_station;
|
||||
changed = src.changed;
|
||||
changed = src.changed;
|
||||
cover_temporary = false;
|
||||
}
|
||||
|
||||
@@ -125,6 +127,8 @@ void CAudioMetaData::clear()
|
||||
if (cover_temporary && !cover.empty())
|
||||
unlink(cover.c_str());
|
||||
cover.clear();
|
||||
logo.clear();
|
||||
url.clear();
|
||||
cover_temporary=false;
|
||||
changed=false;
|
||||
}
|
||||
|
@@ -96,6 +96,8 @@ public:
|
||||
std::string genre;
|
||||
std::string track;
|
||||
std::string cover;
|
||||
std::string logo;
|
||||
std::string url;
|
||||
bool cover_temporary;
|
||||
bool changed;
|
||||
};
|
||||
|
@@ -47,6 +47,8 @@
|
||||
#define NEUTRINO_SCAN_SETTINGS_FILE CONFIGDIR "/scan.conf"
|
||||
#define NEUTRINO_PARENTALLOCKED_FILE DATADIR "/neutrino/.plocked"
|
||||
|
||||
#define COVERDIR "/tmp/cover"
|
||||
|
||||
#define LOGODIR ICONSDIR "/logo"
|
||||
#define LOGODIR_VAR ICONSDIR_VAR "/logo"
|
||||
|
||||
|
@@ -155,6 +155,7 @@ CAudioPlayerGui::CAudioPlayerGui(bool inetmode)
|
||||
m_inetmode = inetmode;
|
||||
m_detailsline = NULL;
|
||||
m_infobox = NULL;
|
||||
m_titlebox = NULL;
|
||||
|
||||
Init();
|
||||
}
|
||||
@@ -210,6 +211,7 @@ CAudioPlayerGui::~CAudioPlayerGui()
|
||||
m_title2Pos.clear();
|
||||
delete m_detailsline;
|
||||
delete m_infobox;
|
||||
delete m_titlebox;
|
||||
}
|
||||
|
||||
const struct button_label AudioPlayerButtons[][4] =
|
||||
@@ -1142,7 +1144,7 @@ void CAudioPlayerGui::readDir_ic(void)
|
||||
{
|
||||
xmlDocPtr answer_parser = parseXml(answer.c_str());
|
||||
scanBox->hide();
|
||||
scanXmlData(answer_parser, "server_name", "listen_url", "bitrate", true);
|
||||
scanXmlData(answer_parser, "listen_url", "server_name", "bitrate", true);
|
||||
}
|
||||
else
|
||||
scanBox->hide();
|
||||
@@ -1153,10 +1155,10 @@ void CAudioPlayerGui::readDir_ic(void)
|
||||
void CAudioPlayerGui::scanXmlFile(std::string filename)
|
||||
{
|
||||
xmlDocPtr answer_parser = parseXmlFile(filename.c_str());
|
||||
scanXmlData(answer_parser, "name", "url");
|
||||
scanXmlData(answer_parser, "url", "name");
|
||||
}
|
||||
|
||||
void CAudioPlayerGui::scanXmlData(xmlDocPtr answer_parser, const char *nametag, const char *urltag, const char *bitratetag, bool usechild)
|
||||
void CAudioPlayerGui::scanXmlData(xmlDocPtr answer_parser, const char *urltag, const char *nametag, const char *bitratetag, bool usechild)
|
||||
{
|
||||
#define IC_typetag "server_type"
|
||||
|
||||
@@ -1452,6 +1454,7 @@ bool CAudioPlayerGui::openFilebrowser(void)
|
||||
|
||||
result = true;
|
||||
}
|
||||
m_idletime = time(NULL);
|
||||
CVFD::getInstance()->setMode(CVFD::MODE_AUDIO);
|
||||
paintLCD();
|
||||
// if playlist is turned off -> start playing immediately
|
||||
@@ -1523,6 +1526,7 @@ bool CAudioPlayerGui::openSCbrowser(void)
|
||||
#endif
|
||||
result = true;
|
||||
}
|
||||
m_idletime = time(NULL);
|
||||
CVFD::getInstance()->setMode(CVFD::MODE_AUDIO);
|
||||
paintLCD();
|
||||
// if playlist is turned off -> start playing immediately
|
||||
@@ -1605,7 +1609,6 @@ void CAudioPlayerGui::paintHead()
|
||||
|
||||
CComponentsHeader header(m_x, m_y + m_title_height + OFFSET_SHADOW + OFFSET_INTER, m_width, m_header_height, LOCALE_AUDIOPLAYER_HEAD, NEUTRINO_ICON_AUDIO);
|
||||
header.enableShadow( CC_SHADOW_RIGHT | CC_SHADOW_CORNER_TOP_RIGHT | CC_SHADOW_CORNER_BOTTOM_RIGHT, -1, true);
|
||||
header.setCorner(RADIUS_MID, CORNER_TOP);
|
||||
|
||||
if (m_inetmode)
|
||||
header.setCaption(LOCALE_INETRADIO_NAME);
|
||||
@@ -1630,52 +1633,61 @@ void CAudioPlayerGui::paintFoot()
|
||||
{ NEUTRINO_ICON_BUTTON_INFO, LOCALE_PICTUREVIEWER_HEAD }
|
||||
};
|
||||
|
||||
int radius = RADIUS_LARGE;
|
||||
int button_y = m_y + m_height - OFFSET_SHADOW - m_info_height - OFFSET_INTER - OFFSET_SHADOW - 2*m_button_height;
|
||||
int button_x = m_x;
|
||||
int button_width = m_width;
|
||||
|
||||
// ensure to get round corners in footer
|
||||
if (!m_show_playlist && radius)
|
||||
{
|
||||
button_x += radius;
|
||||
button_width -= 2*radius;
|
||||
}
|
||||
|
||||
// shadow
|
||||
m_frameBuffer->paintBoxRel(m_x + OFFSET_SHADOW, button_y + OFFSET_SHADOW, m_width, 2*m_button_height, COL_SHADOW_PLUS_0, RADIUS_MID, (m_show_playlist ? CORNER_BOTTOM : CORNER_ALL));
|
||||
|
||||
m_frameBuffer->paintBoxRel(m_x, button_y, m_width, 2*m_button_height, COL_MENUFOOT_PLUS_0, RADIUS_MID, (m_show_playlist ? CORNER_BOTTOM : CORNER_ALL));
|
||||
m_frameBuffer->paintBoxRel(m_x + OFFSET_SHADOW, button_y + OFFSET_SHADOW, m_width, 2*m_button_height, COL_SHADOW_PLUS_0, radius, (m_show_playlist ? CORNER_BOTTOM : CORNER_ALL));
|
||||
m_frameBuffer->paintBoxRel(m_x, button_y, m_width, 2*m_button_height, COL_MENUFOOT_PLUS_0, radius, (m_show_playlist ? CORNER_BOTTOM : CORNER_ALL));
|
||||
|
||||
if (!m_playlist.empty())
|
||||
::paintButtons(m_x, button_y + m_button_height, m_width, 3, SecondLineButtons, m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y + m_button_height, button_width, 3, SecondLineButtons, button_width, m_button_height);
|
||||
|
||||
if (m_key_level == 0)
|
||||
{
|
||||
if (m_playlist.empty())
|
||||
{
|
||||
if (m_inetmode)
|
||||
::paintButtons(m_x, button_y, m_width, 2, AudioPlayerButtons[7], m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y, button_width, 2, AudioPlayerButtons[7], button_width, m_button_height);
|
||||
else
|
||||
::paintButtons(m_x, button_y, m_width, 1, &(AudioPlayerButtons[7][0]), m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y, button_width, 1, &(AudioPlayerButtons[7][0]), button_width, m_button_height);
|
||||
}
|
||||
else if (m_inetmode)
|
||||
::paintButtons(m_x, button_y, m_width, 4, AudioPlayerButtons[8], m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y, button_width, 4, AudioPlayerButtons[8], button_width, m_button_height);
|
||||
else
|
||||
::paintButtons(m_x, button_y, m_width, 4, AudioPlayerButtons[1], m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y, button_width, 4, AudioPlayerButtons[1], button_width, m_button_height);
|
||||
}
|
||||
else if (m_key_level == 1)
|
||||
{
|
||||
if (m_curr_audiofile.FileType != CFile::STREAM_AUDIO)
|
||||
::paintButtons(m_x, button_y, m_width, 4, AudioPlayerButtons[0], m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y, button_width, 4, AudioPlayerButtons[0], button_width, m_button_height);
|
||||
else
|
||||
::paintButtons(m_x, button_y, m_width, 2, AudioPlayerButtons[6], m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y, button_width, 2, AudioPlayerButtons[6], button_width, m_button_height);
|
||||
}
|
||||
else // key_level == 2
|
||||
{
|
||||
if (m_state == CAudioPlayerGui::STOP)
|
||||
{
|
||||
if (m_select_title_by_name)
|
||||
::paintButtons(m_x, button_y, m_width, 2, AudioPlayerButtons[5], m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y, button_width, 2, AudioPlayerButtons[5], button_width, m_button_height);
|
||||
else
|
||||
::paintButtons(m_x, button_y, m_width, 2, AudioPlayerButtons[4], m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y, button_width, 2, AudioPlayerButtons[4], button_width, m_button_height);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_select_title_by_name)
|
||||
::paintButtons(m_x, button_y, m_width, 2, AudioPlayerButtons[3], m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y, button_width, 2, AudioPlayerButtons[3], button_width, m_button_height);
|
||||
else
|
||||
::paintButtons(m_x, button_y, m_width, 2, AudioPlayerButtons[2], m_width, m_button_height);
|
||||
::paintButtons(button_x, button_y, button_width, 2, AudioPlayerButtons[2], button_width, m_button_height);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1698,15 +1710,23 @@ void CAudioPlayerGui::paintTitleBox()
|
||||
return;
|
||||
|
||||
if (m_state == CAudioPlayerGui::STOP && m_show_playlist)
|
||||
m_frameBuffer->paintBackgroundBoxRel(m_x, m_y, m_width, m_title_height);
|
||||
{
|
||||
if (m_titlebox)
|
||||
{
|
||||
m_titlebox->kill();
|
||||
delete m_titlebox; m_titlebox = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// shadow
|
||||
m_frameBuffer->paintBoxRel(m_x + OFFSET_SHADOW, m_y + OFFSET_SHADOW, m_width, m_title_height, COL_SHADOW_PLUS_0, RADIUS_MID);
|
||||
|
||||
m_frameBuffer->paintBoxRel(m_x, m_y, m_width, m_title_height, COL_MENUHEAD_PLUS_0, RADIUS_MID);
|
||||
m_frameBuffer->paintBoxFrame(m_x, m_y, m_width, m_title_height, OFFSET_INNER_MIN, COL_FRAME_PLUS_0, RADIUS_MID);
|
||||
|
||||
// title box
|
||||
if (!m_titlebox)
|
||||
{
|
||||
m_titlebox = new CComponentsShapeSquare(m_x, m_y, m_width, m_title_height, NULL, CC_SHADOW_ON);
|
||||
m_titlebox->enableFrame(true, FRAME_MIN_WIDTH);
|
||||
m_titlebox->setCorner(RADIUS_LARGE);
|
||||
}
|
||||
m_titlebox->paint(false);
|
||||
paintCover();
|
||||
|
||||
// first line (Track number)
|
||||
@@ -1729,7 +1749,7 @@ void CAudioPlayerGui::paintTitleBox()
|
||||
int xstart = (m_width - w)/2;
|
||||
if (xstart < OFFSET_INNER_MID)
|
||||
xstart = OFFSET_INNER_MID;
|
||||
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(m_x + xstart, m_y + OFFSET_INNER_SMALL + 1*m_item_height, m_width - 2*OFFSET_INNER_MID, tmp, COL_MENUHEAD_TEXT);
|
||||
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(m_x + xstart, m_y + OFFSET_INNER_SMALL + 1*m_item_height, m_width - 2*OFFSET_INNER_MID, tmp, COL_MENUHEAD_TEXT); //caption "current track"
|
||||
|
||||
// second line (Artist/Title...)
|
||||
GetMetaData(m_curr_audiofile);
|
||||
@@ -1754,7 +1774,7 @@ void CAudioPlayerGui::paintTitleBox()
|
||||
xstart = (m_width - w)/2;
|
||||
if (xstart < OFFSET_INNER_MID)
|
||||
xstart = OFFSET_INNER_MID;
|
||||
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(m_x + xstart, m_y + OFFSET_INNER_SMALL + 2*m_item_height, m_width - 2*OFFSET_INNER_MID, tmp, COL_MENUHEAD_TEXT);
|
||||
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(m_x + xstart, m_y + OFFSET_INNER_SMALL + 2*m_item_height, m_width - 2*OFFSET_INNER_MID, tmp, COL_MENUHEAD_TEXT); //artist - title
|
||||
|
||||
// reset so fields get painted always
|
||||
m_metainfo.clear();
|
||||
@@ -2094,8 +2114,12 @@ void CAudioPlayerGui::updateMetaData()
|
||||
if (updateMeta || updateScreen)
|
||||
{
|
||||
int cover_width = m_title_height + 2*OFFSET_INNER_MID;
|
||||
m_frameBuffer->paintBoxRel(m_x + cover_width, m_y + OFFSET_INNER_SMALL + 2*m_item_height + OFFSET_INNER_SMALL, m_width - cover_width - OFFSET_INNER_MID, m_meta_height, COL_MENUHEAD_PLUS_0);
|
||||
int xstart = ((m_width - 2*OFFSET_INNER_MID - g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getRenderWidth(m_metainfo))/2);
|
||||
m_frameBuffer->paintBoxRel(m_x + cover_width, m_y + OFFSET_INNER_SMALL + 2*m_item_height + OFFSET_INNER_SMALL, m_width - OFFSET_INNER_MID - cover_width, m_meta_height, m_titlebox->getColorBody());
|
||||
|
||||
int w = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->getRenderWidth(m_metainfo);
|
||||
int xstart = (m_width - w)/2;
|
||||
if (xstart < OFFSET_INNER_MID)
|
||||
xstart = OFFSET_INNER_MID;
|
||||
g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->RenderString(m_x + xstart, m_y + OFFSET_INNER_SMALL + 2*m_item_height + OFFSET_INNER_SMALL + m_meta_height, m_width - 2*xstart, m_metainfo, COL_MENUHEAD_TEXT);
|
||||
}
|
||||
}
|
||||
@@ -2138,7 +2162,7 @@ void CAudioPlayerGui::updateTimes(const bool force)
|
||||
if (m_inetmode)
|
||||
w_total_time = 0;
|
||||
|
||||
int x_total_time = m_x + m_width - OFFSET_INNER_MID - w_total_time;
|
||||
int x_total_time = m_x + m_width - OFFSET_INNER_MID - w_total_time - 2*m_titlebox->getFrameThickness();
|
||||
// played time offset to align this value on the right side
|
||||
int o_played_time = std::max(w_faked_time - w_played_time, 0);
|
||||
int x_faked_time = m_x + m_width - OFFSET_INNER_MID - w_total_time - w_faked_time;
|
||||
@@ -2147,20 +2171,20 @@ void CAudioPlayerGui::updateTimes(const bool force)
|
||||
|
||||
if (updateTotal && !m_inetmode)
|
||||
{
|
||||
m_frameBuffer->paintBoxRel(x_total_time, y_times, w_total_time + OFFSET_INNER_MID, m_item_height, COL_MENUHEAD_PLUS_0);
|
||||
m_frameBuffer->paintBoxRel(x_total_time, y_times, w_total_time + OFFSET_INNER_MID, m_item_height, m_titlebox->getColorBody());
|
||||
if (m_time_total > 0)
|
||||
{
|
||||
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x_total_time, y_times + m_item_height, w_total_time, total_time, COL_MENUHEAD_TEXT);
|
||||
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x_total_time, y_times + m_item_height, w_total_time, total_time, COL_MENUHEAD_TEXT); //total time
|
||||
}
|
||||
}
|
||||
if (updatePlayed || (m_state == CAudioPlayerGui::PAUSE))
|
||||
{
|
||||
m_frameBuffer->paintBoxRel(x_faked_time, y_times, w_faked_time, m_item_height, COL_MENUHEAD_PLUS_0);
|
||||
m_frameBuffer->paintBoxRel(x_faked_time, y_times, w_faked_time, m_item_height, m_titlebox->getColorBody());
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, NULL);
|
||||
if ((m_state != CAudioPlayerGui::PAUSE) || (tv.tv_sec & 1))
|
||||
{
|
||||
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x_played_time, y_times + m_item_height, w_played_time, played_time, COL_MENUHEAD_TEXT);
|
||||
g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x_played_time, y_times + m_item_height, w_played_time, played_time, COL_MENUHEAD_TEXT); //elapsed time
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -128,6 +128,7 @@ class CAudioPlayerGui : public CMenuTarget
|
||||
bool m_inetmode;
|
||||
CComponentsDetailsLine *m_detailsline;
|
||||
CComponentsInfoBox *m_infobox;
|
||||
CComponentsShapeSquare *m_titlebox;
|
||||
|
||||
SMSKeyInput m_SMSKeyInput;
|
||||
|
||||
@@ -176,7 +177,7 @@ class CAudioPlayerGui : public CMenuTarget
|
||||
/**
|
||||
* Processes a loaded XML file/data of internet audiostreams or playlists
|
||||
*/
|
||||
void scanXmlData(xmlDocPtr answer_parser, const char *nametag, const char *urltag, const char *bitratetag = NULL, bool usechild = false);
|
||||
void scanXmlData(xmlDocPtr answer_parser, const char *urltag, const char *nametag, const char *bitratetag = NULL, bool usechild = false);
|
||||
|
||||
/**
|
||||
* Reads the icecast directory (XML file) and calls scanXmlData
|
||||
|
@@ -123,8 +123,8 @@ void CComponentsFooter::setButtonLabels(const struct button_label_cc * const con
|
||||
* If already existing some items then subtract those width from footer width.
|
||||
* ...so we have the possible usable size for button container.
|
||||
*/
|
||||
if(!v_cc_items.empty()){ //FIXME: footer container seems always not empty here, so here j initialized with = 1. I dont't know where it comes from! dbt!
|
||||
for (size_t j= 1; j< size(); j++)
|
||||
if(!v_cc_items.empty()){
|
||||
for (size_t j= 0; j< size(); j++)
|
||||
w_chain -= getCCItem(j)->getWidth();
|
||||
}
|
||||
|
||||
|
@@ -940,6 +940,8 @@ const time_settings_struct_t timing_setting[SNeutrinoSettings::TIMING_SETTING_CO
|
||||
|
||||
#define SCROLLBAR_WIDTH (OFFSET_INNER_MID + 2*OFFSET_INNER_MIN)
|
||||
|
||||
#define FRAME_MIN_WIDTH CFrameBuffer::getInstance()->scale2Res(2)
|
||||
|
||||
#define DETAILSLINE_WIDTH CFrameBuffer::getInstance()->scale2Res(16)
|
||||
|
||||
#define BIGFONT_FACTOR 1.5
|
||||
|
Reference in New Issue
Block a user