예제 #1
0
 public bool ShowBarcodeImage()
 {
     try
     {
         BbsOptions.ObjectToIndex();
         using (var barcode = new Barcode(BbsOptions.BarcodeIndex)
         {
             ArchiverIndex = BbsOptions.ArchiverIndex,
             EccIndex = BbsOptions.EccIndex,
             MixerIndex = BbsOptions.MixerIndex,
             GammaIndex = BbsOptions.GammaIndex,
             ExpandSize = BbsOptions.ExpandSize,
             EccCodeSize = BbsOptions.EccCodeSize,
             EccDataSize = BbsOptions.EccDataSize,
             MaximumGamma = BbsOptions.MaximumGamma,
             Key = BbsOptions.Key
         })
             using (var image = new Image <Gray, byte>(barcode.Encode()))
                 using (var imageViewer = new ImageViewer(image, "Баркод"))
                     imageViewer.ShowDialog();
         return(true);
     }
     catch (Exception exception)
     {
         XtraMessageBox.Show(exception.Message);
     }
     return(false);
 }
예제 #2
0
 public bool Check()
 {
     try
     {
         switch (SelectedMode)
         {
         case Mode.Pack:
             SelectedMode = Mode.Unpack;
             BbsOptions.ObjectToIndex();
             unpackFile.RtfText     = string.Empty;
             unpackImage.Image      = null;
             unpackMedian.Image     = null;
             _inputBitmap           = null;
             _medianBitmap          = null;
             BbsOptions.InputBitmap = _inputBitmap = _outputBitmap;
             unpackImage.Image      = _inputBitmap.Bitmap;
             unpackFile.RtfText     = BbsBuilder.Unpack(BbsOptions);
             _medianBitmap          = BbsOptions.MedianBitmap;
             unpackMedian.Image     = _medianBitmap.Bitmap;
             var check = string.Compare(unpackFile.RtfText, packFile.RtfText, StringComparison.Ordinal) == 0;
             XtraMessageBox.Show(check ? "Проверка пройдена" : "Проверка не пройдена", "Проверка");
             return(check);
         }
     }
     catch (Exception exception)
     {
         XtraMessageBox.Show(exception.Message);
     }
     return(false);
 }
예제 #3
0
 public MainForm(BbsOptions bbsOptions, BbsControl.Mode selectedMode)
 {
     InitializeComponent();
     InitSkinGallery();
     mainControl.TabsVisible           = false;
     ribbonPageCategoryPack.Visible    = true;
     ribbonPageCategoryUnpack.Visible  = false;
     ribbonPageCategoryOptions.Visible = false;
     ribbonControl.SelectedPage        = ribbonPagePack;
     mainControl.BbsOptions            = bbsOptions;
     mainControl.SelectedMode          = selectedMode;
 }
예제 #4
0
        public bool ShowGamma()
        {
            BbsOptions.ObjectToIndex();
            var bytes = new byte[(BbsOptions.ExpandSize + BitsPerByte - 1) / BitsPerByte];

            using (var gamma = new Gamma(BbsOptions.GammaIndex, BbsOptions.Key))
                gamma.GetBytes(bytes);
            XtraMessageBox.Show(
                string.Join("", bytes.ToArray().Select(x => x.ToString("X02"))),
                "Псевдослучайная последовательность");
            return(true);
        }
