Skip to content

Commit

Permalink
Draw device state in the bottom corner
Browse files Browse the repository at this point in the history
  • Loading branch information
davkean committed Nov 12, 2021
1 parent c2c6f2e commit 7d68152
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
13 changes: 11 additions & 2 deletions src/AudioSwitcher/Presentation/Drawing/DrawingServices.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace AudioSwitcher.Presentation.Drawing
{
internal static class DrawingServices
{
public static Image CreateOverlayedImage(Image image, Image overlayImage, Size size)
public static Image CreateOverlayedImage(Image image, Image overlayImage, Size size, bool bottomCorner)
{
if (image == null || overlayImage == null)
throw new ArgumentNullException(image == null ? "image" : "overlayImage");
Expand All @@ -18,7 +18,16 @@ public static Image CreateOverlayedImage(Image image, Image overlayImage, Size s
using (var g = Graphics.FromImage(copy))
{
g.DrawImage(image, 0, 0);
g.DrawImage(overlayImage, 0, 0);

if (bottomCorner)
{
g.DrawImage(overlayImage, size.Width - overlayImage.Width, size.Height - overlayImage.Height, overlayImage.Width, overlayImage.Height);
}
else
{
g.DrawImage(overlayImage, 0, 0);
}

g.Save();

return copy;
Expand Down
12 changes: 8 additions & 4 deletions src/AudioSwitcher/UI/ViewModels/AudioDeviceViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// -----------------------------------------------------------------------
// Copyright (c) David Kean. All rights reserved.
// -----------------------------------------------------------------------
using System;
using System.Drawing;
using System.Windows.Forms;

using AudioSwitcher.Audio;
using AudioSwitcher.Presentation.Drawing;
using AudioSwitcher.Presentation.UI;
Expand Down Expand Up @@ -177,15 +177,15 @@ private Image GetImage(string iconPath)
if (deviceImage == null)
return null;

Image overlayImage = GetOverlayImage();
Image overlayImage = GetOverlayImage(out bool bottomCorner);
if (overlayImage == null)
return deviceImage;

using (deviceImage)
using (overlayImage)
{
// Makes a copy
return DrawingServices.CreateOverlayedImage(deviceImage, overlayImage, deviceImage.Size);
return DrawingServices.CreateOverlayedImage(deviceImage, overlayImage, deviceImage.Size, bottomCorner);
}
}

Expand Down Expand Up @@ -218,8 +218,10 @@ private Icon GetIconFromDeviceIconPath(string iconPath)
return icon;
}

private Image GetOverlayImage()
private Image GetOverlayImage(out bool bottomCorner)
{
bottomCorner = false;

if (DefaultState.IsSet(AudioDeviceDefaultState.Multimedia))
{ // Sound control panel shows the same icon between all and multimedia
return Resources.DefaultMultimediaDevice;
Expand All @@ -230,6 +232,8 @@ private Image GetOverlayImage()
return Resources.DefaultCommunicationsDevice;
}

bottomCorner = true;

switch (State)
{
case AudioDeviceState.Disabled:
Expand Down

0 comments on commit 7d68152

Please sign in to comment.