WIP: working on text formats
This commit is contained in:
@@ -81,6 +81,9 @@ namespace McBitFont {
|
||||
bool hdr = cbHeader.Checked;
|
||||
int lines = cbLines.SelectedIndex;
|
||||
int format = cbFormat.SelectedIndex;
|
||||
bool mono = mainForm.monospaced;
|
||||
|
||||
int imin, jmin, imax, jmax, idir, jdir;
|
||||
|
||||
if (com) {
|
||||
//Header comments
|
||||
@@ -102,7 +105,7 @@ namespace McBitFont {
|
||||
}
|
||||
}
|
||||
|
||||
int imin, jmin, imax, jmax, idir, jdir;
|
||||
//Figure out mins and maxes
|
||||
if (cbOrder.SelectedIndex == 0) {
|
||||
if (cbHDir.SelectedIndex == 0) {
|
||||
// Columns; Left to right
|
||||
@@ -192,7 +195,19 @@ namespace McBitFont {
|
||||
}
|
||||
|
||||
// Array definition
|
||||
if ( format == 0 || format == 1 ) output += "const " + dataType + " " + mainForm.prjName + "[] = {\n";
|
||||
if ( format == 0 || format == 1 ) output += "const " + dataType + " " + mainForm.prjName + "[]" + (format==1?"[]":"") + " = {\n";
|
||||
|
||||
// Should we add the meta header?
|
||||
if (hdr) {
|
||||
output +=
|
||||
" // Meta header\n" +
|
||||
" " + (mono ? mainForm.frames.First().width.ToString() : "0") + ", // Font width in pixels; 0 - variable width\n" +
|
||||
" " + mainForm.frames.First().height.ToString() + ", // Font height in pixels\n" +
|
||||
" 0, // Font space (between symbols) in pixels\n" +
|
||||
" " + mainForm.frames.First().code.ToString() + ", // First character code\n" +
|
||||
" " + mainForm.frames.Last().code.ToString() + ", // Last character code\n"
|
||||
;
|
||||
}
|
||||
|
||||
// Brackets for 2D array definition
|
||||
string obracket = format == 1 ? "{ " : "";
|
||||
@@ -202,9 +217,9 @@ namespace McBitFont {
|
||||
int numcount = 0;
|
||||
|
||||
if (com) output += " // Data:\n";
|
||||
MainForm.FrameMiniature flast = mainForm.frames.Last();
|
||||
foreach ( MainForm.FrameMiniature f in mainForm.frames) {
|
||||
// For each frame
|
||||
string str;
|
||||
uint b = 0; // current number bits
|
||||
int t, x, y; // t - calculated bit number; x - actual x; y - actual y
|
||||
|
||||
@@ -218,6 +233,49 @@ namespace McBitFont {
|
||||
output += " ";
|
||||
numcount = 0;
|
||||
}
|
||||
if (!mono && mainForm.frames.Count > 1) {
|
||||
// Not a single image; Variable width font - lets post the width as a 1st number
|
||||
|
||||
// Should we post a prefix to the number?
|
||||
pref = (!cbZeroes.Checked && ((f.width < 10 && nbase == 16) || (f.width < 2 && nbase == 2))) ? "" : prefix;
|
||||
output += " " + pref + Convert.ToString(f.width, nbase).PadLeft(pad, '0') + "," + (lines == 1 ? " " : "\n");
|
||||
}
|
||||
|
||||
//Figure out mins and maxes for variable width fonts
|
||||
if (!mono) {
|
||||
if (cbOrder.SelectedIndex == 0) {
|
||||
if (cbHDir.SelectedIndex == 0) {
|
||||
// Columns; Left to right
|
||||
imax = f.width;
|
||||
} else {
|
||||
// Columns; Right to left
|
||||
imin = f.width - 1;
|
||||
}
|
||||
if (cbVDir.SelectedIndex == 0) {
|
||||
// Columns; Top to bottom
|
||||
jmax = f.height;
|
||||
} else {
|
||||
// Columns; Bottom to top
|
||||
jmin = f.height - 1;
|
||||
}
|
||||
} else {
|
||||
if (cbHDir.SelectedIndex == 0) {
|
||||
// Rows; Left to right
|
||||
jmax = f.height;
|
||||
} else {
|
||||
// Rows; Right to left
|
||||
jmin = f.height - 1;
|
||||
}
|
||||
if (cbVDir.SelectedIndex == 0) {
|
||||
// Rows; Top to bottom
|
||||
imax = f.width;
|
||||
} else {
|
||||
// Rows; Bottom to top
|
||||
imin = f.width - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = imin; i != imax; i += idir) {
|
||||
if (lines == 0) {
|
||||
// "Column/Row per line" - new line offset
|
||||
@@ -261,11 +319,12 @@ namespace McBitFont {
|
||||
}
|
||||
if (lines == 0) {
|
||||
// "Column/Row per line" - closing line
|
||||
output += cbracket + (i+idir!=imax ? "," : "") + "\n";
|
||||
output += cbracket + ((i+idir==imax) && f.Equals(flast) ? "" : ",") + "\n";
|
||||
}
|
||||
}
|
||||
if (lines == 1) {
|
||||
// "1 symbol per line" - closing line
|
||||
if (!f.Equals(flast)) output += ",";
|
||||
if (com) {
|
||||
//...with a comment
|
||||
output += " // " + f.code.ToString() + " --> " + mainForm.decodeSymbol(f.code);
|
||||
@@ -286,6 +345,10 @@ namespace McBitFont {
|
||||
MessageBox.Show("Cannot pack the font meta header into 2D array!\nChoose 1D array or disable the meta header.\n(Setting array format to 1D array)", "No header in 2D array!", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
cbFormat.SelectedIndex = 0;
|
||||
}
|
||||
if (!mainForm.monospaced && cbFormat.SelectedIndex == 1) {
|
||||
MessageBox.Show("Cannot pack the variable width font into 2D array!\n(Setting array format to 1D array)", "2D arrays are for monospaced fonts only!", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
cbFormat.SelectedIndex = 0;
|
||||
}
|
||||
if (cbFormat.SelectedIndex == 1) {
|
||||
cbLines.SelectedIndex = 0;
|
||||
cbLines.Enabled = false;
|
||||
|
Reference in New Issue
Block a user