Browse Source

Cleaned up initial project, changed a few public fields to properties

pull/31/head
Fredrik Stipps 9 years ago
parent
commit
805cda0117
  1. 4
      QRCoder/AbstractQRCode.cs
  2. 93
      QRCoder/PayloadGenerator.cs
  3. 52
      QRCoder/QRCode.cs
  4. 19
      QRCoder/QRCodeData.cs
  5. 708
      QRCoder/QRCodeGenerator.cs
  6. 29
      QRCoder/SvgQRCode.cs
  7. 32
      QRCoder/UnityQRCode.cs
  8. 2
      QRCoderProject.sln.DotSettings

4
QRCoder/AbstractQRCode.cs

@ -2,10 +2,10 @@
{
public abstract class AbstractQRCode<T>
{
protected QRCodeData qrCodeData;
protected QRCodeData QrCodeData { get; set; }
protected AbstractQRCode(QRCodeData data) {
qrCodeData = data;
this.QrCodeData = data;
}
public abstract T GetGraphic(int pixelsPerModule);

93
QRCoder/PayloadGenerator.cs

@ -1,30 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QRCoder
namespace QRCoder
{
public static class PayloadGenerator
{
public class WiFi
{
private string SSID, password, authenticationMode;
private bool isHiddenSSID;
public WiFi(string SSID, string password, Authentication authenticationMode, bool isHiddenSSID = false)
private readonly string ssid, password, authenticationMode;
private readonly bool isHiddenSsid;
public WiFi(string ssid, string password, Authentication authenticationMode, bool isHiddenSSID = false)
{
this.SSID = escapeInput(SSID);
this.SSID = isHexStyle(this.SSID) ? "\"" + this.SSID + "\"" : this.SSID;
this.password = escapeInput(password);
this.ssid = EscapeInput(ssid);
this.ssid = isHexStyle(this.ssid) ? "\"" + this.ssid + "\"" : this.ssid;
this.password = EscapeInput(password);
this.password = isHexStyle(this.password) ? "\"" + this.password + "\"" : this.password;
this.authenticationMode = authenticationMode.ToString();
this.isHiddenSSID = isHiddenSSID;
this.isHiddenSsid = isHiddenSSID;
}
public override string ToString()
{
return String.Format("WIFI:T:{0};S:{1};P:{2};{3};", authenticationMode, SSID, password, (isHiddenSSID ? "H:true" : string.Empty));
return
$"WIFI:T:{this.authenticationMode};S:{this.ssid};P:{this.password};{(this.isHiddenSsid ? "H:true" : string.Empty)};";
}
public enum Authentication
@ -38,8 +34,8 @@ namespace QRCoder
public class Mail
{
private string mailReceiver, subject, message;
private MailEncoding encoding;
private readonly string mailReceiver, subject, message;
private readonly MailEncoding encoding;
public Mail(string mailReceiver, MailEncoding encoding = MailEncoding.MAILTO)
{
@ -67,16 +63,19 @@ namespace QRCoder
public override string ToString()
{
switch (encoding)
switch (this.encoding)
{
case MailEncoding.MAILTO:
return String.Format("mailto:{0}?subject={1}&body={2}", mailReceiver, System.Uri.EscapeDataString(subject), System.Uri.EscapeDataString(message));
return
$"mailto:{this.mailReceiver}?subject={System.Uri.EscapeDataString(this.subject)}&body={System.Uri.EscapeDataString(this.message)}";
case MailEncoding.MATMSG:
return String.Format("MATMSG:TO:{0};SUB:{1};BODY:{2};;", mailReceiver, escapeInput(subject), escapeInput(message));
return
$"MATMSG:TO:{this.mailReceiver};SUB:{EscapeInput(this.subject)};BODY:{EscapeInput(this.message)};;";
case MailEncoding.SMTP:
return String.Format("SMTP:{0}:{1}:{2}", mailReceiver, escapeInput(subject, true), escapeInput(message, true));
return
$"SMTP:{this.mailReceiver}:{EscapeInput(this.subject, true)}:{EscapeInput(this.message, true)}";
default:
return mailReceiver;
return this.mailReceiver;
}
}
@ -90,8 +89,8 @@ namespace QRCoder
public class SMS
{
private string number, subject;
private SMSEncoding encoding;
private readonly string number, subject;
private readonly SMSEncoding encoding;
public SMS(string number, SMSEncoding encoding = SMSEncoding.SMS)
{
@ -110,14 +109,14 @@ namespace QRCoder
public override string ToString()
{
switch (encoding)
switch (this.encoding)
{
case SMSEncoding.SMS:
return String.Format("sms:{0}?body={1}", number, System.Uri.EscapeDataString(subject));
return $"sms:{this.number}?body={System.Uri.EscapeDataString(this.subject)}";
case SMSEncoding.SMS_iOS:
return String.Format("sms:{0};body={1}", number, System.Uri.EscapeDataString(subject));
return $"sms:{this.number};body={System.Uri.EscapeDataString(this.subject)}";
case SMSEncoding.SMSTO:
return String.Format("SMSTO:{0}:{1}", number, subject);
return $"SMSTO:{this.number}:{this.subject}";
default:
return "sms:";
}
@ -133,8 +132,8 @@ namespace QRCoder
public class MMS
{
private string number, subject;
private MMSEncoding encoding;
private readonly string number, subject;
private readonly MMSEncoding encoding;
public MMS(string number, MMSEncoding encoding = MMSEncoding.MMS)
{
@ -152,12 +151,12 @@ namespace QRCoder
public override string ToString()
{
switch (encoding)
switch (this.encoding)
{
case MMSEncoding.MMSTO:
return String.Format("mmsto:{0}?subject={1}", number, System.Uri.EscapeDataString(subject));
return $"mmsto:{this.number}?subject={System.Uri.EscapeDataString(this.subject)}";
case MMSEncoding.MMS:
return String.Format("mms:{0}?body={1}", number, System.Uri.EscapeDataString(subject));
return $"mms:{this.number}?body={System.Uri.EscapeDataString(this.subject)}";
default:
return "mms:";
}
@ -174,8 +173,8 @@ namespace QRCoder
public class Geolocation
{
private string latitude, longitude;
private GeolocationEncoding encoding;
private readonly string latitude, longitude;
private readonly GeolocationEncoding encoding;
public Geolocation(string latitude, string longitude, GeolocationEncoding encoding = GeolocationEncoding.GEO)
{
this.latitude = latitude.Replace(",",".");
@ -185,12 +184,12 @@ namespace QRCoder
public override string ToString()
{
switch (encoding)
switch (this.encoding)
{
case GeolocationEncoding.GEO:
return String.Format("geo:{0},{1}", latitude, longitude);
return $"geo:{this.latitude},{this.longitude}";
case GeolocationEncoding.GoogleMaps:
return String.Format("http://maps.google.com/maps?q={0},{1}", latitude, longitude);
return $"http://maps.google.com/maps?q={this.latitude},{this.longitude}";
default:
return "geo:";
}
@ -205,7 +204,7 @@ namespace QRCoder
public class PhoneNumber
{
private string number;
private readonly string number;
public PhoneNumber(string number)
{
this.number = number;
@ -213,13 +212,13 @@ namespace QRCoder
public override string ToString()
{
return "tel:"+number;
return "tel:"+ this.number;
}
}
public class Url
{
private string url;
private readonly string url;
public Url(string url)
{
this.url = url;
@ -227,30 +226,30 @@ namespace QRCoder
public override string ToString()
{
return (!url.StartsWith("http") ? "http://" + url : url);
return (!this.url.StartsWith("http") ? "http://" + this.url : this.url);
}
}
public class Bookmark
{
private string url, title;
private readonly string url, title;
public Bookmark(string url, string title)
{
this.url = escapeInput(url);
this.title = escapeInput(title);
this.url = EscapeInput(url);
this.title = EscapeInput(title);
}
public override string ToString()
{
return String.Format("MEBKM:TITLE:{0};URL:{1};;", title, url);
return $"MEBKM:TITLE:{this.title};URL:{this.url};;";
}
}
private static string escapeInput(string inp, bool simple = false)
private static string EscapeInput(string inp, bool simple = false)
{
char[] forbiddenChars = { '\\', ';', ',', ':' };
if (simple) { forbiddenChars = new char[1] { ':' }; }
foreach (char c in forbiddenChars)
foreach (var c in forbiddenChars)
{
inp = inp.Replace(c.ToString(), "\\" + c);
}

52
QRCoder/QRCode.cs

@ -11,26 +11,26 @@ namespace QRCoder
public override Bitmap GetGraphic(int pixelsPerModule)
{
return GetGraphic(pixelsPerModule, Color.Black, Color.White, true);
return this.GetGraphic(pixelsPerModule, Color.Black, Color.White, true);
}
public Bitmap GetGraphic(int pixelsPerModule, string darkColorHtmlHex, string lightColorHtmlHex, bool drawQuietZones = true)
{
return GetGraphic(pixelsPerModule, ColorTranslator.FromHtml(darkColorHtmlHex), ColorTranslator.FromHtml(lightColorHtmlHex), true);
return this.GetGraphic(pixelsPerModule, ColorTranslator.FromHtml(darkColorHtmlHex), ColorTranslator.FromHtml(lightColorHtmlHex), true);
}
public Bitmap GetGraphic(int pixelsPerModule, Color darkColor, Color lightColor, bool drawQuietZones = true)
{
var size = (qrCodeData.ModuleMatrix.Count - (drawQuietZones ? 0 : 8)) * pixelsPerModule;
int offset = drawQuietZones ? 0 : 4 * pixelsPerModule;
var size = (this.QrCodeData.ModuleMatrix.Count - (drawQuietZones ? 0 : 8)) * pixelsPerModule;
var offset = drawQuietZones ? 0 : 4 * pixelsPerModule;
Bitmap bmp = new Bitmap(size, size);
Graphics gfx = Graphics.FromImage(bmp);
for (int x = 0; x < size + offset; x = x + pixelsPerModule)
var bmp = new Bitmap(size, size);
var gfx = Graphics.FromImage(bmp);
for (var x = 0; x < size + offset; x = x + pixelsPerModule)
{
for (int y = 0; y < size + offset; y = y + pixelsPerModule)
for (var y = 0; y < size + offset; y = y + pixelsPerModule)
{
var module = qrCodeData.ModuleMatrix[(y + pixelsPerModule)/pixelsPerModule - 1][(x + pixelsPerModule)/pixelsPerModule - 1];
var module = this.QrCodeData.ModuleMatrix[(y + pixelsPerModule)/pixelsPerModule - 1][(x + pixelsPerModule)/pixelsPerModule - 1];
if (module)
{
gfx.FillRectangle(new SolidBrush(darkColor), new Rectangle(x - offset, y - offset, pixelsPerModule, pixelsPerModule));
@ -48,16 +48,16 @@ namespace QRCoder
public Bitmap GetGraphic(int pixelsPerModule, Color darkColor, Color lightColor, Bitmap icon=null, int iconSizePercent=15, int iconBorderWidth = 6, bool drawQuietZones = true)
{
var size = (qrCodeData.ModuleMatrix.Count - (drawQuietZones ? 0 : 8)) * pixelsPerModule;
int offset = drawQuietZones ? 0 : 4 * pixelsPerModule;
var size = (this.QrCodeData.ModuleMatrix.Count - (drawQuietZones ? 0 : 8)) * pixelsPerModule;
var offset = drawQuietZones ? 0 : 4 * pixelsPerModule;
Bitmap bmp = new Bitmap(size, size, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Graphics gfx = Graphics.FromImage(bmp);
var bmp = new Bitmap(size, size, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
var gfx = Graphics.FromImage(bmp);
gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
gfx.CompositingQuality = CompositingQuality.HighQuality;
gfx.Clear(lightColor);
bool drawIconFlag = icon != null && iconSizePercent>0 && iconSizePercent<=100;
var drawIconFlag = icon != null && iconSizePercent>0 && iconSizePercent<=100;
GraphicsPath iconPath = null;
float iconDestWidth=0, iconDestHeight=0, iconX=0, iconY=0;
@ -69,27 +69,27 @@ namespace QRCoder
iconX = (bmp.Width - iconDestWidth) / 2;
iconY = (bmp.Height - iconDestHeight) / 2;
RectangleF centerDest = new RectangleF(iconX - iconBorderWidth, iconY - iconBorderWidth, iconDestWidth + iconBorderWidth * 2, iconDestHeight + iconBorderWidth * 2);
iconPath = CreateRoundedRectanglePath(centerDest, iconBorderWidth * 2);
var centerDest = new RectangleF(iconX - iconBorderWidth, iconY - iconBorderWidth, iconDestWidth + iconBorderWidth * 2, iconDestHeight + iconBorderWidth * 2);
iconPath = this.CreateRoundedRectanglePath(centerDest, iconBorderWidth * 2);
}
SolidBrush lightBrush = new SolidBrush(lightColor);
SolidBrush darkBrush = new SolidBrush(darkColor);
var lightBrush = new SolidBrush(lightColor);
var darkBrush = new SolidBrush(darkColor);
for (int x = 0; x < size+offset; x = x + pixelsPerModule)
for (var x = 0; x < size+offset; x = x + pixelsPerModule)
{
for (int y = 0; y < size + offset; y = y + pixelsPerModule)
for (var y = 0; y < size + offset; y = y + pixelsPerModule)
{
var module = qrCodeData.ModuleMatrix[(y + pixelsPerModule)/pixelsPerModule - 1][(x + pixelsPerModule)/pixelsPerModule - 1];
var module = this.QrCodeData.ModuleMatrix[(y + pixelsPerModule)/pixelsPerModule - 1][(x + pixelsPerModule)/pixelsPerModule - 1];
if (module)
{
Rectangle r = new Rectangle(x-offset, y-offset, pixelsPerModule, pixelsPerModule);
var r = new Rectangle(x-offset, y-offset, pixelsPerModule, pixelsPerModule);
if (drawIconFlag)
{
Region region = new Region(r);
var region = new Region(r);
region.Exclude(iconPath);
gfx.FillRegion(darkBrush, region);
}
@ -106,7 +106,7 @@ namespace QRCoder
if (drawIconFlag)
{
RectangleF iconDestRect = new RectangleF(iconX, iconY, iconDestWidth, iconDestHeight);
var iconDestRect = new RectangleF(iconX, iconY, iconDestWidth, iconDestHeight);
gfx.DrawImage(icon, iconDestRect, new RectangleF(0, 0, icon.Width, icon.Height), GraphicsUnit.Pixel);
}
@ -116,7 +116,7 @@ namespace QRCoder
internal GraphicsPath CreateRoundedRectanglePath(RectangleF rect, int cornerRadius)
{
GraphicsPath roundedRect = new GraphicsPath();
var roundedRect = new GraphicsPath();
roundedRect.AddArc(rect.X, rect.Y, cornerRadius * 2, cornerRadius * 2, 180, 90);
roundedRect.AddLine(rect.X + cornerRadius, rect.Y, rect.Right - cornerRadius * 2, rect.Y);
roundedRect.AddArc(rect.X + rect.Width - cornerRadius * 2, rect.Y, cornerRadius * 2, cornerRadius * 2, 270, 90);
@ -131,7 +131,7 @@ namespace QRCoder
public void Dispose()
{
this.qrCodeData = null;
this.QrCodeData = null;
}
}
}

19
QRCoder/QRCodeData.cs

@ -8,24 +8,19 @@ namespace QRCoder
public class QRCodeData : IDisposable
{
public List<BitArray> ModuleMatrix { get; set; }
private int _version;
public QRCodeData(int version)
{
this._version = version;
this.Version = version;
var size = ModulesPerSideFromVersion(version);
ModuleMatrix = new List<BitArray>();
for (int i = 0; i < size; i++)
ModuleMatrix.Add(new BitArray(size));
this.ModuleMatrix = new List<BitArray>();
for (var i = 0; i < size; i++)
this.ModuleMatrix.Add(new BitArray(size));
}
public int version {
get {
return _version;
}
}
public int Version { get; private set; }
private int ModulesPerSideFromVersion(int version)
private static int ModulesPerSideFromVersion(int version)
{
return 21 + (version - 1) * 4;
}
@ -33,7 +28,7 @@ namespace QRCoder
public void Dispose()
{
this.ModuleMatrix = null;
this._version = 0;
this.Version = 0;
}
}

708
QRCoder/QRCodeGenerator.cs
File diff suppressed because it is too large
View File

29
QRCoder/SvgQRCode.cs

@ -1,6 +1,5 @@
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
namespace QRCoder
@ -12,37 +11,37 @@ namespace QRCoder
public override string GetGraphic(int pixelsPerModule)
{
Size viewBox = new Size(pixelsPerModule*qrCodeData.ModuleMatrix.Count, pixelsPerModule * qrCodeData.ModuleMatrix.Count);
return GetGraphic(viewBox, Color.Black, Color.White);
var viewBox = new Size(pixelsPerModule*this.QrCodeData.ModuleMatrix.Count, pixelsPerModule * this.QrCodeData.ModuleMatrix.Count);
return this.GetGraphic(viewBox, Color.Black, Color.White);
}
public string GetGraphic(Size viewBox)
{
return GetGraphic(viewBox, Color.Black, Color.White);
return this.GetGraphic(viewBox, Color.Black, Color.White);
}
public string GetGraphic(Size viewBox, Color darkColor, Color lightColor)
{
return GetGraphic(viewBox, ColorTranslator.ToHtml(Color.FromArgb(darkColor.ToArgb())), ColorTranslator.ToHtml(Color.FromArgb(lightColor.ToArgb())));
return this.GetGraphic(viewBox, ColorTranslator.ToHtml(Color.FromArgb(darkColor.ToArgb())), ColorTranslator.ToHtml(Color.FromArgb(lightColor.ToArgb())));
}
public string GetGraphic(Size viewBox, Color darkColor, Color lightColor, bool drawQuietZones = true)
{
return GetGraphic(viewBox, ColorTranslator.ToHtml(Color.FromArgb(darkColor.ToArgb())), ColorTranslator.ToHtml(Color.FromArgb(lightColor.ToArgb())), drawQuietZones);
return this.GetGraphic(viewBox, ColorTranslator.ToHtml(Color.FromArgb(darkColor.ToArgb())), ColorTranslator.ToHtml(Color.FromArgb(lightColor.ToArgb())), drawQuietZones);
}
public string GetGraphic(Size viewBox, string darkColorHex, string lightColorHex, bool drawQuietZones = true)
{
StringBuilder svgFile = new StringBuilder(@"<svg version=""1.1"" baseProfile=""full"" width="""+viewBox.Width+ @""" height="""+viewBox.Height+ @""" xmlns=""http://www.w3.org/2000/svg"">");
int unitsPerModule = (int)Math.Floor(Convert.ToDouble(Math.Min(viewBox.Width, viewBox.Height)) / qrCodeData.ModuleMatrix.Count);
var size = (qrCodeData.ModuleMatrix.Count - (drawQuietZones ? 0 : 8)) * unitsPerModule;
int offset = drawQuietZones ? 0 : 4 * unitsPerModule;
int drawableSize = size + offset;
for (int x = 0; x < drawableSize; x = x + unitsPerModule)
var svgFile = new StringBuilder(@"<svg version=""1.1"" baseProfile=""full"" width="""+viewBox.Width+ @""" height="""+viewBox.Height+ @""" xmlns=""http://www.w3.org/2000/svg"">");
var unitsPerModule = (int)Math.Floor(Convert.ToDouble(Math.Min(viewBox.Width, viewBox.Height)) / this.QrCodeData.ModuleMatrix.Count);
var size = (this.QrCodeData.ModuleMatrix.Count - (drawQuietZones ? 0 : 8)) * unitsPerModule;
var offset = drawQuietZones ? 0 : 4 * unitsPerModule;
var drawableSize = size + offset;
for (var x = 0; x < drawableSize; x = x + unitsPerModule)
{
for (int y = 0; y < drawableSize; y = y + unitsPerModule)
for (var y = 0; y < drawableSize; y = y + unitsPerModule)
{
var module = qrCodeData.ModuleMatrix[(y + unitsPerModule) / unitsPerModule - 1][(x + unitsPerModule) / unitsPerModule - 1];
var module = this.QrCodeData.ModuleMatrix[(y + unitsPerModule) / unitsPerModule - 1][(x + unitsPerModule) / unitsPerModule - 1];
svgFile.AppendLine(@"<rect x="""+(x - offset)+ @""" y=""" + (y - offset) + @""" width=""" + unitsPerModule + @""" height=""" + unitsPerModule + @""" fill=""" + (module ? darkColorHex : lightColorHex) + @""" />");
}
}
@ -52,7 +51,7 @@ namespace QRCoder
public void Dispose()
{
this.qrCodeData = null;
this.QrCodeData = null;
}
}
}

32
QRCoder/UnityQRCode.cs

@ -9,21 +9,21 @@ namespace QRCoder
public override Texture2D GetGraphic(int pixelsPerModule)
{
return GetGraphic(pixelsPerModule, Color.black, Color.white);
return this.GetGraphic(pixelsPerModule, Color.black, Color.white);
}
public Texture2D GetGraphic(int pixelsPerModule, string darkColorHtmlHex, string lightColorHtmlHex)
{
return GetGraphic(pixelsPerModule, hexToColor(darkColorHtmlHex), hexToColor(lightColorHtmlHex));
return this.GetGraphic(pixelsPerModule, HexToColor(darkColorHtmlHex), HexToColor(lightColorHtmlHex));
}
public static Color hexToColor(string hexColor)
public static Color HexToColor(string hexColor)
{
hexColor = hexColor.Replace("0x", "").Replace("#", "").Trim();
byte a = 255;
byte r = byte.Parse(hexColor.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
byte g = byte.Parse(hexColor.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
byte b = byte.Parse(hexColor.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
var r = byte.Parse(hexColor.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
var g = byte.Parse(hexColor.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
var b = byte.Parse(hexColor.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
if (hexColor.Length == 8)
{
a = byte.Parse(hexColor.Substring(6, 2), System.Globalization.NumberStyles.HexNumber);
@ -33,15 +33,15 @@ namespace QRCoder
public Texture2D GetGraphic(int pixelsPerModule, Color darkColor, Color lightColor)
{
var size = qrCodeData.ModuleMatrix.Count * pixelsPerModule;
Texture2D gfx = new Texture2D(size, size, TextureFormat.ARGB32, false);
Color[] darkBrush = GetBrush(pixelsPerModule, pixelsPerModule, darkColor);
Color[] lightBrush = GetBrush(pixelsPerModule, pixelsPerModule, lightColor);
for (int x = 0; x < size; x = x + pixelsPerModule)
var size = this.QrCodeData.ModuleMatrix.Count * pixelsPerModule;
var gfx = new Texture2D(size, size, TextureFormat.ARGB32, false);
var darkBrush = this.GetBrush(pixelsPerModule, pixelsPerModule, darkColor);
var lightBrush = this.GetBrush(pixelsPerModule, pixelsPerModule, lightColor);
for (var x = 0; x < size; x = x + pixelsPerModule)
{
for (int y = 0; y < size; y = y + pixelsPerModule)
for (var y = 0; y < size; y = y + pixelsPerModule)
{
var module = qrCodeData.ModuleMatrix[(y + pixelsPerModule) / pixelsPerModule - 1][(x + pixelsPerModule) / pixelsPerModule - 1];
var module = this.QrCodeData.ModuleMatrix[(y + pixelsPerModule) / pixelsPerModule - 1][(x + pixelsPerModule) / pixelsPerModule - 1];
if (module)
gfx.SetPixels(x, y, pixelsPerModule, pixelsPerModule, darkBrush);
else
@ -54,9 +54,9 @@ namespace QRCoder
}
internal Color[] GetBrush(int sizeX, int sizeY, Color defaultColor) {
int len = sizeX * sizeY;
List<Color> brush = new List<Color>(len);
for(int i = 0; i < len; i++){
var len = sizeX * sizeY;
var brush = new List<Color>(len);
for(var i = 0; i < len; i++){
brush.Add(defaultColor);
}

2
QRCoderProject.sln.DotSettings

@ -0,0 +1,2 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=QR/@EntryIndexedValue">QR</s:String></wpf:ResourceDictionary>
Loading…
Cancel
Save