Files
Watermark.Net/Watrmark.Net CLI/Extensions.cs
DESKTOP-QG096I2\RentPc 361c920574 First commit
2025-07-23 20:55:18 +03:00

70 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Watrmark.Net_CLI
{
internal class Extensions
{
private static void ClearRow(int row)
{
Console.SetCursorPosition(0, row);
Console.Write(new String(' ', Console.WindowWidth));
Console.SetCursorPosition(0, row);
}
private static void DrawTextProgressBar(double percentComplite)
{
int totalChunks = Console.WindowWidth / 2;
//draw empty progress bar
Console.CursorLeft = 0;
Console.Write("["); //start
Console.CursorLeft = totalChunks + 1;
Console.Write("]"); //end
Console.CursorLeft = 1;
int numChunksComplete = Convert.ToInt16(totalChunks * percentComplite);
//draw completed chunks
Console.BackgroundColor = ConsoleColor.Green;
Console.Write("".PadRight(numChunksComplete));
//draw incomplete chunks
Console.BackgroundColor = ConsoleColor.Gray;
Console.Write("".PadRight(totalChunks - numChunksComplete));
//draw totals
Console.CursorLeft = totalChunks + 5;
Console.BackgroundColor = ConsoleColor.Black;
}
public static void DrawStats(string imagePath, int filesComplite, int filesTotal, Stopwatch stopwatch)
{
var complitePercent = Convert.ToDouble(filesComplite) / filesTotal;
var operationsPerSecond = Convert.ToDouble(filesComplite) / stopwatch.Elapsed.TotalSeconds;
Console.CursorVisible = false;
ClearRow(0);
Console.WriteLine($"Processed file: {imagePath}");
DrawTextProgressBar(complitePercent);
Console.Write($"{Math.Round(complitePercent * 100, 0)}% \t");
Console.WriteLine($"{filesComplite} of {filesTotal}");
ClearRow(2);
Console.WriteLine($"{Math.Round(operationsPerSecond, 0)} per second");
}
public static void DrawCompliteStats(TimeSpan elapsedTime)
{
Console.Clear();
Console.SetCursorPosition(0, 0);
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"Work complite in {elapsedTime.Minutes} min. {elapsedTime.TotalSeconds} sec.");
Console.ResetColor();
}
}
}