You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeutils/superkaramba/src/bar.cpp

135 lines
2.7 KiB

/***************************************************************************
* Copyright (C) 2003 by Hans Karlsson *
* karlsson.h@home.se *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#include "bar.h"
#include "karamba.h"
Bar::Bar(karamba* k, int x, int y, int w, int h) : Meter(k, x, y, w, h)
{
value = 0;
minValue = 0;
maxValue = 100;
barValue = 0;
vertical = false;
}
Bar::~Bar()
{
}
bool Bar::setImage(TQString fileName)
{
TQFileInfo fileInfo(fileName);
bool res = false;
if(m_karamba->theme().isThemeFile(fileName))
{
TQByteArray ba = m_karamba->theme().readThemeFile(fileName);
res = pixmap.loadFromData(ba);
}
else
{
res = pixmap.load(fileName);
}
pixmapWidth = pixmap.width();
pixmapHeight = pixmap.height();
if(getWidth()==0 || getHeight()==0)
{
setWidth(pixmapWidth);
setHeight(pixmapHeight);
}
if(res)
imagePath = fileName;
return res;
}
void Bar::setValue( long v )
{
if(v > maxValue)
{
// maxValue = v;
v = maxValue;
}
if(v < minValue)
{
//minValue = v;
v = minValue;
}
barValue = v;
long diff = maxValue - minValue;
if(diff != 0)
{
if(vertical)
{
value = long((v-minValue)*getHeight() / diff + 0.5);
}
else // horizontal
{
value = long((v-minValue)*getWidth() / diff + 0.5);
}
}
else
{
value = 0;
}
}
void Bar::setValue(TQString v)
{
setValue((long)(v.toDouble() + 0.5));
}
void Bar::setMax(long m)
{
Meter::setMax(m);
recalculateValue();
}
void Bar::setMin(long m)
{
Meter::setMin(m);
recalculateValue();
}
void Bar::setVertical(bool b)
{
vertical = b;
}
void Bar::mUpdate(TQPainter *p)
{
int x, y, width, height;
x = getX();
y = getY();
width = getWidth();
height = getHeight();
//only draw image if not hidden
if(hidden == 0)
{
if(vertical)
{
// int v = int( (value-minValue)*height / (maxValue-minValue) + 0.5 );
p->drawTiledPixmap(x, y+height-value, width, value, pixmap, 0,
pixmapHeight-value);
}
else // horizontal
{
//int v = int( (value-minValue)*width / (maxValue-minValue) + 0.5 );
p->drawTiledPixmap(x, y, value, height, pixmap);
}
}
}
#include "bar.moc"