@@ -16,15 +16,18 @@ public AsciiQRCode(QRCodeData data) : base(data) { }
16
16
17
17
18
18
/// <summary>
19
- /// Returns a strings that contains the resulting QR code as ASCII chars .
19
+ /// Returns a strings that contains the resulting QR code as textual representation .
20
20
/// </summary>
21
21
/// <param name="repeatPerModule">Number of repeated darkColorString/whiteSpaceString per module.</param>
22
22
/// <param name="darkColorString">String for use as dark color modules. In case of string make sure whiteSpaceString has the same length.</param>
23
23
/// <param name="whiteSpaceString">String for use as white modules (whitespace). In case of string make sure darkColorString has the same length.</param>
24
+ /// <param name="drawQuietZones">Bool that defines if quiet zones around the QR code shall be drawn</param>
24
25
/// <param name="endOfLine">End of line separator. (Default: \n)</param>
25
26
/// <returns></returns>
26
27
public string GetGraphic ( int repeatPerModule , string darkColorString = "██" , string whiteSpaceString = " " , bool drawQuietZones = true , string endOfLine = "\n " )
27
28
{
29
+ if ( repeatPerModule < 1 )
30
+ throw new Exception ( "The repeatPerModule-parameter must be 1 or greater." ) ;
28
31
return string . Join ( endOfLine , GetLineByLineGraphic ( repeatPerModule , darkColorString , whiteSpaceString , drawQuietZones ) ) ;
29
32
}
30
33
@@ -64,15 +67,17 @@ public string[] GetLineByLineGraphic(int repeatPerModule, string darkColorString
64
67
}
65
68
66
69
/// <summary>
67
- /// Returns a strings that contains the resulting QR code as ASCII chars .
70
+ /// Returns a strings that contains the resulting QR code as minified textual representation .
68
71
/// </summary>
72
+ /// <param name="drawQuietZones">Bool that defines if quiet zones around the QR code shall be drawn</param>
73
+ /// <param name="invert">If set to true, dark and light colors will be inverted</param>
74
+ /// <param name="endOfLine">End of line separator. (Default: \n)</param>
69
75
/// <returns></returns>
70
- public string GetGraphicSmall ( bool drawQuietZones = true )
76
+ public string GetGraphic ( bool drawQuietZones = true , bool invert = false , string endOfLine = " \n " )
71
77
{
72
- string endOfLine = "\n " ;
73
78
bool BLACK = true , WHITE = false ;
74
79
75
- var platte = new
80
+ var palette = new
76
81
{
77
82
WHITE_ALL = "\u2588 " ,
78
83
WHITE_BLACK = "\u2580 " ,
@@ -83,39 +88,39 @@ public string GetGraphicSmall(bool drawQuietZones = true)
83
88
var moduleData = QrCodeData . ModuleMatrix ;
84
89
var lineBuilder = new StringBuilder ( ) ;
85
90
86
- var quietZonesModifier = ( drawQuietZones ? 4 : 8 ) ;
91
+ var quietZonesModifier = ( drawQuietZones ? 0 : 8 ) ;
87
92
var quietZonesOffset = ( int ) ( quietZonesModifier * 0.5 ) ;
88
93
var sideLength = ( QrCodeData . ModuleMatrix . Count - quietZonesModifier ) ;
89
94
90
- for ( var row = 0 ; row < sideLength ; row = row + 2 )
95
+ for ( var row = 0 ; row < sideLength ; row += 2 )
91
96
{
92
- for ( var col = 0 ; col < moduleData . Count - quietZonesModifier ; col ++ )
97
+ for ( var col = 0 ; col < sideLength ; col ++ )
93
98
{
94
99
try
95
100
{
96
- var current = moduleData [ col + quietZonesOffset ] [ row + quietZonesOffset ] ;
97
- var next = moduleData [ col + quietZonesOffset ] [ ( row + 1 ) + quietZonesOffset ] ;
101
+ var current = moduleData [ col + quietZonesOffset ] [ row + quietZonesOffset ] ^ invert ;
102
+ var next = moduleData [ col + quietZonesOffset ] [ ( row + 1 ) + quietZonesOffset ] ^ invert ;
98
103
if ( current == WHITE && next == WHITE )
99
- lineBuilder . Append ( platte . WHITE_ALL ) ;
104
+ lineBuilder . Append ( palette . WHITE_ALL ) ;
100
105
else if ( current == WHITE && next == BLACK )
101
- lineBuilder . Append ( platte . WHITE_BLACK ) ;
106
+ lineBuilder . Append ( palette . WHITE_BLACK ) ;
102
107
else if ( current == BLACK && next == WHITE )
103
- lineBuilder . Append ( platte . BLACK_WHITE ) ;
108
+ lineBuilder . Append ( palette . BLACK_WHITE ) ;
104
109
else
105
- lineBuilder . Append ( platte . BLACK_ALL ) ;
110
+ lineBuilder . Append ( palette . BLACK_ALL ) ;
106
111
}
107
112
catch ( Exception )
108
113
{
109
114
if ( drawQuietZones )
110
- lineBuilder . Append ( platte . WHITE_BLACK ) ;
115
+ lineBuilder . Append ( palette . WHITE_BLACK ) ;
111
116
else
112
- lineBuilder . Append ( platte . BLACK_ALL ) ;
117
+ lineBuilder . Append ( palette . BLACK_ALL ) ;
113
118
}
114
119
115
120
}
116
121
lineBuilder . Append ( endOfLine ) ;
117
122
}
118
- return lineBuilder . ToString ( ) ;
123
+ return lineBuilder . ToString ( ) . Trim ( endOfLine . ToCharArray ( ) ) ;
119
124
}
120
125
}
121
126
0 commit comments