diff options
Diffstat (limited to 'volumebox.c')
-rw-r--r-- | volumebox.c | 63 |
1 files changed, 20 insertions, 43 deletions
diff --git a/volumebox.c b/volumebox.c index edd2302..4d7775c 100644 --- a/volumebox.c +++ b/volumebox.c @@ -60,58 +60,35 @@ void cNopacityVolumeBox::SetVolume(int Current, int Total, bool Mute) { cBitmap bmMute(mute_xpm); pixmapLabelVolume->DrawBitmap(cPoint(geoManager->volumeWidth - 2 * bmMute.Width(), (geoManager->volumeLabelHeight - bmMute.Height()) / 2), bmMute, Theme.Color(clrDiskAlert), clrTransparent); } - DrawProgressBar(Current, Total); + DrawProgressBarBackground(Current, Total); } -void cNopacityVolumeBox::DrawProgressBar(int Current, int Total) { +void cNopacityVolumeBox::DrawProgressBarBackground(int Current, int Total) { pixmapProgressBarVolume->Fill(clrTransparent); if (geoManager->volumeProgressBarHeight < 5) return; - double percent = ((double)Current) / (double)Total; - int barWidth = geoManager->volumeProgressBarWidth - geoManager->volumeProgressBarHeight; - if ((Current > 0) || (Total > 0)) { - pixmapProgressBarVolume->DrawEllipse(cRect(0, 0, geoManager->volumeProgressBarHeight, geoManager->volumeProgressBarHeight), Theme.Color(clrProgressBarBack)); - pixmapProgressBarVolume->DrawEllipse(cRect(geoManager->volumeProgressBarWidth - geoManager->volumeProgressBarHeight, 0, geoManager->volumeProgressBarHeight, geoManager->volumeProgressBarHeight), Theme.Color(clrProgressBarBack)); - pixmapProgressBarVolume->DrawRectangle(cRect(geoManager->volumeProgressBarHeight / 2, 0, geoManager->volumeProgressBarWidth - geoManager->volumeProgressBarHeight, geoManager->volumeProgressBarHeight), Theme.Color(clrProgressBarBack)); - - pixmapProgressBarVolume->DrawEllipse(cRect(1, 1, geoManager->volumeProgressBarHeight - 2, geoManager->volumeProgressBarHeight - 2), Theme.Color(clrProgressBarBlend)); - if (Current > 0) { - tColor colAct = DrawProgressbarBackground(geoManager->volumeProgressBarHeight / 2 - 1, 1, barWidth * percent - 2, geoManager->volumeProgressBarHeight - 2); - pixmapProgressBarVolume->DrawEllipse(cRect(barWidth * percent, 1, geoManager->volumeProgressBarHeight - 2, geoManager->volumeProgressBarHeight - 2), colAct); - } - } -} -tColor cNopacityVolumeBox::DrawProgressbarBackground(int left, int top, int width, int height) { - - tColor clr1 = Theme.Color(clrProgressBar); - tColor clr2 = Theme.Color(clrProgressBarBlend); - tColor clr = 0x00000000; - - int alpha = 0x0; // 0...255 - int alphaStep = 0x1; - int maximumsteps = 256; // alphaStep * maximumsteps <= 256 - int factor = 2; // max. 128 steps - - double step = width / maximumsteps; - if (width < 128) { // width < 128 - factor = 4 * factor; // 32 steps - } else if (width < 256) { // width < 256 - factor = 2 * factor; // 64 steps - } + if ((Current > 0) || (Total > 0)) { + pixmapProgressBarVolume->DrawEllipse(cRect(0, + 0, + geoManager->volumeProgressBarHeight, + geoManager->volumeProgressBarHeight), + Theme.Color(clrProgressBarBack)); + pixmapProgressBarVolume->DrawEllipse(cRect(geoManager->volumeProgressBarWidth - geoManager->volumeProgressBarHeight, + 0, + geoManager->volumeProgressBarHeight, + geoManager->volumeProgressBarHeight), + Theme.Color(clrProgressBarBack)); + pixmapProgressBarVolume->DrawRectangle(cRect(geoManager->volumeProgressBarHeight / 2, + 0, + geoManager->volumeProgressBarWidth - geoManager->volumeProgressBarHeight, + geoManager->volumeProgressBarHeight), + Theme.Color(clrProgressBarBack)); - step = step * factor; - alphaStep = alphaStep * factor; - maximumsteps = maximumsteps / factor; - int x = left + height / 2; - for (int i = 0; i < maximumsteps; i++) { - x = left + height / 2 + i * step; - clr = AlphaBlend(clr1, clr2, alpha); - pixmapProgressBarVolume->DrawRectangle(cRect(x, top, step + 1, height), clr); - alpha += alphaStep; + int barWidth = geoManager->volumeProgressBarWidth - geoManager->volumeProgressBarHeight; + DrawProgressbar(pixmapProgressBarVolume, 1, 1, barWidth, geoManager->volumeProgressBarHeight - 2, Current, Total, Theme.Color(clrProgressBar), Theme.Color(clrProgressBarBlend), true); } - return clr; } void cNopacityVolumeBox::SetAlpha(int Alpha) { |