Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 18 additions & 10 deletions QRCoder/PostscriptQRCode.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#if !NETSTANDARD1_3
using System.Drawing;
using System.Text;
using static QRCoder.QRCodeGenerator;

namespace QRCoder;
Expand Down Expand Up @@ -100,35 +101,42 @@ public string GetGraphic(Size viewBox, Color darkColor, Color lightColor, bool d
var drawableModulesCount = QrCodeData.ModuleMatrix.Count - (drawQuietZones ? 0 : offset * 2);
var pointsPerModule = (double)Math.Min(viewBox.Width, viewBox.Height) / (double)drawableModulesCount;

string psFile = string.Format(CultureInfo.InvariantCulture, PS_HEADER, new object[] {
var estimatedCapacity = PS_HEADER.Length + PS_FUNCTIONS.Length + PS_FOOTER.Length +
(drawableModulesCount * drawableModulesCount * 2) + // modules (either "f " or "b ")
drawableModulesCount * 3 + // newlines ("nl\n")
200; // embedded numbers
var sb = new StringBuilder(estimatedCapacity);

sb.AppendFormat(CultureInfo.InvariantCulture, PS_HEADER, [
CleanSvgVal(viewBox.Width), CleanSvgVal(pointsPerModule),
epsFormat ? "EPSF-3.0" : string.Empty
});
psFile += string.Format(CultureInfo.InvariantCulture, PS_FUNCTIONS, new object[] {
]);
sb.AppendFormat(CultureInfo.InvariantCulture, PS_FUNCTIONS, [
CleanSvgVal(darkColor.R /255.0), CleanSvgVal(darkColor.G /255.0), CleanSvgVal(darkColor.B /255.0),
CleanSvgVal(lightColor.R /255.0), CleanSvgVal(lightColor.G /255.0), CleanSvgVal(lightColor.B /255.0),
drawableModulesCount
});
]);

for (int xi = offset; xi < offset + drawableModulesCount; xi++)
{
if (xi > offset)
psFile += "nl\n";
sb.Append("nl\n");
for (int yi = offset; yi < offset + drawableModulesCount; yi++)
{
psFile += (QrCodeData.ModuleMatrix[xi][yi] ? "f " : "b ");
sb.Append(QrCodeData.ModuleMatrix[xi][yi] ? "f " : "b ");
}
psFile += "\n";
}
return psFile + PS_FOOTER;
sb.Append('\n');
sb.Append(PS_FOOTER);
return sb.ToString();
}

/// <summary>
/// Cleans double values for international use/formats.
/// </summary>
/// <param name="input">The input double value.</param>
/// <returns>Returns the cleaned string representation of the double value.</returns>
private static string CleanSvgVal(double input) => input.ToString(System.Globalization.CultureInfo.InvariantCulture);
/// <returns>Returns the cleaned string representation of the double value, with a maximum of 7 significant digits.</returns>
private static string CleanSvgVal(double input) => input.ToString("G7", CultureInfo.InvariantCulture);

