mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-08-26 15:02:50 +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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (!getActive())
|
||||
|
@@ -110,6 +110,9 @@ class CFrameBuffer
|
||||
|
||||
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");
|
||||
int setMode(unsigned int xRes, unsigned int yRes, unsigned int bpp);
|
||||
|
||||
|
@@ -443,6 +443,26 @@ printf("logo file: %s\n", fname);
|
||||
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)
|
||||
{
|
||||
int x, y;
|
||||
|
@@ -65,6 +65,8 @@ class CPictureViewer
|
||||
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);
|
||||
fb_pixel_t * getImage (const std::string & name, int width, int height);
|
||||
int getWidth(const char *name);
|
||||
int getHeight(const char *name);
|
||||
|
||||
private:
|
||||
CFormathandler *fh_root;
|
||||
|
Reference in New Issue
Block a user