예제 #5
0
        public bool Execute()
        {
            switch (SelectedMode)
            {
            case Mode.Pack:
                try
                {
                    if (packingSample.Image == null)
                    {
                        throw new Exception("Нет изображения");
                    }
                    BbsOptions.ObjectToIndex();
                    BbsOptions.RtfText      = packFile.RtfText;
                    BbsOptions.SampleBitmap = _sampleBitmap;
                    _outputBitmap           = BbsBuilder.Pack(BbsOptions);
                    packingImage.Image      = _outputBitmap.Bitmap;
                    propertyGridControlOptions.Refresh();
                    propertyGridControlPack.Refresh();
                    propertyGridControlUnpack.Refresh();
                    return(true);
                }
                catch (Exception exception)
                {
                    XtraMessageBox.Show(exception.Message);
                    return(false);
                }

            case Mode.Unpack:
                try
                {
                    if (unpackImage.Image == null)
                    {
                        throw new Exception("Нет изображения");
                    }
                    BbsOptions.ObjectToIndex();
                    BbsOptions.InputBitmap = _inputBitmap;
                    unpackFile.RtfText     = BbsBuilder.Unpack(BbsOptions);
                    _medianBitmap          = BbsOptions.MedianBitmap;
                    unpackMedian.Image     = _medianBitmap.Bitmap;
                    propertyGridControlOptions.Refresh();
                    propertyGridControlPack.Refresh();
                    propertyGridControlUnpack.Refresh();
                    return(true);
                }
                catch (Exception exception)
                {
                    XtraMessageBox.Show(exception.Message);
                    return(false);
                }
            }
            throw new NotImplementedException();
        }
예제 #6
0
 public bool OptionsLoad()
 {
     if (openOptionsDialog.ShowDialog() != DialogResult.OK)
     {
         return(false);
     }
     using (Stream stream = File.Open(openOptionsDialog.FileName, FileMode.Open))
         BbsOptions = (BbsOptions) new BinaryFormatter().Deserialize(stream);
     BbsOptions.IndexToObject();
     propertyGridControlOptions.SelectedObject = BbsOptions;
     propertyGridControlPack.SelectedObject    = BbsOptions;
     propertyGridControlUnpack.SelectedObject  = BbsOptions;
     return(true);
 }
예제 #7
0
 public bool OptionsSave()
 {
     if (saveOptionsDialog.ShowDialog() != DialogResult.OK)
     {
         return(false);
     }
     if (SelectedMode == Mode.Options)
     {
         propertyGridControlOptions.UpdateFocusedRecord();
     }
     if (SelectedMode == Mode.Pack)
     {
         propertyGridControlPack.UpdateFocusedRecord();
     }
     if (SelectedMode == Mode.Unpack)
     {
         propertyGridControlUnpack.UpdateFocusedRecord();
     }
     BbsOptions.ObjectToIndex();
     using (Stream stream = File.Open(saveOptionsDialog.FileName, FileMode.Create))
         new BinaryFormatter().Serialize(stream, BbsOptions);
     return(true);
 }
예제 #8
0
        private static void Main()
        {
            var args            = Environment.GetCommandLineArgs();
            var optionsFileName = DefaultOptionsFileName;

            var sampleImageFileName = string.Empty;
            var inputImageFileName  = string.Empty;
            var textFileName        = string.Empty;
            var politicTextFileName = string.Empty;
            var selectedMode        = BbsControl.Mode.Welcome;

            try
            {
                Debug.WriteLine("Process commant line");
                for (var i = 1; i < args.Length; i++)
                {
                    switch (args[i].ToLower())
                    {
                    case "-options":
                        optionsFileName = args[++i];
                        break;

                    case "-text":
                        textFileName = args[++i];
                        break;

                    case "-politictext":
                        politicTextFileName = args[++i];
                        break;

                    case "-sample":
                        selectedMode        = BbsControl.Mode.Pack;
                        sampleImageFileName = args[++i];
                        break;

                    case "-input":
                        selectedMode       = BbsControl.Mode.Unpack;
                        inputImageFileName = args[++i];
                        break;

                    default:
                        selectedMode       = BbsControl.Mode.Unpack;
                        inputImageFileName = args[i];
                        break;
                    }
                }

                var bbsOptions = new BbsOptions();

                try
                {
                    Debug.WriteLine("Reading Options Information");
                    using (Stream stream = File.Open(optionsFileName, FileMode.Open))
                        bbsOptions = (BbsOptions) new BinaryFormatter().Deserialize(stream);
                }
                catch (Exception)
                {
                }

                bbsOptions.RtfText = (string.IsNullOrWhiteSpace(textFileName))
                    ? bbsOptions.RtfText
                    : File.ReadAllText(textFileName);
                bbsOptions.PoliticText = (string.IsNullOrWhiteSpace(politicTextFileName))
                    ? bbsOptions.PoliticText
                    : File.ReadAllText(politicTextFileName);
                bbsOptions.SampleBitmap = (string.IsNullOrWhiteSpace(sampleImageFileName))
                    ? bbsOptions.SampleBitmap
                    : new CvBitmap(sampleImageFileName);
                bbsOptions.InputBitmap = (string.IsNullOrWhiteSpace(inputImageFileName))
                    ? bbsOptions.InputBitmap
                    : new CvBitmap(inputImageFileName);

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MainForm(bbsOptions, selectedMode));
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message);
            }
        }