// Note: line terminations here will encode differently based on which platform QRCoder was compiled on (CRLF vs LF);
// however, PostScript interpreters should handle both equally well.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,70 +50,38 @@ grestore
gsave
sc sc scale
0 33 1 sub translate
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b f f f f f f f b f b f b f b b b f b f f f f f f f b b b b
nl
b b b b f b b b b b f b b f f f f b b b b b f b b b b b f b b b b
nl
b b b b f b f f f b f b f f f b b f f b b b f b f f f b f b b b b
nl
b b b b f b f f f b f b f f f b f f f f f b f b f f f b f b b b b
nl
b b b b f b f f f b f b f b b f f b b f f b f b f f f b f b b b b
nl
b b b b f b b b b b f b b b f f b b b b f b f b b b b b f b b b b
nl
b b b b f f f f f f f b f b f b f b f b f b f f f f f f f b b b b
nl
b b b b b b b b b b b b b b f b f b b b b b b b b b b b b b b b b
nl
b b b b f f f f b b f b f b f f b b f b f f b b f f f b f b b b b
nl
b b b b f f b f f f b f f b f b f b f b b b b b b f f b b b b b b
nl
b b b b b f f f f f f b b f f f f b b b f f b f f f b b b b b b b
nl
b b b b b b b f b f b b f f f f f f b f f b b f b f f b b b b b b
nl
b b b b f b f f b f f f b f f f b f b b b f f b f b f b b b b b b
nl
b b b b b f f f b f b b b b b b b b f f f b f f f b b f f b b b b
nl
b b b b b f b b b f f f f f b b f f b b b b b f b f b f b b b b b
nl
b b b b f b f f b f b f f f f f f b f b b f f b b f b b f b b b b
nl
b b b b b b f b f f f f f f f f b f f b f f f f f b f b b b b b b
nl
b b b b b b b b b b b b f f b f b f b b f b b b f b f f b b b b b
nl
b b b b f f f f f f f b b b b b b b b b f b f b f f b f f b b b b
nl
b b b b f b b b b b f b b f f b b b f f f b b b f f b b f b b b b
nl
b b b b f b f f f b f b b b f b f b b b f f f f f b b b f b b b b
nl
b b b b f b f f f b f b f b f f f b f b b f f b f f f f f b b b b
nl
b b b b f b f f f b f b f b b f b b f b f b f b f f b f b b b b b
nl
b b b b f b b b b b f b f f f f b f f b b f b b f f f b b b b b b
nl
b b b b f f f f f f f b f b b b b f b b b f f b b b f f f b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b f f f f f f f b f b f b f b b b f b f f f f f f f b b b b nl
b b b b f b b b b b f b b f f f f b b b b b f b b b b b f b b b b nl
b b b b f b f f f b f b f f f b b f f b b b f b f f f b f b b b b nl
b b b b f b f f f b f b f f f b f f f f f b f b f f f b f b b b b nl
b b b b f b f f f b f b f b b f f b b f f b f b f f f b f b b b b nl
b b b b f b b b b b f b b b f f b b b b f b f b b b b b f b b b b nl
b b b b f f f f f f f b f b f b f b f b f b f f f f f f f b b b b nl
b b b b b b b b b b b b b b f b f b b b b b b b b b b b b b b b b nl
b b b b f f f f b b f b f b f f b b f b f f b b f f f b f b b b b nl
b b b b f f b f f f b f f b f b f b f b b b b b b f f b b b b b b nl
b b b b b f f f f f f b b f f f f b b b f f b f f f b b b b b b b nl
b b b b b b b f b f b b f f f f f f b f f b b f b f f b b b b b b nl
b b b b f b f f b f f f b f f f b f b b b f f b f b f b b b b b b nl
b b b b b f f f b f b b b b b b b b f f f b f f f b b f f b b b b nl
b b b b b f b b b f f f f f b b f f b b b b b f b f b f b b b b b nl
b b b b f b f f b f b f f f f f f b f b b f f b b f b b f b b b b nl
b b b b b b f b f f f f f f f f b f f b f f f f f b f b b b b b b nl
b b b b b b b b b b b b f f b f b f b b f b b b f b f f b b b b b nl
b b b b f f f f f f f b b b b b b b b b f b f b f f b f f b b b b nl
b b b b f b b b b b f b b f f b b b f f f b b b f f b b f b b b b nl
b b b b f b f f f b f b b b f b f b b b f f f f f b b b f b b b b nl
b b b b f b f f f b f b f b f f f b f b b f f b f f f f f b b b b nl
b b b b f b f f f b f b f b b f b b f b f b f b f f b f b b b b b nl
b b b b f b b b b b f b f f f f b f f b b f b b f f f b b b b b b nl
b b b b f f f f f f f b f b b b b f b b b f f b b b f f f b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
%%EndBody
grestore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,70 +50,38 @@ grestore
gsave
sc sc scale
0 33 1 sub translate
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b f f f f f f f b f b f b f b b b f b f f f f f f f b b b b
nl
b b b b f b b b b b f b b f f f f b b b b b f b b b b b f b b b b
nl
b b b b f b f f f b f b f f f b b f f b b b f b f f f b f b b b b
nl
b b b b f b f f f b f b f f f b f f f f f b f b f f f b f b b b b
nl
b b b b f b f f f b f b f b b f f b b f f b f b f f f b f b b b b
nl
b b b b f b b b b b f b b b f f b b b b f b f b b b b b f b b b b
nl
b b b b f f f f f f f b f b f b f b f b f b f f f f f f f b b b b
nl
b b b b b b b b b b b b b b f b f b b b b b b b b b b b b b b b b
nl
b b b b f f f f b b f b f b f f b b f b f f b b f f f b f b b b b
nl
b b b b f f b f f f b f f b f b f b f b b b b b b f f b b b b b b
nl
b b b b b f f f f f f b b f f f f b b b f f b f f f b b b b b b b
nl
b b b b b b b f b f b b f f f f f f b f f b b f b f f b b b b b b
nl
b b b b f b f f b f f f b f f f b f b b b f f b f b f b b b b b b
nl
b b b b b f f f b f b b b b b b b b f f f b f f f b b f f b b b b
nl
b b b b b f b b b f f f f f b b f f b b b b b f b f b f b b b b b
nl
b b b b f b f f b f b f f f f f f b f b b f f b b f b b f b b b b
nl
b b b b b b f b f f f f f f f f b f f b f f f f f b f b b b b b b
nl
b b b b b b b b b b b b f f b f b f b b f b b b f b f f b b b b b
nl
b b b b f f f f f f f b b b b b b b b b f b f b f f b f f b b b b
nl
b b b b f b b b b b f b b f f b b b f f f b b b f f b b f b b b b
nl
b b b b f b f f f b f b b b f b f b b b f f f f f b b b f b b b b
nl
b b b b f b f f f b f b f b f f f b f b b f f b f f f f f b b b b
nl
b b b b f b f f f b f b f b b f b b f b f b f b f f b f b b b b b
nl
b b b b f b b b b b f b f f f f b f f b b f b b f f f b b b b b b
nl
b b b b f f f f f f f b f b b b b f b b b f f b b b f f f b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b f f f f f f f b f b f b f b b b f b f f f f f f f b b b b nl
b b b b f b b b b b f b b f f f f b b b b b f b b b b b f b b b b nl
b b b b f b f f f b f b f f f b b f f b b b f b f f f b f b b b b nl
b b b b f b f f f b f b f f f b f f f f f b f b f f f b f b b b b nl
b b b b f b f f f b f b f b b f f b b f f b f b f f f b f b b b b nl
b b b b f b b b b b f b b b f f b b b b f b f b b b b b f b b b b nl
b b b b f f f f f f f b f b f b f b f b f b f f f f f f f b b b b nl
b b b b b b b b b b b b b b f b f b b b b b b b b b b b b b b b b nl
b b b b f f f f b b f b f b f f b b f b f f b b f f f b f b b b b nl
b b b b f f b f f f b f f b f b f b f b b b b b b f f b b b b b b nl
b b b b b f f f f f f b b f f f f b b b f f b f f f b b b b b b b nl
b b b b b b b f b f b b f f f f f f b f f b b f b f f b b b b b b nl
b b b b f b f f b f f f b f f f b f b b b f f b f b f b b b b b b nl
b b b b b f f f b f b b b b b b b b f f f b f f f b b f f b b b b nl
b b b b b f b b b f f f f f b b f f b b b b b f b f b f b b b b b nl
b b b b f b f f b f b f f f f f f b f b b f f b b f b b f b b b b nl
b b b b b b f b f f f f f f f f b f f b f f f f f b f b b b b b b nl
b b b b b b b b b b b b f f b f b f b b f b b b f b f f b b b b b nl
b b b b f f f f f f f b b b b b b b b b f b f b f f b f f b b b b nl
b b b b f b b b b b f b b f f b b b f f f b b b f f b b f b b b b nl
b b b b f b f f f b f b b b f b f b b b f f f f f b b b f b b b b nl
b b b b f b f f f b f b f b f f f b f b b f f b f f f f f b b b b nl
b b b b f b f f f b f b f b b f b b f b f b f b f f b f b b b b b nl
b b b b f b b b b b f b f f f f b f f b b f b b f f f b b b b b b nl
b b b b f f f f f f f b f b b b b f b b b f f b b b f f f b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
%%EndBody
grestore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,70 +50,38 @@ grestore
gsave
sc sc scale
0 33 1 sub translate
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b f f f f f f f b f b f b f b b b f b f f f f f f f b b b b
nl
b b b b f b b b b b f b b f f f f b b b b b f b b b b b f b b b b
nl
b b b b f b f f f b f b f f f b b f f b b b f b f f f b f b b b b
nl
b b b b f b f f f b f b f f f b f f f f f b f b f f f b f b b b b
nl
b b b b f b f f f b f b f b b f f b b f f b f b f f f b f b b b b
nl
b b b b f b b b b b f b b b f f b b b b f b f b b b b b f b b b b
nl
b b b b f f f f f f f b f b f b f b f b f b f f f f f f f b b b b
nl
b b b b b b b b b b b b b b f b f b b b b b b b b b b b b b b b b
nl
b b b b f f f f b b f b f b f f b b f b f f b b f f f b f b b b b
nl
b b b b f f b f f f b f f b f b f b f b b b b b b f f b b b b b b
nl
b b b b b f f f f f f b b f f f f b b b f f b f f f b b b b b b b
nl
b b b b b b b f b f b b f f f f f f b f f b b f b f f b b b b b b
nl
b b b b f b f f b f f f b f f f b f b b b f f b f b f b b b b b b
nl
b b b b b f f f b f b b b b b b b b f f f b f f f b b f f b b b b
nl
b b b b b f b b b f f f f f b b f f b b b b b f b f b f b b b b b
nl
b b b b f b f f b f b f f f f f f b f b b f f b b f b b f b b b b
nl
b b b b b b f b f f f f f f f f b f f b f f f f f b f b b b b b b
nl
b b b b b b b b b b b b f f b f b f b b f b b b f b f f b b b b b
nl
b b b b f f f f f f f b b b b b b b b b f b f b f f b f f b b b b
nl
b b b b f b b b b b f b b f f b b b f f f b b b f f b b f b b b b
nl
b b b b f b f f f b f b b b f b f b b b f f f f f b b b f b b b b
nl
b b b b f b f f f b f b f b f f f b f b b f f b f f f f f b b b b
nl
b b b b f b f f f b f b f b b f b b f b f b f b f f b f b b b b b
nl
b b b b f b b b b b f b f f f f b f f b b f b b f f f b b b b b b
nl
b b b b f f f f f f f b f b b b b f b b b f f b b b f f f b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b f f f f f f f b f b f b f b b b f b f f f f f f f b b b b nl
b b b b f b b b b b f b b f f f f b b b b b f b b b b b f b b b b nl
b b b b f b f f f b f b f f f b b f f b b b f b f f f b f b b b b nl
b b b b f b f f f b f b f f f b f f f f f b f b f f f b f b b b b nl
b b b b f b f f f b f b f b b f f b b f f b f b f f f b f b b b b nl
b b b b f b b b b b f b b b f f b b b b f b f b b b b b f b b b b nl
b b b b f f f f f f f b f b f b f b f b f b f f f f f f f b b b b nl
b b b b b b b b b b b b b b f b f b b b b b b b b b b b b b b b b nl
b b b b f f f f b b f b f b f f b b f b f f b b f f f b f b b b b nl
b b b b f f b f f f b f f b f b f b f b b b b b b f f b b b b b b nl
b b b b b f f f f f f b b f f f f b b b f f b f f f b b b b b b b nl
b b b b b b b f b f b b f f f f f f b f f b b f b f f b b b b b b nl
b b b b f b f f b f f f b f f f b f b b b f f b f b f b b b b b b nl
b b b b b f f f b f b b b b b b b b f f f b f f f b b f f b b b b nl
b b b b b f b b b f f f f f b b f f b b b b b f b f b f b b b b b nl
b b b b f b f f b f b f f f f f f b f b b f f b b f b b f b b b b nl
b b b b b b f b f f f f f f f f b f f b f f f f f b f b b b b b b nl
b b b b b b b b b b b b f f b f b f b b f b b b f b f f b b b b b nl
b b b b f f f f f f f b b b b b b b b b f b f b f f b f f b b b b nl
b b b b f b b b b b f b b f f b b b f f f b b b f f b b f b b b b nl
b b b b f b f f f b f b b b f b f b b b f f f f f b b b f b b b b nl
b b b b f b f f f b f b f b f f f b f b b f f b f f f f f b b b b nl
b b b b f b f f f b f b f b b f b b f b f b f b f f b f b b b b b nl
b b b b f b b b b b f b f f f f b f f b b f b b f f f b b b b b b nl
b b b b f f f f f f f b f b b b b f b b b f f b b b f f f b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b nl
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
%%EndBody
grestore
Expand Down
Loading