Example #1
0
        // 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);
            }
        }
Example #4
0
        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);
            }
        }
Example #6
0
        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");
            }
        }
Example #9
0
        // 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);
        }
Example #10
0
        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();
        }
Example #12
0
        // 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));
        }
Example #13
0
        // 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;
        }
Example #14
0
        // 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;
        }
Example #15
0
        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");
            }
        }
Example #16
0
        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));
            }
        }
Example #17
0
        // 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);
        }
Example #18
0
        // 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);
        }
Example #19
0
        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();
        }
Example #20
0
        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();
        }
Example #21
0
        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);
        }
Example #22
0
        // 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;
        }
Example #24
0
        // 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);
        }