예제 #9
0
        public BbsControl()
        {
            InitializeComponent();
            repositoryItemComboBoxArchiver.Items.AddRange(Archiver.ComboBoxItems);
            repositoryItemComboBoxEcc.Items.AddRange(Ecc.ComboBoxItems);
            repositoryItemComboBoxGamma.Items.AddRange(Gamma.ComboBoxItems);
            repositoryItemComboBoxMixer.Items.AddRange(Mixer.ComboBoxItems);
            repositoryItemComboBoxPolitic.Items.AddRange(Politic.ComboBoxItems);
            repositoryItemComboBoxBarcode.Items.AddRange(Barcode.ComboBoxItems);
            try
            {
                Debug.WriteLine("Reading Default Options Information");
                using (Stream stream = File.Open(DefaultOptionsFileName, FileMode.Open))
                    _bbsOptions = (BbsOptions) new BinaryFormatter().Deserialize(stream);
            }
            catch (Exception)
            {
                _bbsOptions.PoliticIndex  = 0;
                _bbsOptions.EccIndex      = 1;
                _bbsOptions.GammaIndex    = 1;
                _bbsOptions.MixerIndex    = 1;
                _bbsOptions.ArchiverIndex = 1;
                _bbsOptions.BarcodeIndex  = 1;

                _bbsOptions.EccCodeSize = 255;
                _bbsOptions.EccDataSize = 224;
                _bbsOptions.ExpandSize  = 63;
                _bbsOptions.Alpha       = 10;
                _bbsOptions.FilterStep  = 10;

                _bbsOptions.AutoResize     = true;
                _bbsOptions.AutoAlpha      = true;
                _bbsOptions.ExtractBarcode = true;
                _bbsOptions.MaximumGamma   = true;

                _bbsOptions.Key         = "WELCOME";
                _bbsOptions.PoliticText =
                    "Lorem ipsum dolor sit amet, his ea quod tation, ne sit mazim concludaturque, graece tincidunt pro ei. Vero diceret iracundia pro ea, ne eripuit mandamus mea, an usu nisl liber theophrastus. Partem mollis nostrud eam no. Duis partiendo no pro. Cu eum quot luptatum probatus. Ex per labitur incorrupte inciderint, sit sint nonumy melius ea.\n" +
                    "Tollit soleat torquatos qui eu. Cu mutat debitis legendos per. Nemore partiendo ne mei. At ridens eruditi efficiantur his.\n" +
                    "Petentium abhorreant definitiones mea ex. Dolore necessitatibus ad vim. No agam ubique efficiendi qui, has at dico dissentiet. Cu sed dicam omnesque, oratio ridens eum ne. Ea adolescens definiebas mel, cum eu debitis veritus. Mei purto essent cu.\n" +
                    "Perfecto complectitur no vel, ex oblique offendit quo. Ad eos viris scripta postulant. Dolorem volumus eam id. Dicant consectetuer consequuntur et vim, ad sed saepe impedit. Vim ei error tibique. Vitae admodum est eu, mundi eligendi evertitur an vix. Pri doming dicunt repudiandae an, debitis inimicus has no.\n" +
                    "Vidisse torquatos ius te, his ei nibh ornatus moderatius. Eu qui aperiam omittam albucius, at pro vivendo scriptorem. Has natum volumus suavitate eu, mazim consulatu imperdiet an nam. Id mei idque aliquid, ad cetero suavitate quo. Vel soluta ridens invenire id.";

                _bbsOptions.IndexToObject();
            }

            _sampleBitmap = _bbsOptions.SampleBitmap;
            _inputBitmap  = _bbsOptions.InputBitmap;
            _outputBitmap = _bbsOptions.OutputBitmap;
            _medianBitmap = _bbsOptions.MedianBitmap;


            propertyGridControlPack.DefaultEditors.AddRange(new[]
            {
                new DefaultEditor(typeof(bool), repositoryItemCheckEditBoolean),
                new DefaultEditor(typeof(int), repositoryItemSpinEditNumber),
                new DefaultEditor(typeof(string), repositoryItemTextEditString)
            });

            propertyGridControlPack.RepositoryItems.AddRange(new RepositoryItem[]
            {
                repositoryItemComboBoxBarcode,
                repositoryItemComboBoxMixer,
                repositoryItemComboBoxGamma,
                repositoryItemComboBoxEcc,
                repositoryItemComboBoxArchiver,
                repositoryItemComboBoxPolitic,
                repositoryItemMemoEditPoliticText,
                repositoryItemCheckEditBoolean,
                repositoryItemSpinEditNumber,
                repositoryItemTextEditString
            });
            propertyGridControlUnpack.DefaultEditors.AddRange(new[]
            {
                new DefaultEditor(typeof(bool), repositoryItemCheckEditBoolean),
                new DefaultEditor(typeof(int), repositoryItemSpinEditNumber),
                new DefaultEditor(typeof(string), repositoryItemTextEditString)
            });
            propertyGridControlUnpack.RepositoryItems.AddRange(new RepositoryItem[]
            {
                repositoryItemComboBoxBarcode,
                repositoryItemComboBoxMixer,
                repositoryItemComboBoxGamma,
                repositoryItemComboBoxEcc,
                repositoryItemComboBoxArchiver,
                repositoryItemComboBoxPolitic,
                repositoryItemMemoEditPoliticText,
                repositoryItemCheckEditBoolean,
                repositoryItemSpinEditNumber,
                repositoryItemTextEditString
            });

            ArchiverComboBoxItem1.Properties.RowEdit = ArchiverComboBoxItem.Properties.RowEdit.Clone() as RepositoryItem;
            EccComboBoxItem1.Properties.RowEdit      = EccComboBoxItem.Properties.RowEdit.Clone() as RepositoryItem;
            MixerComboBoxItem1.Properties.RowEdit    = MixerComboBoxItem.Properties.RowEdit.Clone() as RepositoryItem;
            GammaComboBoxItem1.Properties.RowEdit    = GammaComboBoxItem.Properties.RowEdit.Clone() as RepositoryItem;
            BarcodeComboBoxItem1.Properties.RowEdit  = BarcodeComboBoxItem.Properties.RowEdit.Clone() as RepositoryItem;
            PoliticComboBoxItem1.Properties.RowEdit  = PoliticComboBoxItem.Properties.RowEdit.Clone() as RepositoryItem;
            PoliticText1.Properties.RowEdit          = PoliticText.Properties.RowEdit.Clone() as RepositoryItem;


            ArchiverComboBoxItem2.Properties.RowEdit = ArchiverComboBoxItem.Properties.RowEdit.Clone() as RepositoryItem;
            EccComboBoxItem2.Properties.RowEdit      = EccComboBoxItem.Properties.RowEdit.Clone() as RepositoryItem;
            MixerComboBoxItem2.Properties.RowEdit    = MixerComboBoxItem.Properties.RowEdit.Clone() as RepositoryItem;
            GammaComboBoxItem2.Properties.RowEdit    = GammaComboBoxItem.Properties.RowEdit.Clone() as RepositoryItem;

            propertyGridControlOptions.SelectedObject = _bbsOptions;
            propertyGridControlPack.SelectedObject    = _bbsOptions;
            propertyGridControlUnpack.SelectedObject  = _bbsOptions;

            openSampleDialog.Filter        =
                openImageDialog.Filter     =
                    saveImageDialog.Filter =
                        @"Bitmap Images (*.bmp)|*.bmp|All Files (*.*)|*.*";
            saveFileDialog.Filter     =
                openFileDialog.Filter =
                    @"Rich Text Files (*.rtf)|*.rtf|All Files (*.*)|*.*";
        }