From e7e7f2466d809d477a30708eaf7e316e68fca587 Mon Sep 17 00:00:00 2001 From: vsa Date: Mon, 12 Dec 2022 09:17:19 +0700 Subject: [PATCH] 2022.12.10 --- .../ConsoleDisplay.Driver.csproj | 9 +++ .../ConsoleDisplay.Driver/IDisplay.cs | 22 ++++++ .../Virtual/VirtualBulb.cs | 20 ++++++ .../Virtual}/VirtualDisplay.cs | 9 ++- Display/ConsoleDisplay/ConsoleDisplay.sln | 8 ++- .../ConsoleDisplay/ConsoleDisplay.csproj | 4 ++ .../ConsoleDisplay/ExternalDomain/IDisplay.cs | 22 ------ .../ExternalDomain/VirtualBulb.cs | 21 ------ .../ConsoleDisplay/Model/CSmartLetter.cs | 19 ++++++ .../ConsoleDisplay/Model/SmartAlphabet.cs | 68 +++++++++++++++++++ .../ConsoleDisplay/Model/SmartDisplay.cs | 28 +++++++- .../ConsoleDisplay/ConsoleDisplay/Program.cs | 3 +- .../Display.Driver/Display.Driver.csproj | 10 +++ .../ConsoleDisplay/Display.Driver/Program.cs | 10 +++ 14 files changed, 200 insertions(+), 53 deletions(-) create mode 100644 Display/ConsoleDisplay/ConsoleDisplay.Driver/ConsoleDisplay.Driver.csproj create mode 100644 Display/ConsoleDisplay/ConsoleDisplay.Driver/IDisplay.cs create mode 100644 Display/ConsoleDisplay/ConsoleDisplay.Driver/Virtual/VirtualBulb.cs rename Display/ConsoleDisplay/{ConsoleDisplay/ExternalDomain => ConsoleDisplay.Driver/Virtual}/VirtualDisplay.cs (85%) delete mode 100644 Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/IDisplay.cs delete mode 100644 Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/VirtualBulb.cs create mode 100644 Display/ConsoleDisplay/ConsoleDisplay/Model/CSmartLetter.cs create mode 100644 Display/ConsoleDisplay/ConsoleDisplay/Model/SmartAlphabet.cs create mode 100644 Display/ConsoleDisplay/Display.Driver/Display.Driver.csproj create mode 100644 Display/ConsoleDisplay/Display.Driver/Program.cs diff --git a/Display/ConsoleDisplay/ConsoleDisplay.Driver/ConsoleDisplay.Driver.csproj b/Display/ConsoleDisplay/ConsoleDisplay.Driver/ConsoleDisplay.Driver.csproj new file mode 100644 index 0000000..bafd05b --- /dev/null +++ b/Display/ConsoleDisplay/ConsoleDisplay.Driver/ConsoleDisplay.Driver.csproj @@ -0,0 +1,9 @@ + + + + net6.0 + enable + enable + + + diff --git a/Display/ConsoleDisplay/ConsoleDisplay.Driver/IDisplay.cs b/Display/ConsoleDisplay/ConsoleDisplay.Driver/IDisplay.cs new file mode 100644 index 0000000..b7e12e3 --- /dev/null +++ b/Display/ConsoleDisplay/ConsoleDisplay.Driver/IDisplay.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ConsoleDisplay.Driver +{ + + public interface IDisplay + { + int Width { get; } + int Height { get; } + + bool IsEnabled { get; } + void Reset(); + void Set(int iX, int iY, bool bState); + + bool Get(int iX, int iY); + + } +} diff --git a/Display/ConsoleDisplay/ConsoleDisplay.Driver/Virtual/VirtualBulb.cs b/Display/ConsoleDisplay/ConsoleDisplay.Driver/Virtual/VirtualBulb.cs new file mode 100644 index 0000000..f4e3c78 --- /dev/null +++ b/Display/ConsoleDisplay/ConsoleDisplay.Driver/Virtual/VirtualBulb.cs @@ -0,0 +1,20 @@ +namespace ConsoleDisplay.Driver.Virtual +{ + internal class VirtualBulb + { + public VirtualBulb( + int x, + int y, + bool isEnabled = false) + { + X = x; + Y = y; + IsEnabled = isEnabled; + } + + public int X { get; set; } + public int Y { get; set; } + public bool IsEnabled { get; set; } + + } +} \ No newline at end of file diff --git a/Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/VirtualDisplay.cs b/Display/ConsoleDisplay/ConsoleDisplay.Driver/Virtual/VirtualDisplay.cs similarity index 85% rename from Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/VirtualDisplay.cs rename to Display/ConsoleDisplay/ConsoleDisplay.Driver/Virtual/VirtualDisplay.cs index c06f0a1..ab8a2cb 100644 --- a/Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/VirtualDisplay.cs +++ b/Display/ConsoleDisplay/ConsoleDisplay.Driver/Virtual/VirtualDisplay.cs @@ -1,14 +1,13 @@ - -namespace ConsoleDisplay.ExternalDomain +namespace ConsoleDisplay.Driver.Virtual { - internal class VirtualDisplay : IDisplay + public class VirtualDisplay : IDisplay { private List BulbList; public VirtualDisplay(int iWidth, int iHeight) { - this.Width = iWidth; - this.Height = iHeight; + Width = iWidth; + Height = iHeight; BulbList = new List(); h_Init(iWidth, iHeight); diff --git a/Display/ConsoleDisplay/ConsoleDisplay.sln b/Display/ConsoleDisplay/ConsoleDisplay.sln index ca0b5f7..321e5b8 100644 --- a/Display/ConsoleDisplay/ConsoleDisplay.sln +++ b/Display/ConsoleDisplay/ConsoleDisplay.sln @@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.3.32929.385 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleDisplay", "ConsoleDisplay\ConsoleDisplay.csproj", "{FB027AE4-23B7-4FF2-A29F-A2773A6D36AB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleDisplay", "ConsoleDisplay\ConsoleDisplay.csproj", "{FB027AE4-23B7-4FF2-A29F-A2773A6D36AB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleDisplay.Driver", "ConsoleDisplay.Driver\ConsoleDisplay.Driver.csproj", "{798ECA8C-D47D-4B53-8EDF-071CAD651053}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,6 +17,10 @@ Global {FB027AE4-23B7-4FF2-A29F-A2773A6D36AB}.Debug|Any CPU.Build.0 = Debug|Any CPU {FB027AE4-23B7-4FF2-A29F-A2773A6D36AB}.Release|Any CPU.ActiveCfg = Release|Any CPU {FB027AE4-23B7-4FF2-A29F-A2773A6D36AB}.Release|Any CPU.Build.0 = Release|Any CPU + {798ECA8C-D47D-4B53-8EDF-071CAD651053}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {798ECA8C-D47D-4B53-8EDF-071CAD651053}.Debug|Any CPU.Build.0 = Debug|Any CPU + {798ECA8C-D47D-4B53-8EDF-071CAD651053}.Release|Any CPU.ActiveCfg = Release|Any CPU + {798ECA8C-D47D-4B53-8EDF-071CAD651053}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Display/ConsoleDisplay/ConsoleDisplay/ConsoleDisplay.csproj b/Display/ConsoleDisplay/ConsoleDisplay/ConsoleDisplay.csproj index 40c60dd..30e9cf6 100644 --- a/Display/ConsoleDisplay/ConsoleDisplay/ConsoleDisplay.csproj +++ b/Display/ConsoleDisplay/ConsoleDisplay/ConsoleDisplay.csproj @@ -7,4 +7,8 @@ enable + + + + diff --git a/Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/IDisplay.cs b/Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/IDisplay.cs deleted file mode 100644 index df2fac7..0000000 --- a/Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/IDisplay.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ConsoleDisplay.ExternalDomain -{ - - internal interface IDisplay - { - int Width { get; } - int Height { get; } - - bool IsEnabled { get; } - void Reset(); - void Set(int iX, int iY, bool bState); - - bool Get(int iX, int iY); - - } -} diff --git a/Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/VirtualBulb.cs b/Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/VirtualBulb.cs deleted file mode 100644 index d177295..0000000 --- a/Display/ConsoleDisplay/ConsoleDisplay/ExternalDomain/VirtualBulb.cs +++ /dev/null @@ -1,21 +0,0 @@ - -namespace ConsoleDisplay.ExternalDomain -{ - internal class VirtualBulb - { - public VirtualBulb( - int x, - int y, - bool isEnabled = false) - { - X = x; - Y = y; - IsEnabled = isEnabled; - } - - public int X { get; set; } - public int Y { get; set; } - public bool IsEnabled { get; set; } - - } -} \ No newline at end of file diff --git a/Display/ConsoleDisplay/ConsoleDisplay/Model/CSmartLetter.cs b/Display/ConsoleDisplay/ConsoleDisplay/Model/CSmartLetter.cs new file mode 100644 index 0000000..d9454dd --- /dev/null +++ b/Display/ConsoleDisplay/ConsoleDisplay/Model/CSmartLetter.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ConsoleDisplay.Model +{ + internal class CSmartLetterPoint + { + internal int X; + internal int Y; + } + + internal class CSmartLetter + { + private List Points = new List(); + } +} diff --git a/Display/ConsoleDisplay/ConsoleDisplay/Model/SmartAlphabet.cs b/Display/ConsoleDisplay/ConsoleDisplay/Model/SmartAlphabet.cs new file mode 100644 index 0000000..34a4774 --- /dev/null +++ b/Display/ConsoleDisplay/ConsoleDisplay/Model/SmartAlphabet.cs @@ -0,0 +1,68 @@ + +#region Using + +using System; + +#endregion + +namespace ConsoleDisplay.Model +{ + #region Class CSmartAlphabet + + + + /// + /// Шрифт + /// + internal class CSmartAlphabet + { + // TODO: загрузка алфавита + string s1 = @" +.......0....... +.......0....... +......00....... +.....0.0....... +.......0....... +.......0....... +.......0....... +.......0....... +"; + + string s2 = @" +....00000...... +...0....0...... +..........0.... +.........0..... +.......00...... +.....000....... +....0.......... +...0000000..... +"; + + + #region Variables + + #endregion + + #region constructor + + #endregion + + #region Properties + + #endregion + + #region Public methods + + #endregion + + #region Help methods + + #endregion + + + + } + + #endregion +} \ No newline at end of file diff --git a/Display/ConsoleDisplay/ConsoleDisplay/Model/SmartDisplay.cs b/Display/ConsoleDisplay/ConsoleDisplay/Model/SmartDisplay.cs index f5b02ba..48ff22a 100644 --- a/Display/ConsoleDisplay/ConsoleDisplay/Model/SmartDisplay.cs +++ b/Display/ConsoleDisplay/ConsoleDisplay/Model/SmartDisplay.cs @@ -1,4 +1,5 @@ -using ConsoleDisplay.ExternalDomain; +using ConsoleDisplay.Driver; +using ConsoleDisplay.Driver.Virtual; namespace ConsoleDisplay.Model { @@ -25,12 +26,23 @@ namespace ConsoleDisplay.Model /// позиция левого верхнего края прямугольника - Y public void Draw(char ch, int size, int x, int y) { + // 8x16 // TODO: // 1. Шрифт // 2. загрузить символ // 3. отмасштабировать символ + int iW = 16; + int iH = 8; + string sMap = ch == '1' ? s1 : s2; + CSmartLetter pLetter = new CSmartLetter(); // 4. последовательно очисить лампочки в прямоугольном поле - // 4. последовательно включить лампочки в прямоугольнике + // 5. последовательно включить лампочки в прямоугольнике + for (int xx = 0; xx < iW; xx++) { + for (int yy = 0; yy < iH; yy++) { + // TODO: отрисовку буквы + } + } + } /// @@ -53,7 +65,17 @@ namespace ConsoleDisplay.Model { if (m_pDisplay is VirtualDisplay) { VirtualDisplay dd = m_pDisplay as VirtualDisplay; - // TODO: отрисовка в консоли + int iW = dd.Width > 30 ? 30 : dd.Width; + int iH = dd.Height > 30 ? 30 : dd.Height; + for (int xx = 0; xx < iW; xx++) { + for (int yy = 0; yy < iH; yy++) { + Console.SetCursorPosition(xx, yy); + Console.Write( + dd.Get(xx, yy) + ? "O" + : "."); + } + } } } diff --git a/Display/ConsoleDisplay/ConsoleDisplay/Program.cs b/Display/ConsoleDisplay/ConsoleDisplay/Program.cs index 1e49236..525c3f2 100644 --- a/Display/ConsoleDisplay/ConsoleDisplay/Program.cs +++ b/Display/ConsoleDisplay/ConsoleDisplay/Program.cs @@ -1,4 +1,5 @@ -using ConsoleDisplay.ExternalDomain; +using ConsoleDisplay.Driver.Virtual; +using ConsoleDisplay.Driver; using ConsoleDisplay.Model; namespace ConsoleDisplay diff --git a/Display/ConsoleDisplay/Display.Driver/Display.Driver.csproj b/Display/ConsoleDisplay/Display.Driver/Display.Driver.csproj new file mode 100644 index 0000000..40c60dd --- /dev/null +++ b/Display/ConsoleDisplay/Display.Driver/Display.Driver.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/Display/ConsoleDisplay/Display.Driver/Program.cs b/Display/ConsoleDisplay/Display.Driver/Program.cs new file mode 100644 index 0000000..0cd4eb8 --- /dev/null +++ b/Display/ConsoleDisplay/Display.Driver/Program.cs @@ -0,0 +1,10 @@ +namespace Display.Driver +{ + internal class Program + { + static void Main(string[] args) + { + Console.WriteLine("Hello, World!"); + } + } +} \ No newline at end of file