mirror of
https://github.com/caperren/school_archives.git
synced 2025-11-09 21:51:15 +00:00
Added EPD business card project to archives.
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,132 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
|
||||
|
||||
namespace FontConv {
|
||||
|
||||
/*
|
||||
* Class for writing out fonts suitable for the Arduino
|
||||
*/
|
||||
|
||||
public class ArduinoFontWriter : FontWriter {
|
||||
|
||||
/*
|
||||
* Constructor
|
||||
*/
|
||||
|
||||
public ArduinoFontWriter(SizedFont sf,StreamWriter headerWriter,StreamWriter sourceWriter,XmlElement parent,Control refControl)
|
||||
: base(sf,headerWriter,sourceWriter,parent,refControl) {
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* write trailer
|
||||
*/
|
||||
|
||||
override protected void WriteTrailer() {
|
||||
_headerWriter.Write("}\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* write source trailer
|
||||
*/
|
||||
|
||||
override protected void WriteSourceTrailer() {
|
||||
_sourceWriter.Write("}\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* write header
|
||||
*/
|
||||
|
||||
override protected void WriteHeader() {
|
||||
|
||||
_headerWriter.Write("#pragma once\n\n");
|
||||
_headerWriter.Write("#include \"Font.h\"\n\n");
|
||||
_headerWriter.Write("namespace lcd {\n\n");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Write the source header
|
||||
*/
|
||||
|
||||
protected override void WriteSourceHeader() {
|
||||
_sourceWriter.Write("#include <avr/pgmspace.h>\n");
|
||||
_sourceWriter.Write("#include \"Font.h\"\n\n");
|
||||
_sourceWriter.Write("namespace lcd {\n\n");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* write font byte declarations
|
||||
*/
|
||||
|
||||
override protected void WriteFontBytes() {
|
||||
|
||||
string str;
|
||||
bool[,] values;
|
||||
byte b,bitpos;
|
||||
int x,y;
|
||||
|
||||
_sourceWriter.Write(" // byte definitions for "+_font.Identifier+"\n\n");
|
||||
|
||||
foreach(char c in _font.Characters()) {
|
||||
|
||||
str=GetBytesName(c);
|
||||
|
||||
_sourceWriter.Write(" const uint8_t __attribute__((progmem)) "+str+"[] PROGMEM={ ");
|
||||
|
||||
values=FontUtil.GetCharacterBitmap(_refControl,_font.GdiFont,c,_font.XOffset,_font.YOffset,_font.ExtraLines);
|
||||
|
||||
b=0;
|
||||
bitpos=0;
|
||||
|
||||
for(y=0;y<values.GetLength(1);y++)
|
||||
{
|
||||
for(x=0;x<values.GetLength(0);x++)
|
||||
{
|
||||
if(values[x,y])
|
||||
b|=(byte)(1 << bitpos);
|
||||
|
||||
if(bitpos++==7)
|
||||
{
|
||||
_sourceWriter.Write(b.ToString()+",");
|
||||
bitpos=0;
|
||||
b=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(bitpos>0)
|
||||
_sourceWriter.Write(b.ToString()+",");
|
||||
|
||||
_sourceWriter.Write("};\n");
|
||||
}
|
||||
_sourceWriter.Write("\n");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* write font char declarations
|
||||
*/
|
||||
|
||||
override protected void WriteFontChars() {
|
||||
|
||||
_sourceWriter.Write(" // character definitions for "+_font.Identifier+"\n\n");
|
||||
_sourceWriter.Write(" extern const struct FontChar __attribute__((progmem)) "+GetCharName()+"[] PROGMEM={\n");
|
||||
|
||||
foreach(char c in _font.Characters()) {
|
||||
_sourceWriter.Write(" { ");
|
||||
|
||||
_sourceWriter.Write(Convert.ToUInt16(c).ToString()+",");
|
||||
_sourceWriter.Write(GetCharWidth(c)+",");
|
||||
_sourceWriter.Write(GetBytesName(c)+" },\n");
|
||||
}
|
||||
|
||||
_sourceWriter.Write(" };\n\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
37
Personal Projects/Business Card Testing/Utilities/src/fonts/FontConv/CharPreview.Designer.cs
generated
Normal file
37
Personal Projects/Business Card Testing/Utilities/src/fonts/FontConv/CharPreview.Designer.cs
generated
Normal file
@@ -0,0 +1,37 @@
|
||||
namespace FontConv
|
||||
{
|
||||
partial class CharPreview
|
||||
{
|
||||
/*
|
||||
* Required designer variable.
|
||||
*/
|
||||
private System.ComponentModel.IContainer components=null;
|
||||
|
||||
/*
|
||||
* Clean up any resources being used.
|
||||
*/
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if(disposing&&(components!=null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/*
|
||||
* Required method for Designer support - do not modify
|
||||
* the contents of this method with the code editor.
|
||||
*/
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components=new System.ComponentModel.Container();
|
||||
this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
namespace FontConv
|
||||
{
|
||||
/*
|
||||
* character preview
|
||||
*/
|
||||
|
||||
public partial class CharPreview : UserControl
|
||||
{
|
||||
/*
|
||||
* bitmap
|
||||
*/
|
||||
|
||||
private Bitmap _bitmap;
|
||||
|
||||
|
||||
/*
|
||||
* constants
|
||||
*/
|
||||
|
||||
public const int PixelSize=8;
|
||||
|
||||
|
||||
/*
|
||||
* constructor
|
||||
*/
|
||||
|
||||
public CharPreview()
|
||||
{
|
||||
InitializeComponent();
|
||||
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer,true);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* create from the given character
|
||||
*/
|
||||
|
||||
public void Create(char c_,int xoffset_,int yoffset_,int extraLines_)
|
||||
{
|
||||
bool[,] values;
|
||||
int x,y;
|
||||
Point pos;
|
||||
Point[] line;
|
||||
|
||||
values=FontUtil.GetCharacterBitmap(this,this.Font,c_,xoffset_,yoffset_,extraLines_);
|
||||
_bitmap=new Bitmap(values.GetLength(0)*PixelSize,values.GetLength(1)*PixelSize);
|
||||
|
||||
pos=Point.Empty;
|
||||
|
||||
using(Graphics g=Graphics.FromImage(_bitmap))
|
||||
{
|
||||
g.FillRectangle(Brushes.White,0,0,_bitmap.Width,_bitmap.Height);
|
||||
|
||||
for(y=0;y<values.GetLength(1);y++)
|
||||
{
|
||||
for(x=0;x<values.GetLength(0);x++)
|
||||
{
|
||||
if(values[x,y])
|
||||
g.FillRectangle(Brushes.Black,pos.X,pos.Y,PixelSize,PixelSize);
|
||||
|
||||
pos.X+=PixelSize;
|
||||
}
|
||||
|
||||
pos.X=0;
|
||||
pos.Y+=PixelSize;
|
||||
}
|
||||
|
||||
// grid
|
||||
|
||||
line=new Point[2];
|
||||
line[0].X=line[1].X=0;
|
||||
line[0].Y=0;
|
||||
line[1].Y=_bitmap.Height;
|
||||
|
||||
for(x=0;x<=values.GetLength(0);x++)
|
||||
{
|
||||
g.DrawLine(Pens.LightGray,line[0],line[1]);
|
||||
line[0].X+=PixelSize;
|
||||
line[1].X+=PixelSize;
|
||||
}
|
||||
|
||||
line[0].X=0;
|
||||
line[1].X=_bitmap.Width;
|
||||
line[0].Y=line[1].Y=0;
|
||||
|
||||
for(y=0;y<=values.GetLength(1);y++)
|
||||
{
|
||||
g.DrawLine(Pens.LightGray,line[0],line[1]);
|
||||
line[0].Y+=PixelSize;
|
||||
line[1].Y+=PixelSize;
|
||||
}
|
||||
}
|
||||
|
||||
// set the control size
|
||||
|
||||
this.Size=_bitmap.Size;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* paint the background
|
||||
*/
|
||||
|
||||
protected override void OnPaintBackground(PaintEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* paint the control
|
||||
*/
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
e.Graphics.DrawImageUnscaled(_bitmap,0,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
47
Personal Projects/Business Card Testing/Utilities/src/fonts/FontConv/FontChar.Designer.cs
generated
Normal file
47
Personal Projects/Business Card Testing/Utilities/src/fonts/FontConv/FontChar.Designer.cs
generated
Normal file
@@ -0,0 +1,47 @@
|
||||
namespace FontConv
|
||||
{
|
||||
partial class FontChar
|
||||
{
|
||||
/*
|
||||
* Required designer variable.
|
||||
*/
|
||||
|
||||
private System.ComponentModel.IContainer components=null;
|
||||
|
||||
/*
|
||||
* Clean up any resources being used.
|
||||
*/
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if(disposing&&(components!=null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/*
|
||||
* Required method for Designer support - do not modify
|
||||
* the contents of this method with the code editor.
|
||||
*/
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// FontChar
|
||||
//
|
||||
this.AutoScaleDimensions=new System.Drawing.SizeF(6F,13F);
|
||||
this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Name="FontChar";
|
||||
this.MouseLeave+=new System.EventHandler(this.FontChar_MouseLeave);
|
||||
this.MouseEnter+=new System.EventHandler(this.FontChar_MouseEnter);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Drawing.Text;
|
||||
using System;
|
||||
|
||||
|
||||
namespace FontConv
|
||||
{
|
||||
/*
|
||||
* Font character
|
||||
*/
|
||||
|
||||
public partial class FontChar : UserControl
|
||||
{
|
||||
/*
|
||||
* members
|
||||
*/
|
||||
|
||||
private bool _hover=false;
|
||||
private ToolTip _tooltip;
|
||||
|
||||
|
||||
/*
|
||||
* properties
|
||||
*/
|
||||
|
||||
public bool Selected { get; set; }
|
||||
|
||||
|
||||
/*
|
||||
* constructor
|
||||
*/
|
||||
|
||||
public FontChar(ToolTip tooltip)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_tooltip=tooltip;
|
||||
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer,true);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* background paint
|
||||
*/
|
||||
|
||||
protected override void OnPaintBackground(PaintEventArgs e)
|
||||
{
|
||||
Brush b;
|
||||
|
||||
if(!this.Selected && _hover)
|
||||
b=Brushes.Tan;
|
||||
else
|
||||
b=this.Selected ? SystemBrushes.Highlight : SystemBrushes.Control;
|
||||
|
||||
e.Graphics.FillRectangle(b,e.ClipRectangle);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* paint the character
|
||||
*/
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
e.Graphics.TextRenderingHint=TextRenderingHint.SingleBitPerPixel;
|
||||
|
||||
e.Graphics.DrawString(
|
||||
this.Text,
|
||||
this.Font,
|
||||
this.Selected ? SystemBrushes.HighlightText : SystemBrushes.WindowText,
|
||||
0,0,
|
||||
StringFormat.GenericTypographic);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* mouse enter
|
||||
*/
|
||||
|
||||
private void FontChar_MouseEnter(object sender,System.EventArgs e)
|
||||
{
|
||||
_hover=true;
|
||||
_tooltip.SetToolTip(this,Convert.ToInt32(this.Text[0]).ToString());
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* mouse leave
|
||||
*/
|
||||
|
||||
private void FontChar_MouseLeave(object sender,System.EventArgs e)
|
||||
{
|
||||
_hover=false;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,127 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{34591688-EAE4-41D5-957C-AB5FA906BA80}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>FontConv</RootNamespace>
|
||||
<AssemblyName>FontConv</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ArduinoFontWriter.cs" />
|
||||
<Compile Include="CharPreview.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CharPreview.Designer.cs">
|
||||
<DependentUpon>CharPreview.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FontChar.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FontChar.Designer.cs">
|
||||
<DependentUpon>FontChar.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FontReader.cs" />
|
||||
<Compile Include="FontUtil.cs" />
|
||||
<Compile Include="FontWriter.cs" />
|
||||
<Compile Include="FormMain.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormMain.Designer.cs">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PreviewText.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PreviewText.Designer.cs">
|
||||
<DependentUpon>PreviewText.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="FontChar.resx">
|
||||
<DependentUpon>FontChar.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FormMain.resx">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Compile Include="SizedFont.cs" />
|
||||
<Compile Include="Stm32plusFontWriter.cs" />
|
||||
<Compile Include="TargetDevice.cs" />
|
||||
<Compile Include="Util.cs" />
|
||||
<Compile Include="XmlUtil.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FontConv", "FontConv.csproj", "{34591688-EAE4-41D5-957C-AB5FA906BA80}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{34591688-EAE4-41D5-957C-AB5FA906BA80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{34591688-EAE4-41D5-957C-AB5FA906BA80}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{34591688-EAE4-41D5-957C-AB5FA906BA80}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{34591688-EAE4-41D5-957C-AB5FA906BA80}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Binary file not shown.
@@ -0,0 +1,74 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FontConv {
|
||||
|
||||
abstract public class FontReader {
|
||||
|
||||
/*
|
||||
* load from XML
|
||||
*/
|
||||
|
||||
static public SizedFont Load(String filename) {
|
||||
|
||||
XmlDocument doc;
|
||||
XmlNodeList charsNodes;
|
||||
char c;
|
||||
String fontfile;
|
||||
int fontsize;
|
||||
SizedFont sf;
|
||||
|
||||
// read the XML
|
||||
|
||||
doc=new XmlDocument();
|
||||
doc.Load(filename);
|
||||
|
||||
// get file and size to create the SizedFont
|
||||
|
||||
fontfile=XmlUtil.GetString(doc.DocumentElement,"Filename",null,true);
|
||||
fontsize=XmlUtil.GetInt(doc.DocumentElement,"Size",0,true);
|
||||
|
||||
// give the user the chance to find missing fonts
|
||||
|
||||
if(!File.Exists(fontfile)) {
|
||||
|
||||
OpenFileDialog ofn;
|
||||
|
||||
if(MessageBox.Show(fontfile+" does not exist. Click OK to browse for the font file or Cancel to abort","Font not found",MessageBoxButtons.OKCancel,MessageBoxIcon.Stop)==DialogResult.Cancel)
|
||||
throw new Exception("Font not found");
|
||||
|
||||
ofn=new OpenFileDialog();
|
||||
|
||||
ofn.FileName=fontfile;
|
||||
ofn.Filter="Font Files (*.ttf)|*.ttf|All Files (*.*)|*.*||";
|
||||
|
||||
if(ofn.ShowDialog()==DialogResult.Cancel)
|
||||
throw new Exception("Font not found");
|
||||
|
||||
fontfile=ofn.FileName;
|
||||
}
|
||||
|
||||
sf=new SizedFont(fontfile,fontsize);
|
||||
|
||||
// fill in the adjustments
|
||||
|
||||
sf.XOffset=XmlUtil.GetInt(doc.DocumentElement,"XOffset",0,true);
|
||||
sf.YOffset=XmlUtil.GetInt(doc.DocumentElement,"YOffset",0,true);
|
||||
sf.ExtraLines=XmlUtil.GetInt(doc.DocumentElement,"ExtraLines",0,true);
|
||||
sf.CharSpace=XmlUtil.GetInt(doc.DocumentElement,"CharSpace",0,true);
|
||||
|
||||
if((charsNodes=doc.DocumentElement.SelectNodes("Chars/Char"))!=null) {
|
||||
|
||||
foreach(XmlNode charNode in charsNodes) {
|
||||
c=Convert.ToChar(UInt16.Parse(charNode.InnerText));
|
||||
sf.Add(c);
|
||||
}
|
||||
}
|
||||
|
||||
return sf;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing.Text;
|
||||
|
||||
|
||||
namespace FontConv
|
||||
{
|
||||
/*
|
||||
* font utils
|
||||
*/
|
||||
|
||||
public class FontUtil
|
||||
{
|
||||
[DllImport("gdi32.dll")]
|
||||
public static extern uint GetFontUnicodeRanges(IntPtr hdc, IntPtr lpgs);
|
||||
|
||||
[DllImport("gdi32.dll")]
|
||||
public extern static IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
|
||||
|
||||
public struct FontRange
|
||||
{
|
||||
public UInt16 Low;
|
||||
public UInt16 High;
|
||||
}
|
||||
|
||||
/*
|
||||
* get unicode font ranges
|
||||
*/
|
||||
|
||||
static public List<FontRange> GetFontUnicodeRanges(Font font)
|
||||
{
|
||||
Graphics g = Graphics.FromHwnd(IntPtr.Zero);
|
||||
IntPtr hdc = g.GetHdc();
|
||||
IntPtr hFont = font.ToHfont();
|
||||
IntPtr old = SelectObject(hdc, hFont);
|
||||
uint size = GetFontUnicodeRanges(hdc, IntPtr.Zero);
|
||||
IntPtr glyphSet = Marshal.AllocHGlobal((int)size);
|
||||
GetFontUnicodeRanges(hdc, glyphSet);
|
||||
List<FontRange> fontRanges = new List<FontRange>();
|
||||
int count = Marshal.ReadInt32(glyphSet, 12);
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
FontRange range = new FontRange();
|
||||
range.Low = (UInt16)Marshal.ReadInt16(glyphSet, 16 + i * 4);
|
||||
range.High = (UInt16)(range.Low + Marshal.ReadInt16(glyphSet, 18 + i * 4) - 1);
|
||||
fontRanges.Add(range);
|
||||
}
|
||||
|
||||
SelectObject(hdc, old);
|
||||
Marshal.FreeHGlobal(glyphSet);
|
||||
g.ReleaseHdc(hdc);
|
||||
g.Dispose();
|
||||
return fontRanges;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* get the character bitmap
|
||||
*/
|
||||
|
||||
static public bool[,] GetCharacterBitmap(Control refControl_,Font f_,char c_,int xoffset_,int yoffset_,int extraLines_)
|
||||
{
|
||||
bool[,] values;
|
||||
int x,y,width;
|
||||
Bitmap bm;
|
||||
Color cr;
|
||||
|
||||
using(Graphics g=refControl_.CreateGraphics())
|
||||
{
|
||||
g.TextRenderingHint=TextRenderingHint.SingleBitPerPixel;
|
||||
|
||||
if(c_==' ')
|
||||
width=(int)g.MeasureString("-",f_,PointF.Empty,StringFormat.GenericTypographic).Width;
|
||||
else
|
||||
width=(int)g.MeasureString(c_.ToString(),f_,PointF.Empty,StringFormat.GenericTypographic).Width;
|
||||
|
||||
bm=new Bitmap(width,(int)f_.Size+extraLines_,g);
|
||||
|
||||
using(Graphics g2=Graphics.FromImage(bm))
|
||||
{
|
||||
g2.FillRectangle(Brushes.White,0,0,bm.Width,bm.Height);
|
||||
|
||||
g2.TextRenderingHint=TextRenderingHint.SingleBitPerPixel;
|
||||
g2.DrawString(c_.ToString(),f_,Brushes.Black,xoffset_,yoffset_,StringFormat.GenericTypographic);
|
||||
|
||||
values=new bool[bm.Width,bm.Height];
|
||||
|
||||
for(y=0;y<bm.Height;y++)
|
||||
{
|
||||
for(x=0;x<bm.Width;x++)
|
||||
{
|
||||
cr=bm.GetPixel(x,y);
|
||||
|
||||
values[x,y]=cr.B==0 && cr.G==0 && cr.R==0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
|
||||
|
||||
namespace FontConv {
|
||||
|
||||
/*
|
||||
* Helper for writing fonts
|
||||
*/
|
||||
|
||||
abstract public class FontWriter {
|
||||
|
||||
/*
|
||||
* Members
|
||||
*/
|
||||
|
||||
protected SizedFont _font;
|
||||
protected StreamWriter _headerWriter;
|
||||
protected StreamWriter _sourceWriter;
|
||||
protected XmlElement _parent;
|
||||
protected Control _refControl;
|
||||
|
||||
|
||||
/*
|
||||
* For the derivations
|
||||
*/
|
||||
|
||||
abstract protected void WriteSourceHeader();
|
||||
abstract protected void WriteHeader();
|
||||
abstract protected void WriteTrailer();
|
||||
abstract protected void WriteSourceTrailer();
|
||||
abstract protected void WriteFontBytes();
|
||||
abstract protected void WriteFontChars();
|
||||
|
||||
|
||||
/*
|
||||
* Constructor
|
||||
*/
|
||||
|
||||
protected FontWriter(SizedFont sf,StreamWriter headerWriter,StreamWriter sourceWriter,XmlElement parent,Control refControl) {
|
||||
_font=sf;
|
||||
_headerWriter=headerWriter;
|
||||
_sourceWriter=sourceWriter;
|
||||
_parent=parent;
|
||||
_refControl=refControl;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Save font
|
||||
*/
|
||||
|
||||
static public void Save(SizedFont sf,String xmlFilename,Control refControl,TargetDevice targetDevice) {
|
||||
|
||||
String headerFilename,sourceFilename;
|
||||
XmlDocument doc;
|
||||
XmlElement root;
|
||||
FontWriter fw;
|
||||
|
||||
// filename has .xml extension. calculate same name with .h and .cpp
|
||||
|
||||
headerFilename=Path.GetFileNameWithoutExtension(xmlFilename)+".h";
|
||||
headerFilename=Path.Combine(Path.GetDirectoryName(xmlFilename),headerFilename);
|
||||
|
||||
sourceFilename=Path.GetFileNameWithoutExtension(xmlFilename)+".cpp";
|
||||
sourceFilename=Path.Combine(Path.GetDirectoryName(xmlFilename),sourceFilename);
|
||||
|
||||
// create header stream
|
||||
|
||||
using(StreamWriter headerWriter=new StreamWriter(headerFilename)) {
|
||||
using(StreamWriter sourceWriter=new StreamWriter(sourceFilename)) {
|
||||
|
||||
// create XML parent
|
||||
|
||||
doc=new XmlDocument();
|
||||
root=doc.CreateElement("FontConv");
|
||||
doc.AppendChild(root);
|
||||
|
||||
switch(targetDevice) {
|
||||
|
||||
case TargetDevice.ARDUINO:
|
||||
fw=new ArduinoFontWriter(sf,headerWriter,sourceWriter,root,refControl);
|
||||
break;
|
||||
|
||||
case TargetDevice.STM32PLUS:
|
||||
fw=new Stm32plusFontWriter(sf,headerWriter,sourceWriter,root,refControl);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new Exception("Unknown device");
|
||||
}
|
||||
|
||||
fw.Save();
|
||||
doc.Save(xmlFilename);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Save header and XML
|
||||
*/
|
||||
|
||||
public void Save() {
|
||||
|
||||
SaveXml();
|
||||
|
||||
// header
|
||||
|
||||
WriteHeader();
|
||||
WriteFont();
|
||||
WriteTrailer();
|
||||
|
||||
// source
|
||||
|
||||
WriteSourceHeader();
|
||||
WriteFontBytes();
|
||||
WriteFontChars();
|
||||
WriteSourceTrailer();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Write XML
|
||||
*/
|
||||
|
||||
private void SaveXml() {
|
||||
|
||||
XmlElement chars;
|
||||
|
||||
XmlUtil.AppendString(_parent,"Filename",_font.Filename);
|
||||
XmlUtil.AppendInt(_parent,"Size",_font.Size);
|
||||
XmlUtil.AppendInt(_parent,"XOffset",_font.XOffset);
|
||||
XmlUtil.AppendInt(_parent,"YOffset",_font.YOffset);
|
||||
XmlUtil.AppendInt(_parent,"ExtraLines",_font.ExtraLines);
|
||||
XmlUtil.AppendInt(_parent,"CharSpace",_font.CharSpace);
|
||||
|
||||
chars=_parent.OwnerDocument.CreateElement("Chars");
|
||||
|
||||
foreach(char c in _font.Characters())
|
||||
XmlUtil.AppendInt(chars,"Char",Convert.ToUInt16(c));
|
||||
|
||||
_parent.AppendChild(chars);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* get bytes name
|
||||
*/
|
||||
|
||||
protected string GetBytesName(char c) {
|
||||
return _font.Identifier+Convert.ToUInt16(c).ToString()+"_BYTES";
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* get char name
|
||||
*/
|
||||
|
||||
protected string GetCharName() {
|
||||
return _font.Identifier+"_CHAR";
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* get the width of this character
|
||||
*/
|
||||
|
||||
protected int GetCharWidth(char c) {
|
||||
|
||||
using(Graphics g=_refControl.CreateGraphics()) {
|
||||
|
||||
g.TextRenderingHint=TextRenderingHint.SingleBitPerPixel;
|
||||
return (int)g.MeasureString(c==' ' ? "-" : c.ToString(),_font.GdiFont,0,StringFormat.GenericTypographic).Width;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Write the font declaration
|
||||
*/
|
||||
|
||||
protected void WriteFont() {
|
||||
|
||||
int firstChar,charCount,height,spacing;
|
||||
|
||||
firstChar=_font.GetFirstCharacter();
|
||||
charCount=_font.Characters().Count;
|
||||
height=_font.Size+_font.ExtraLines;
|
||||
spacing=_font.CharSpace;
|
||||
|
||||
_headerWriter.Write(" // helper so the user can just do 'new fontname' without having to know the parameters\n\n");
|
||||
|
||||
_headerWriter.Write(" extern const struct FontChar "+GetCharName()+"[];\n\n");
|
||||
|
||||
_headerWriter.Write(" class Font_"+_font.Name+_font.Size+" : public Font {\n");
|
||||
_headerWriter.Write(" public:\n");
|
||||
_headerWriter.Write(" Font_"+_font.Name+_font.Size+"()\n");
|
||||
_headerWriter.Write(" : Font("+firstChar+","+charCount+","+height+","+spacing+","+GetCharName()+") {\n");
|
||||
_headerWriter.Write(" }\n");
|
||||
_headerWriter.Write(" };\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
535
Personal Projects/Business Card Testing/Utilities/src/fonts/FontConv/FormMain.Designer.cs
generated
Normal file
535
Personal Projects/Business Card Testing/Utilities/src/fonts/FontConv/FormMain.Designer.cs
generated
Normal file
@@ -0,0 +1,535 @@
|
||||
namespace FontConv
|
||||
{
|
||||
partial class FormMain
|
||||
{
|
||||
/*
|
||||
* Required designer variable.
|
||||
*/
|
||||
private System.ComponentModel.IContainer components=null;
|
||||
|
||||
/*
|
||||
* Clean up any resources being used.
|
||||
*/
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if(disposing&&(components!=null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/*
|
||||
* Required method for Designer support - do not modify
|
||||
* the contents of this method with the code editor.
|
||||
*/
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
|
||||
this._charsPanel = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this._previewPanel = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this._charSpace = new System.Windows.Forms.NumericUpDown();
|
||||
this._extraLines = new System.Windows.Forms.NumericUpDown();
|
||||
this._xoffset = new System.Windows.Forms.NumericUpDown();
|
||||
this._yoffset = new System.Windows.Forms.NumericUpDown();
|
||||
this.BottomToolStripPanel = new System.Windows.Forms.ToolStripPanel();
|
||||
this.TopToolStripPanel = new System.Windows.Forms.ToolStripPanel();
|
||||
this.RightToolStripPanel = new System.Windows.Forms.ToolStripPanel();
|
||||
this.LeftToolStripPanel = new System.Windows.Forms.ToolStripPanel();
|
||||
this.ContentPanel = new System.Windows.Forms.ToolStripContentPanel();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this._fontSize = new System.Windows.Forms.NumericUpDown();
|
||||
this._btnBrowseFontFile = new System.Windows.Forms.Button();
|
||||
this._editFontFile = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this._btnSelect7Bit = new System.Windows.Forms.Button();
|
||||
this._btnSelectAlpha = new System.Windows.Forms.Button();
|
||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||
this._preview = new FontConv.PreviewText();
|
||||
this._btnSave = new System.Windows.Forms.Button();
|
||||
this._btnLoad = new System.Windows.Forms.Button();
|
||||
this._fontDialog = new System.Windows.Forms.FontDialog();
|
||||
this._openFileDialog = new System.Windows.Forms.OpenFileDialog();
|
||||
this._saveFileDialog = new System.Windows.Forms.SaveFileDialog();
|
||||
this._btnStm32plus = new System.Windows.Forms.RadioButton();
|
||||
this._btnArduino = new System.Windows.Forms.RadioButton();
|
||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||
this._openFontFileDialog = new System.Windows.Forms.OpenFileDialog();
|
||||
this._logo = new System.Windows.Forms.PictureBox();
|
||||
this._tooltip = new System.Windows.Forms.ToolTip(this.components);
|
||||
((System.ComponentModel.ISupportInitialize)(this._charSpace)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._extraLines)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._xoffset)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._yoffset)).BeginInit();
|
||||
this.groupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this._fontSize)).BeginInit();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.groupBox3.SuspendLayout();
|
||||
this.groupBox4.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this._logo)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// _charsPanel
|
||||
//
|
||||
this._charsPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this._charsPanel.AutoScroll = true;
|
||||
this._charsPanel.Location = new System.Drawing.Point(10, 20);
|
||||
this._charsPanel.Name = "_charsPanel";
|
||||
this._charsPanel.Size = new System.Drawing.Size(901, 162);
|
||||
this._charsPanel.TabIndex = 0;
|
||||
//
|
||||
// _previewPanel
|
||||
//
|
||||
this._previewPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this._previewPanel.AutoScroll = true;
|
||||
this._previewPanel.Location = new System.Drawing.Point(10, 19);
|
||||
this._previewPanel.Name = "_previewPanel";
|
||||
this._previewPanel.Size = new System.Drawing.Size(901, 401);
|
||||
this._previewPanel.TabIndex = 0;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(268, 55);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(96, 13);
|
||||
this.label3.TabIndex = 8;
|
||||
this.label3.Text = "Character spacing:";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(139, 55);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(58, 13);
|
||||
this.label2.TabIndex = 6;
|
||||
this.label2.Text = "Extra lines:";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(422, 55);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(60, 13);
|
||||
this.label1.TabIndex = 10;
|
||||
this.label1.Text = "Offset (x,y):";
|
||||
//
|
||||
// _charSpace
|
||||
//
|
||||
this._charSpace.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this._charSpace.Enabled = false;
|
||||
this._charSpace.Location = new System.Drawing.Point(370, 53);
|
||||
this._charSpace.Minimum = new decimal(new int[] {
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this._charSpace.Name = "_charSpace";
|
||||
this._charSpace.Size = new System.Drawing.Size(46, 20);
|
||||
this._charSpace.TabIndex = 9;
|
||||
this._charSpace.ValueChanged += new System.EventHandler(this._charSpace_ValueChanged);
|
||||
//
|
||||
// _extraLines
|
||||
//
|
||||
this._extraLines.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this._extraLines.Enabled = false;
|
||||
this._extraLines.Location = new System.Drawing.Point(203, 53);
|
||||
this._extraLines.Minimum = new decimal(new int[] {
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this._extraLines.Name = "_extraLines";
|
||||
this._extraLines.Size = new System.Drawing.Size(59, 20);
|
||||
this._extraLines.TabIndex = 7;
|
||||
this._extraLines.ValueChanged += new System.EventHandler(this._extraLines_ValueChanged);
|
||||
//
|
||||
// _xoffset
|
||||
//
|
||||
this._xoffset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this._xoffset.Enabled = false;
|
||||
this._xoffset.Location = new System.Drawing.Point(486, 53);
|
||||
this._xoffset.Minimum = new decimal(new int[] {
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this._xoffset.Name = "_xoffset";
|
||||
this._xoffset.Size = new System.Drawing.Size(45, 20);
|
||||
this._xoffset.TabIndex = 11;
|
||||
this._xoffset.ValueChanged += new System.EventHandler(this._xoffset_ValueChanged);
|
||||
//
|
||||
// _yoffset
|
||||
//
|
||||
this._yoffset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this._yoffset.Enabled = false;
|
||||
this._yoffset.Location = new System.Drawing.Point(537, 53);
|
||||
this._yoffset.Minimum = new decimal(new int[] {
|
||||
100,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this._yoffset.Name = "_yoffset";
|
||||
this._yoffset.Size = new System.Drawing.Size(45, 20);
|
||||
this._yoffset.TabIndex = 12;
|
||||
this._yoffset.ValueChanged += new System.EventHandler(this._yoffset_ValueChanged);
|
||||
//
|
||||
// BottomToolStripPanel
|
||||
//
|
||||
this.BottomToolStripPanel.Location = new System.Drawing.Point(0, 0);
|
||||
this.BottomToolStripPanel.Name = "BottomToolStripPanel";
|
||||
this.BottomToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
this.BottomToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.BottomToolStripPanel.Size = new System.Drawing.Size(0, 0);
|
||||
//
|
||||
// TopToolStripPanel
|
||||
//
|
||||
this.TopToolStripPanel.Location = new System.Drawing.Point(0, 0);
|
||||
this.TopToolStripPanel.Name = "TopToolStripPanel";
|
||||
this.TopToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
this.TopToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.TopToolStripPanel.Size = new System.Drawing.Size(0, 0);
|
||||
//
|
||||
// RightToolStripPanel
|
||||
//
|
||||
this.RightToolStripPanel.Location = new System.Drawing.Point(0, 0);
|
||||
this.RightToolStripPanel.Name = "RightToolStripPanel";
|
||||
this.RightToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
this.RightToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.RightToolStripPanel.Size = new System.Drawing.Size(0, 0);
|
||||
//
|
||||
// LeftToolStripPanel
|
||||
//
|
||||
this.LeftToolStripPanel.Location = new System.Drawing.Point(0, 0);
|
||||
this.LeftToolStripPanel.Name = "LeftToolStripPanel";
|
||||
this.LeftToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
this.LeftToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.LeftToolStripPanel.Size = new System.Drawing.Size(0, 0);
|
||||
//
|
||||
// ContentPanel
|
||||
//
|
||||
this.ContentPanel.AutoScroll = true;
|
||||
this.ContentPanel.Size = new System.Drawing.Size(773, 544);
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox1.Controls.Add(this._fontSize);
|
||||
this.groupBox1.Controls.Add(this._btnBrowseFontFile);
|
||||
this.groupBox1.Controls.Add(this.label1);
|
||||
this.groupBox1.Controls.Add(this.label3);
|
||||
this.groupBox1.Controls.Add(this._yoffset);
|
||||
this.groupBox1.Controls.Add(this._editFontFile);
|
||||
this.groupBox1.Controls.Add(this._xoffset);
|
||||
this.groupBox1.Controls.Add(this._charSpace);
|
||||
this.groupBox1.Controls.Add(this.label2);
|
||||
this.groupBox1.Controls.Add(this.label5);
|
||||
this.groupBox1.Controls.Add(this.label4);
|
||||
this.groupBox1.Controls.Add(this._extraLines);
|
||||
this.groupBox1.Location = new System.Drawing.Point(12, 12);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(595, 87);
|
||||
this.groupBox1.TabIndex = 0;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Choose a font and size";
|
||||
//
|
||||
// _fontSize
|
||||
//
|
||||
this._fontSize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this._fontSize.Location = new System.Drawing.Point(64, 53);
|
||||
this._fontSize.Maximum = new decimal(new int[] {
|
||||
999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._fontSize.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._fontSize.Name = "_fontSize";
|
||||
this._fontSize.Size = new System.Drawing.Size(69, 20);
|
||||
this._fontSize.TabIndex = 5;
|
||||
this._fontSize.Value = new decimal(new int[] {
|
||||
8,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._fontSize.ValueChanged += new System.EventHandler(this._fontSize_ValueChanged);
|
||||
//
|
||||
// _btnBrowseFontFile
|
||||
//
|
||||
this._btnBrowseFontFile.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this._btnBrowseFontFile.Location = new System.Drawing.Point(447, 21);
|
||||
this._btnBrowseFontFile.Name = "_btnBrowseFontFile";
|
||||
this._btnBrowseFontFile.Size = new System.Drawing.Size(135, 23);
|
||||
this._btnBrowseFontFile.TabIndex = 3;
|
||||
this._btnBrowseFontFile.Text = "Browse font file...";
|
||||
this._btnBrowseFontFile.UseVisualStyleBackColor = true;
|
||||
this._btnBrowseFontFile.Click += new System.EventHandler(this._btnBrowseFontFile_Click);
|
||||
//
|
||||
// _editFontFile
|
||||
//
|
||||
this._editFontFile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this._editFontFile.Location = new System.Drawing.Point(64, 24);
|
||||
this._editFontFile.Name = "_editFontFile";
|
||||
this._editFontFile.ReadOnly = true;
|
||||
this._editFontFile.Size = new System.Drawing.Size(377, 20);
|
||||
this._editFontFile.TabIndex = 1;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(6, 55);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(52, 13);
|
||||
this.label5.TabIndex = 4;
|
||||
this.label5.Text = "Font size:";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(6, 27);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(47, 13);
|
||||
this.label4.TabIndex = 0;
|
||||
this.label4.Text = "Font file:";
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox2.Controls.Add(this._charsPanel);
|
||||
this.groupBox2.Controls.Add(this._btnSelect7Bit);
|
||||
this.groupBox2.Controls.Add(this._btnSelectAlpha);
|
||||
this.groupBox2.Location = new System.Drawing.Point(12, 105);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(923, 217);
|
||||
this.groupBox2.TabIndex = 1;
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "Character selection";
|
||||
//
|
||||
// _btnSelect7Bit
|
||||
//
|
||||
this._btnSelect7Bit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this._btnSelect7Bit.Enabled = false;
|
||||
this._btnSelect7Bit.Location = new System.Drawing.Point(655, 188);
|
||||
this._btnSelect7Bit.Name = "_btnSelect7Bit";
|
||||
this._btnSelect7Bit.Size = new System.Drawing.Size(104, 23);
|
||||
this._btnSelect7Bit.TabIndex = 1;
|
||||
this._btnSelect7Bit.Text = "Select all 7-bit";
|
||||
this._btnSelect7Bit.UseVisualStyleBackColor = true;
|
||||
this._btnSelect7Bit.Click += new System.EventHandler(this._btnSelect7Bit_Click);
|
||||
//
|
||||
// _btnSelectAlpha
|
||||
//
|
||||
this._btnSelectAlpha.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this._btnSelectAlpha.Enabled = false;
|
||||
this._btnSelectAlpha.Location = new System.Drawing.Point(765, 188);
|
||||
this._btnSelectAlpha.Name = "_btnSelectAlpha";
|
||||
this._btnSelectAlpha.Size = new System.Drawing.Size(146, 23);
|
||||
this._btnSelectAlpha.TabIndex = 2;
|
||||
this._btnSelectAlpha.Text = "Select all alphanumeric";
|
||||
this._btnSelectAlpha.UseVisualStyleBackColor = true;
|
||||
this._btnSelectAlpha.Click += new System.EventHandler(this._btnSelectAlpha_Click);
|
||||
//
|
||||
// groupBox3
|
||||
//
|
||||
this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox3.Controls.Add(this._previewPanel);
|
||||
this.groupBox3.Controls.Add(this._preview);
|
||||
this.groupBox3.Location = new System.Drawing.Point(12, 328);
|
||||
this.groupBox3.Name = "groupBox3";
|
||||
this.groupBox3.Size = new System.Drawing.Size(923, 456);
|
||||
this.groupBox3.TabIndex = 2;
|
||||
this.groupBox3.TabStop = false;
|
||||
this.groupBox3.Text = "Preview";
|
||||
//
|
||||
// _preview
|
||||
//
|
||||
this._preview.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this._preview.Location = new System.Drawing.Point(7, 426);
|
||||
this._preview.Name = "_preview";
|
||||
this._preview.Size = new System.Drawing.Size(904, 24);
|
||||
this._preview.TabIndex = 1;
|
||||
this._preview.Text = "The quick brown fox jumped over the lazy dogs.";
|
||||
this._preview.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// _btnSave
|
||||
//
|
||||
this._btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this._btnSave.Enabled = false;
|
||||
this._btnSave.Location = new System.Drawing.Point(954, 45);
|
||||
this._btnSave.Name = "_btnSave";
|
||||
this._btnSave.Size = new System.Drawing.Size(97, 23);
|
||||
this._btnSave.TabIndex = 4;
|
||||
this._btnSave.Text = "Save...";
|
||||
this._btnSave.UseVisualStyleBackColor = true;
|
||||
this._btnSave.Click += new System.EventHandler(this._btnSave_Click);
|
||||
//
|
||||
// _btnLoad
|
||||
//
|
||||
this._btnLoad.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this._btnLoad.Location = new System.Drawing.Point(954, 16);
|
||||
this._btnLoad.Name = "_btnLoad";
|
||||
this._btnLoad.Size = new System.Drawing.Size(97, 23);
|
||||
this._btnLoad.TabIndex = 3;
|
||||
this._btnLoad.Text = "Load...";
|
||||
this._btnLoad.UseVisualStyleBackColor = true;
|
||||
this._btnLoad.Click += new System.EventHandler(this._btnLoad_Click);
|
||||
//
|
||||
// _openFileDialog
|
||||
//
|
||||
this._openFileDialog.Filter = "XML Files(*.xml)|*.xml|All Files|*.*||";
|
||||
//
|
||||
// _saveFileDialog
|
||||
//
|
||||
this._saveFileDialog.Filter = "XML Files(*.xml)|*.xml|All Files|*.*||";
|
||||
//
|
||||
// _btnStm32plus
|
||||
//
|
||||
this._btnStm32plus.AutoSize = true;
|
||||
this._btnStm32plus.Location = new System.Drawing.Point(10, 19);
|
||||
this._btnStm32plus.Name = "_btnStm32plus";
|
||||
this._btnStm32plus.Size = new System.Drawing.Size(72, 17);
|
||||
this._btnStm32plus.TabIndex = 0;
|
||||
this._btnStm32plus.TabStop = true;
|
||||
this._btnStm32plus.Text = "stm32plus";
|
||||
this._btnStm32plus.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// _btnArduino
|
||||
//
|
||||
this._btnArduino.AutoSize = true;
|
||||
this._btnArduino.Location = new System.Drawing.Point(10, 40);
|
||||
this._btnArduino.Name = "_btnArduino";
|
||||
this._btnArduino.Size = new System.Drawing.Size(61, 17);
|
||||
this._btnArduino.TabIndex = 1;
|
||||
this._btnArduino.TabStop = true;
|
||||
this._btnArduino.Text = "Arduino";
|
||||
this._btnArduino.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBox4
|
||||
//
|
||||
this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox4.Controls.Add(this._btnStm32plus);
|
||||
this.groupBox4.Controls.Add(this._btnArduino);
|
||||
this.groupBox4.Location = new System.Drawing.Point(954, 74);
|
||||
this.groupBox4.Name = "groupBox4";
|
||||
this.groupBox4.Size = new System.Drawing.Size(97, 68);
|
||||
this.groupBox4.TabIndex = 5;
|
||||
this.groupBox4.TabStop = false;
|
||||
this.groupBox4.Text = "Target";
|
||||
//
|
||||
// _openFontFileDialog
|
||||
//
|
||||
this._openFontFileDialog.Filter = "Font Files(*.ttf)|*.ttf|All Files(*.*)|*.*||";
|
||||
//
|
||||
// _logo
|
||||
//
|
||||
this._logo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this._logo.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this._logo.Image = ((System.Drawing.Image)(resources.GetObject("_logo.Image")));
|
||||
this._logo.Location = new System.Drawing.Point(632, 21);
|
||||
this._logo.Name = "_logo";
|
||||
this._logo.Size = new System.Drawing.Size(280, 78);
|
||||
this._logo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this._logo.TabIndex = 6;
|
||||
this._logo.TabStop = false;
|
||||
this._logo.Click += new System.EventHandler(this._logo_Click);
|
||||
//
|
||||
// FormMain
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.ClientSize = new System.Drawing.Size(1068, 795);
|
||||
this.Controls.Add(this._logo);
|
||||
this.Controls.Add(this.groupBox4);
|
||||
this.Controls.Add(this._btnLoad);
|
||||
this.Controls.Add(this._btnSave);
|
||||
this.Controls.Add(this.groupBox3);
|
||||
this.Controls.Add(this.groupBox2);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.MinimumSize = new System.Drawing.Size(1084, 833);
|
||||
this.Name = "FormMain";
|
||||
this.Text = "Font Converter";
|
||||
((System.ComponentModel.ISupportInitialize)(this._charSpace)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._extraLines)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._xoffset)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._yoffset)).EndInit();
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this._fontSize)).EndInit();
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox3.ResumeLayout(false);
|
||||
this.groupBox4.ResumeLayout(false);
|
||||
this.groupBox4.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this._logo)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.FlowLayoutPanel _charsPanel;
|
||||
private System.Windows.Forms.FlowLayoutPanel _previewPanel;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.NumericUpDown _xoffset;
|
||||
private System.Windows.Forms.NumericUpDown _yoffset;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.NumericUpDown _extraLines;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.NumericUpDown _charSpace;
|
||||
private System.Windows.Forms.ToolStripPanel BottomToolStripPanel;
|
||||
private System.Windows.Forms.ToolStripPanel TopToolStripPanel;
|
||||
private System.Windows.Forms.ToolStripPanel RightToolStripPanel;
|
||||
private System.Windows.Forms.ToolStripPanel LeftToolStripPanel;
|
||||
private System.Windows.Forms.ToolStripContentPanel ContentPanel;
|
||||
private PreviewText _preview;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.TextBox _editFontFile;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Button _btnBrowseFontFile;
|
||||
private System.Windows.Forms.NumericUpDown _fontSize;
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
private System.Windows.Forms.GroupBox groupBox3;
|
||||
private System.Windows.Forms.Button _btnSave;
|
||||
private System.Windows.Forms.Button _btnLoad;
|
||||
private System.Windows.Forms.FontDialog _fontDialog;
|
||||
private System.Windows.Forms.OpenFileDialog _openFileDialog;
|
||||
private System.Windows.Forms.SaveFileDialog _saveFileDialog;
|
||||
private System.Windows.Forms.RadioButton _btnStm32plus;
|
||||
private System.Windows.Forms.RadioButton _btnArduino;
|
||||
private System.Windows.Forms.GroupBox groupBox4;
|
||||
private System.Windows.Forms.OpenFileDialog _openFontFileDialog;
|
||||
private System.Windows.Forms.Button _btnSelectAlpha;
|
||||
private System.Windows.Forms.Button _btnSelect7Bit;
|
||||
private System.Windows.Forms.PictureBox _logo;
|
||||
private System.Windows.Forms.ToolTip _tooltip;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,428 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.Diagnostics;
|
||||
|
||||
|
||||
namespace FontConv
|
||||
{
|
||||
/*
|
||||
* main form
|
||||
*/
|
||||
|
||||
public partial class FormMain : Form {
|
||||
|
||||
/*
|
||||
* members
|
||||
*/
|
||||
|
||||
private SizedFont _sizedFont;
|
||||
|
||||
|
||||
/*
|
||||
* constructor
|
||||
*/
|
||||
|
||||
public FormMain() {
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
private void RefillCharsPanel() {
|
||||
|
||||
FontChar fc;
|
||||
|
||||
try {
|
||||
_charsPanel.SuspendLayout();
|
||||
|
||||
// empty panel
|
||||
|
||||
_charsPanel.Controls.Clear();
|
||||
|
||||
// add new. not particularly fast.
|
||||
|
||||
using(Graphics g=CreateGraphics()) {
|
||||
foreach(FontUtil.FontRange fr in FontUtil.GetFontUnicodeRanges(_sizedFont.GdiFont)) {
|
||||
for(UInt16 code=fr.Low;code<=fr.High;code++) {
|
||||
|
||||
char c;
|
||||
int width;
|
||||
|
||||
fc=new FontChar(_tooltip);
|
||||
c=Convert.ToChar(code);
|
||||
|
||||
// special case for space which we map to the width of a "-"
|
||||
|
||||
width=(int)g.MeasureString(c==' ' ? "-" : c.ToString(),_sizedFont.GdiFont,PointF.Empty,StringFormat.GenericTypographic).Width;
|
||||
|
||||
fc.Text=c.ToString();
|
||||
fc.Font=_sizedFont.GdiFont;
|
||||
fc.Size=new Size(width,_sizedFont.Size);
|
||||
fc.Selected=_sizedFont.ContainsChar(c);
|
||||
fc.Click+=OnClickFontChar;
|
||||
fc.Tag=c;
|
||||
|
||||
_charsPanel.Controls.Add(fc);
|
||||
}
|
||||
}
|
||||
}
|
||||
_preview.Font=_sizedFont.GdiFont;
|
||||
RefillPreviews();
|
||||
}
|
||||
finally {
|
||||
_charsPanel.ResumeLayout();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* refill previews panel
|
||||
*/
|
||||
|
||||
private void RefillPreviews() {
|
||||
|
||||
// refill the list
|
||||
|
||||
_previewPanel.Controls.Clear();
|
||||
|
||||
foreach(CharPreview cp in _sizedFont.CreatePreviews())
|
||||
_previewPanel.Controls.Add(cp);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* font char clicked
|
||||
*/
|
||||
|
||||
private void OnClickFontChar(object sender,EventArgs args)
|
||||
{
|
||||
FontChar fc;
|
||||
|
||||
try
|
||||
{
|
||||
// get values
|
||||
|
||||
fc=(FontChar)sender;
|
||||
|
||||
// toggle select
|
||||
|
||||
_sizedFont.ToggleSelected(fc.Text[0]);
|
||||
|
||||
// select control
|
||||
|
||||
fc.Selected^=true;
|
||||
fc.Invalidate();
|
||||
|
||||
// add/remove from the previews
|
||||
|
||||
if(fc.Selected)
|
||||
AddPreview(fc.Text[0]);
|
||||
else
|
||||
RemovePreview(fc.Text[0]);
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* add a preview
|
||||
*/
|
||||
|
||||
private void AddPreview(char c) {
|
||||
_previewPanel.Controls.Add(_sizedFont.CreatePreview(c));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* remove preview
|
||||
*/
|
||||
|
||||
private void RemovePreview(char c) {
|
||||
|
||||
foreach(CharPreview cp in _previewPanel.Controls) {
|
||||
if((char)cp.Tag==c) {
|
||||
_previewPanel.Controls.Remove(cp);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* offset changed
|
||||
*/
|
||||
|
||||
private void _xoffset_ValueChanged(object sender,EventArgs e) {
|
||||
|
||||
try {
|
||||
_sizedFont.XOffset=(int)_xoffset.Value;
|
||||
RefillPreviews();
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Y offset changed
|
||||
*/
|
||||
|
||||
private void _yoffset_ValueChanged(object sender,EventArgs e) {
|
||||
|
||||
try {
|
||||
_sizedFont.YOffset=(int)_yoffset.Value;
|
||||
RefillPreviews();
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* extra lines changed
|
||||
*/
|
||||
|
||||
private void _extraLines_ValueChanged(object sender,EventArgs e) {
|
||||
|
||||
try {
|
||||
_sizedFont.ExtraLines=(int)_extraLines.Value;
|
||||
RefillPreviews();
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Character space changed
|
||||
*/
|
||||
|
||||
private void _charSpace_ValueChanged(object sender,EventArgs e)
|
||||
{
|
||||
try {
|
||||
_sizedFont.CharSpace=(int)_charSpace.Value;
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Browse for font file
|
||||
*/
|
||||
|
||||
private void _btnBrowseFontFile_Click(object sender,EventArgs e) {
|
||||
|
||||
try {
|
||||
// browse for font
|
||||
|
||||
if(_openFontFileDialog.ShowDialog(this)==DialogResult.Cancel)
|
||||
return;
|
||||
|
||||
// set the filename
|
||||
|
||||
_editFontFile.Text=_openFontFileDialog.FileName;
|
||||
|
||||
// create the font
|
||||
|
||||
_sizedFont=new SizedFont(_openFontFileDialog.FileName,Convert.ToInt32(_fontSize.Value));
|
||||
|
||||
_preview.Font=_sizedFont.GdiFont;
|
||||
_preview.Invalidate();
|
||||
|
||||
EnableControls();
|
||||
RefillCharsPanel();
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Enable/disable controls
|
||||
*/
|
||||
|
||||
private void EnableControls() {
|
||||
|
||||
bool enable;
|
||||
|
||||
enable=_sizedFont!=null;
|
||||
|
||||
_extraLines.Enabled=enable;
|
||||
_charSpace.Enabled=enable;
|
||||
_xoffset.Enabled=enable;
|
||||
_yoffset.Enabled=enable;
|
||||
_btnSave.Enabled=enable;
|
||||
_btnSelectAlpha.Enabled=enable;
|
||||
_btnSelect7Bit.Enabled=enable;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Check if char is valid
|
||||
*/
|
||||
|
||||
private bool IsValidChar(char c) {
|
||||
|
||||
foreach(FontChar fc in _charsPanel.Controls)
|
||||
if((char)fc.Tag==c)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Select all alphanumeric
|
||||
*/
|
||||
|
||||
private void _btnSelectAlpha_Click(object sender,EventArgs e)
|
||||
{
|
||||
String alphanum="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890";
|
||||
|
||||
try {
|
||||
Cursor.Current=Cursors.WaitCursor;
|
||||
|
||||
foreach(char c in alphanum)
|
||||
if(IsValidChar(c))
|
||||
_sizedFont.Add(c);
|
||||
|
||||
RefillCharsPanel();
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
finally {
|
||||
Cursor.Current=Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Select 7 bit chars
|
||||
*/
|
||||
|
||||
private void _btnSelect7Bit_Click(object sender,EventArgs e) {
|
||||
|
||||
char c;
|
||||
|
||||
try {
|
||||
Cursor.Current=Cursors.WaitCursor;
|
||||
|
||||
for(c=(char)32;c<=(char)127;c++)
|
||||
if(IsValidChar(c))
|
||||
_sizedFont.Add(c);
|
||||
|
||||
RefillCharsPanel();
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
finally {
|
||||
Cursor.Current=Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* New font size
|
||||
*/
|
||||
|
||||
private void _fontSize_ValueChanged(object sender,EventArgs e) {
|
||||
|
||||
try {
|
||||
_sizedFont.Size=Convert.ToInt32(_fontSize.Value);
|
||||
_sizedFont.CreateFont();
|
||||
|
||||
RefillCharsPanel();
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Save out
|
||||
*/
|
||||
|
||||
private void _btnSave_Click(object sender,EventArgs e) {
|
||||
|
||||
TargetDevice td;
|
||||
|
||||
try {
|
||||
|
||||
// target device
|
||||
|
||||
if(_btnArduino.Checked)
|
||||
td=TargetDevice.ARDUINO;
|
||||
else if(_btnStm32plus.Checked)
|
||||
td=TargetDevice.STM32PLUS;
|
||||
else
|
||||
throw new Exception("Please select a target device");
|
||||
|
||||
// get filename
|
||||
|
||||
if(_saveFileDialog.ShowDialog()==DialogResult.Cancel)
|
||||
return;
|
||||
|
||||
// save operation
|
||||
|
||||
FontWriter.Save(_sizedFont,_saveFileDialog.FileName,this,td);
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Load settings
|
||||
*/
|
||||
|
||||
private void _btnLoad_Click(object sender,EventArgs e)
|
||||
{
|
||||
try {
|
||||
|
||||
// get filename
|
||||
|
||||
if(_openFileDialog.ShowDialog()==DialogResult.Cancel)
|
||||
return;
|
||||
|
||||
// load operation
|
||||
|
||||
_sizedFont=FontReader.Load(_openFileDialog.FileName);
|
||||
|
||||
_editFontFile.Text=_sizedFont.Filename;
|
||||
_fontSize.Value=_sizedFont.Size;
|
||||
_extraLines.Value=_sizedFont.ExtraLines;
|
||||
_xoffset.Value=_sizedFont.XOffset;
|
||||
_yoffset.Value=_sizedFont.YOffset;
|
||||
_charSpace.Value=_sizedFont.CharSpace;
|
||||
|
||||
EnableControls();
|
||||
RefillCharsPanel();
|
||||
}
|
||||
catch(Exception ex) {
|
||||
Util.Error(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Logo clicked
|
||||
*/
|
||||
|
||||
private void _logo_Click(object sender,EventArgs e)
|
||||
{
|
||||
Process.Start("http://www.andybrown.me.uk");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,813 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="_fontDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="_openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>131, 17</value>
|
||||
</metadata>
|
||||
<metadata name="_saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>270, 17</value>
|
||||
</metadata>
|
||||
<metadata name="_openFontFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>404, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="_logo.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAARgAAABOCAYAAAD7LgnSAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
|
||||
DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp
|
||||
bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE
|
||||
sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs
|
||||
AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4
|
||||
JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR
|
||||
3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd
|
||||
li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF
|
||||
ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX
|
||||
wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF
|
||||
hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55
|
||||
4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ
|
||||
VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB
|
||||
5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC
|
||||
qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE
|
||||
j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I
|
||||
1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9
|
||||
rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG
|
||||
fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp
|
||||
B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ
|
||||
yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC
|
||||
YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln
|
||||
yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v
|
||||
vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp
|
||||
vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L
|
||||
Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA
|
||||
bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z
|
||||
llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW
|
||||
ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s
|
||||
xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6
|
||||
eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw
|
||||
YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR
|
||||
XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm
|
||||
WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl
|
||||
xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2
|
||||
dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8
|
||||
V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za
|
||||
Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v
|
||||
Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb
|
||||
PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/
|
||||
0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h
|
||||
/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr
|
||||
XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS
|
||||
fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+
|
||||
tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/
|
||||
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALDQAACw0B7QfALAAAkhJJREFUeF7tvQeUHMd1
|
||||
NTzIOecciZyBzZNzzjnnmc15sbtIi5xzJpFBEAxgEkkxixQlWZQs2/ocRAVLn2TL4bNkWVSwLYni++/r
|
||||
xa6A3QVA2ZZN/wd1zjsz09NdXV1V79Z9r15Vi4jooTyUh/JQ/iDS58GH8lAeykP5r5A+Dz6Uh/JQHsp/
|
||||
hfR58KE8lIfyUP4rpM+DD+WhPJSH8l8hfR/8PdPhw80Tf/SjL+r++juv6iH8Kch3WL7d+f3v/+5d06OP
|
||||
bl92+5JPnCZNGi/6+tefXfC9775mEPJEfl3Cv7/33dcNH3zwitRsVfa7fcl9U0tLcvg//P27Slyv/2vO
|
||||
oyu/b/HnZ3U/+MFbhsOHmmfdPl1I48aNFi1YMEvU2pae9aN/+qKRr+0uQ1cefP23PsvSne/v/hPyFdfW
|
||||
R+bsPdg41GCW3c75/mnMmFH9/+ovP7Phg2+8bOzMv497oiz/+A/vGfD8Y29f9sA0bNiQQV/+oxuyH3z/
|
||||
LUPXc3A+Xfl+G+X99ndeNXz1yzdLX3juxJT/9w/vP/X977z33re/8bm3v/WNt9/+1l+9dfvz7bf/+pvv
|
||||
vPd/v/POzZUrF827nf1dSaksEE2fPkn4ns25RfUNsUU//eevbvzB9z7/zA++996b3/vO59/9zjffeeeb
|
||||
f/XWW9/8yzdf/fYHb73w7W+89ti3Pni1fv/+xqWTpkwQrv3fmuJxh2jIkMG3f4lEgwcPQh9MCd9HjRoh
|
||||
OnSoRfT221dFzc1p4RinZNIlOneuQ7Ro0dzbRzrT5MkTBH347079+vUTRaPW27/un3phSc8DwsHfIw0Y
|
||||
MEB09Ehr7M++9vwX3nzt0ufffuPKO2++dvndtyBvvnYFn/j96uV3v/i5J/5o+9aakyjtJ1YETlOnTRr8
|
||||
9T95ducX3nz8S2+8hHxfufzOm59Fvi9fevftz155553Xrr33+osXXlm+bFHB7Uvumw7ub1R+8Ccvv/nW
|
||||
y1ffe/Oly++8/fKVd9/8zOV3P/fKtXfffOnKu19+8+YXyxO+rTh1QOcVIpHLpRU9+eThfi+/cLbuS2/c
|
||||
/PIbz1/+/Nsv4rlewDM+f/ndd17CtS9ceZePvfUC/nv+yrufe/HqO/zfW8/hnOcuv/PqrQuvXTy//8St
|
||||
p0/EfF7D6sHDhowT9b8/Jg4fNnT4y0+cvvH5lx7/4lvI843n8MwvXMW9kO/zl3Ev1APK8sdvPf2liNce
|
||||
uX3ZfVP//v1FRqOs6Itv3nz97c9c/cJbnxGe/523Xrz8+bfw+fbLKDfXwxtPfOHZK8eeO3tkk+vrX37p
|
||||
79579hq9/vg5+txTF+mtm4/RWzcepdfw+6vPX6UvPnPhN3NmTg8i+14PpFAUiCZOHCsaM3bkkF07a4tf
|
||||
funCY1/7wvN/8/YL13771rOX6K1bl+jNpx+j1544Ry8/fobeefo8vf3M2V++8sSp7184s+uyzaYqGTRk
|
||||
8PDb2f2vSw8BpscB4eDvkeSKojl/+Wevfv/ske106mAjHdlZTSd219Ph7XV0ak8dnT3QQsd31NPzF3fS
|
||||
Y7tzNGxw/2O4bFjn1Q9OkyePn/bVd5/52cldm+n0pio63FZLp7fU08ltTbS/KU/ntzXSe1cOUMJW9tc4
|
||||
vajzqnunQ7taLr7/zA3amc3QifoaOlZfS1c6NtGZzU303O4d9MKevWQtKuRKcEKEnlFfnxD97Q8/P+av
|
||||
vvTSn59v20zHcpV0vKqWTlXg+aqb6GC+mp5qaaXLbdvo0YatdLK8lg7nqul0DvWQr6djqSo6V9lETzRs
|
||||
pseb2ulcbeNvr23u+GF5xL15wpSJy/ke90jD0w7Hn7zavJt2R3N0vXk7HS2vp7P5GjqKe5/MQarrkWcb
|
||||
nfRHfztQ1K8c1/yuN/eRZsyaMuql56994eKRo3Ssrp5O1NXSmYZGOlhVTWebGulMWwO9dnQvvXnqJOUd
|
||||
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
|
||||
B50lvbUtlHWeAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="_tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>567, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>55</value>
|
||||
</metadata>
|
||||
</root>
|
||||
37
Personal Projects/Business Card Testing/Utilities/src/fonts/FontConv/PreviewText.Designer.cs
generated
Normal file
37
Personal Projects/Business Card Testing/Utilities/src/fonts/FontConv/PreviewText.Designer.cs
generated
Normal file
@@ -0,0 +1,37 @@
|
||||
namespace FontConv
|
||||
{
|
||||
partial class PreviewText
|
||||
{
|
||||
/*
|
||||
* Required designer variable.
|
||||
*/
|
||||
|
||||
private System.ComponentModel.IContainer components=null;
|
||||
|
||||
/*
|
||||
* Clean up any resources being used.
|
||||
*/
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if(disposing&&(components!=null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/*
|
||||
* Required method for Designer support - do not modify
|
||||
* the contents of this method with the code editor.
|
||||
*/
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components=new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FontConv {
|
||||
|
||||
public partial class PreviewText : Label {
|
||||
|
||||
public PreviewText() {
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e) {
|
||||
e.Graphics.TextRenderingHint=TextRenderingHint.SingleBitPerPixel;
|
||||
e.Graphics.DrawString(this.Text,this.Font,SystemBrushes.WindowText,Point.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace FontConv
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/*
|
||||
* The main entry point for the application.
|
||||
*/
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new FormMain());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("FontConv")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("FontConv")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("e346db56-8c1a-462e-8782-ec7b61d64abb")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace FontConv.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FontConv.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
26
Personal Projects/Business Card Testing/Utilities/src/fonts/FontConv/Properties/Settings.Designer.cs
generated
Normal file
26
Personal Projects/Business Card Testing/Utilities/src/fonts/FontConv/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace FontConv.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -0,0 +1,204 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Xml;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
namespace FontConv {
|
||||
|
||||
/*
|
||||
* Sized font class
|
||||
*/
|
||||
|
||||
public class SizedFont {
|
||||
|
||||
/*
|
||||
* members
|
||||
*/
|
||||
|
||||
private SortedDictionary<char,char> _selections=new SortedDictionary<char,char>();
|
||||
private PrivateFontCollection _winFontFamilies=new PrivateFontCollection();
|
||||
|
||||
public String Filename { get; set; }
|
||||
public String Identifier { get; set; }
|
||||
public String Name { get; set; }
|
||||
public int Size { get; set; }
|
||||
public int ExtraLines { get; set; }
|
||||
public int CharSpace { get; set; }
|
||||
public int XOffset { get; set; }
|
||||
public int YOffset { get; set; }
|
||||
public Font GdiFont { get; set; }
|
||||
|
||||
|
||||
/*
|
||||
* constructor
|
||||
*/
|
||||
|
||||
public SizedFont(String filename,int size) {
|
||||
|
||||
this.Filename=filename;
|
||||
this.Size=size;
|
||||
this.XOffset=0;
|
||||
this.YOffset=0;
|
||||
this.ExtraLines=0;
|
||||
this.CharSpace=0;
|
||||
|
||||
_winFontFamilies.AddFontFile(filename);
|
||||
|
||||
CreateFont();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* return characters
|
||||
*/
|
||||
|
||||
public ICollection<char> Characters() {
|
||||
return _selections.Keys;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* return the selected count
|
||||
*/
|
||||
|
||||
public int SelectionCount() {
|
||||
return _selections.Count;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Get first selected char
|
||||
*/
|
||||
|
||||
public char GetFirstCharacter() {
|
||||
|
||||
IEnumerator<char> it;
|
||||
|
||||
if(Characters().Count==0)
|
||||
throw new Exception("No characters are selected");
|
||||
|
||||
it=Characters().GetEnumerator();
|
||||
it.MoveNext();
|
||||
|
||||
return it.Current;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* check if contains char
|
||||
*/
|
||||
|
||||
public bool ContainsChar(char c_) {
|
||||
return _selections.ContainsKey(c_);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* toggle selection state
|
||||
*/
|
||||
|
||||
public void ToggleSelected(char c) {
|
||||
|
||||
if(ContainsChar(c))
|
||||
Remove(c);
|
||||
else
|
||||
Add(c);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* add char
|
||||
*/
|
||||
|
||||
public void Add(char c_) {
|
||||
_selections[c_]=c_;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* remove char
|
||||
*/
|
||||
|
||||
public void Remove(char c_) {
|
||||
_selections.Remove(c_);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* create previews for all selected
|
||||
*/
|
||||
|
||||
public List<CharPreview> CreatePreviews() {
|
||||
|
||||
List<CharPreview> previews;
|
||||
|
||||
previews=new List<CharPreview>();
|
||||
|
||||
foreach(char c in this.Characters())
|
||||
previews.Add(CreatePreview(c));
|
||||
|
||||
return previews;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Create the preview
|
||||
*/
|
||||
|
||||
public CharPreview CreatePreview(char c) {
|
||||
|
||||
CharPreview cp;
|
||||
|
||||
cp=new CharPreview();
|
||||
cp.Font=this.GdiFont;
|
||||
cp.Create(c,this.XOffset,this.YOffset,this.ExtraLines);
|
||||
cp.Tag=c;
|
||||
|
||||
return cp;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* create GDI font
|
||||
*/
|
||||
|
||||
public void CreateFont() {
|
||||
|
||||
this.GdiFont=new Font(
|
||||
_winFontFamilies.Families[0],
|
||||
this.Size,
|
||||
GraphicsUnit.Pixel);
|
||||
|
||||
CreateFontName();
|
||||
CreateFontId();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* font name from filename
|
||||
*/
|
||||
|
||||
private void CreateFontName() {
|
||||
String str;
|
||||
|
||||
str=Path.GetFileName(this.Filename);
|
||||
str=Path.GetFileNameWithoutExtension(str);
|
||||
|
||||
this.Name=str.ToUpperInvariant().Replace(" ","_");
|
||||
this.Name=this.Name.Replace("-","_");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* font id from filename
|
||||
*/
|
||||
|
||||
private void CreateFontId() {
|
||||
this.Identifier="FDEF_"+this.Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
|
||||
|
||||
namespace FontConv {
|
||||
|
||||
/*
|
||||
* Class for writing out fonts suitable for the stm32
|
||||
*/
|
||||
|
||||
public class Stm32plusFontWriter : FontWriter {
|
||||
|
||||
/*
|
||||
* Constructor
|
||||
*/
|
||||
|
||||
public Stm32plusFontWriter(SizedFont sf,StreamWriter headerWriter,StreamWriter sourceWriter,XmlElement parent,Control refControl)
|
||||
: base(sf,headerWriter,sourceWriter,parent,refControl) {
|
||||
}
|
||||
|
||||
/*
|
||||
* write trailer
|
||||
*/
|
||||
|
||||
override protected void WriteTrailer() {
|
||||
_headerWriter.Write("} }\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* write source trailer
|
||||
*/
|
||||
|
||||
override protected void WriteSourceTrailer() {
|
||||
_sourceWriter.Write("} }\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* write source header
|
||||
*/
|
||||
|
||||
override protected void WriteSourceHeader() {
|
||||
_sourceWriter.Write("#include \"config/stm32plus.h\"\n");
|
||||
_sourceWriter.Write("#include \"config/display/font.h\"\n\n");
|
||||
_sourceWriter.Write("namespace stm32plus { namespace display {\n\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* write header
|
||||
*/
|
||||
|
||||
override protected void WriteHeader() {
|
||||
|
||||
_headerWriter.Write("#pragma once\n\n");
|
||||
_headerWriter.Write("#include \"display/graphic/Font.h\"\n\n");
|
||||
_headerWriter.Write("namespace stm32plus { namespace display {\n\n");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* write font byte declarations
|
||||
*/
|
||||
|
||||
override protected void WriteFontBytes() {
|
||||
|
||||
string str;
|
||||
bool[,] values;
|
||||
byte b,bitpos;
|
||||
int x,y;
|
||||
|
||||
_sourceWriter.Write(" // byte definitions for "+_font.Identifier+"\n\n");
|
||||
|
||||
foreach(char c in _font.Characters()) {
|
||||
|
||||
str=GetBytesName(c);
|
||||
|
||||
_sourceWriter.Write(" uint8_t "+str+"[]={ ");
|
||||
|
||||
values=FontUtil.GetCharacterBitmap(_refControl,_font.GdiFont,c,_font.XOffset,_font.YOffset,_font.ExtraLines);
|
||||
|
||||
b=0;
|
||||
bitpos=0;
|
||||
|
||||
for(y=0;y<values.GetLength(1);y++)
|
||||
{
|
||||
for(x=0;x<values.GetLength(0);x++)
|
||||
{
|
||||
if(values[x,y])
|
||||
b|=(byte)(1 << bitpos);
|
||||
|
||||
if(bitpos++==7)
|
||||
{
|
||||
_sourceWriter.Write(b.ToString()+",");
|
||||
bitpos=0;
|
||||
b=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(bitpos>0)
|
||||
_sourceWriter.Write(b.ToString()+",");
|
||||
|
||||
_sourceWriter.Write("};\n");
|
||||
}
|
||||
_sourceWriter.Write("\n");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* write font char declarations
|
||||
*/
|
||||
|
||||
override protected void WriteFontChars() {
|
||||
|
||||
_sourceWriter.Write(" // character definitions for "+_font.Identifier+"\n\n");
|
||||
_sourceWriter.Write(" extern const struct FontChar "+GetCharName()+"[]={\n");
|
||||
|
||||
foreach(char c in _font.Characters()) {
|
||||
_sourceWriter.Write(" { ");
|
||||
|
||||
_sourceWriter.Write(Convert.ToUInt16(c).ToString()+",");
|
||||
_sourceWriter.Write(GetCharWidth(c)+",");
|
||||
_sourceWriter.Write(GetBytesName(c)+" },\n");
|
||||
}
|
||||
|
||||
_sourceWriter.Write(" };\n\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
namespace FontConv {
|
||||
|
||||
/*
|
||||
* Possible devices
|
||||
*/
|
||||
|
||||
public enum TargetDevice {
|
||||
STM32PLUS,
|
||||
ARDUINO
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
namespace FontConv
|
||||
{
|
||||
class Util
|
||||
{
|
||||
static public void Error(Exception ex_)
|
||||
{
|
||||
MessageBox.Show(ex_.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
|
||||
|
||||
namespace FontConv
|
||||
{
|
||||
class XmlUtil
|
||||
{
|
||||
/*
|
||||
* append XML child
|
||||
*/
|
||||
|
||||
public static void AppendString(XmlElement parent_,string childName_,string value_)
|
||||
{
|
||||
XmlElement child;
|
||||
XmlText text;
|
||||
|
||||
if(value_==null)
|
||||
return;
|
||||
|
||||
child=parent_.OwnerDocument.CreateElement(childName_);
|
||||
text=parent_.OwnerDocument.CreateTextNode(value_);
|
||||
|
||||
parent_.AppendChild(child);
|
||||
child.AppendChild(text);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* append boolean
|
||||
*/
|
||||
|
||||
public static void AppendBool(XmlElement parent_,string childName_,bool value_)
|
||||
{
|
||||
AppendString(parent_,childName_,value_ ? "true" : "false");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* append XML child CDATA
|
||||
*/
|
||||
|
||||
public static void AppendCdata(XmlElement parent_,string childName_,string value_)
|
||||
{
|
||||
XmlElement child;
|
||||
XmlCDataSection text;
|
||||
|
||||
child=parent_.OwnerDocument.CreateElement(childName_);
|
||||
text=parent_.OwnerDocument.CreateCDataSection(value_);
|
||||
|
||||
parent_.AppendChild(child);
|
||||
child.AppendChild(text);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* append int
|
||||
*/
|
||||
|
||||
public static void AppendInt(XmlElement parent_,string childName_,int value_)
|
||||
{
|
||||
AppendString(parent_,childName_,value_.ToString());
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* get string
|
||||
*/
|
||||
|
||||
public static string GetString(XmlNode parent_,string xpath_,string default_,bool required_)
|
||||
{
|
||||
string str;
|
||||
|
||||
try
|
||||
{
|
||||
str=parent_.SelectSingleNode(xpath_).FirstChild.InnerText;
|
||||
return str;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
if(required_)
|
||||
throw new Exception("XML value: "+default_+" is required but is not present in this document");
|
||||
|
||||
return default_;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* get an integer
|
||||
*/
|
||||
|
||||
public static Int32 GetInt(XmlElement parent_,string xpath_,Int32 default_,bool required_)
|
||||
{
|
||||
string str;
|
||||
|
||||
if((str=GetString(parent_,xpath_,null,required_))==null)
|
||||
return default_;
|
||||
|
||||
return Int32.Parse(str);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* get a boolean
|
||||
*/
|
||||
|
||||
public static bool GetBool(XmlElement parent_,string xpath_,bool default_,bool required_)
|
||||
{
|
||||
string str;
|
||||
|
||||
if((str=GetString(parent_,xpath_,null,required_))==null)
|
||||
return default_;
|
||||
|
||||
return str.Equals("true");
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// specialisations for writing Arduino font files
|
||||
/// </summary>
|
||||
|
||||
public class ArduinoFontWriter : FontWriter {
|
||||
|
||||
/// <summary>
|
||||
/// write the header start
|
||||
/// </summary>
|
||||
|
||||
protected override void WriteHeaderStart(TextWriter writer) {
|
||||
|
||||
writer.Write("#pragma once\n\n");
|
||||
writer.Write("#include \"Font.h\"\n\n");
|
||||
writer.Write("namespace lcd {\n\n");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the header end
|
||||
/// </summary>
|
||||
|
||||
protected override void WriteHeaderEnd(TextWriter writer) {
|
||||
writer.Write("}\n");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the source start
|
||||
/// </summary>
|
||||
|
||||
protected override void WriteSourceStart(TextWriter writer) {
|
||||
|
||||
writer.Write("#include <avr/pgmspace.h>\n");
|
||||
writer.Write("#include \"Font.h\"\n\n");
|
||||
writer.Write("namespace lcd {\n\n");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the source end
|
||||
/// </summary>
|
||||
|
||||
protected override void WriteSourceEnd(TextWriter writer) {
|
||||
writer.Write("}\n");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Write the source body
|
||||
/// </summary>
|
||||
|
||||
protected override void WriteSourceBody(TextWriter writer) {
|
||||
|
||||
bool first;
|
||||
|
||||
writer.Write(" // byte definitions for "+GetFontNameAndSize()+"\n\n");
|
||||
|
||||
foreach(CharDef cd in _charDefs.Definitions) {
|
||||
|
||||
// don't write empty arrays (space character)
|
||||
|
||||
if(cd.CompressedBytes==null || cd.CompressedBytes.Length==0)
|
||||
continue;
|
||||
|
||||
// opening declaration
|
||||
|
||||
writer.Write(" const uint8_t __attribute__((progmem)) "+GetCharacterName(cd.Character)+"[] PROGMEM={ ");
|
||||
|
||||
// bytes
|
||||
|
||||
first=true;
|
||||
foreach(byte b in cd.CompressedBytes) {
|
||||
|
||||
if(first)
|
||||
first=false;
|
||||
else
|
||||
writer.Write(",");
|
||||
|
||||
writer.Write(b.ToString());
|
||||
}
|
||||
|
||||
// closing declaration
|
||||
|
||||
writer.Write("};\n");
|
||||
}
|
||||
|
||||
writer.Write("\n // character definitions for "+GetFontNameAndSize()+"\n\n");
|
||||
writer.Write(" extern const struct FontChar __attribute__((progmem)) FDEF_"+GetFontName()+"_CHAR[] PROGMEM={\n");
|
||||
|
||||
foreach(CharDef cd in _charDefs.Definitions) {
|
||||
|
||||
// don't write empty arrays (space character)
|
||||
|
||||
writer.Write(" { ");
|
||||
|
||||
writer.Write(Convert.ToUInt16(cd.Character).ToString()+",");
|
||||
writer.Write(cd.Size.Width+",");
|
||||
|
||||
writer.Write((cd.Character==' ' ? "(const uint8_t *)0" : GetCharacterName(cd.Character))+" },\n");
|
||||
}
|
||||
|
||||
writer.Write(" };\n\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// character definition class
|
||||
/// </summary>
|
||||
|
||||
public class CharDef {
|
||||
|
||||
/// <summary>
|
||||
/// properties
|
||||
/// </summary>
|
||||
|
||||
public Size Size { get; private set; }
|
||||
public Bitmap CharacterBitmap;
|
||||
public byte[] CompressedBytes { get; private set; }
|
||||
public char Character { get; private set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// parse the values for the character
|
||||
/// </summary>
|
||||
|
||||
public void Parse(Control refCtrl,FontDefinition fd,Font font,char c,bool doCompression) {
|
||||
|
||||
SizeF size;
|
||||
|
||||
this.Character=c;
|
||||
|
||||
// space is a special case
|
||||
|
||||
if(c==' ') {
|
||||
ParseSpace(refCtrl,font);
|
||||
return;
|
||||
}
|
||||
|
||||
using(Graphics g=refCtrl.CreateGraphics()) {
|
||||
|
||||
g.TextRenderingHint=fd.Hint;
|
||||
|
||||
// get the size that the system thinks the character occupies
|
||||
|
||||
size=TextRenderer.MeasureText(g,c.ToString(),font,new Size(int.MaxValue,int.MaxValue),TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix);
|
||||
|
||||
this.CharacterBitmap=new Bitmap(Convert.ToInt32(size.Width)+fd.ExtraSpacing.Width,Convert.ToInt32(font.GetHeight())+fd.ExtraSpacing.Height);
|
||||
this.Size=this.CharacterBitmap.Size;
|
||||
|
||||
using(Graphics charGraphics=Graphics.FromImage(this.CharacterBitmap)) {
|
||||
|
||||
charGraphics.TextRenderingHint=fd.Hint;
|
||||
|
||||
using(SolidBrush backBrush=new SolidBrush(fd.Background))
|
||||
charGraphics.FillRectangle(backBrush,0,0,this.CharacterBitmap.Width,this.CharacterBitmap.Height);
|
||||
|
||||
// draw the character into the center of the bitmap
|
||||
|
||||
TextRenderer.DrawText(charGraphics,c.ToString(),font,new Point(0,0),fd.Foreground,fd.Background,TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix);
|
||||
}
|
||||
|
||||
// scan the bitmap
|
||||
|
||||
if(doCompression)
|
||||
ScanBitmap(this.CharacterBitmap,fd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// scan the bitmap for its values
|
||||
/// </summary>
|
||||
|
||||
protected void ScanBitmap(Bitmap bm,FontDefinition fd) {
|
||||
|
||||
string tempFile,compressedName=null;
|
||||
byte[] bytes;
|
||||
|
||||
// get a temporary filename
|
||||
|
||||
tempFile=Path.GetTempFileName()+".png";
|
||||
|
||||
try {
|
||||
|
||||
// write the bitmap as a PNG to the temporary file
|
||||
|
||||
bm.Save(tempFile,ImageFormat.Png);
|
||||
|
||||
// compress the bitmap
|
||||
|
||||
compressedName=CompressFile(fd,tempFile);
|
||||
|
||||
// read back the bytes
|
||||
|
||||
bytes=File.ReadAllBytes(compressedName);
|
||||
|
||||
// encode the bytes with a length prefix in LSB order
|
||||
|
||||
this.CompressedBytes=new byte[bytes.Length+2];
|
||||
|
||||
this.CompressedBytes[0]=(byte)(bytes.Length & 0xff);
|
||||
this.CompressedBytes[1]=(byte)(bytes.Length >> 8);
|
||||
|
||||
bytes.CopyTo(this.CompressedBytes,2);
|
||||
}
|
||||
finally {
|
||||
File.Delete(tempFile);
|
||||
|
||||
if(compressedName!=null)
|
||||
File.Delete(compressedName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// run bm2rgbi on the temp file
|
||||
/// </summary>
|
||||
|
||||
private string CompressFile(FontDefinition fd,string tempFile) {
|
||||
|
||||
ProcessStartInfo pi;
|
||||
Process p;
|
||||
FileInfo fi;
|
||||
string compressedName,args;
|
||||
|
||||
// run bm2rgbi on the file
|
||||
|
||||
compressedName=tempFile+".lzg";
|
||||
|
||||
args="\""+tempFile+"\" \""+compressedName+"\" "+fd.CompressionOptions+" -c";
|
||||
pi=new ProcessStartInfo("bm2rgbi.exe",args);
|
||||
pi.CreateNoWindow=true;
|
||||
pi.UseShellExecute=false;
|
||||
pi.WindowStyle=ProcessWindowStyle.Hidden;
|
||||
|
||||
p=Process.Start(pi);
|
||||
p.WaitForExit();
|
||||
|
||||
// make sure that it did something
|
||||
|
||||
fi=new FileInfo(compressedName);
|
||||
if(fi.Length==0)
|
||||
throw new Exception("Failed to compress the font character. Verify that bm2rgbi.exe and lzg.exe are both present in the same directory as LzgFontConv.exe");
|
||||
|
||||
return compressedName;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Copy a bitmap section
|
||||
/// </summary>
|
||||
|
||||
private Bitmap CopyBitmap(Bitmap srcBitmap,Rectangle section) {
|
||||
|
||||
// Create the new bitmap and associated graphics object
|
||||
|
||||
Bitmap bmp=new Bitmap(section.Width, section.Height);
|
||||
|
||||
using(Graphics g=Graphics.FromImage(bmp))
|
||||
g.DrawImage(srcBitmap,0,0,section,GraphicsUnit.Pixel);
|
||||
|
||||
return bmp;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// parse the space character
|
||||
/// </summary>
|
||||
|
||||
private void ParseSpace(Control refCtrl,Font font) {
|
||||
|
||||
StringFormat sf;
|
||||
Size size;
|
||||
|
||||
// measure the size of a space
|
||||
|
||||
sf=StringFormat.GenericTypographic;
|
||||
sf.FormatFlags|=StringFormatFlags.MeasureTrailingSpaces;
|
||||
|
||||
using(Graphics g=refCtrl.CreateGraphics())
|
||||
size=g.MeasureString(" ",font,new PointF(0,0),sf).ToSize();
|
||||
|
||||
// a space has no height
|
||||
|
||||
this.Size=new Size(size.Width,0);
|
||||
this.CompressedBytes=new byte[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// class to manage the extraction of the character definitions
|
||||
/// </summary>
|
||||
|
||||
public class CharacterDefinitions {
|
||||
|
||||
/// <summary>
|
||||
/// properties
|
||||
/// </summary>
|
||||
|
||||
public int Height { get; private set; }
|
||||
public List<CharDef> Definitions { get; private set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// parse character definitions. The input string must be sorted.
|
||||
/// </summary>
|
||||
|
||||
public void ParseCharacters(Control refCtrl,FontDefinition fd,string str,bool doCompression) {
|
||||
|
||||
CharDef cd;
|
||||
FormProgress progress;
|
||||
Font font;
|
||||
|
||||
progress=new FormProgress();
|
||||
progress.ProgressBar.Minimum=0;
|
||||
progress.ProgressBar.Maximum=str.Length;
|
||||
|
||||
if(doCompression)
|
||||
progress.Show();
|
||||
|
||||
// create a font
|
||||
|
||||
font=new Font(fd.Family,fd.Size,fd.Style,GraphicsUnit.Pixel);
|
||||
this.Height=Convert.ToInt32(font.GetHeight());
|
||||
|
||||
try {
|
||||
this.Definitions=new List<CharDef>();
|
||||
|
||||
foreach(char c in str) {
|
||||
|
||||
// update progress
|
||||
|
||||
progress.ProgressBar.PerformStep();
|
||||
Application.DoEvents();
|
||||
|
||||
// create character
|
||||
|
||||
cd=new CharDef();
|
||||
cd.Parse(refCtrl,fd,font,c,doCompression);
|
||||
|
||||
Definitions.Add(cd);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
|
||||
if(doCompression)
|
||||
progress.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// Colour display panel
|
||||
/// </summary>
|
||||
|
||||
class ColourPanel : Panel {
|
||||
|
||||
/// <summary>
|
||||
/// properties
|
||||
/// </summary>
|
||||
|
||||
public Color Value { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
|
||||
public ColourPanel() {
|
||||
this.Value=Color.Black;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// paint the background
|
||||
/// </summary>
|
||||
|
||||
protected override void OnPaintBackground(PaintEventArgs e) {
|
||||
|
||||
using(SolidBrush brush=new SolidBrush(this.Value))
|
||||
e.Graphics.FillRectangle(brush,this.ClientRectangle);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using System.Xml;
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// holder for all font definition parameters
|
||||
/// </summary>
|
||||
|
||||
public class FontDefinition {
|
||||
|
||||
/// <summary>
|
||||
/// properties
|
||||
/// </summary>
|
||||
|
||||
public string Family { get; set; }
|
||||
public int Size { get; set; }
|
||||
public string Characters { get; set; }
|
||||
public Color Background { get; set; }
|
||||
public Color Foreground { get; set; }
|
||||
public TextRenderingHint Hint { get; set; }
|
||||
public FontStyle Style { get; set; }
|
||||
public Size TftResolution { get; set; }
|
||||
public int Spacing { get; set; }
|
||||
public Size ExtraSpacing { get; set; }
|
||||
public string PreviewText { get; set; }
|
||||
public Point PreviewPosition { get; set; }
|
||||
public string CompressionOptions { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write as XML
|
||||
/// </summary>
|
||||
|
||||
public void WriteXml(XmlElement parent) {
|
||||
|
||||
XmlUtil.AppendString(parent,"Family",this.Family);
|
||||
XmlUtil.AppendInt(parent,"Size",this.Size);
|
||||
XmlUtil.AppendString(parent,"Characters",this.Characters);
|
||||
XmlUtil.AppendColor(parent,"Background",this.Background);
|
||||
XmlUtil.AppendColor(parent,"Foreground",this.Foreground);
|
||||
XmlUtil.AppendInt(parent,"TextRenderingHint",(int)this.Hint);
|
||||
XmlUtil.AppendInt(parent,"Style",(int)this.Style);
|
||||
XmlUtil.AppendSize(parent,"TftResolution",this.TftResolution);
|
||||
XmlUtil.AppendInt(parent,"Spacing",this.Spacing);
|
||||
XmlUtil.AppendSize(parent,"ExtraSpacing",this.ExtraSpacing);
|
||||
XmlUtil.AppendString(parent,"PreviewText",this.PreviewText);
|
||||
XmlUtil.AppendPoint(parent,"PreviewPosition",this.PreviewPosition);
|
||||
XmlUtil.AppendString(parent,"CompressionOptions",this.CompressionOptions);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Read from XML document
|
||||
/// </summary>
|
||||
|
||||
public void ReadXml(string filename) {
|
||||
|
||||
XmlDocument doc;
|
||||
XmlElement parent;
|
||||
|
||||
doc=new XmlDocument();
|
||||
doc.Load(filename);
|
||||
|
||||
parent=(XmlElement)doc.SelectSingleNode("LzgFontConv");
|
||||
|
||||
this.Family=XmlUtil.GetString(parent,"Family",null,true);
|
||||
this.Size=XmlUtil.GetInt(parent,"Size",10,true);
|
||||
this.Characters=XmlUtil.GetString(parent,"Characters",null,true);
|
||||
this.Background=XmlUtil.GetColor(parent,"Background");
|
||||
this.Foreground=XmlUtil.GetColor(parent,"Foreground");
|
||||
this.Hint=(TextRenderingHint)XmlUtil.GetInt(parent,"TextRenderingHint",0,true);
|
||||
this.Style=(FontStyle)XmlUtil.GetInt(parent,"Style",0,true);
|
||||
this.TftResolution=XmlUtil.GetSize(parent,"TftResolution");
|
||||
this.Spacing=XmlUtil.GetInt(parent,"Spacing",0,true);
|
||||
this.ExtraSpacing=XmlUtil.GetSize(parent,"ExtraSpacing");
|
||||
this.PreviewText=XmlUtil.GetString(parent,"PreviewText",null,true);
|
||||
this.PreviewPosition=XmlUtil.GetPoint(parent,"PreviewPosition");
|
||||
this.CompressionOptions=XmlUtil.GetString(parent,"CompressionOptions",null,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// wrapper for the 3 filenames we need
|
||||
/// </summary>
|
||||
|
||||
public class FontFilenames {
|
||||
|
||||
public string Header { get; set; }
|
||||
public string Source { get; set; }
|
||||
public string Definition { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Use the system dialog to get the font filenames
|
||||
/// </summary>
|
||||
|
||||
public DialogResult GetFilenames() {
|
||||
|
||||
SaveFileDialog sfd;
|
||||
|
||||
sfd=new SaveFileDialog();
|
||||
sfd.Filter="Saved Fonts (*.xml)|*.xml|All Files (*.*)|*.*||";
|
||||
|
||||
// show the dialog
|
||||
|
||||
if(sfd.ShowDialog()==DialogResult.Cancel)
|
||||
return DialogResult.Cancel;
|
||||
|
||||
// get teh XML definition name and calculate the others
|
||||
|
||||
this.Definition=sfd.FileName;
|
||||
this.Header=Path.Combine(Path.GetDirectoryName(sfd.FileName),Path.GetFileNameWithoutExtension(sfd.FileName)+".h");
|
||||
this.Source=Path.Combine(Path.GetDirectoryName(sfd.FileName),Path.GetFileNameWithoutExtension(sfd.FileName)+".cpp");
|
||||
|
||||
return DialogResult.OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,236 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// base class for font writers
|
||||
/// </summary>
|
||||
|
||||
public abstract class FontWriter {
|
||||
|
||||
/// <summary>
|
||||
/// members
|
||||
/// </summary>
|
||||
|
||||
protected FontFilenames _filenames=new FontFilenames();
|
||||
protected CharacterDefinitions _charDefs=new CharacterDefinitions();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// properties
|
||||
/// </summary>
|
||||
|
||||
public FontDefinition FontDef { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// derived class methods
|
||||
/// </summary>
|
||||
|
||||
protected abstract void WriteHeaderStart(TextWriter writer);
|
||||
protected abstract void WriteHeaderEnd(TextWriter writer);
|
||||
protected abstract void WriteSourceStart(TextWriter writer);
|
||||
protected abstract void WriteSourceEnd(TextWriter writer);
|
||||
protected abstract void WriteSourceBody(TextWriter writer);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the font data
|
||||
/// </summary>
|
||||
|
||||
public void Write(Control refCtrl) {
|
||||
|
||||
SortedSet<char> charset;
|
||||
|
||||
// get the filenames
|
||||
|
||||
if(_filenames.GetFilenames()==DialogResult.Cancel)
|
||||
return;
|
||||
|
||||
Cursor.Current=Cursors.WaitCursor;
|
||||
|
||||
try {
|
||||
|
||||
// remove duplicate characters and sort while we're at it
|
||||
|
||||
charset=new SortedSet<char>();
|
||||
|
||||
foreach(char c in this.FontDef.Characters) {
|
||||
if(!charset.Contains(c)) {
|
||||
charset.Add(c);
|
||||
}
|
||||
}
|
||||
|
||||
this.FontDef.Characters=string.Empty;
|
||||
foreach(char c in charset)
|
||||
this.FontDef.Characters+=c;
|
||||
|
||||
// create the char definitions
|
||||
|
||||
_charDefs.ParseCharacters(refCtrl,this.FontDef,this.FontDef.Characters,true);
|
||||
|
||||
// write the 3 files
|
||||
|
||||
WriteDefinition();
|
||||
WriteHeader();
|
||||
WriteSource();
|
||||
}
|
||||
finally {
|
||||
Cursor.Current=Cursors.Default;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the font XML
|
||||
/// </summary>
|
||||
|
||||
protected void WriteDefinition() {
|
||||
|
||||
XmlDocument doc;
|
||||
XmlElement root;
|
||||
|
||||
// create root element
|
||||
|
||||
doc=new XmlDocument();
|
||||
root=doc.CreateElement("LzgFontConv");
|
||||
doc.AppendChild(root);
|
||||
|
||||
// write out the font data
|
||||
|
||||
this.FontDef.WriteXml(root);
|
||||
|
||||
// save the document
|
||||
|
||||
doc.Save(_filenames.Definition);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the header file
|
||||
/// </summary>
|
||||
|
||||
protected void WriteHeader() {
|
||||
|
||||
using(StreamWriter headerWriter=new StreamWriter(_filenames.Header)) {
|
||||
|
||||
WriteHeaderStart(headerWriter);
|
||||
WriteHeaderBody(headerWriter);
|
||||
WriteHeaderEnd(headerWriter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the body of the header file
|
||||
/// </summary>
|
||||
|
||||
void WriteHeaderBody(TextWriter writer) {
|
||||
|
||||
writer.Write(" // helper so the user can just do 'new fontname' without having to know the parameters\n\n");
|
||||
|
||||
writer.Write(" extern const struct FontChar FDEF_"+GetFontName()+"_CHAR[];\n\n");
|
||||
|
||||
writer.Write(" class Font_"+GetFontNameAndSize()+" : public LzgFont {\n");
|
||||
writer.Write(" public:\n");
|
||||
writer.Write(" Font_"+GetFontNameAndSize()+"()\n");
|
||||
writer.Write(" : LzgFont("+GetFirstCharacter()+","+this.FontDef.Characters.Length+","+GetFontHeight()+","+this.FontDef.Spacing+",FDEF_"+GetFontName()+"_CHAR"+") {\n");
|
||||
writer.Write(" }\n");
|
||||
writer.Write(" };\n");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// get just the font name
|
||||
/// </summary>
|
||||
|
||||
protected string GetFontName() {
|
||||
|
||||
string name;
|
||||
|
||||
// name with space replaced by underscore
|
||||
|
||||
name=this.FontDef.Family.Replace(" ","_").ToUpper();
|
||||
|
||||
// include bold/italic
|
||||
|
||||
if(this.FontDef.Style!=FontStyle.Regular) {
|
||||
|
||||
name+="_";
|
||||
|
||||
if((this.FontDef.Style & FontStyle.Bold)!=0)
|
||||
name+="B";
|
||||
|
||||
if((this.FontDef.Style & FontStyle.Italic)!=0)
|
||||
name+="I";
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get the font pixel height
|
||||
/// </summary>
|
||||
|
||||
protected int GetFontHeight() {
|
||||
|
||||
return _charDefs.Height;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// get the name and size
|
||||
/// </summary>
|
||||
|
||||
protected string GetFontNameAndSize() {
|
||||
return GetFontName()+"_"+this.FontDef.Size;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// get the first character code
|
||||
/// </summary>
|
||||
|
||||
protected int GetFirstCharacter() {
|
||||
return this.FontDef.Characters[0];
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// get the name of a character
|
||||
/// </summary>
|
||||
|
||||
protected string GetCharacterName(char c) {
|
||||
return "FDEF_"+GetFontNameAndSize()+"_"+Convert.ToUInt16(c);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the source file
|
||||
/// </summary>
|
||||
|
||||
protected void WriteSource() {
|
||||
|
||||
using(StreamWriter sourceWriter=new StreamWriter(_filenames.Source)) {
|
||||
|
||||
WriteSourceStart(sourceWriter);
|
||||
WriteSourceBody(sourceWriter);
|
||||
WriteSourceEnd(sourceWriter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
862
Personal Projects/Business Card Testing/Utilities/src/fonts/LzgFontConv/FormMain.Designer.cs
generated
Normal file
862
Personal Projects/Business Card Testing/Utilities/src/fonts/LzgFontConv/FormMain.Designer.cs
generated
Normal file
@@ -0,0 +1,862 @@
|
||||
namespace LzgFontConv
|
||||
{
|
||||
partial class FormMain
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this._cmbSize = new System.Windows.Forms.ComboBox();
|
||||
this._cmbFont = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this._btnAscii = new System.Windows.Forms.Button();
|
||||
this._btnSymbols = new System.Windows.Forms.Button();
|
||||
this._btnLowerCase = new System.Windows.Forms.Button();
|
||||
this._btnUpperCase = new System.Windows.Forms.Button();
|
||||
this._btnNumbers = new System.Windows.Forms.Button();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this._editSelectedCharacters = new System.Windows.Forms.TextBox();
|
||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||
this._editPreviewY = new System.Windows.Forms.NumericUpDown();
|
||||
this._editPreviewX = new System.Windows.Forms.NumericUpDown();
|
||||
this._editPreviewText = new System.Windows.Forms.TextBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||
this._btnChooseForeground = new System.Windows.Forms.Button();
|
||||
this._editTftHeight = new System.Windows.Forms.NumericUpDown();
|
||||
this._editExtraH = new System.Windows.Forms.NumericUpDown();
|
||||
this._editExtraW = new System.Windows.Forms.NumericUpDown();
|
||||
this._editCharacterSpacing = new System.Windows.Forms.NumericUpDown();
|
||||
this._editTftWidth = new System.Windows.Forms.NumericUpDown();
|
||||
this._cmbStyles = new System.Windows.Forms.ComboBox();
|
||||
this._cmbRenderingHint = new System.Windows.Forms.ComboBox();
|
||||
this._btnChooseBackground = new System.Windows.Forms.Button();
|
||||
this._editForeground = new System.Windows.Forms.TextBox();
|
||||
this._editBackground = new System.Windows.Forms.TextBox();
|
||||
this.label17 = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this._colorDialog = new System.Windows.Forms.ColorDialog();
|
||||
this.groupBox5 = new System.Windows.Forms.GroupBox();
|
||||
this._logo = new System.Windows.Forms.PictureBox();
|
||||
this._btnLoad = new System.Windows.Forms.Button();
|
||||
this._btnSaveStm32plus = new System.Windows.Forms.Button();
|
||||
this._btnSaveArduino = new System.Windows.Forms.Button();
|
||||
this._btnMemory = new System.Windows.Forms.Button();
|
||||
this._editCompressionOptions = new System.Windows.Forms.ComboBox();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this._tooltip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this._foregroundPreview = new LzgFontConv.ColourPanel();
|
||||
this._backgroundPreview = new LzgFontConv.ColourPanel();
|
||||
this._preview = new LzgFontConv.PreviewPanel();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.groupBox3.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editPreviewY)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editPreviewX)).BeginInit();
|
||||
this.groupBox4.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editTftHeight)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editExtraH)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editExtraW)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editCharacterSpacing)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editTftWidth)).BeginInit();
|
||||
this.groupBox5.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this._logo)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this._cmbSize);
|
||||
this.groupBox1.Controls.Add(this._cmbFont);
|
||||
this.groupBox1.Controls.Add(this.label1);
|
||||
this.groupBox1.Location = new System.Drawing.Point(12, 12);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(533, 51);
|
||||
this.groupBox1.TabIndex = 0;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Font";
|
||||
//
|
||||
// _cmbSize
|
||||
//
|
||||
this._cmbSize.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
|
||||
this._cmbSize.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
|
||||
this._cmbSize.FormattingEnabled = true;
|
||||
this._cmbSize.Items.AddRange(new object[] {
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9",
|
||||
"10",
|
||||
"11",
|
||||
"12",
|
||||
"14",
|
||||
"16",
|
||||
"18",
|
||||
"20",
|
||||
"22",
|
||||
"24",
|
||||
"28",
|
||||
"30",
|
||||
"32",
|
||||
"36",
|
||||
"48",
|
||||
"72"});
|
||||
this._cmbSize.Location = new System.Drawing.Point(447, 19);
|
||||
this._cmbSize.MaxDropDownItems = 50;
|
||||
this._cmbSize.Name = "_cmbSize";
|
||||
this._cmbSize.Size = new System.Drawing.Size(73, 21);
|
||||
this._cmbSize.TabIndex = 3;
|
||||
this._cmbSize.Text = "12";
|
||||
this._cmbSize.SelectedIndexChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
this._cmbSize.TextUpdate += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _cmbFont
|
||||
//
|
||||
this._cmbFont.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
|
||||
this._cmbFont.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
|
||||
this._cmbFont.FormattingEnabled = true;
|
||||
this._cmbFont.Location = new System.Drawing.Point(123, 19);
|
||||
this._cmbFont.MaxDropDownItems = 40;
|
||||
this._cmbFont.Name = "_cmbFont";
|
||||
this._cmbFont.Size = new System.Drawing.Size(318, 21);
|
||||
this._cmbFont.Sorted = true;
|
||||
this._cmbFont.TabIndex = 1;
|
||||
this._cmbFont.SelectedIndexChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
this._cmbFont.TextUpdate += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(12, 23);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(102, 13);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "&Font family and size:";
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Controls.Add(this._btnAscii);
|
||||
this.groupBox2.Controls.Add(this._btnSymbols);
|
||||
this.groupBox2.Controls.Add(this._btnLowerCase);
|
||||
this.groupBox2.Controls.Add(this._btnUpperCase);
|
||||
this.groupBox2.Controls.Add(this._btnNumbers);
|
||||
this.groupBox2.Controls.Add(this.label3);
|
||||
this.groupBox2.Controls.Add(this.label2);
|
||||
this.groupBox2.Controls.Add(this._editSelectedCharacters);
|
||||
this.groupBox2.Location = new System.Drawing.Point(12, 69);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(533, 124);
|
||||
this.groupBox2.TabIndex = 1;
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "Character selection";
|
||||
//
|
||||
// _btnAscii
|
||||
//
|
||||
this._btnAscii.Location = new System.Drawing.Point(447, 90);
|
||||
this._btnAscii.Name = "_btnAscii";
|
||||
this._btnAscii.Size = new System.Drawing.Size(73, 23);
|
||||
this._btnAscii.TabIndex = 7;
|
||||
this._btnAscii.Text = "&All ASCII";
|
||||
this._btnAscii.UseVisualStyleBackColor = true;
|
||||
this._btnAscii.Click += new System.EventHandler(this._btnAscii_Click);
|
||||
//
|
||||
// _btnSymbols
|
||||
//
|
||||
this._btnSymbols.Location = new System.Drawing.Point(366, 90);
|
||||
this._btnSymbols.Name = "_btnSymbols";
|
||||
this._btnSymbols.Size = new System.Drawing.Size(75, 23);
|
||||
this._btnSymbols.TabIndex = 6;
|
||||
this._btnSymbols.Text = "Sy&mbols";
|
||||
this._btnSymbols.UseVisualStyleBackColor = true;
|
||||
this._btnSymbols.Click += new System.EventHandler(this._btnSymbols_Click);
|
||||
//
|
||||
// _btnLowerCase
|
||||
//
|
||||
this._btnLowerCase.Location = new System.Drawing.Point(285, 90);
|
||||
this._btnLowerCase.Name = "_btnLowerCase";
|
||||
this._btnLowerCase.Size = new System.Drawing.Size(75, 23);
|
||||
this._btnLowerCase.TabIndex = 5;
|
||||
this._btnLowerCase.Text = "&Lower case";
|
||||
this._btnLowerCase.UseVisualStyleBackColor = true;
|
||||
this._btnLowerCase.Click += new System.EventHandler(this._btnLowerCase_Click);
|
||||
//
|
||||
// _btnUpperCase
|
||||
//
|
||||
this._btnUpperCase.Location = new System.Drawing.Point(204, 90);
|
||||
this._btnUpperCase.Name = "_btnUpperCase";
|
||||
this._btnUpperCase.Size = new System.Drawing.Size(75, 23);
|
||||
this._btnUpperCase.TabIndex = 4;
|
||||
this._btnUpperCase.Text = "&Upper case";
|
||||
this._btnUpperCase.UseVisualStyleBackColor = true;
|
||||
this._btnUpperCase.Click += new System.EventHandler(this._btnUpperCase_Click);
|
||||
//
|
||||
// _btnNumbers
|
||||
//
|
||||
this._btnNumbers.Location = new System.Drawing.Point(123, 90);
|
||||
this._btnNumbers.Name = "_btnNumbers";
|
||||
this._btnNumbers.Size = new System.Drawing.Size(75, 23);
|
||||
this._btnNumbers.TabIndex = 3;
|
||||
this._btnNumbers.Text = "&Numbers";
|
||||
this._btnNumbers.UseVisualStyleBackColor = true;
|
||||
this._btnNumbers.Click += new System.EventHandler(this._btnNumbers_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(50, 95);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(67, 13);
|
||||
this.label3.TabIndex = 2;
|
||||
this.label3.Text = "Quick Insert:";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(12, 23);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(105, 13);
|
||||
this.label2.TabIndex = 0;
|
||||
this.label2.Text = "&Selected characters:";
|
||||
//
|
||||
// _editSelectedCharacters
|
||||
//
|
||||
this._editSelectedCharacters.Location = new System.Drawing.Point(123, 19);
|
||||
this._editSelectedCharacters.Multiline = true;
|
||||
this._editSelectedCharacters.Name = "_editSelectedCharacters";
|
||||
this._editSelectedCharacters.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this._editSelectedCharacters.Size = new System.Drawing.Size(397, 65);
|
||||
this._editSelectedCharacters.TabIndex = 1;
|
||||
this._editSelectedCharacters.Text = "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
||||
this._editSelectedCharacters.TextChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// groupBox3
|
||||
//
|
||||
this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox3.Controls.Add(this._editPreviewY);
|
||||
this.groupBox3.Controls.Add(this._editPreviewX);
|
||||
this.groupBox3.Controls.Add(this._preview);
|
||||
this.groupBox3.Controls.Add(this._editPreviewText);
|
||||
this.groupBox3.Controls.Add(this.label7);
|
||||
this.groupBox3.Controls.Add(this.label8);
|
||||
this.groupBox3.Controls.Add(this.label9);
|
||||
this.groupBox3.Location = new System.Drawing.Point(560, 12);
|
||||
this.groupBox3.Name = "groupBox3";
|
||||
this.groupBox3.Size = new System.Drawing.Size(494, 526);
|
||||
this.groupBox3.TabIndex = 4;
|
||||
this.groupBox3.TabStop = false;
|
||||
this.groupBox3.Text = "Preview";
|
||||
//
|
||||
// _editPreviewY
|
||||
//
|
||||
this._editPreviewY.Location = new System.Drawing.Point(438, 21);
|
||||
this._editPreviewY.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._editPreviewY.Name = "_editPreviewY";
|
||||
this._editPreviewY.Size = new System.Drawing.Size(41, 20);
|
||||
this._editPreviewY.TabIndex = 5;
|
||||
this._editPreviewY.ValueChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _editPreviewX
|
||||
//
|
||||
this._editPreviewX.Location = new System.Drawing.Point(373, 21);
|
||||
this._editPreviewX.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._editPreviewX.Name = "_editPreviewX";
|
||||
this._editPreviewX.Size = new System.Drawing.Size(41, 20);
|
||||
this._editPreviewX.TabIndex = 3;
|
||||
this._editPreviewX.ValueChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _editPreviewText
|
||||
//
|
||||
this._editPreviewText.Location = new System.Drawing.Point(86, 21);
|
||||
this._editPreviewText.Name = "_editPreviewText";
|
||||
this._editPreviewText.Size = new System.Drawing.Size(259, 20);
|
||||
this._editPreviewText.TabIndex = 1;
|
||||
this._editPreviewText.Text = "Hello World";
|
||||
this._editPreviewText.TextChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(12, 25);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(68, 13);
|
||||
this.label7.TabIndex = 0;
|
||||
this.label7.Text = "&Preview text:";
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(351, 24);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(16, 13);
|
||||
this.label8.TabIndex = 2;
|
||||
this.label8.Text = "at";
|
||||
//
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.label9.Location = new System.Drawing.Point(420, 24);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(10, 13);
|
||||
this.label9.TabIndex = 4;
|
||||
this.label9.Text = ",";
|
||||
//
|
||||
// groupBox4
|
||||
//
|
||||
this.groupBox4.Controls.Add(this._btnChooseForeground);
|
||||
this.groupBox4.Controls.Add(this._editTftHeight);
|
||||
this.groupBox4.Controls.Add(this._editExtraH);
|
||||
this.groupBox4.Controls.Add(this._editExtraW);
|
||||
this.groupBox4.Controls.Add(this._editCharacterSpacing);
|
||||
this.groupBox4.Controls.Add(this._editTftWidth);
|
||||
this.groupBox4.Controls.Add(this._cmbStyles);
|
||||
this.groupBox4.Controls.Add(this._cmbRenderingHint);
|
||||
this.groupBox4.Controls.Add(this._btnChooseBackground);
|
||||
this.groupBox4.Controls.Add(this._editForeground);
|
||||
this.groupBox4.Controls.Add(this._editBackground);
|
||||
this.groupBox4.Controls.Add(this._foregroundPreview);
|
||||
this.groupBox4.Controls.Add(this._backgroundPreview);
|
||||
this.groupBox4.Controls.Add(this.label17);
|
||||
this.groupBox4.Controls.Add(this.label6);
|
||||
this.groupBox4.Controls.Add(this.label12);
|
||||
this.groupBox4.Controls.Add(this.label11);
|
||||
this.groupBox4.Controls.Add(this.label10);
|
||||
this.groupBox4.Controls.Add(this.label14);
|
||||
this.groupBox4.Controls.Add(this.label16);
|
||||
this.groupBox4.Controls.Add(this.label13);
|
||||
this.groupBox4.Controls.Add(this.label5);
|
||||
this.groupBox4.Controls.Add(this.label4);
|
||||
this.groupBox4.Location = new System.Drawing.Point(12, 199);
|
||||
this.groupBox4.Name = "groupBox4";
|
||||
this.groupBox4.Size = new System.Drawing.Size(533, 189);
|
||||
this.groupBox4.TabIndex = 2;
|
||||
this.groupBox4.TabStop = false;
|
||||
this.groupBox4.Text = "Rendering Options";
|
||||
//
|
||||
// _btnChooseForeground
|
||||
//
|
||||
this._btnChooseForeground.Location = new System.Drawing.Point(221, 49);
|
||||
this._btnChooseForeground.Name = "_btnChooseForeground";
|
||||
this._btnChooseForeground.Size = new System.Drawing.Size(30, 21);
|
||||
this._btnChooseForeground.TabIndex = 6;
|
||||
this._btnChooseForeground.Text = "...";
|
||||
this._btnChooseForeground.UseVisualStyleBackColor = true;
|
||||
this._btnChooseForeground.Click += new System.EventHandler(this._btnChooseForeground_Click);
|
||||
//
|
||||
// _editTftHeight
|
||||
//
|
||||
this._editTftHeight.Location = new System.Drawing.Point(199, 131);
|
||||
this._editTftHeight.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._editTftHeight.Name = "_editTftHeight";
|
||||
this._editTftHeight.Size = new System.Drawing.Size(52, 20);
|
||||
this._editTftHeight.TabIndex = 15;
|
||||
this._editTftHeight.Value = new decimal(new int[] {
|
||||
240,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._editTftHeight.ValueChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _editExtraH
|
||||
//
|
||||
this._editExtraH.Location = new System.Drawing.Point(415, 157);
|
||||
this._editExtraH.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._editExtraH.Name = "_editExtraH";
|
||||
this._editExtraH.Size = new System.Drawing.Size(37, 20);
|
||||
this._editExtraH.TabIndex = 22;
|
||||
this._editExtraH.ValueChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _editExtraW
|
||||
//
|
||||
this._editExtraW.Location = new System.Drawing.Point(354, 157);
|
||||
this._editExtraW.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._editExtraW.Name = "_editExtraW";
|
||||
this._editExtraW.Size = new System.Drawing.Size(37, 20);
|
||||
this._editExtraW.TabIndex = 20;
|
||||
this._editExtraW.ValueChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _editCharacterSpacing
|
||||
//
|
||||
this._editCharacterSpacing.Location = new System.Drawing.Point(118, 157);
|
||||
this._editCharacterSpacing.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._editCharacterSpacing.Name = "_editCharacterSpacing";
|
||||
this._editCharacterSpacing.Size = new System.Drawing.Size(52, 20);
|
||||
this._editCharacterSpacing.TabIndex = 17;
|
||||
this._editCharacterSpacing.ValueChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _editTftWidth
|
||||
//
|
||||
this._editTftWidth.Location = new System.Drawing.Point(118, 131);
|
||||
this._editTftWidth.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._editTftWidth.Name = "_editTftWidth";
|
||||
this._editTftWidth.Size = new System.Drawing.Size(52, 20);
|
||||
this._editTftWidth.TabIndex = 13;
|
||||
this._editTftWidth.Value = new decimal(new int[] {
|
||||
320,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this._editTftWidth.ValueChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _cmbStyles
|
||||
//
|
||||
this._cmbStyles.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
|
||||
this._cmbStyles.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
|
||||
this._cmbStyles.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this._cmbStyles.FormattingEnabled = true;
|
||||
this._cmbStyles.Items.AddRange(new object[] {
|
||||
"Regular",
|
||||
"Bold",
|
||||
"Italic",
|
||||
"Bold, Italic"});
|
||||
this._cmbStyles.Location = new System.Drawing.Point(120, 103);
|
||||
this._cmbStyles.MaxDropDownItems = 50;
|
||||
this._cmbStyles.Name = "_cmbStyles";
|
||||
this._cmbStyles.Size = new System.Drawing.Size(131, 21);
|
||||
this._cmbStyles.TabIndex = 11;
|
||||
this._cmbStyles.SelectedIndexChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
this._cmbStyles.TextUpdate += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _cmbRenderingHint
|
||||
//
|
||||
this._cmbRenderingHint.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
|
||||
this._cmbRenderingHint.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
|
||||
this._cmbRenderingHint.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this._cmbRenderingHint.FormattingEnabled = true;
|
||||
this._cmbRenderingHint.Items.AddRange(new object[] {
|
||||
"System default",
|
||||
"Single bit per pixel grid fit",
|
||||
"Single bit per pixel",
|
||||
"Anti alias grid fit",
|
||||
"Anti alias",
|
||||
"Clear type grid fit"});
|
||||
this._cmbRenderingHint.Location = new System.Drawing.Point(120, 76);
|
||||
this._cmbRenderingHint.MaxDropDownItems = 50;
|
||||
this._cmbRenderingHint.Name = "_cmbRenderingHint";
|
||||
this._cmbRenderingHint.Size = new System.Drawing.Size(240, 21);
|
||||
this._cmbRenderingHint.TabIndex = 9;
|
||||
this._cmbRenderingHint.SelectedIndexChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
this._cmbRenderingHint.TextUpdate += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _btnChooseBackground
|
||||
//
|
||||
this._btnChooseBackground.Location = new System.Drawing.Point(221, 23);
|
||||
this._btnChooseBackground.Name = "_btnChooseBackground";
|
||||
this._btnChooseBackground.Size = new System.Drawing.Size(30, 21);
|
||||
this._btnChooseBackground.TabIndex = 2;
|
||||
this._btnChooseBackground.Text = "...";
|
||||
this._btnChooseBackground.UseVisualStyleBackColor = true;
|
||||
this._btnChooseBackground.Click += new System.EventHandler(this._btnChooseBackground_Click);
|
||||
//
|
||||
// _editForeground
|
||||
//
|
||||
this._editForeground.Location = new System.Drawing.Point(120, 50);
|
||||
this._editForeground.Name = "_editForeground";
|
||||
this._editForeground.Size = new System.Drawing.Size(95, 20);
|
||||
this._editForeground.TabIndex = 5;
|
||||
this._editForeground.Text = "FFFFFF";
|
||||
this._editForeground.TextChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// _editBackground
|
||||
//
|
||||
this._editBackground.Location = new System.Drawing.Point(120, 24);
|
||||
this._editBackground.Name = "_editBackground";
|
||||
this._editBackground.Size = new System.Drawing.Size(95, 20);
|
||||
this._editBackground.TabIndex = 1;
|
||||
this._editBackground.Text = "000000";
|
||||
this._editBackground.TextChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// label17
|
||||
//
|
||||
this.label17.AutoSize = true;
|
||||
this.label17.Location = new System.Drawing.Point(397, 159);
|
||||
this.label17.Name = "label17";
|
||||
this.label17.Size = new System.Drawing.Size(12, 13);
|
||||
this.label17.TabIndex = 21;
|
||||
this.label17.Text = "x";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(179, 134);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(12, 13);
|
||||
this.label6.TabIndex = 14;
|
||||
this.label6.Text = "x";
|
||||
//
|
||||
// label12
|
||||
//
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.Location = new System.Drawing.Point(14, 106);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(38, 13);
|
||||
this.label12.TabIndex = 10;
|
||||
this.label12.Text = "Styles:";
|
||||
//
|
||||
// label11
|
||||
//
|
||||
this.label11.AutoSize = true;
|
||||
this.label11.Location = new System.Drawing.Point(14, 79);
|
||||
this.label11.Name = "label11";
|
||||
this.label11.Size = new System.Drawing.Size(79, 13);
|
||||
this.label11.TabIndex = 8;
|
||||
this.label11.Text = "Rendering hint:";
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(14, 53);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(96, 13);
|
||||
this.label10.TabIndex = 4;
|
||||
this.label10.Text = "Foreground colour:";
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.AutoSize = true;
|
||||
this.label14.Location = new System.Drawing.Point(176, 159);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(33, 13);
|
||||
this.label14.TabIndex = 18;
|
||||
this.label14.Text = "pixels";
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.AutoSize = true;
|
||||
this.label16.Location = new System.Drawing.Point(218, 159);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(130, 13);
|
||||
this.label16.TabIndex = 19;
|
||||
this.label16.Text = "Extra bounding box pixels:";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(14, 159);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(96, 13);
|
||||
this.label13.TabIndex = 16;
|
||||
this.label13.Text = "&Character spacing:";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(14, 134);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(78, 13);
|
||||
this.label5.TabIndex = 12;
|
||||
this.label5.Text = "&TFT resolution:";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(14, 27);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(100, 13);
|
||||
this.label4.TabIndex = 0;
|
||||
this.label4.Text = "&Background colour:";
|
||||
//
|
||||
// groupBox5
|
||||
//
|
||||
this.groupBox5.Controls.Add(this._logo);
|
||||
this.groupBox5.Controls.Add(this._btnLoad);
|
||||
this.groupBox5.Controls.Add(this._btnSaveStm32plus);
|
||||
this.groupBox5.Controls.Add(this._btnSaveArduino);
|
||||
this.groupBox5.Controls.Add(this._btnMemory);
|
||||
this.groupBox5.Controls.Add(this._editCompressionOptions);
|
||||
this.groupBox5.Controls.Add(this.label15);
|
||||
this.groupBox5.Location = new System.Drawing.Point(12, 394);
|
||||
this.groupBox5.Name = "groupBox5";
|
||||
this.groupBox5.Size = new System.Drawing.Size(533, 144);
|
||||
this.groupBox5.TabIndex = 3;
|
||||
this.groupBox5.TabStop = false;
|
||||
this.groupBox5.Text = "Control Options";
|
||||
//
|
||||
// _logo
|
||||
//
|
||||
this._logo.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this._logo.Image = global::LzgFontConv.Properties.Resources.logo;
|
||||
this._logo.Location = new System.Drawing.Point(240, 50);
|
||||
this._logo.Name = "_logo";
|
||||
this._logo.Size = new System.Drawing.Size(280, 78);
|
||||
this._logo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this._logo.TabIndex = 3;
|
||||
this._logo.TabStop = false;
|
||||
this._tooltip.SetToolTip(this._logo, "Click to visit Andy\'s Workshop web page");
|
||||
this._logo.Click += new System.EventHandler(this._logo_Click);
|
||||
//
|
||||
// _btnLoad
|
||||
//
|
||||
this._btnLoad.Location = new System.Drawing.Point(15, 50);
|
||||
this._btnLoad.Name = "_btnLoad";
|
||||
this._btnLoad.Size = new System.Drawing.Size(200, 23);
|
||||
this._btnLoad.TabIndex = 1;
|
||||
this._btnLoad.Text = "Load...";
|
||||
this._btnLoad.UseVisualStyleBackColor = true;
|
||||
this._btnLoad.Click += new System.EventHandler(this._btnLoad_Click);
|
||||
//
|
||||
// _btnSaveStm32plus
|
||||
//
|
||||
this._btnSaveStm32plus.Location = new System.Drawing.Point(15, 108);
|
||||
this._btnSaveStm32plus.Name = "_btnSaveStm32plus";
|
||||
this._btnSaveStm32plus.Size = new System.Drawing.Size(200, 23);
|
||||
this._btnSaveStm32plus.TabIndex = 3;
|
||||
this._btnSaveStm32plus.Text = "Save for stm32plus...";
|
||||
this._btnSaveStm32plus.UseVisualStyleBackColor = true;
|
||||
this._btnSaveStm32plus.Click += new System.EventHandler(this._btnSaveStm32plus_Click);
|
||||
//
|
||||
// _btnSaveArduino
|
||||
//
|
||||
this._btnSaveArduino.Location = new System.Drawing.Point(15, 79);
|
||||
this._btnSaveArduino.Name = "_btnSaveArduino";
|
||||
this._btnSaveArduino.Size = new System.Drawing.Size(200, 23);
|
||||
this._btnSaveArduino.TabIndex = 2;
|
||||
this._btnSaveArduino.Text = "Save for Arduino...";
|
||||
this._btnSaveArduino.UseVisualStyleBackColor = true;
|
||||
this._btnSaveArduino.Click += new System.EventHandler(this._btnSaveArduino_Click);
|
||||
//
|
||||
// _btnMemory
|
||||
//
|
||||
this._btnMemory.Location = new System.Drawing.Point(15, 21);
|
||||
this._btnMemory.Name = "_btnMemory";
|
||||
this._btnMemory.Size = new System.Drawing.Size(200, 23);
|
||||
this._btnMemory.TabIndex = 0;
|
||||
this._btnMemory.Text = "Estimate memory requirement";
|
||||
this._btnMemory.UseVisualStyleBackColor = true;
|
||||
this._btnMemory.Click += new System.EventHandler(this._btnMemory_Click);
|
||||
//
|
||||
// _editCompressionOptions
|
||||
//
|
||||
this._editCompressionOptions.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
|
||||
this._editCompressionOptions.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
|
||||
this._editCompressionOptions.FormattingEnabled = true;
|
||||
this._editCompressionOptions.Items.AddRange(new object[] {
|
||||
"ili9325 64",
|
||||
"ili9325 262",
|
||||
"ili9325a 64",
|
||||
"ili9325a 262",
|
||||
"ili9327 64",
|
||||
"ili9327 262",
|
||||
"ili9481 64",
|
||||
"ili9481 262",
|
||||
"hx8347a 64",
|
||||
"hx8352a 64",
|
||||
"hx8352a 262",
|
||||
"mc2pa8201 64",
|
||||
"mc2pa8201 262",
|
||||
"mc2pa8201 16",
|
||||
"lds285 64",
|
||||
"lds285 262",
|
||||
"lds285 16",
|
||||
"r61523 64",
|
||||
"r61523 262",
|
||||
"r61523 16"});
|
||||
this._editCompressionOptions.Location = new System.Drawing.Point(350, 18);
|
||||
this._editCompressionOptions.MaxDropDownItems = 50;
|
||||
this._editCompressionOptions.Name = "_editCompressionOptions";
|
||||
this._editCompressionOptions.Size = new System.Drawing.Size(170, 21);
|
||||
this._editCompressionOptions.TabIndex = 5;
|
||||
this._editCompressionOptions.Text = "mc2pa8201 262";
|
||||
this._editCompressionOptions.SelectedIndexChanged += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
this._editCompressionOptions.TextUpdate += new System.EventHandler(this.UpdatePreviewEvent);
|
||||
//
|
||||
// label15
|
||||
//
|
||||
this.label15.AutoSize = true;
|
||||
this.label15.Location = new System.Drawing.Point(237, 21);
|
||||
this.label15.Name = "label15";
|
||||
this.label15.Size = new System.Drawing.Size(107, 13);
|
||||
this.label15.TabIndex = 4;
|
||||
this.label15.Text = "Compression options:";
|
||||
//
|
||||
// _foregroundPreview
|
||||
//
|
||||
this._foregroundPreview.Location = new System.Drawing.Point(257, 50);
|
||||
this._foregroundPreview.Name = "_foregroundPreview";
|
||||
this._foregroundPreview.Size = new System.Drawing.Size(103, 20);
|
||||
this._foregroundPreview.TabIndex = 7;
|
||||
this._foregroundPreview.Value = System.Drawing.Color.Black;
|
||||
//
|
||||
// _backgroundPreview
|
||||
//
|
||||
this._backgroundPreview.Location = new System.Drawing.Point(257, 24);
|
||||
this._backgroundPreview.Name = "_backgroundPreview";
|
||||
this._backgroundPreview.Size = new System.Drawing.Size(103, 20);
|
||||
this._backgroundPreview.TabIndex = 3;
|
||||
this._backgroundPreview.Value = System.Drawing.Color.Black;
|
||||
//
|
||||
// _preview
|
||||
//
|
||||
this._preview.BackgroundColour = System.Drawing.Color.Empty;
|
||||
this._preview.FontDef = null;
|
||||
this._preview.ForegroundColour = System.Drawing.Color.Empty;
|
||||
this._preview.Location = new System.Drawing.Point(15, 51);
|
||||
this._preview.Name = "_preview";
|
||||
this._preview.Position = new System.Drawing.Point(0, 0);
|
||||
this._preview.RenderingHint = System.Drawing.Text.TextRenderingHint.SystemDefault;
|
||||
this._preview.Size = new System.Drawing.Size(464, 362);
|
||||
this._preview.TabIndex = 6;
|
||||
//
|
||||
// FormMain
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1070, 553);
|
||||
this.Controls.Add(this.groupBox5);
|
||||
this.Controls.Add(this.groupBox4);
|
||||
this.Controls.Add(this.groupBox3);
|
||||
this.Controls.Add(this.groupBox2);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MinimumSize = new System.Drawing.Size(1086, 591);
|
||||
this.Name = "FormMain";
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
|
||||
this.Text = "LZG Font Converter and Compressor";
|
||||
this.Load += new System.EventHandler(this.FormMain_Load);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox2.PerformLayout();
|
||||
this.groupBox3.ResumeLayout(false);
|
||||
this.groupBox3.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editPreviewY)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editPreviewX)).EndInit();
|
||||
this.groupBox4.ResumeLayout(false);
|
||||
this.groupBox4.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editTftHeight)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editExtraH)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editExtraW)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editCharacterSpacing)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this._editTftWidth)).EndInit();
|
||||
this.groupBox5.ResumeLayout(false);
|
||||
this.groupBox5.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this._logo)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
private System.Windows.Forms.Button _btnAscii;
|
||||
private System.Windows.Forms.Button _btnSymbols;
|
||||
private System.Windows.Forms.Button _btnLowerCase;
|
||||
private System.Windows.Forms.Button _btnUpperCase;
|
||||
private System.Windows.Forms.Button _btnNumbers;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox _editSelectedCharacters;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.ComboBox _cmbSize;
|
||||
private System.Windows.Forms.ComboBox _cmbFont;
|
||||
private LzgFontConv.PreviewPanel _preview;
|
||||
private System.Windows.Forms.GroupBox groupBox3;
|
||||
private System.Windows.Forms.TextBox _editPreviewText;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.Label label9;
|
||||
private System.Windows.Forms.GroupBox groupBox4;
|
||||
private System.Windows.Forms.Button _btnChooseBackground;
|
||||
private System.Windows.Forms.TextBox _editBackground;
|
||||
private LzgFontConv.ColourPanel _backgroundPreview;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.ColorDialog _colorDialog;
|
||||
private System.Windows.Forms.GroupBox groupBox5;
|
||||
private System.Windows.Forms.Button _btnLoad;
|
||||
private System.Windows.Forms.Button _btnSaveStm32plus;
|
||||
private System.Windows.Forms.Button _btnSaveArduino;
|
||||
private System.Windows.Forms.Button _btnMemory;
|
||||
private System.Windows.Forms.PictureBox _logo;
|
||||
private System.Windows.Forms.Button _btnChooseForeground;
|
||||
private System.Windows.Forms.TextBox _editForeground;
|
||||
private ColourPanel _foregroundPreview;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.ComboBox _cmbRenderingHint;
|
||||
private System.Windows.Forms.Label label11;
|
||||
private System.Windows.Forms.ComboBox _cmbStyles;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.NumericUpDown _editPreviewY;
|
||||
private System.Windows.Forms.NumericUpDown _editPreviewX;
|
||||
private System.Windows.Forms.NumericUpDown _editTftHeight;
|
||||
private System.Windows.Forms.NumericUpDown _editTftWidth;
|
||||
private System.Windows.Forms.NumericUpDown _editCharacterSpacing;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.ComboBox _editCompressionOptions;
|
||||
private System.Windows.Forms.Label label15;
|
||||
private System.Windows.Forms.ToolTip _tooltip;
|
||||
private System.Windows.Forms.NumericUpDown _editExtraH;
|
||||
private System.Windows.Forms.NumericUpDown _editExtraW;
|
||||
private System.Windows.Forms.Label label17;
|
||||
private System.Windows.Forms.Label label16;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,611 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using System.Globalization;
|
||||
using System.Windows.Forms;
|
||||
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// main form class
|
||||
/// </summary>
|
||||
|
||||
public partial class FormMain : Form {
|
||||
|
||||
/// <summary>
|
||||
/// font definition class
|
||||
/// </summary>
|
||||
|
||||
private FontDefinition _fd=new FontDefinition();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// constructor
|
||||
/// </summary>
|
||||
|
||||
public FormMain() {
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// form loaded
|
||||
/// </summary>
|
||||
|
||||
private void FormMain_Load(object sender, EventArgs e) {
|
||||
EnumFonts();
|
||||
this._preview.FontDef=_fd;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Enumerate fonts and add to dropdown
|
||||
/// </summary>
|
||||
|
||||
private void EnumFonts() {
|
||||
|
||||
foreach(System.Windows.Media.FontFamily fontFamily in System.Windows.Media.Fonts.SystemFontFamilies)
|
||||
_cmbFont.Items.Add(fontFamily.Source);
|
||||
|
||||
_cmbFont.SelectedIndex=0;
|
||||
_cmbRenderingHint.SelectedIndex=5;
|
||||
_cmbStyles.SelectedIndex=0;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Insert character ranges
|
||||
/// </summary>
|
||||
|
||||
private void _btnNumbers_Click(object sender, EventArgs e) {
|
||||
InsertChars(48,57);
|
||||
}
|
||||
|
||||
private void _btnUpperCase_Click(object sender, EventArgs e) {
|
||||
InsertChars(65,90);
|
||||
}
|
||||
|
||||
private void _btnLowerCase_Click(object sender, EventArgs e) {
|
||||
InsertChars(97,122);
|
||||
}
|
||||
|
||||
private void _btnSymbols_Click(object sender, EventArgs e) {
|
||||
InsertChars(32,47);
|
||||
InsertChars(58,64);
|
||||
InsertChars(91,96);
|
||||
InsertChars(123,126);
|
||||
}
|
||||
|
||||
private void _btnAscii_Click(object sender, EventArgs e) {
|
||||
InsertChars(32,126);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Insert a range of characters
|
||||
/// </summary>
|
||||
|
||||
private void InsertChars(int first,int last) {
|
||||
|
||||
String str;
|
||||
int i;
|
||||
|
||||
str=_editSelectedCharacters.Text.Substring(0,_editSelectedCharacters.SelectionStart);
|
||||
|
||||
for(i=first;i<=last;i++)
|
||||
str+=Convert.ToChar(i);
|
||||
|
||||
str+=_editSelectedCharacters.Text.Substring(_editSelectedCharacters.SelectionStart);
|
||||
|
||||
_editSelectedCharacters.Text=str;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Choose background
|
||||
/// </summary>
|
||||
|
||||
private void _btnChooseBackground_Click(object sender, EventArgs e) {
|
||||
|
||||
_colorDialog.Color=_backgroundPreview.Value;
|
||||
if(_colorDialog.ShowDialog()==DialogResult.Cancel)
|
||||
return;
|
||||
|
||||
_editBackground.Text=ColourToString(_colorDialog.Color);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Choose foreground
|
||||
/// </summary>
|
||||
|
||||
private void _btnChooseForeground_Click(object sender, EventArgs e) {
|
||||
|
||||
_colorDialog.Color=_foregroundPreview.Value;
|
||||
if(_colorDialog.ShowDialog()==DialogResult.Cancel)
|
||||
return;
|
||||
|
||||
_editForeground.Text=ColourToString(_colorDialog.Color);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Convert a colour to a RRGGBB string
|
||||
/// </summary>
|
||||
|
||||
private String ColourToString(Color cr) {
|
||||
return cr.R.ToString("X2")+cr.G.ToString("X2")+cr.B.ToString("X2");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Something happened that means the preview is to be updated
|
||||
/// </summary>
|
||||
|
||||
private void UpdatePreviewEvent(object sender, EventArgs e) {
|
||||
|
||||
// update colour preview
|
||||
|
||||
try {
|
||||
|
||||
UpdateFont();
|
||||
UpdateFontSize();
|
||||
UpdateSelectedCharacters();
|
||||
UpdateCharacterSpacing();
|
||||
UpdateExtraSize();
|
||||
UpdateBackground();
|
||||
UpdateForeground();
|
||||
UpdateCompressionOptions();
|
||||
|
||||
_fd.PreviewPosition=UpdatePosition();
|
||||
_fd.TftResolution=new Size(UpdateTftWidth(),UpdateTftHeight());
|
||||
|
||||
switch(_cmbRenderingHint.SelectedIndex) {
|
||||
case 0:
|
||||
_preview.RenderingHint=TextRenderingHint.SystemDefault;
|
||||
break;
|
||||
case 1:
|
||||
_preview.RenderingHint=TextRenderingHint.SingleBitPerPixelGridFit;
|
||||
break;
|
||||
case 2:
|
||||
_preview.RenderingHint=TextRenderingHint.SingleBitPerPixel;
|
||||
break;
|
||||
case 3:
|
||||
_preview.RenderingHint=TextRenderingHint.AntiAliasGridFit;
|
||||
break;
|
||||
case 4:
|
||||
_preview.RenderingHint=TextRenderingHint.AntiAlias;
|
||||
break;
|
||||
case 5:
|
||||
_preview.RenderingHint=TextRenderingHint.ClearTypeGridFit;
|
||||
break;
|
||||
}
|
||||
_fd.Hint=_preview.RenderingHint;
|
||||
|
||||
_preview.Position=_fd.PreviewPosition;
|
||||
_preview.Font=CreateFont();
|
||||
_preview.Size=_fd.TftResolution;
|
||||
_preview.BackgroundColour=_backgroundPreview.Value;
|
||||
_preview.ForegroundColour=_foregroundPreview.Value;
|
||||
_preview.Text=_editPreviewText.Text;
|
||||
_preview.Invalidate();
|
||||
|
||||
_fd.PreviewText=_preview.Text;
|
||||
}
|
||||
catch {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// validate the preview text position
|
||||
/// </summary>
|
||||
|
||||
private Point UpdatePosition() {
|
||||
Point p;
|
||||
|
||||
p=new Point(
|
||||
ValidateIntRange(_editPreviewX.Text,_editPreviewX,0,9999),
|
||||
ValidateIntRange(_editPreviewY.Text,_editPreviewY,0,9999)
|
||||
);
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Create the font for the preview
|
||||
/// </summary>
|
||||
|
||||
private Font CreateFont() {
|
||||
|
||||
FontStyle style;
|
||||
|
||||
switch(_cmbStyles.SelectedIndex) {
|
||||
|
||||
case 1:
|
||||
style=FontStyle.Bold;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
style=FontStyle.Italic;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
style=FontStyle.Bold | FontStyle.Italic;
|
||||
break;
|
||||
|
||||
default:
|
||||
style=FontStyle.Regular;
|
||||
break;
|
||||
}
|
||||
_fd.Style=style;
|
||||
|
||||
return new Font(_cmbFont.Text,float.Parse(_cmbSize.Text),style,GraphicsUnit.Pixel);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// update TFT width
|
||||
/// </summary>
|
||||
|
||||
private int UpdateTftWidth() {
|
||||
return ValidateIntRange(_editTftWidth.Text,_editTftWidth,1,9999);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// update TFT height
|
||||
/// </summary>
|
||||
|
||||
private int UpdateTftHeight() {
|
||||
return ValidateIntRange(_editTftHeight.Text,_editTftHeight,1,9999);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Update the character spacing
|
||||
/// </summary>
|
||||
|
||||
private void UpdateCharacterSpacing() {
|
||||
_fd.Spacing=ValidateIntRange(_editCharacterSpacing.Text,_editCharacterSpacing,0,9999);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// update the extra size
|
||||
/// </summary>
|
||||
|
||||
private void UpdateExtraSize() {
|
||||
_fd.ExtraSpacing=new Size(ValidateIntRange(_editExtraW.Text,_editExtraW,0,9999),
|
||||
ValidateIntRange(_editExtraH.Text,_editExtraH,0,9999));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// validate the font
|
||||
/// </summary>
|
||||
|
||||
private void UpdateFont() {
|
||||
|
||||
if(_cmbFont.Items.Contains(_cmbFont.Text))
|
||||
_cmbFont.BackColor=SystemColors.Window;
|
||||
else {
|
||||
_cmbFont.BackColor=Color.PaleVioletRed;
|
||||
throw new Exception("Invalid font name");
|
||||
}
|
||||
|
||||
_fd.Family=_cmbFont.Text;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// validate font size
|
||||
/// </summary>
|
||||
|
||||
private void UpdateFontSize() {
|
||||
_fd.Size=ValidateIntRange(_cmbSize.Text,_cmbSize,1,9999);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// validate that an integer is not zero
|
||||
/// </summary>
|
||||
|
||||
private int ValidateIntRange(String str,Control c,int low,int high) {
|
||||
|
||||
int size;
|
||||
|
||||
try {
|
||||
size=int.Parse(str);
|
||||
|
||||
if(size<low || size>high)
|
||||
throw new Exception("Invalid size");
|
||||
|
||||
c.BackColor=SystemColors.Window;
|
||||
return size;
|
||||
}
|
||||
catch(Exception ex) {
|
||||
c.BackColor=Color.PaleVioletRed;
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Update the selected characters
|
||||
/// </summary>
|
||||
|
||||
private void UpdateSelectedCharacters() {
|
||||
|
||||
if(_editSelectedCharacters.TextLength==0) {
|
||||
_editSelectedCharacters.BackColor=Color.PaleVioletRed;
|
||||
throw new Exception("No characters selected");
|
||||
}
|
||||
|
||||
_editSelectedCharacters.BackColor=SystemColors.Window;
|
||||
_fd.Characters=_editSelectedCharacters.Text;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Update the compression options
|
||||
/// </summary>
|
||||
|
||||
private void UpdateCompressionOptions() {
|
||||
|
||||
if(_editCompressionOptions.Text.Length==0) {
|
||||
_editCompressionOptions.BackColor=Color.PaleVioletRed;
|
||||
throw new Exception("No compression options entered");
|
||||
}
|
||||
|
||||
_editCompressionOptions.BackColor=SystemColors.Window;
|
||||
_fd.CompressionOptions=_editCompressionOptions.Text;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// validate background colour
|
||||
/// </summary>
|
||||
|
||||
private void UpdateBackground() {
|
||||
|
||||
Color cr;
|
||||
String str;
|
||||
|
||||
try {
|
||||
|
||||
str=_editBackground.Text;
|
||||
|
||||
cr=Color.FromArgb(
|
||||
0xff,
|
||||
byte.Parse(str.Substring(0,2),NumberStyles.HexNumber),
|
||||
byte.Parse(str.Substring(2,2),NumberStyles.HexNumber),
|
||||
byte.Parse(str.Substring(4,2),NumberStyles.HexNumber)
|
||||
);
|
||||
|
||||
_editBackground.BackColor=SystemColors.Window;
|
||||
_backgroundPreview.Value=cr;
|
||||
_backgroundPreview.Invalidate();
|
||||
_fd.Background=cr;
|
||||
}
|
||||
catch(Exception ex) {
|
||||
_editBackground.BackColor=Color.PaleVioletRed;
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// validate foreground colour
|
||||
/// </summary>
|
||||
|
||||
private void UpdateForeground() {
|
||||
|
||||
Color cr;
|
||||
String str;
|
||||
|
||||
try {
|
||||
|
||||
str=_editForeground.Text;
|
||||
|
||||
cr=Color.FromArgb(
|
||||
0xff,
|
||||
byte.Parse(str.Substring(0,2),NumberStyles.HexNumber),
|
||||
byte.Parse(str.Substring(2,2),NumberStyles.HexNumber),
|
||||
byte.Parse(str.Substring(4,2),NumberStyles.HexNumber)
|
||||
);
|
||||
|
||||
_editForeground.BackColor=SystemColors.Window;
|
||||
_foregroundPreview.Value=cr;
|
||||
_foregroundPreview.Invalidate();
|
||||
_fd.Foreground=cr;
|
||||
}
|
||||
catch(Exception ex) {
|
||||
_editForeground.BackColor=Color.PaleVioletRed;
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// save the selected font for the Arduino
|
||||
/// </summary>
|
||||
|
||||
private void _btnSaveArduino_Click(object sender, EventArgs e) {
|
||||
|
||||
ArduinoFontWriter fw;
|
||||
|
||||
try {
|
||||
|
||||
UpdatePreviewEvent(null,null);
|
||||
|
||||
fw=new ArduinoFontWriter();
|
||||
fw.FontDef=_fd;
|
||||
fw.Write(this);
|
||||
}
|
||||
catch(Exception ex) {
|
||||
MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// save the selected font for stm32plus
|
||||
/// </summary>
|
||||
|
||||
private void _btnSaveStm32plus_Click(object sender, EventArgs e) {
|
||||
|
||||
Stm32plusFontWriter fw;
|
||||
|
||||
try {
|
||||
|
||||
UpdatePreviewEvent(null,null);
|
||||
|
||||
fw=new Stm32plusFontWriter();
|
||||
fw.FontDef=_fd;
|
||||
fw.Write(this);
|
||||
}
|
||||
catch(Exception ex) {
|
||||
MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// estimate the memory requirement
|
||||
/// </summary>
|
||||
|
||||
private void _btnMemory_Click(object sender, EventArgs e) {
|
||||
|
||||
MemoryEstimator me;
|
||||
int size;
|
||||
|
||||
try {
|
||||
|
||||
UpdatePreviewEvent(null,null);
|
||||
|
||||
me=new MemoryEstimator();
|
||||
me.FontDef=_fd;
|
||||
|
||||
size=me.Estimate(this);
|
||||
MessageBox.Show("Approximately "+size+" bytes of flash memory are required.","Memory Requirement",MessageBoxButtons.OK,MessageBoxIcon.Information);
|
||||
}
|
||||
catch(Exception ex) {
|
||||
MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// load from disk
|
||||
/// </summary>
|
||||
|
||||
private void _btnLoad_Click(object sender, EventArgs e) {
|
||||
|
||||
OpenFileDialog ofd;
|
||||
FontDefinition fd;
|
||||
|
||||
try {
|
||||
|
||||
// choose file
|
||||
|
||||
ofd=new OpenFileDialog();
|
||||
ofd.Filter="Saved Fonts (*.xml)|*.xml|All Files (*.*)|*.*||";
|
||||
|
||||
if(ofd.ShowDialog()==DialogResult.Cancel)
|
||||
return;
|
||||
|
||||
// read document to the font definition
|
||||
|
||||
fd=new FontDefinition();
|
||||
fd.ReadXml(ofd.FileName);
|
||||
|
||||
// set up the controls
|
||||
|
||||
_cmbFont.Text=fd.Family;
|
||||
_cmbSize.Text=fd.Size.ToString();
|
||||
_editSelectedCharacters.Text=fd.Characters;
|
||||
_editBackground.Text=ColourToString(fd.Background);
|
||||
_editForeground.Text=ColourToString(fd.Foreground);
|
||||
|
||||
switch(fd.Hint) {
|
||||
case TextRenderingHint.SystemDefault:
|
||||
_cmbRenderingHint.SelectedIndex=0;
|
||||
break;
|
||||
case TextRenderingHint.SingleBitPerPixelGridFit:
|
||||
_cmbRenderingHint.SelectedIndex=1;
|
||||
break;
|
||||
case TextRenderingHint.SingleBitPerPixel:
|
||||
_cmbRenderingHint.SelectedIndex=2;
|
||||
break;
|
||||
case TextRenderingHint.AntiAliasGridFit:
|
||||
_cmbRenderingHint.SelectedIndex=3;
|
||||
break;
|
||||
case TextRenderingHint.AntiAlias:
|
||||
_cmbRenderingHint.SelectedIndex=4;
|
||||
break;
|
||||
default:
|
||||
_cmbRenderingHint.SelectedIndex=5;
|
||||
break;
|
||||
}
|
||||
|
||||
switch(fd.Style) {
|
||||
case FontStyle.Bold:
|
||||
_cmbStyles.SelectedIndex=1;
|
||||
break;
|
||||
case FontStyle.Italic:
|
||||
_cmbStyles.SelectedIndex=2;
|
||||
break;
|
||||
case FontStyle.Bold | FontStyle.Italic:
|
||||
_cmbStyles.SelectedIndex=3;
|
||||
break;
|
||||
default:
|
||||
_cmbStyles.SelectedIndex=0;
|
||||
break;
|
||||
}
|
||||
|
||||
_editTftWidth.Value=fd.TftResolution.Width;
|
||||
_editTftHeight.Value=fd.TftResolution.Height;
|
||||
_editCharacterSpacing.Value=fd.Spacing;
|
||||
_editPreviewText.Text=fd.PreviewText;
|
||||
_editPreviewX.Value=fd.PreviewPosition.X;
|
||||
_editPreviewY.Value=fd.PreviewPosition.Y;
|
||||
_editCompressionOptions.Text=fd.CompressionOptions;
|
||||
_editExtraW.Value=fd.ExtraSpacing.Width;
|
||||
_editExtraH.Value=fd.ExtraSpacing.Height;
|
||||
|
||||
// new font def
|
||||
|
||||
_fd=fd;
|
||||
_preview.FontDef=_fd;
|
||||
|
||||
// update
|
||||
|
||||
UpdatePreviewEvent(null,null);
|
||||
}
|
||||
catch(Exception ex) {
|
||||
MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// click on logo
|
||||
/// </summary>
|
||||
|
||||
private void _logo_Click(object sender, EventArgs e) {
|
||||
System.Diagnostics.Process.Start("http://www.andybrown.me.uk");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="_colorDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>133, 17</value>
|
||||
</metadata>
|
||||
<metadata name="_tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>253, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAA
|
||||
AAB8hIf/io6O/1dcXP9yeoD/KjxS/xorPv8TFBT/FxgY/25xdP8nNEf/ERwv/xQVFf8SExP/aWxu/zxE
|
||||
aP8tN1r/s8LG/0dTW/8pND//SlRf/5SZmv+IjZP/GiQ1/xgdJv89REz/h4uM/5eanf8kLTr/Exgg/zA5
|
||||
Sv99gYX/naCj/+bu7v8uQFb/ER9D/yMoK/8mLCz/kJOT/0NSbv8eK07/GR0h/yImJv93e3v/ZW57/xYc
|
||||
R/8RFyT/HB8f/zo8PP+xxcj/eomW/2Jwgv8dJzT/Fxka/0RKUP9kcoj/bHeG/x4pNv8WGBj/Njo9/2Nv
|
||||
gv9qdIn/FSJA/xETFf8ZGhv/anmC/67Dw/+ttrb/cX2L/xkqTv8kNFL/Q0dI/4aJif+GjJP/FyVH/xQh
|
||||
Pv86P0L/dHh4/5WZn/8lKGL/GyRF/3V+h/+OmZn/WWVl/4iRmP8qQHP/Hy5K/xcYGP8WGRn/io+U/ys3
|
||||
eP8eJ1z/FhgY/xcaGv+Dhon/Njt8/yIxZ/+errf/XWhw/zpDTv9VYW7/lZqd/3N9jf8VIz3/Exop/0FQ
|
||||
a/+LkZj/hI6g/xcmT/8PFib/NUJf/4GIkf+UmqD/6O/v/0FTaP8lNFT/Jisv/ycsLP+anJz/V2On/zw6
|
||||
nf8VHSr/Jisr/4aJif9pc6X/OTOT/xEbN/8hJCT/UFNT/8TV1/+AkZ//YG2A/yYuOv8UFhb/Sk9U/2l2
|
||||
rf9YZaD/GCVF/xQWFv86PUH/c3y3/2Rssf8WIlX/EhMU/xgZGf9/jqH/tsrL/7nBwf9qdor/IS5X/ycz
|
||||
Zv9QVlv/mZyc/3F9l/8kLHL/LjKD/0VMWf+Ljo7/g4yf/yoxg/8jLF//ipKc/46bm/9hbW3/lp+t/1Zk
|
||||
w/8sN37/FxkZ/xgcHP+TmaL/S0m6/0NAqP8VFxf/GBsb/5GUl/9iZNb/RU6s/5qrs/9zfIP/UVpm/25+
|
||||
oP+XoLT/aXiq/xwnRv8cIjL/Wmef/4mSrP90f6r/GydV/xUbKf9LWJD/hpCy/4iRpv/n7u7/WW2j/zI/
|
||||
eP9jbXj/eoyM/7e+vv9yftH/ZGLV/z1Fav9qeHj/q7Oz/3eA0P9RScH/OEB//2Jtbf+NlZX/1uLj/5Ot
|
||||
3f9ler7/ipae/5Genv+errL/kqDl/4WO6P9qdKH/hI+P/4+fn/+WoeP/eHve/2Vut/96gYH/foSE/6y6
|
||||
0v/X5OX/6fLz/6m/1/+Llb//h5LQ/7rO0P/f7e3/w9Tn/4qSyP9+gsv/tsfN/9rq6v/M3OX/ipDN/4F/
|
||||
tv/FydH/5unp/+vx8f/f6Or/aGrV/6Gk2//M0ND/4+rq/+Lr6/9wcOD/hYLm/8PIyP/j6en/5e3t/4eN
|
||||
/P9tbd//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
|
||||
//8AAP//AAD//w==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
59
Personal Projects/Business Card Testing/Utilities/src/fonts/LzgFontConv/FormProgress.Designer.cs
generated
Normal file
59
Personal Projects/Business Card Testing/Utilities/src/fonts/LzgFontConv/FormProgress.Designer.cs
generated
Normal file
@@ -0,0 +1,59 @@
|
||||
namespace LzgFontConv {
|
||||
partial class FormProgress {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.ProgressBar = new System.Windows.Forms.ProgressBar();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// ProgressBar
|
||||
//
|
||||
this.ProgressBar.Location = new System.Drawing.Point(12, 12);
|
||||
this.ProgressBar.Name = "ProgressBar";
|
||||
this.ProgressBar.Size = new System.Drawing.Size(281, 23);
|
||||
this.ProgressBar.Step = 1;
|
||||
this.ProgressBar.TabIndex = 0;
|
||||
//
|
||||
// FormProgress
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(305, 46);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.ProgressBar);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FormProgress";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Please Wait...";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public System.Windows.Forms.ProgressBar ProgressBar;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LzgFontConv {
|
||||
public partial class FormProgress : Form {
|
||||
public FormProgress() {
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{9659A26F-105A-42AF-83A9-216AC8ADF8E0}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>LzgFontConv</RootNamespace>
|
||||
<AssemblyName>LzgFontConv</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ArduinoFontWriter.cs" />
|
||||
<Compile Include="CharacterDefinitions.cs" />
|
||||
<Compile Include="CharDef.cs" />
|
||||
<Compile Include="ColourPanel.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FontDefinition.cs" />
|
||||
<Compile Include="FontFilenames.cs" />
|
||||
<Compile Include="FontWriter.cs" />
|
||||
<Compile Include="FormMain.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormMain.Designer.cs">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FormProgress.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormProgress.Designer.cs">
|
||||
<DependentUpon>FormProgress.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MemoryEstimator.cs" />
|
||||
<Compile Include="PreviewPanel.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Stm32plusFontWriter.cs" />
|
||||
<Compile Include="XmlUtil.cs" />
|
||||
<EmbeddedResource Include="FormMain.resx">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FormProgress.resx">
|
||||
<DependentUpon>FormProgress.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="app.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="logo.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LzgFontConv", "LzgFontConv.csproj", "{9659A26F-105A-42AF-83A9-216AC8ADF8E0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{9659A26F-105A-42AF-83A9-216AC8ADF8E0}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{9659A26F-105A-42AF-83A9-216AC8ADF8E0}.Debug|x86.Build.0 = Debug|x86
|
||||
{9659A26F-105A-42AF-83A9-216AC8ADF8E0}.Release|x86.ActiveCfg = Release|x86
|
||||
{9659A26F-105A-42AF-83A9-216AC8ADF8E0}.Release|x86.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Binary file not shown.
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// very rough estimate of the memory required for this font
|
||||
/// </summary>
|
||||
|
||||
public class MemoryEstimator {
|
||||
|
||||
/// <summary>
|
||||
/// properties
|
||||
/// </summary>
|
||||
|
||||
public FontDefinition FontDef { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// estimate the size
|
||||
/// </summary>
|
||||
|
||||
public int Estimate(Control refCtrl) {
|
||||
|
||||
char[] chars;
|
||||
CharacterDefinitions charDefs=new CharacterDefinitions();
|
||||
int byteTotal;
|
||||
|
||||
Cursor.Current=Cursors.WaitCursor;
|
||||
|
||||
try {
|
||||
|
||||
// the selected characters need to be sorted
|
||||
|
||||
chars=this.FontDef.Characters.ToCharArray();
|
||||
Array.Sort(chars);
|
||||
this.FontDef.Characters=new string(chars);
|
||||
|
||||
// create the char definitions
|
||||
|
||||
charDefs.ParseCharacters(refCtrl,this.FontDef,this.FontDef.Characters,true);
|
||||
|
||||
// sum up the bytes
|
||||
|
||||
byteTotal=0;
|
||||
foreach(CharDef cd in charDefs.Definitions)
|
||||
byteTotal+=cd.CompressedBytes.Length;
|
||||
|
||||
// add on the fontchar requirements (4 byte struct on the arduino)
|
||||
|
||||
byteTotal+=this.FontDef.Characters.Length*4;
|
||||
return byteTotal;
|
||||
}
|
||||
finally {
|
||||
Cursor.Current=Cursors.Default;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// Preview panel class
|
||||
/// </summary>
|
||||
|
||||
class PreviewPanel : Panel {
|
||||
|
||||
/// <summary>
|
||||
/// properties
|
||||
/// </summary>
|
||||
|
||||
public Color BackgroundColour { get; set; }
|
||||
public Color ForegroundColour { get; set; }
|
||||
public TextRenderingHint RenderingHint { get; set; }
|
||||
public Point Position { get; set; }
|
||||
public FontDefinition FontDef { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// paint it
|
||||
/// </summary>
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e) {
|
||||
|
||||
CharacterDefinitions defs;
|
||||
Point pos;
|
||||
|
||||
e.Graphics.TextRenderingHint=this.RenderingHint;
|
||||
|
||||
try {
|
||||
|
||||
// create bitmaps for this string
|
||||
|
||||
defs=new CharacterDefinitions();
|
||||
defs.ParseCharacters(this,this.FontDef,this.Text,false);
|
||||
|
||||
// blit them into the display
|
||||
|
||||
pos=this.Position;
|
||||
|
||||
foreach(CharDef cd in defs.Definitions) {
|
||||
|
||||
if(cd.Character!=' ')
|
||||
e.Graphics.DrawImage(cd.CharacterBitmap,pos);
|
||||
|
||||
pos.X+=cd.Size.Width+this.FontDef.Spacing;
|
||||
}
|
||||
}
|
||||
catch {
|
||||
using(SolidBrush brush=new SolidBrush(Color.PaleVioletRed))
|
||||
e.Graphics.FillRectangle(brush,ClientRectangle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// paint the background
|
||||
/// </summary>
|
||||
|
||||
protected override void OnPaintBackground(PaintEventArgs e) {
|
||||
using(SolidBrush brush=new SolidBrush(this.BackgroundColour))
|
||||
e.Graphics.FillRectangle(brush,this.ClientRectangle);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LzgFontConv
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new FormMain());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("LzgFontConv")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("LzgFontConv")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("531c5bb3-113f-451d-bc3a-afca9fe3df78")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -0,0 +1,73 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace LzgFontConv.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LzgFontConv.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap logo {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("logo", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="logo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.17929
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace LzgFontConv.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -0,0 +1,117 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// specialisations for writing stm32plus font files
|
||||
/// </summary>
|
||||
|
||||
public class Stm32plusFontWriter : FontWriter {
|
||||
|
||||
/// <summary>
|
||||
/// write the header start
|
||||
/// </summary>
|
||||
|
||||
protected override void WriteHeaderStart(TextWriter writer) {
|
||||
|
||||
writer.Write("#pragma once\n\n");
|
||||
writer.Write("#include \"display/graphic/Font.h\"\n\n");
|
||||
writer.Write("namespace stm32plus { namespace display {\n\n");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the header end
|
||||
/// </summary>
|
||||
|
||||
protected override void WriteHeaderEnd(TextWriter writer) {
|
||||
writer.Write("} }\n");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the source start
|
||||
/// </summary>
|
||||
|
||||
protected override void WriteSourceStart(TextWriter writer) {
|
||||
|
||||
writer.Write("#include \"config/stm32plus.h\"\n");
|
||||
writer.Write("#include \"config/display/font.h\"\n\n");
|
||||
writer.Write("namespace stm32plus { namespace display {\n\n");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write the source end
|
||||
/// </summary>
|
||||
|
||||
protected override void WriteSourceEnd(TextWriter writer) {
|
||||
writer.Write("} }\n");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Write the source body
|
||||
/// </summary>
|
||||
|
||||
protected override void WriteSourceBody(TextWriter writer) {
|
||||
|
||||
bool first;
|
||||
|
||||
writer.Write(" // byte definitions for "+GetFontNameAndSize()+"\n\n");
|
||||
|
||||
foreach(CharDef cd in _charDefs.Definitions) {
|
||||
|
||||
// don't write empty arrays (space character)
|
||||
|
||||
if(cd.CompressedBytes==null || cd.CompressedBytes.Length==0)
|
||||
continue;
|
||||
|
||||
// opening declaration
|
||||
|
||||
writer.Write(" const uint8_t "+GetCharacterName(cd.Character)+"[]={ ");
|
||||
|
||||
// bytes
|
||||
|
||||
first=true;
|
||||
foreach(byte b in cd.CompressedBytes) {
|
||||
|
||||
if(first)
|
||||
first=false;
|
||||
else
|
||||
writer.Write(",");
|
||||
|
||||
writer.Write(b.ToString());
|
||||
}
|
||||
|
||||
// closing declaration
|
||||
|
||||
writer.Write("};\n");
|
||||
}
|
||||
|
||||
writer.Write("\n // character definitions for "+GetFontNameAndSize()+"\n\n");
|
||||
writer.Write(" extern const struct FontChar FDEF_"+GetFontName()+"_CHAR[]={\n");
|
||||
|
||||
foreach(CharDef cd in _charDefs.Definitions) {
|
||||
|
||||
writer.Write(" { ");
|
||||
|
||||
writer.Write(Convert.ToUInt16(cd.Character).ToString()+",");
|
||||
writer.Write(cd.Size.Width+",");
|
||||
writer.Write((cd.Character==' ' ? "NULL" : GetCharacterName(cd.Character))+" },\n");
|
||||
}
|
||||
|
||||
writer.Write(" };\n\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,225 @@
|
||||
/*
|
||||
* This file is shared between the open source stm32plus and
|
||||
* Arduino XMEM graphics libraries.
|
||||
*
|
||||
* Copyright (c) 2011,2012 Andy Brown <www.andybrown.me.uk>
|
||||
* Please see website for licensing terms.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Xml;
|
||||
|
||||
namespace LzgFontConv {
|
||||
|
||||
/// <summary>
|
||||
/// XML utils
|
||||
/// </summary>
|
||||
|
||||
public class XmlUtil
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// write a color
|
||||
/// </summary>
|
||||
|
||||
public static void AppendColor(XmlElement parent,string childName,Color cr) {
|
||||
AppendString(parent,
|
||||
childName,
|
||||
cr.R.ToString("X2")+cr.G.ToString("X2")+cr.B.ToString("X2"));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write a Size
|
||||
/// </summary>
|
||||
|
||||
public static void AppendSize(XmlElement parent,string childName,Size size) {
|
||||
|
||||
XmlElement child;
|
||||
|
||||
child=parent.OwnerDocument.CreateElement(childName);
|
||||
|
||||
child.SetAttribute("width",size.Width.ToString());
|
||||
child.SetAttribute("height",size.Height.ToString());
|
||||
|
||||
parent.AppendChild(child);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// write a Point
|
||||
/// </summary>
|
||||
|
||||
public static void AppendPoint(XmlElement parent,string childName,Point p) {
|
||||
|
||||
XmlElement child;
|
||||
|
||||
child=parent.OwnerDocument.CreateElement(childName);
|
||||
|
||||
child.SetAttribute("x",p.X.ToString());
|
||||
child.SetAttribute("y",p.Y.ToString());
|
||||
|
||||
parent.AppendChild(child);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* append XML child
|
||||
*/
|
||||
|
||||
public static void AppendString(XmlElement parent,string childName,string value) {
|
||||
XmlElement child;
|
||||
XmlText text;
|
||||
|
||||
if(value==null)
|
||||
return;
|
||||
|
||||
child=parent.OwnerDocument.CreateElement(childName);
|
||||
text=parent.OwnerDocument.CreateTextNode(value);
|
||||
|
||||
parent.AppendChild(child);
|
||||
child.AppendChild(text);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* append boolean
|
||||
*/
|
||||
|
||||
public static void AppendBool(XmlElement parent,string childName,bool value) {
|
||||
AppendString(parent,childName,value ? "true" : "false");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* append XML child CDATA
|
||||
*/
|
||||
|
||||
public static void AppendCdata(XmlElement parent,string childName,string value) {
|
||||
XmlElement child;
|
||||
XmlCDataSection text;
|
||||
|
||||
child=parent.OwnerDocument.CreateElement(childName);
|
||||
text=parent.OwnerDocument.CreateCDataSection(value);
|
||||
|
||||
parent.AppendChild(child);
|
||||
child.AppendChild(text);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* append int
|
||||
*/
|
||||
|
||||
public static void AppendInt(XmlElement parent,string childName,int value) {
|
||||
AppendString(parent,childName,value.ToString());
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* get string
|
||||
*/
|
||||
|
||||
public static string GetString(XmlNode parent,string xpath,string defaultValue,bool required) {
|
||||
string str;
|
||||
|
||||
try
|
||||
{
|
||||
str=parent.SelectSingleNode(xpath).FirstChild.InnerText;
|
||||
return str;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
if(required)
|
||||
throw new Exception("XML value: "+defaultValue+" is required but is not present in this document");
|
||||
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* get an integer
|
||||
*/
|
||||
|
||||
public static Int32 GetInt(XmlElement parent,string xpath,Int32 defaultValue,bool required) {
|
||||
string str;
|
||||
|
||||
if((str=GetString(parent,xpath,null,required))==null)
|
||||
return defaultValue;
|
||||
|
||||
return Int32.Parse(str);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* get a boolean
|
||||
*/
|
||||
|
||||
public static bool GetBool(XmlElement parent,string xpath,bool defaultValue,bool required) {
|
||||
string str;
|
||||
|
||||
if((str=GetString(parent,xpath,null,required))==null)
|
||||
return defaultValue;
|
||||
|
||||
return str.Equals("true");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get a color
|
||||
/// </summary>
|
||||
|
||||
public static Color GetColor(XmlElement parent,string xpath) {
|
||||
|
||||
string str;
|
||||
|
||||
str=GetString(parent,xpath,null,true);
|
||||
|
||||
return Color.FromArgb(
|
||||
0xff,
|
||||
byte.Parse(str.Substring(0,2),NumberStyles.HexNumber),
|
||||
byte.Parse(str.Substring(2,2),NumberStyles.HexNumber),
|
||||
byte.Parse(str.Substring(4,2),NumberStyles.HexNumber)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get a size
|
||||
/// </summary>
|
||||
|
||||
public static Size GetSize(XmlElement parent,string xpath) {
|
||||
|
||||
XmlNode node;
|
||||
|
||||
if((node=parent.SelectSingleNode(xpath))==null)
|
||||
throw new Exception(xpath+" not found in document");
|
||||
|
||||
return new Size(
|
||||
int.Parse(node.Attributes["width"].Value),
|
||||
int.Parse(node.Attributes["height"].Value)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get a point
|
||||
/// </summary>
|
||||
|
||||
public static Point GetPoint(XmlElement parent,string xpath) {
|
||||
|
||||
XmlNode node;
|
||||
|
||||
if((node=parent.SelectSingleNode(xpath))==null)
|
||||
throw new Exception(xpath+" not found in document");
|
||||
|
||||
return new Point(
|
||||
int.Parse(node.Attributes["x"].Value),
|
||||
int.Parse(node.Attributes["y"].Value)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,147 @@
|
||||
#pragma once
|
||||
|
||||
#include "Font.h"
|
||||
|
||||
namespace stm32plus { namespace display {
|
||||
|
||||
// byte definitions for FDEF_APPLE
|
||||
|
||||
const uint8_t FDEF_APPLE48_BYTES[]={ 28,34,50,42,38,34,28,0,};
|
||||
const uint8_t FDEF_APPLE49_BYTES[]={ 8,12,8,8,8,8,28,0,};
|
||||
const uint8_t FDEF_APPLE50_BYTES[]={ 28,34,32,24,4,2,62,0,};
|
||||
const uint8_t FDEF_APPLE51_BYTES[]={ 62,32,16,24,32,34,28,0,};
|
||||
const uint8_t FDEF_APPLE52_BYTES[]={ 16,24,20,18,62,16,16,0,};
|
||||
const uint8_t FDEF_APPLE53_BYTES[]={ 62,2,30,32,32,34,28,0,};
|
||||
const uint8_t FDEF_APPLE54_BYTES[]={ 56,4,2,30,34,34,28,0,};
|
||||
const uint8_t FDEF_APPLE55_BYTES[]={ 62,32,16,8,4,4,4,0,};
|
||||
const uint8_t FDEF_APPLE56_BYTES[]={ 28,34,34,28,34,34,28,0,};
|
||||
const uint8_t FDEF_APPLE57_BYTES[]={ 28,34,34,60,32,16,14,0,};
|
||||
const uint8_t FDEF_APPLE65_BYTES[]={ 8,20,34,34,62,34,34,0,};
|
||||
const uint8_t FDEF_APPLE66_BYTES[]={ 30,34,34,30,34,34,30,0,};
|
||||
const uint8_t FDEF_APPLE67_BYTES[]={ 28,34,2,2,2,34,28,0,};
|
||||
const uint8_t FDEF_APPLE68_BYTES[]={ 30,34,34,34,34,34,30,0,};
|
||||
const uint8_t FDEF_APPLE69_BYTES[]={ 62,2,2,30,2,2,62,0,};
|
||||
const uint8_t FDEF_APPLE70_BYTES[]={ 62,2,2,30,2,2,2,0,};
|
||||
const uint8_t FDEF_APPLE71_BYTES[]={ 60,2,2,2,50,34,60,0,};
|
||||
const uint8_t FDEF_APPLE72_BYTES[]={ 34,34,34,62,34,34,34,0,};
|
||||
const uint8_t FDEF_APPLE73_BYTES[]={ 28,8,8,8,8,8,28,0,};
|
||||
const uint8_t FDEF_APPLE74_BYTES[]={ 32,32,32,32,32,34,28,0,};
|
||||
const uint8_t FDEF_APPLE75_BYTES[]={ 34,18,10,6,10,18,34,0,};
|
||||
const uint8_t FDEF_APPLE76_BYTES[]={ 2,2,2,2,2,2,62,0,};
|
||||
const uint8_t FDEF_APPLE77_BYTES[]={ 34,54,42,42,34,34,34,0,};
|
||||
const uint8_t FDEF_APPLE78_BYTES[]={ 34,34,38,42,50,34,34,0,};
|
||||
const uint8_t FDEF_APPLE79_BYTES[]={ 28,34,34,34,34,34,28,0,};
|
||||
const uint8_t FDEF_APPLE80_BYTES[]={ 30,34,34,30,2,2,2,0,};
|
||||
const uint8_t FDEF_APPLE81_BYTES[]={ 28,34,34,34,42,18,44,0,};
|
||||
const uint8_t FDEF_APPLE82_BYTES[]={ 30,34,34,30,10,18,34,0,};
|
||||
const uint8_t FDEF_APPLE83_BYTES[]={ 28,34,2,28,32,34,28,0,};
|
||||
const uint8_t FDEF_APPLE84_BYTES[]={ 62,8,8,8,8,8,8,0,};
|
||||
const uint8_t FDEF_APPLE85_BYTES[]={ 34,34,34,34,34,34,28,0,};
|
||||
const uint8_t FDEF_APPLE86_BYTES[]={ 34,34,34,34,34,20,8,0,};
|
||||
const uint8_t FDEF_APPLE87_BYTES[]={ 34,34,34,42,42,54,34,0,};
|
||||
const uint8_t FDEF_APPLE88_BYTES[]={ 34,34,20,8,20,34,34,0,};
|
||||
const uint8_t FDEF_APPLE89_BYTES[]={ 34,34,20,8,8,8,8,0,};
|
||||
const uint8_t FDEF_APPLE90_BYTES[]={ 62,32,16,8,4,2,62,0,};
|
||||
const uint8_t FDEF_APPLE97_BYTES[]={ 0,0,28,32,60,34,60,0,};
|
||||
const uint8_t FDEF_APPLE98_BYTES[]={ 2,2,30,34,34,34,30,0,};
|
||||
const uint8_t FDEF_APPLE99_BYTES[]={ 0,0,60,2,2,2,60,0,};
|
||||
const uint8_t FDEF_APPLE100_BYTES[]={ 32,32,60,34,34,34,60,0,};
|
||||
const uint8_t FDEF_APPLE101_BYTES[]={ 0,0,28,34,62,2,60,0,};
|
||||
const uint8_t FDEF_APPLE102_BYTES[]={ 24,36,4,30,4,4,4,0,};
|
||||
const uint8_t FDEF_APPLE103_BYTES[]={ 0,0,28,34,34,60,32,28,};
|
||||
const uint8_t FDEF_APPLE104_BYTES[]={ 2,2,30,34,34,34,34,0,};
|
||||
const uint8_t FDEF_APPLE105_BYTES[]={ 8,0,12,8,8,8,28,0,};
|
||||
const uint8_t FDEF_APPLE106_BYTES[]={ 16,0,24,16,16,16,18,12,};
|
||||
const uint8_t FDEF_APPLE107_BYTES[]={ 2,2,34,18,14,18,34,0,};
|
||||
const uint8_t FDEF_APPLE108_BYTES[]={ 12,8,8,8,8,8,28,0,};
|
||||
const uint8_t FDEF_APPLE109_BYTES[]={ 0,0,54,42,42,42,34,0,};
|
||||
const uint8_t FDEF_APPLE110_BYTES[]={ 0,0,30,34,34,34,34,0,};
|
||||
const uint8_t FDEF_APPLE111_BYTES[]={ 0,0,28,34,34,34,28,0,};
|
||||
const uint8_t FDEF_APPLE112_BYTES[]={ 0,0,30,34,34,34,30,2,};
|
||||
const uint8_t FDEF_APPLE113_BYTES[]={ 0,0,60,34,34,34,60,32,};
|
||||
const uint8_t FDEF_APPLE114_BYTES[]={ 0,0,58,6,2,2,2,0,};
|
||||
const uint8_t FDEF_APPLE115_BYTES[]={ 0,0,60,2,28,32,30,0,};
|
||||
const uint8_t FDEF_APPLE116_BYTES[]={ 8,8,60,8,8,72,48,0,};
|
||||
const uint8_t FDEF_APPLE117_BYTES[]={ 0,0,34,34,34,50,44,0,};
|
||||
const uint8_t FDEF_APPLE118_BYTES[]={ 0,0,34,34,34,20,8,0,};
|
||||
const uint8_t FDEF_APPLE119_BYTES[]={ 0,0,34,34,42,42,54,0,};
|
||||
const uint8_t FDEF_APPLE120_BYTES[]={ 0,0,34,20,8,20,34,0,};
|
||||
const uint8_t FDEF_APPLE121_BYTES[]={ 0,0,34,34,34,60,32,28,};
|
||||
const uint8_t FDEF_APPLE122_BYTES[]={ 0,0,62,16,8,4,62,0,};
|
||||
|
||||
// character definitions for FDEF_APPLE
|
||||
|
||||
const struct FontChar FDEF_APPLE_CHAR[]={
|
||||
{ 48,8,FDEF_APPLE48_BYTES },
|
||||
{ 49,8,FDEF_APPLE49_BYTES },
|
||||
{ 50,8,FDEF_APPLE50_BYTES },
|
||||
{ 51,8,FDEF_APPLE51_BYTES },
|
||||
{ 52,8,FDEF_APPLE52_BYTES },
|
||||
{ 53,8,FDEF_APPLE53_BYTES },
|
||||
{ 54,8,FDEF_APPLE54_BYTES },
|
||||
{ 55,8,FDEF_APPLE55_BYTES },
|
||||
{ 56,8,FDEF_APPLE56_BYTES },
|
||||
{ 57,8,FDEF_APPLE57_BYTES },
|
||||
{ 65,8,FDEF_APPLE65_BYTES },
|
||||
{ 66,8,FDEF_APPLE66_BYTES },
|
||||
{ 67,8,FDEF_APPLE67_BYTES },
|
||||
{ 68,8,FDEF_APPLE68_BYTES },
|
||||
{ 69,8,FDEF_APPLE69_BYTES },
|
||||
{ 70,8,FDEF_APPLE70_BYTES },
|
||||
{ 71,8,FDEF_APPLE71_BYTES },
|
||||
{ 72,8,FDEF_APPLE72_BYTES },
|
||||
{ 73,8,FDEF_APPLE73_BYTES },
|
||||
{ 74,8,FDEF_APPLE74_BYTES },
|
||||
{ 75,8,FDEF_APPLE75_BYTES },
|
||||
{ 76,8,FDEF_APPLE76_BYTES },
|
||||
{ 77,8,FDEF_APPLE77_BYTES },
|
||||
{ 78,8,FDEF_APPLE78_BYTES },
|
||||
{ 79,8,FDEF_APPLE79_BYTES },
|
||||
{ 80,8,FDEF_APPLE80_BYTES },
|
||||
{ 81,8,FDEF_APPLE81_BYTES },
|
||||
{ 82,8,FDEF_APPLE82_BYTES },
|
||||
{ 83,8,FDEF_APPLE83_BYTES },
|
||||
{ 84,8,FDEF_APPLE84_BYTES },
|
||||
{ 85,8,FDEF_APPLE85_BYTES },
|
||||
{ 86,8,FDEF_APPLE86_BYTES },
|
||||
{ 87,8,FDEF_APPLE87_BYTES },
|
||||
{ 88,8,FDEF_APPLE88_BYTES },
|
||||
{ 89,8,FDEF_APPLE89_BYTES },
|
||||
{ 90,8,FDEF_APPLE90_BYTES },
|
||||
{ 97,8,FDEF_APPLE97_BYTES },
|
||||
{ 98,8,FDEF_APPLE98_BYTES },
|
||||
{ 99,8,FDEF_APPLE99_BYTES },
|
||||
{ 100,8,FDEF_APPLE100_BYTES },
|
||||
{ 101,8,FDEF_APPLE101_BYTES },
|
||||
{ 102,8,FDEF_APPLE102_BYTES },
|
||||
{ 103,8,FDEF_APPLE103_BYTES },
|
||||
{ 104,8,FDEF_APPLE104_BYTES },
|
||||
{ 105,8,FDEF_APPLE105_BYTES },
|
||||
{ 106,8,FDEF_APPLE106_BYTES },
|
||||
{ 107,8,FDEF_APPLE107_BYTES },
|
||||
{ 108,8,FDEF_APPLE108_BYTES },
|
||||
{ 109,8,FDEF_APPLE109_BYTES },
|
||||
{ 110,8,FDEF_APPLE110_BYTES },
|
||||
{ 111,8,FDEF_APPLE111_BYTES },
|
||||
{ 112,8,FDEF_APPLE112_BYTES },
|
||||
{ 113,8,FDEF_APPLE113_BYTES },
|
||||
{ 114,8,FDEF_APPLE114_BYTES },
|
||||
{ 115,8,FDEF_APPLE115_BYTES },
|
||||
{ 116,8,FDEF_APPLE116_BYTES },
|
||||
{ 117,8,FDEF_APPLE117_BYTES },
|
||||
{ 118,8,FDEF_APPLE118_BYTES },
|
||||
{ 119,8,FDEF_APPLE119_BYTES },
|
||||
{ 120,8,FDEF_APPLE120_BYTES },
|
||||
{ 121,8,FDEF_APPLE121_BYTES },
|
||||
{ 122,8,FDEF_APPLE122_BYTES },
|
||||
};
|
||||
|
||||
// helper so the user can just do 'new fontname' without having to know the parameters
|
||||
|
||||
class Font_APPLE8 : public Font {
|
||||
public:
|
||||
Font_APPLE8()
|
||||
: Font(48,62,8,0,FDEF_APPLE_CHAR) {
|
||||
}
|
||||
};
|
||||
} }
|
||||
Binary file not shown.
@@ -0,0 +1,72 @@
|
||||
<FontConv>
|
||||
<Filename>C:\Users\Andy\source\stm32plus\utils\fonts\apple\Apple.ttf</Filename>
|
||||
<Size>8</Size>
|
||||
<XOffset>0</XOffset>
|
||||
<YOffset>0</YOffset>
|
||||
<ExtraLines>0</ExtraLines>
|
||||
<CharSpace>0</CharSpace>
|
||||
<Chars>
|
||||
<Char>48</Char>
|
||||
<Char>49</Char>
|
||||
<Char>50</Char>
|
||||
<Char>51</Char>
|
||||
<Char>52</Char>
|
||||
<Char>53</Char>
|
||||
<Char>54</Char>
|
||||
<Char>55</Char>
|
||||
<Char>56</Char>
|
||||
<Char>57</Char>
|
||||
<Char>65</Char>
|
||||
<Char>66</Char>
|
||||
<Char>67</Char>
|
||||
<Char>68</Char>
|
||||
<Char>69</Char>
|
||||
<Char>70</Char>
|
||||
<Char>71</Char>
|
||||
<Char>72</Char>
|
||||
<Char>73</Char>
|
||||
<Char>74</Char>
|
||||
<Char>75</Char>
|
||||
<Char>76</Char>
|
||||
<Char>77</Char>
|
||||
<Char>78</Char>
|
||||
<Char>79</Char>
|
||||
<Char>80</Char>
|
||||
<Char>81</Char>
|
||||
<Char>82</Char>
|
||||
<Char>83</Char>
|
||||
<Char>84</Char>
|
||||
<Char>85</Char>
|
||||
<Char>86</Char>
|
||||
<Char>87</Char>
|
||||
<Char>88</Char>
|
||||
<Char>89</Char>
|
||||
<Char>90</Char>
|
||||
<Char>97</Char>
|
||||
<Char>98</Char>
|
||||
<Char>99</Char>
|
||||
<Char>100</Char>
|
||||
<Char>101</Char>
|
||||
<Char>102</Char>
|
||||
<Char>103</Char>
|
||||
<Char>104</Char>
|
||||
<Char>105</Char>
|
||||
<Char>106</Char>
|
||||
<Char>107</Char>
|
||||
<Char>108</Char>
|
||||
<Char>109</Char>
|
||||
<Char>110</Char>
|
||||
<Char>111</Char>
|
||||
<Char>112</Char>
|
||||
<Char>113</Char>
|
||||
<Char>114</Char>
|
||||
<Char>115</Char>
|
||||
<Char>116</Char>
|
||||
<Char>117</Char>
|
||||
<Char>118</Char>
|
||||
<Char>119</Char>
|
||||
<Char>120</Char>
|
||||
<Char>121</Char>
|
||||
<Char>122</Char>
|
||||
</Chars>
|
||||
</FontConv>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user