// output configuration to form void loadOutputConfigurationToForm(OutputConfiguration outputConfig) { // set flag m_loadingOutputConfigurationToForm = true; // load combo boxes cbxPaddingHoriz.SelectedIndex = (int)outputConfig.paddingRemovalHorizontal; cbxPaddingVert.SelectedIndex = (int)outputConfig.paddingRemovalVertical; cbxCommentStyle.SelectedIndex = (int)outputConfig.commentStyle; cbxBitLayout.SelectedIndex = (int)outputConfig.bitLayout; cbxByteOrder.SelectedIndex = (int)outputConfig.byteOrder; cbxByteFormat.SelectedIndex = (int)outputConfig.byteFormat; cbxRotation.SelectedIndex = (int)outputConfig.rotation; cbxCharWidthFormat.SelectedIndex = (int)outputConfig.descCharWidth; cbxCharHeightFormat.SelectedIndex = (int)outputConfig.descCharHeight; cbxFontHeightFormat.SelectedIndex = (int)outputConfig.descFontHeight; cbxImgWidthFormat.SelectedIndex = (int)outputConfig.descImgWidth; cbxImgHeightFormat.SelectedIndex = (int)outputConfig.descImgHeight; // text boxes cbxByteLeadingChar.Text = outputConfig.byteLeadingString; txtSpacePixels.Text = outputConfig.spaceGenerationPixels.ToString(); txtLookupBlocksNewAfterCharCount.Text = outputConfig.lookupBlocksNewAfterCharCount.ToString(); cbxOutputConfigurations.Text = outputConfig.displayName; txtVarNfBitmaps.Text = outputConfig.varNfBitmaps; txtVarNfCharInfo.Text = outputConfig.varNfCharInfo; txtVarNfFontInfo.Text = outputConfig.varNfFontInfo; txtVarNfWidth.Text = outputConfig.varNfWidth; txtVarNfHeight.Text = outputConfig.varNfHeight; // load check boxes cbxFlipHoriz.Checked = outputConfig.flipHorizontal; cbxFlipVert.Checked = outputConfig.flipVertical; cbxCommentVarName.Checked = outputConfig.commentVariableName; cbxCommentCharVisual.Checked = outputConfig.commentCharVisualizer; cbxCommentCharDesc.Checked = outputConfig.commentCharDescriptor; cbxGenerateSpaceBitmap.Checked = outputConfig.generateSpaceCharacterBitmap; cbxGenerateLookupArray.Checked = outputConfig.generateLookupArray; txtBmpVisualizerChar.Text = outputConfig.bmpVisualizerChar; cbxGenerateLookupBlocks.Checked = outputConfig.generateLookupBlocks; cbx16Bit.Checked = outputConfig.bit16; // radio buttons // -- wrap rbnLineWrapAtColumn.Checked = (outputConfig.lineWrap == OutputConfiguration.LineWrap.AtColumn); rbnLineWrapAtBitmap.Checked = !rbnLineWrapAtColumn.Checked; // clear flag m_loadingOutputConfigurationToForm = false; }
// output configuration to form void loadFormToOutputConfiguration(ref OutputConfiguration outputConfig) { // load combo boxes outputConfig.paddingRemovalHorizontal = (OutputConfiguration.PaddingRemoval)Enum.Parse(typeof(OutputConfiguration.PaddingRemoval), cbxPaddingHoriz.Text); outputConfig.paddingRemovalVertical = (OutputConfiguration.PaddingRemoval)Enum.Parse(typeof(OutputConfiguration.PaddingRemoval), cbxPaddingVert.Text); outputConfig.commentStyle = (OutputConfiguration.CommentStyle)Enum.Parse(typeof(OutputConfiguration.CommentStyle), cbxCommentStyle.Text); outputConfig.bitLayout = (OutputConfiguration.BitLayout)Enum.Parse(typeof(OutputConfiguration.BitLayout), cbxBitLayout.Text); outputConfig.byteOrder = (OutputConfiguration.ByteOrder)Enum.Parse(typeof(OutputConfiguration.ByteOrder), cbxByteOrder.Text); outputConfig.byteFormat = (OutputConfiguration.ByteFormat)Enum.Parse(typeof(OutputConfiguration.ByteFormat), cbxByteFormat.Text); outputConfig.rotation = (OutputConfiguration.Rotation)Array.IndexOf(OutputConfiguration.RotationDisplayString, cbxRotation.Text); outputConfig.descCharWidth = (OutputConfiguration.DescriptorFormat)Array.IndexOf(OutputConfiguration.DescriptorFormatDisplayString, cbxCharWidthFormat.Text); outputConfig.descCharHeight = (OutputConfiguration.DescriptorFormat)Array.IndexOf(OutputConfiguration.DescriptorFormatDisplayString, cbxCharHeightFormat.Text); outputConfig.descFontHeight = (OutputConfiguration.DescriptorFormat)Array.IndexOf(OutputConfiguration.DescriptorFormatDisplayString, cbxFontHeightFormat.Text); outputConfig.descImgWidth = (OutputConfiguration.DescriptorFormat)Array.IndexOf(OutputConfiguration.DescriptorFormatDisplayString, cbxImgWidthFormat.Text); outputConfig.descImgHeight = (OutputConfiguration.DescriptorFormat)Array.IndexOf(OutputConfiguration.DescriptorFormatDisplayString, cbxImgHeightFormat.Text); // text boxes outputConfig.byteLeadingString = cbxByteLeadingChar.Text; outputConfig.spaceGenerationPixels = (int)System.Convert.ToInt32(txtSpacePixels.Text, 10); outputConfig.lookupBlocksNewAfterCharCount = System.Convert.ToInt32(txtLookupBlocksNewAfterCharCount.Text, 10); outputConfig.varNfBitmaps = txtVarNfBitmaps.Text; outputConfig.varNfCharInfo = txtVarNfCharInfo.Text; outputConfig.varNfFontInfo = txtVarNfFontInfo.Text; outputConfig.varNfWidth = txtVarNfWidth.Text; outputConfig.varNfHeight = txtVarNfHeight.Text; // load check boxes outputConfig.flipHorizontal = cbxFlipHoriz.Checked; outputConfig.flipVertical = cbxFlipVert.Checked; outputConfig.commentVariableName = cbxCommentVarName.Checked; outputConfig.commentCharVisualizer = cbxCommentCharVisual.Checked; outputConfig.commentCharDescriptor = cbxCommentCharDesc.Checked; outputConfig.generateSpaceCharacterBitmap = cbxGenerateSpaceBitmap.Checked; outputConfig.generateLookupArray = cbxGenerateLookupArray.Checked; outputConfig.bmpVisualizerChar = txtBmpVisualizerChar.Text; outputConfig.generateLookupBlocks = cbxGenerateLookupBlocks.Checked; outputConfig.generateProgmemMacros = cbxGenerateProgmemMacros.Checked; outputConfig.generateStructures = cbxGenerateStructures.Checked; // radio buttons // -- wrap if (rbnLineWrapAtColumn.Checked) { outputConfig.lineWrap = OutputConfiguration.LineWrap.AtColumn; } else { outputConfig.lineWrap = OutputConfiguration.LineWrap.AtBitmap; } }
private void cbxOutputConfigurations_SelectedIndexChanged(object sender, EventArgs e) { // check that we haven't reverted to no selection if (cbxOutputConfigurations.SelectedIndex != -1) { // get the configuration OutputConfiguration oc = m_outputConfigurationManager.configurationGetAtIndex(cbxOutputConfigurations.SelectedIndex); // copy the object from the repository to the working copy m_outputConfigurationManager.workingOutputConfiguration = oc.clone(); // load to form loadOutputConfigurationToForm(m_outputConfigurationManager.workingOutputConfiguration); } }
private void cbxOutputConfiguration_SelectedIndexChanged(object sender, EventArgs e) { // check if any configuration selected if (cbxOutputConfiguration.SelectedIndex != -1) { // get the configuration m_outputConfig = m_outputConfigurationManager.configurationGetAtIndex(cbxOutputConfiguration.SelectedIndex); } // save selected index for next time Properties.Settings.Default.OutputConfigIndex = cbxOutputConfiguration.SelectedIndex; // save Properties.Settings.Default.Save(); }
// populate an output configuration public int getOutputConfiguration(int displayedOutputConfigurationIndex) { // load no preset cbxOutputConfigurations.SelectedIndex = -1; // can never be modifying preset when just displayed modifyingPresetConfigurationExit(); // check if we need to display an OC if (displayedOutputConfigurationIndex != -1) { // get the configuration OutputConfiguration oc = m_outputConfigurationManager.configurationGetAtIndex(displayedOutputConfigurationIndex); // copy the object from the repository to the working copy m_outputConfigurationManager.workingOutputConfiguration = oc.clone(); } else { // clear out display name so that when this is loaded into cbx it doesn't // select a preset m_outputConfigurationManager.workingOutputConfiguration.displayName = ""; } // set index in cbx cbxOutputConfigurations.SelectedIndex = displayedOutputConfigurationIndex; // load the configuration of the working output configuration loadOutputConfigurationToForm(m_outputConfigurationManager.workingOutputConfiguration); // show self ShowDialog(); // load current state of form to working output configuration loadFormToOutputConfiguration(ref m_outputConfigurationManager.workingOutputConfiguration); // are we in modifying state? if (!m_presetConfigurationModified) { // nope, simply return the preset index return(cbxOutputConfigurations.SelectedIndex); } else { // user modified a preset and didn't save - switch back to no preset return(-1); } }
private void Form1_Load(object sender, EventArgs e) { // use double buffering DoubleBuffered = true; // set version Text = String.Format("The Dot Factory v.{0}", Application.ProductVersion); // set input box txtInputText.Text = Properties.Settings.Default.InputText; // load font fontDlgInputFont.Font = Properties.Settings.Default.InputFont; // load configurations from file m_outputConfigurationManager.loadFromFile("OutputConfigs.xml"); // update the dropdown m_outputConfigurationManager.comboBoxPopulate(cbxOutputConfiguration); // get saved output config index int lastUsedOutputConfigurationIndex = Properties.Settings.Default.OutputConfigIndex; // load recently used preset if (lastUsedOutputConfigurationIndex >= 0 && lastUsedOutputConfigurationIndex < cbxOutputConfiguration.Items.Count) { // last used cbxOutputConfiguration.SelectedIndex = lastUsedOutputConfigurationIndex; // load selected configuration m_outputConfig = m_outputConfigurationManager.configurationGetAtIndex(lastUsedOutputConfigurationIndex); } else { // there's no saved configuration. get the working copy (default) m_outputConfig = m_outputConfigurationManager.workingOutputConfiguration; } // set checkbox stuff populateTextInsertCheckbox(); populateComboBoxInputImageCodepage(); // apply font to all appropriate places updateSelectedFont(Properties.Settings.Default.InputFont); }
private void btnUpdateConfig_Click(object sender, EventArgs e) { // no focus gbxPadding.Focus(); // exit modifying modifyingPresetConfigurationExit(); // get the configuration reference at index OutputConfiguration updatedOutputConfiguration = m_outputConfigurationManager.configurationGetAtIndex(cbxOutputConfigurations.SelectedIndex); // load current form to the configuration loadFormToOutputConfiguration(ref updatedOutputConfiguration); // re-save m_outputConfigurationManager.saveToFile("OutputConfigs.xml"); }
private void btnSaveNewConfig_Click(object sender, EventArgs e) { // no focus gbxPadding.Focus(); // exit modifying modifyingPresetConfigurationExit(); // get name of new configuration InputBoxDialog ib = new InputBoxDialog(); ib.FormPrompt = "Enter preset name"; ib.FormCaption = "New preset configuration"; ib.DefaultValue = ""; // show the dialog if (ib.ShowDialog() == DialogResult.OK) { // close dialog ib.Close(); // create a new output configuration OutputConfiguration oc = new OutputConfiguration(); // load current form to config loadFormToOutputConfiguration(ref oc); // set display name oc.displayName = ib.InputResponse; // save new configuration to end of list m_outputConfigurationManager.configurationAdd(ref oc); // re-populate dropdown m_outputConfigurationManager.comboboxPopulate(cbxOutputConfigurations); // set selected index cbxOutputConfigurations.SelectedIndex = cbxOutputConfigurations.Items.Count - 1; // re-save m_outputConfigurationManager.saveToFile("OutputConfigs.xml"); } }
// generate the required output for text private static void generateOutputForFont(OutputConfiguration outConfig, Font font, string inputText, StringBuilder textSource, StringBuilder textHeader) { char[] charactersToGenerate; // get the characters we need to generate from the input text, removing duplicates charactersToGenerate = getCharactersToGenerate(inputText, outConfig.CodePage, outConfig.generateSpaceCharacterBitmap); // do nothing if no chars defined if (charactersToGenerate.Length == 0) { textSource.Clear().Append("No Characters to generate"); textHeader.Clear(); return; } FontDescriptor fontInfo = new FontDescriptor(outConfig, charactersToGenerate, font); textSource.Append(fontInfo.TextSource); textHeader.Append(fontInfo.TextHeader); }
private void btnOutputConfig_Click(object sender, EventArgs e) { // no focus label1.Focus(); // get it OutputConfigurationForm outputConfigForm = new OutputConfigurationForm(ref m_outputConfigurationManager); // get the oc int selectedConfigurationIndex = outputConfigForm.getOutputConfiguration(cbxOutputConfiguration.SelectedIndex); // update the dropdown m_outputConfigurationManager.comboBoxPopulate(cbxOutputConfiguration); // get working configuration m_outputConfig = m_outputConfigurationManager.workingOutputConfiguration; // set selected index cbxOutputConfiguration.SelectedIndex = selectedConfigurationIndex; }
public FontDescriptor(OutputConfiguration config, char[] characters, Font font) { Font = font; OutConfig = config; CodePageInfo = new CodePageInfo(config.CodePage); // // init char infos // Characters = characters.Select(c => new CharacterDescriptor(this, c)).ToArray(); // // Find the widest bitmap size we are going to draw // Size largestBitmap = Characters.Aggregate(new Size(), (size, chi) => { return(new Size( chi.SizeCharacter.Width > size.Width ? chi.SizeCharacter.Width : size.Width, chi.SizeCharacter.Height > size.Height ? chi.SizeCharacter.Height : size.Height)); }); // // create bitmaps per characater // Characters.ToList().ForEach(c => c.GenerateOriginal(largestBitmap)); // // iterate through all bitmaps and find the tightest common border. only perform // this if the configuration specifies // // this will contain the values of the tightest border around the characters Border tightestCommonBorder = Border.Empty; // only perform if padding type specifies if (OutConfig.paddingRemovalHorizontal == OutputConfiguration.PaddingRemoval.Fixed || OutConfig.paddingRemovalVertical == OutputConfiguration.PaddingRemoval.Fixed || OutConfig.paddingRemovalHorizontal == OutputConfiguration.PaddingRemoval.Clipped || OutConfig.paddingRemovalVertical == OutputConfiguration.PaddingRemoval.Clipped) { // find the common tightest border tightestCommonBorder = Characters.ToList(). Select <CharacterDescriptor, Border>(c => c.OriginalBorder) .Aggregate <Border, Border>(Border.Empty, (p1, p2) => new Border( p1.Left <p2.Left?p1.Left : p2.Left, p1.Top <p2.Top?p1.Top : p2.Top, p1.Right> p2.Right?p1.Right : p2.Right, p1.Bottom> p2.Bottom ? p1.Bottom : p2.Bottom) ); } // // iterate thruogh all bitmaps and generate the bitmap we will convert to string // this means performing all manipulation (pad remove, flip) // // iterate over characters Characters.ToList().ForEach(c => { // check if bitmap exists if (c.GenerateManipulatetBitmap(tightestCommonBorder)) { // create the page array for the character c.GeneratePageArray(); } }); // populate font info populateFontInfoFromCharacters(); GenerateStringsFromFontInfo(); }
// get the character descriptor string private string getCharacterDescString(OutputConfiguration.DescriptorFormat descFormat, int valueInBits) { // don't display if (descFormat == OutputConfiguration.DescriptorFormat.DontDisplay) return ""; // add comma and return return String.Format("{0}, ", convertValueByDescriptorFormat(descFormat, valueInBits)); }
// output configuration to form void loadOutputConfigurationToForm(OutputConfiguration outputConfig) { // set flag m_loadingOutputConfigurationToForm = true; // load combo boxes cbxPaddingHoriz.SelectedIndex = (int)outputConfig.paddingRemovalHorizontal; cbxPaddingVert.SelectedIndex = (int)outputConfig.paddingRemovalVertical; cbxCommentStyle.SelectedIndex = (int)outputConfig.commentStyle; cbxBitLayout.SelectedIndex = (int)outputConfig.bitLayout; cbxByteOrder.SelectedIndex = (int)outputConfig.byteOrder; cbxByteFormat.SelectedIndex = (int)outputConfig.byteFormat; cbxRotation.SelectedIndex = (int)outputConfig.rotation; cbxCharWidthFormat.SelectedIndex = (int)outputConfig.descCharWidth; cbxCharHeightFormat.SelectedIndex = (int)outputConfig.descCharHeight; cbxFontHeightFormat.SelectedIndex = (int)outputConfig.descFontHeight; cbxImgWidthFormat.SelectedIndex = (int)outputConfig.descImgWidth; cbxImgHeightFormat.SelectedIndex = (int)outputConfig.descImgHeight; // text boxes cbxByteLeadingChar.Text = outputConfig.byteLeadingString; txtSpacePixels.Text = outputConfig.spaceGenerationPixels.ToString(); txtLookupBlocksNewAfterCharCount.Text = outputConfig.lookupBlocksNewAfterCharCount.ToString(); cbxOutputConfigurations.Text = outputConfig.displayName; txtVarNfBitmaps.Text = outputConfig.varNfBitmaps; txtVarNfCharInfo.Text = outputConfig.varNfCharInfo; txtVarNfFontInfo.Text = outputConfig.varNfFontInfo; txtVarNfWidth.Text = outputConfig.varNfWidth; txtVarNfHeight.Text = outputConfig.varNfHeight; // load check boxes cbxFlipHoriz.Checked = outputConfig.flipHorizontal; cbxFlipVert.Checked = outputConfig.flipVertical; cbxCommentVarName.Checked = outputConfig.commentVariableName; cbxCommentCharVisual.Checked = outputConfig.commentCharVisualizer; cbxCommentCharDesc.Checked = outputConfig.commentCharDescriptor; cbxGenerateSpaceBitmap.Checked = outputConfig.generateSpaceCharacterBitmap; cbxGenerateLookupArray.Checked = outputConfig.generateLookupArray; txtBmpVisualizerChar.Text = outputConfig.bmpVisualizerChar; cbxGenerateLookupBlocks.Checked = outputConfig.generateLookupBlocks; // radio buttons // -- wrap rbnLineWrapAtColumn.Checked = (outputConfig.lineWrap == OutputConfiguration.LineWrap.AtColumn); rbnLineWrapAtBitmap.Checked = !rbnLineWrapAtColumn.Checked; // clear flag m_loadingOutputConfigurationToForm = false; }
// output configuration to form void loadFormToOutputConfiguration(ref OutputConfiguration outputConfig) { // load combo boxes outputConfig.paddingRemovalHorizontal = (OutputConfiguration.PaddingRemoval)Enum.Parse(typeof(OutputConfiguration.PaddingRemoval), cbxPaddingHoriz.Text); outputConfig.paddingRemovalVertical = (OutputConfiguration.PaddingRemoval)Enum.Parse(typeof(OutputConfiguration.PaddingRemoval), cbxPaddingVert.Text); outputConfig.commentStyle = (OutputConfiguration.CommentStyle)Enum.Parse(typeof(OutputConfiguration.CommentStyle), cbxCommentStyle.Text); outputConfig.bitLayout = (OutputConfiguration.BitLayout)Enum.Parse(typeof(OutputConfiguration.BitLayout), cbxBitLayout.Text); outputConfig.byteOrder = (OutputConfiguration.ByteOrder)Enum.Parse(typeof(OutputConfiguration.ByteOrder), cbxByteOrder.Text); outputConfig.byteFormat = (OutputConfiguration.ByteFormat)Enum.Parse(typeof(OutputConfiguration.ByteFormat), cbxByteFormat.Text); outputConfig.rotation = (OutputConfiguration.Rotation)Array.IndexOf(OutputConfiguration.RotationDisplayString, cbxRotation.Text); outputConfig.descCharWidth = (OutputConfiguration.DescriptorFormat)Array.IndexOf(OutputConfiguration.DescriptorFormatDisplayString, cbxCharWidthFormat.Text); outputConfig.descCharHeight = (OutputConfiguration.DescriptorFormat)Array.IndexOf(OutputConfiguration.DescriptorFormatDisplayString, cbxCharHeightFormat.Text); outputConfig.descFontHeight = (OutputConfiguration.DescriptorFormat)Array.IndexOf(OutputConfiguration.DescriptorFormatDisplayString, cbxFontHeightFormat.Text); outputConfig.descImgWidth = (OutputConfiguration.DescriptorFormat)Array.IndexOf(OutputConfiguration.DescriptorFormatDisplayString, cbxImgWidthFormat.Text); outputConfig.descImgHeight = (OutputConfiguration.DescriptorFormat)Array.IndexOf(OutputConfiguration.DescriptorFormatDisplayString, cbxImgHeightFormat.Text); // text boxes outputConfig.byteLeadingString = cbxByteLeadingChar.Text; outputConfig.spaceGenerationPixels = (int)System.Convert.ToInt32(txtSpacePixels.Text, 10); outputConfig.lookupBlocksNewAfterCharCount = System.Convert.ToInt32(txtLookupBlocksNewAfterCharCount.Text, 10); outputConfig.varNfBitmaps = txtVarNfBitmaps.Text; outputConfig.varNfCharInfo = txtVarNfCharInfo.Text; outputConfig.varNfFontInfo = txtVarNfFontInfo.Text; outputConfig.varNfWidth = txtVarNfWidth.Text; outputConfig.varNfHeight = txtVarNfHeight.Text; // load check boxes outputConfig.flipHorizontal = cbxFlipHoriz.Checked; outputConfig.flipVertical = cbxFlipVert.Checked; outputConfig.commentVariableName = cbxCommentVarName.Checked; outputConfig.commentCharVisualizer = cbxCommentCharVisual.Checked; outputConfig.commentCharDescriptor = cbxCommentCharDesc.Checked; outputConfig.generateSpaceCharacterBitmap = cbxGenerateSpaceBitmap.Checked; outputConfig.generateLookupArray = cbxGenerateLookupArray.Checked; outputConfig.bmpVisualizerChar = txtBmpVisualizerChar.Text; outputConfig.generateLookupBlocks = cbxGenerateLookupBlocks.Checked; // radio buttons // -- wrap if (rbnLineWrapAtColumn.Checked) outputConfig.lineWrap = OutputConfiguration.LineWrap.AtColumn; else outputConfig.lineWrap = OutputConfiguration.LineWrap.AtBitmap; }
private void btnSaveNewConfig_Click(object sender, EventArgs e) { // no focus gbxPadding.Focus(); // exit modifying modifyingPresetConfigurationExit(); // get name of new configuration InputBoxDialog ib = new InputBoxDialog(); ib.FormPrompt = "Enter preset name"; ib.FormCaption = "New preset configuration"; ib.DefaultValue = ""; // show the dialog if (ib.ShowDialog() == DialogResult.OK) { // close dialog ib.Close(); // create a new output configuration OutputConfiguration oc = new OutputConfiguration(); // load current form to config loadFormToOutputConfiguration(ref oc); // set display name oc.displayName = ib.InputResponse; // save new configuration to end of list m_outputConfigurationManager.configurationAdd(ref oc); // re-populate dropdown m_outputConfigurationManager.comboboxPopulate(cbxOutputConfigurations); // set selected index cbxOutputConfigurations.SelectedIndex = cbxOutputConfigurations.Items.Count - 1; // re-save m_outputConfigurationManager.saveToFile("OutputConfigs.xml"); } }
private void generateOutputForFontImage(OutputConfiguration outConfig, Dictionary <Color, bool> colorList, Size tileSize, int codepage, Bitmap bitmapOriginal, StringBuilder textSource, StringBuilder textHeader) { // the name of the bitmap string imageName; Color[] backgroundColors; BitmapInfo bi; textSource.Clear(); textHeader.Clear(); if (bitmapOriginal == null || txtImageName.Text == "") { textSource.Append("No image found "); return; } imageName = MyExtensions.ScrubVariableName(txtImageName.Text); backgroundColors = MyExtensions.GetEnabledKeys <Color>(colorList); // check if bitmap is assigned if (m_currentLoadedBitmap != null) { // // Bitmap manipulation // bi = new BitmapInfo(m_outputConfig, m_currentLoadedBitmap, colorList); // try to manipulate the bitmap if (!bi.GenerateManipulatetBitmap(bi.OriginalBorder)) { // show error MessageBox.Show("No blackground pixels found in bitmap", "Can't convert bitmap", MessageBoxButtons.OK, MessageBoxIcon.Error); // stop here, failed to manipulate the bitmap for whatever reason return; } // according to config if (m_outputConfig.addCommentVariableName) { // add source file header textSource.AppendFormat("{0}" + m_outputConfig.nl + "{1} Image data for {2}" + m_outputConfig.nl + "{3}" + m_outputConfig.nl + m_outputConfig.nl, m_outputConfig.CommentStart, m_outputConfig.CommentBlockMiddle, imageName, m_outputConfig.CommentBlockEnd); // add header file header textHeader.AppendFormat("{0}Bitmap info for {1}{2}" + m_outputConfig.nl, m_outputConfig.CommentStart, imageName, m_outputConfig.CommentEnd); } // bitmap varname string bitmapVarName = String.Format(m_outputConfig.varNfImageBitmap, imageName) + "[]"; // add to source textSource.AppendFormat("{0} =" + m_outputConfig.nl + "{{" + m_outputConfig.nl, bitmapVarName); // // Bitmap to string // // page array bi.GeneratePageArray(); // assign pages for fully populated 8 bits int pagesPerRow = MyExtensions.ConvertValueByDescriptorFormat(OutputConfiguration.DescriptorFormat.DisplayInBytes, bi.BitmapToGenerate.Width); // now convert to string bi.GenerateCharacterDataDescriptorAndVisulazer(); textSource.Append(bi.Descriptor); // close textSource.AppendFormat("}};" + m_outputConfig.nl + m_outputConfig.nl); // according to config if (m_outputConfig.addCommentVariableName) { // set sizes comment textSource.AppendFormat("{0}Bitmap sizes for {1}{2}" + m_outputConfig.nl, m_outputConfig.CommentStart, imageName, m_outputConfig.CommentEnd); } Func <string> getImageWidthString = () => { const string format = "\t{2}, {0} {3}{1}{4}"; // display width in bytes? switch (m_outputConfig.descImgWidth) { case OutputConfiguration.DescriptorFormat.DisplayInBytes: return(string.Format(format, m_outputConfig.CommentStart, m_outputConfig.CommentEnd, pagesPerRow, "Image width in bytes (pages)", m_outputConfig.nl)); case OutputConfiguration.DescriptorFormat.DisplayInBits: return(string.Format(format, m_outputConfig.CommentStart, m_outputConfig.CommentEnd, bi.BitmapToGenerate.Width, "Image width in pixels", m_outputConfig.nl)); case OutputConfiguration.DescriptorFormat.DontDisplay: return(""); default: throw new NotImplementedException(); } }; Func <string> getImageHeigtString = () => { const string format = "\t{2}, {0} {3}{1}{4}"; switch (m_outputConfig.descImgHeight) { case OutputConfiguration.DescriptorFormat.DisplayInBytes: return(string.Format(format, m_outputConfig.CommentStart, m_outputConfig.CommentEnd, MyExtensions.ConvertValueByDescriptorFormat(OutputConfiguration.DescriptorFormat.DisplayInBytes, bi.BitmapToGenerate.Height), "Image height in bytes (pages)", m_outputConfig.nl)); case OutputConfiguration.DescriptorFormat.DisplayInBits: return(string.Format(format, m_outputConfig.CommentStart, m_outputConfig.CommentEnd, bi.BitmapToGenerate.Height, "Image height in pixels", m_outputConfig.nl)); case OutputConfiguration.DescriptorFormat.DontDisplay: return(""); default: throw new NotImplementedException(); } }; // get var name string imageInfoVarName = String.Format(m_outputConfig.varNfImageInfo, imageName); // image info header textHeader.AppendFormat("extern {0};" + m_outputConfig.nl, imageInfoVarName); // image info source textSource.AppendFormat("{2} =" + m_outputConfig.nl + "{{" + m_outputConfig.nl + "{3}" + "{4}" + "\t{5}, {0} Image bitmap array{1}" + m_outputConfig.nl + "}};" + m_outputConfig.nl, m_outputConfig.CommentStart, m_outputConfig.CommentEnd, imageInfoVarName, getImageWidthString(), getImageHeigtString(), MyExtensions.GetVariableNameFromExpression(bitmapVarName)); } }
// builds a string array visualization of 'pages' private void generateVisualizer(int width, int height, ArrayList pages, OutputConfiguration.BitLayout layout, out string[] visualizer) { visualizer = new string[height]; // the number of pages per row in 'pages' int colCount = (layout == OutputConfiguration.BitLayout.RowMajor) ? (width + 7)/8: width; int rowCount = (layout == OutputConfiguration.BitLayout.RowMajor) ? height : (height + 7)/8; // iterator over rows for (int row = 0; row != height; ++row) { // each row is started with a line comment visualizer[row] = "// "; // iterator over columns for (int col = 0; col != width; ++col) { // get the byte containing the bit we want int page = (layout == OutputConfiguration.BitLayout.RowMajor) ? (byte)pages[row * colCount + (col/8)] : (byte)pages[(row/8) * colCount + col]; // make a mask to extract the bit we want int bitMask = (layout == OutputConfiguration.BitLayout.RowMajor) ? getBitMask(7 - (col % 8)) : getBitMask(row % 8); // check if bit is set visualizer[row] += (bitMask & page) != 0 ? m_outputConfig.bmpVisualizerChar : " "; } } // for debugging //foreach (var s in visualizer) // System.Diagnostics.Debug.WriteLine(s); }
// get teh character descriptor string string getCharacterDescName(string name, OutputConfiguration.DescriptorFormat descFormat) { // don't display if (descFormat == OutputConfiguration.DescriptorFormat.DontDisplay) return ""; // create result string string descFormatName = ""; // set value if (descFormat == OutputConfiguration.DescriptorFormat.DisplayInBits) descFormatName = "bits"; if (descFormat == OutputConfiguration.DescriptorFormat.DisplayInBytes) descFormatName = "bytes"; // add comma and return return String.Format("[Char {0} in {1}], ", name, descFormatName); }
private void cbxOutputConfiguration_SelectedIndexChanged(object sender, EventArgs e) { // check if any configuration selected if (cbxOutputConfiguration.SelectedIndex != -1) { // get the configuration m_outputConfig = m_outputConfigurationManager.configurationGetAtIndex(cbxOutputConfiguration.SelectedIndex); } // save selected index for next time Properties.Settings.Default.OutputConfigIndex = cbxOutputConfiguration.SelectedIndex; // save Properties.Settings.Default.Save(); }
private void btnOutputConfig_Click(object sender, EventArgs e) { // no focus label1.Focus(); // get it OutputConfigurationForm outputConfigForm = new OutputConfigurationForm(ref m_outputConfigurationManager); // get the oc int selectedConfigurationIndex = outputConfigForm.getOutputConfiguration(cbxOutputConfiguration.SelectedIndex); // update the dropdown m_outputConfigurationManager.comboboxPopulate(cbxOutputConfiguration); // get working configuration m_outputConfig = m_outputConfigurationManager.workingOutputConfiguration; // set selected index cbxOutputConfiguration.SelectedIndex = selectedConfigurationIndex; // update comment strings according to conifg updateCommentStrings(); }
private void Form1_Load(object sender, EventArgs e) { // use double buffering DoubleBuffered = true; // set version Text = String.Format("The Dot Factory v.{0}", ApplicationVersion); // set input box txtInputText.Text = Properties.Settings.Default.InputText; // load font fontDlgInputFont.Font = Properties.Settings.Default.InputFont; // load configurations from file m_outputConfigurationManager.loadFromFile("OutputConfigs.xml"); // update the dropdown m_outputConfigurationManager.comboboxPopulate(cbxOutputConfiguration); // get saved output config index int lastUsedOutputConfigurationIndex = Properties.Settings.Default.OutputConfigIndex; // load recently used preset if (lastUsedOutputConfigurationIndex >= 0 && lastUsedOutputConfigurationIndex < cbxOutputConfiguration.Items.Count) { // last used cbxOutputConfiguration.SelectedIndex = lastUsedOutputConfigurationIndex; // load selected configuration m_outputConfig = m_outputConfigurationManager.configurationGetAtIndex(lastUsedOutputConfigurationIndex); } else { // there's no saved configuration. get the working copy (default) m_outputConfig = m_outputConfigurationManager.workingOutputConfiguration; } // update comment strings updateCommentStrings(); // set checkbox stuff populateTextInsertCheckbox(); // apply font to all appropriate places updateSelectedFont(Properties.Settings.Default.InputFont); }
// convert bits to bytes according to desc format private int convertValueByDescriptorFormat(OutputConfiguration.DescriptorFormat descFormat, int valueInBits) { // according to format if (descFormat == OutputConfiguration.DescriptorFormat.DisplayInBytes) { // get value in bytes int valueInBytes = valueInBits / 8; if (valueInBits % 8 != 0) valueInBytes++; // set into string return valueInBytes; } else { // no conversion required return valueInBits; } }
// add a configuration public int configurationAdd(ref OutputConfiguration configToAdd) { // add to list m_outputConfigurationList.Add(configToAdd); // return the index of the new item return m_outputConfigurationList.Count - 1; }
// builds a string array of the data in 'pages' private void generateData(int width, int height, ArrayList pages, OutputConfiguration.BitLayout layout, out string[] data) { int colCount = (layout == OutputConfiguration.BitLayout.RowMajor) ? (width + 7)/8: width; int rowCount = (layout == OutputConfiguration.BitLayout.RowMajor) ? height : (height + 7)/8; data = new string[rowCount]; // iterator over rows for (int row = 0; row != rowCount; ++row) { data[row] = ""; // iterator over columns for (int col = 0; col != colCount; ++col) { // get the byte to output int page = (byte)pages[row * colCount + col]; // add leading character data[row] += m_outputConfig.byteLeadingString; // check format if (m_outputConfig.byteFormat == OutputConfiguration.ByteFormat.Hex) { // convert byte to hex data[row] += page.ToString("X").PadLeft(2, '0'); } else { // convert byte to binary data[row] += Convert.ToString(page, 2).PadLeft(8, '0'); } // add comma data[row] += ", "; } } }
// get the descriptors private static string getFontInfoDescriptorsString(bool blockLookupGenerated, OutputConfiguration outConfig, Font font) { string descriptorString = ""; // if a lookup arrays are required, point to it if (outConfig.generateLookupBlocks) { // add to string descriptorString += String.Format("\t{0}, {1} Character block lookup{2}" + outConfig.nl, blockLookupGenerated ? getCharacterDescriptorArrayLookupDisplayString(font) : "NULL", outConfig.CommentStart, outConfig.CommentEnd); // add to string descriptorString += String.Format("\t{0}, {1} Character descriptor array{2}" + outConfig.nl, blockLookupGenerated ? "NULL" : MyExtensions.GetVariableNameFromExpression(String.Format(outConfig.varNfCharInfo, getFontName(font, true))), outConfig.CommentStart, outConfig.CommentEnd); } else { // add descriptor array descriptorString += String.Format("\t{0}, {1} Character descriptor array{2}" + outConfig.nl, MyExtensions.GetVariableNameFromExpression(String.Format(outConfig.varNfCharInfo, getFontName(font, true))), outConfig.CommentStart, outConfig.CommentEnd); } // return the string return(descriptorString); }