diff options
-rw-r--r-- | displaymenuview.c | 3 | ||||
-rw-r--r-- | displaymessage.c | 3 | ||||
-rw-r--r-- | helpers.c | 17 |
3 files changed, 23 insertions, 0 deletions
diff --git a/displaymenuview.c b/displaymenuview.c index 55399f3..c513dd4 100644 --- a/displaymenuview.c +++ b/displaymenuview.c @@ -826,6 +826,9 @@ void cNopacityDisplayMenuView::DrawMessage(eMessageType Type, const char *Text) imgLoader.DrawBackground2(Theme.Color(clrMenuBack), col, messageWidth-2, messageHeight-2); pixmapStatus->DrawImage(cPoint(1, 1), imgLoader.GetImage()); } + if (config.roundedCorners) { + DrawRoundedCornersWithBorder(pixmapStatus, col, config.cornerRadius, messageWidth, messageHeight); + } int textWidth = fontMessage->Width(Text); tColor clrFontBack = (config.doBlending)?(clrTransparent):col; pixmapStatus->DrawText(cPoint((messageWidth - textWidth) / 2, (messageHeight - fontMessage->Height()) / 2), Text, Theme.Color(clrMenuFontMessages), clrFontBack, fontMessage); diff --git a/displaymessage.c b/displaymessage.c index e44e5a0..aa15005 100644 --- a/displaymessage.c +++ b/displaymessage.c @@ -56,6 +56,9 @@ void cNopacityDisplayMessage::SetMessage(eMessageType Type, const char *Text) { imgLoader.DrawBackground2(Theme.Color(clrMessageBlend), col, width-2, height-2); pixmap->DrawImage(cPoint(1, 1), imgLoader.GetImage()); } + if (config.roundedCorners) { + DrawRoundedCornersWithBorder(pixmap, col, config.cornerRadius, width, height); + } int textWidth = font->Width(Text); pixmap->DrawText(cPoint((width - textWidth) / 2, (height - font->Height()) / 2), Text, colFont, (config.doBlending)?clrTransparent:col, font); if (config.messageFadeTime) @@ -49,6 +49,23 @@ static void DrawRoundedCorners(cPixmap *p, int radius, int x, int y, int width, } } +static void DrawRoundedCornersWithBorder(cPixmap *p, tColor borderColor, int radius, int width, int height) { + if (radius < 3) + return; + p->DrawEllipse(cRect(0,0,radius,radius), borderColor, -2); + p->DrawEllipse(cRect(-1,-1,radius,radius), clrTransparent, -2); + + p->DrawEllipse(cRect(width-radius,0,radius,radius), borderColor, -1); + p->DrawEllipse(cRect(width-radius+1,-1,radius,radius), clrTransparent, -1); + + p->DrawEllipse(cRect(0,height-radius,radius,radius), borderColor, -3); + p->DrawEllipse(cRect(-1,height-radius+1,radius,radius), clrTransparent, -3); + + p->DrawEllipse(cRect(width-radius,height-radius,radius,radius), borderColor, -4); + p->DrawEllipse(cRect(width-radius+1,height-radius+1,radius,radius), clrTransparent, -4); + +} + static int Minimum(int a, int b, int c, int d, int e, int f) { int min = a; if (b < min) min = b; |