summaryrefslogtreecommitdiff
path: root/displayvolume.c
diff options
context:
space:
mode:
Diffstat (limited to 'displayvolume.c')
-rw-r--r--displayvolume.c52
1 files changed, 6 insertions, 46 deletions
diff --git a/displayvolume.c b/displayvolume.c
index dcd3781..060a4dd 100644
--- a/displayvolume.c
+++ b/displayvolume.c
@@ -1,5 +1,6 @@
#include "lcarsng.h"
#include "config.h"
+#include "volumebox.h"
#include "displayvolume.h"
// --- cLCARSNGDisplayVolume -----------------------------------------------
@@ -8,62 +9,21 @@ cLCARSNGDisplayVolume::cLCARSNGDisplayVolume(void)
{
const cFont *font = cFont::GetFont(fontOsd);
int lineHeight = font->Height();
- frameColor = Theme.Color(clrVolumeFrame);
- mute = -1;
- Margin = Config.Margin;
- x0 = 0;
- x1 = lineHeight / 2;
- x2 = lineHeight;
- x3 = x2 + Gap;
- x7 = cOsd::OsdWidth();
- x6 = x7 - lineHeight / 2;
- x5 = x6 - lineHeight / 2;
- x4 = x5 - Gap;
- y0 = 0;
- y1 = lineHeight;
- osd = CreateOsd(cOsd::OsdLeft(), cOsd::OsdTop() + cOsd::OsdHeight() - y1, x0, y0, x7 - 1, y1 - 1);
- osd->DrawRectangle(x0, y0, x7 - 1, y1 - 1, Theme.Color(clrBackground));
- osd->DrawRectangle(x0, y0, x1 - 1, y1 - 1, clrTransparent);
- osd->DrawEllipse (x0, y0, x1 - 1, y1 - 1, frameColor, 7);
- osd->DrawRectangle(x1, y0, x2 - 1, y1 - 1, frameColor);
- osd->DrawRectangle(x3, y0, x4 - 1, y1 - 1, frameColor);
- osd->DrawRectangle(x5, y0, x6 - 1, y1 - 1, frameColor);
- osd->DrawRectangle(x6, y0, x7 - 1, y1 - 1, clrTransparent);
- osd->DrawEllipse (x6, y0, x7 - 1, y1 - 1, frameColor, 5);
+
+ osd = CreateOsd(cOsd::OsdLeft(), cOsd::OsdTop() + cOsd::OsdHeight() - lineHeight, 0, 0, cOsd::OsdWidth() - 1, lineHeight - 1);
+ volumeBox = new cLCARSNGVolumeBox(osd, cRect(0, 0, cOsd::OsdWidth(), lineHeight));
}
cLCARSNGDisplayVolume::~cLCARSNGDisplayVolume()
{
+ delete volumeBox;
delete osd;
cDevice::PrimaryDevice()->ScaleVideo(cRect::Null);
}
void cLCARSNGDisplayVolume::SetVolume(int Current, int Total, bool Mute)
{
- int xl = x3 + TextSpacing;
- int xr = x4 - TextSpacing;
- int yt = y0 + TextFrame;
- int yb = y1 - TextFrame;
- if (mute != Mute) {
- osd->DrawRectangle(x3, y0, x4 - 1, y1 - 1, frameColor);
- mute = Mute;
- }
- cBitmap bm(Mute ? mute_xpm : volume_xpm);
- osd->DrawBitmap(xl, y0 + (y1 - y0 - bm.Height()) / 2, bm, Theme.Color(clrVolumeSymbol), frameColor);
- if (!Mute) {
- xl += bm.Width() + TextSpacing;
- int w = (y1 - y0) / 3;
- int d = TextFrame;
- int n = (xr - xl + d) / (w + d);
- int x = xr - n * (w + d);
- tColor Color = Theme.Color(clrVolumeBarLower);
- for (int i = 0; i < n; i++) {
- if (Total * i >= Current * n)
- Color = Theme.Color(clrVolumeBarUpper);
- osd->DrawRectangle(x, yt, x + w - 1, yb - 1, Color);
- x += w + d;
- }
- }
+ volumeBox->SetVolume(Current, Total, Mute);
}
void cLCARSNGDisplayVolume::Flush(void)