mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-08-26 23:13:00 +02:00
framebuffer/pictureviewer: add functions to query icon size
Add infrastructure to query icon size as in tuxbox neutrino.
TODO: those functions are yet to be tested for non-.raw icons ;)
git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@44 e54a6e83-5905-42d5-8d5c-058d10e6a962
Origin commit data
------------------
Commit: af169c19ff
Author: Stefan Seyfried <seife@tuxbox-git.slipkontur.de>
Date: 2009-12-13 (Sun, 13 Dec 2009)
This commit is contained in:
@@ -814,6 +814,70 @@ void CFrameBuffer::setIconBasePath(const std::string & iconPath)
|
|||||||
iconBasePath = iconPath;
|
iconBasePath = iconPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CFrameBuffer::getIconHeight(const char * const filename)
|
||||||
|
{
|
||||||
|
struct rawHeader header;
|
||||||
|
uint16_t height;
|
||||||
|
int icon_fd;
|
||||||
|
|
||||||
|
char *ptr = rindex(filename, '.');
|
||||||
|
if (ptr) {
|
||||||
|
*ptr = 0;
|
||||||
|
std::string newname = iconBasePath + std::string(filename) + ".gif";
|
||||||
|
*ptr = '.';
|
||||||
|
if (!access(newname.c_str(), F_OK))
|
||||||
|
return g_PicViewer->getHeight(newname.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
icon_fd = open(filename, O_RDONLY);
|
||||||
|
|
||||||
|
if (icon_fd == -1)
|
||||||
|
{
|
||||||
|
printf("Framebuffer getIconHeight: error while loading icon: %s\n", filename);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
read(icon_fd, &header, sizeof(struct rawHeader));
|
||||||
|
height = (header.height_hi << 8) | header.height_lo;
|
||||||
|
}
|
||||||
|
|
||||||
|
close(icon_fd);
|
||||||
|
return height;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CFrameBuffer::getIconWidth(const char * const filename)
|
||||||
|
{
|
||||||
|
struct rawHeader header;
|
||||||
|
uint16_t width;
|
||||||
|
int icon_fd;
|
||||||
|
|
||||||
|
char *ptr = rindex(filename, '.');
|
||||||
|
if (ptr) {
|
||||||
|
*ptr = 0;
|
||||||
|
std::string newname = iconBasePath + std::string(filename) + ".gif";
|
||||||
|
*ptr = '.';
|
||||||
|
if (!access(newname.c_str(), F_OK))
|
||||||
|
return g_PicViewer->getWidth(newname.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
icon_fd = open(filename, O_RDONLY);
|
||||||
|
|
||||||
|
if (icon_fd == -1)
|
||||||
|
{
|
||||||
|
printf("Framebuffer getIconWidth: error while loading icon: %s\n", filename);
|
||||||
|
width = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
read(icon_fd, &header, sizeof(struct rawHeader));
|
||||||
|
width = (header.width_hi << 8) | header.width_lo;
|
||||||
|
}
|
||||||
|
|
||||||
|
close(icon_fd);
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
|
||||||
bool CFrameBuffer::paintIcon8(const std::string & filename, const int x, const int y, const unsigned char offset)
|
bool CFrameBuffer::paintIcon8(const std::string & filename, const int x, const int y, const unsigned char offset)
|
||||||
{
|
{
|
||||||
if (!getActive())
|
if (!getActive())
|
||||||
|
@@ -110,6 +110,9 @@ class CFrameBuffer
|
|||||||
|
|
||||||
static CFrameBuffer* getInstance();
|
static CFrameBuffer* getInstance();
|
||||||
|
|
||||||
|
int getIconWidth(const char * const filename); // infos about icon dimensions
|
||||||
|
int getIconHeight(const char * const filename);
|
||||||
|
|
||||||
void init(const char * const fbDevice = "/dev/fb/0");
|
void init(const char * const fbDevice = "/dev/fb/0");
|
||||||
int setMode(unsigned int xRes, unsigned int yRes, unsigned int bpp);
|
int setMode(unsigned int xRes, unsigned int yRes, unsigned int bpp);
|
||||||
|
|
||||||
|
@@ -443,6 +443,26 @@ printf("logo file: %s\n", fname);
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CPictureViewer::getWidth(const char* name)
|
||||||
|
{
|
||||||
|
int x, y;
|
||||||
|
CFormathandler *fh;
|
||||||
|
fh = fh_getsize(name, &x, &y, INT_MAX, INT_MAX);
|
||||||
|
if (fh == NULL)
|
||||||
|
return -1;
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CPictureViewer::getHeight(const char* name)
|
||||||
|
{
|
||||||
|
int x, y;
|
||||||
|
CFormathandler *fh;
|
||||||
|
fh = fh_getsize(name, &x, &y, INT_MAX, INT_MAX);
|
||||||
|
if (fh == NULL)
|
||||||
|
return -1;
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
bool CPictureViewer::DisplayImage (const std::string & name, int posx, int posy, int width, int height)
|
bool CPictureViewer::DisplayImage (const std::string & name, int posx, int posy, int width, int height)
|
||||||
{
|
{
|
||||||
int x, y;
|
int x, y;
|
||||||
|
@@ -65,6 +65,8 @@ class CPictureViewer
|
|||||||
bool DisplayImage (const std::string & name, int posx, int posy, int width, int height);
|
bool DisplayImage (const std::string & name, int posx, int posy, int width, int height);
|
||||||
bool DisplayLogo (uint64_t channel_id, int posx, int posy, int width, int height);
|
bool DisplayLogo (uint64_t channel_id, int posx, int posy, int width, int height);
|
||||||
fb_pixel_t * getImage (const std::string & name, int width, int height);
|
fb_pixel_t * getImage (const std::string & name, int width, int height);
|
||||||
|
int getWidth(const char *name);
|
||||||
|
int getHeight(const char *name);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CFormathandler *fh_root;
|
CFormathandler *fh_root;
|
||||||
|
Reference in New Issue
Block a user