/*************************************************************************** * 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"