Esempio n. 1
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);
 }
Esempio n. 2
0
 public Politic(int itemIndex, string politicsText, int expandSize, CvBitmap bitmap)
 {
     _bitmap       = bitmap;
     _politicsText = politicsText;
     _expandSize   = expandSize;
     _politicId    = ((ComboBoxItem <PoliticId>)ComboBoxItems[itemIndex]).HiddenValue;
 }
Esempio n. 3
0
        private static object[] _comboBoxItems; // Список значений для комбо-бокса

        #endregion Fields

        #region Constructors

        public Politic(int itemIndex, string politicsText, int expandSize, CvBitmap bitmap)
        {
            _bitmap = bitmap;
            _politicsText = politicsText;
            _expandSize = expandSize;
            _politicId = ((ComboBoxItem<PoliticId>) ComboBoxItems[itemIndex]).HiddenValue;
        }
Esempio n. 4
0
        public bool Erase()
        {
            try
            {
                switch (SelectedMode)
                {
                case Mode.Pack:
                    packFile.RtfText    = string.Empty;
                    packingSample.Image = null;
                    packingImage.Image  = null;
                    _sampleBitmap       = null;
                    _outputBitmap       = null;
                    return(true);

                case Mode.Unpack:
                    unpackFile.RtfText = string.Empty;
                    unpackImage.Image  = null;
                    unpackMedian.Image = null;
                    _inputBitmap       = null;
                    _medianBitmap      = null;
                    return(true);
                }
            }
            catch (Exception exception)
            {
                XtraMessageBox.Show(exception.Message);
            }
            return(false);
        }
Esempio n. 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();
        }
Esempio n. 6
0
 public bool UnpackOpenImage()
 {
     try
     {
         if (openImageDialog.ShowDialog() == DialogResult.OK)
         {
             _inputBitmap      = new CvBitmap(openImageDialog.FileName);
             unpackImage.Image = _inputBitmap.Bitmap;
             return(true);
         }
     }
     catch (Exception exception)
     {
         XtraMessageBox.Show(exception.Message);
     }
     return(false);
 }
Esempio n. 7
0
 public bool PackOpenImage()
 {
     try
     {
         if (openSampleDialog.ShowDialog() == DialogResult.OK)
         {
             _sampleBitmap       = new CvBitmap(openSampleDialog.FileName);
             packingSample.Image = _sampleBitmap.Bitmap;
             return(true);
         }
     }
     catch (Exception exception)
     {
         XtraMessageBox.Show(exception.Message);
     }
     return(false);
 }
Esempio n. 8
0
        private const int BitsPerByte = 8; // Количество битов в байте

        #endregion Fields

        #region Methods

        /// <summary>
        ///     Применение метода широкополосного сигнала
        ///     Внедрение данных в графический файл
        /// </summary>
        /// <param name="bbsOptions">Параметры алгоритма включая исходные данные</param>
        /// <returns>Графический файл с внедрёнными данными</returns>
        public static CvBitmap Pack(BbsOptions bbsOptions)
        {
            Debug.WriteLine(bbsOptions.ToString());

            string key = bbsOptions.Key;
            int expandSize = bbsOptions.ExpandSize;
            int codeSize = bbsOptions.EccCodeSize;
            int dataSize = bbsOptions.EccDataSize;
            int alpha = bbsOptions.Alpha;
            int betta = 0;
            bool autoAlpha = bbsOptions.AutoAlpha;
            bool autoResize = bbsOptions.AutoResize;
            bool maximumGamma = bbsOptions.MaximumGamma;
            int politicIndex = bbsOptions.PoliticIndex;
            string politicText = bbsOptions.PoliticText;
            int eccIndex = bbsOptions.EccIndex;
            int mixerIndex = bbsOptions.MixerIndex;
            int gammaIndex = bbsOptions.GammaIndex;
            int archiverIndex = bbsOptions.ArchiverIndex;
            int barcodeIndex = bbsOptions.BarcodeIndex;
            int filterStep = bbsOptions.FilterStep;

            CvBitmap sampleBitmap = bbsOptions.SampleBitmap;

            Size minSize = sampleBitmap.Size;
            CvBitmap barcodeBitmap = null;

            try
            {
                using (var barcode = new Barcode(barcodeIndex)
                {
                    ArchiverIndex = archiverIndex,
                    EccIndex = eccIndex,
                    MixerIndex = mixerIndex,
                    GammaIndex = gammaIndex,
                    ExpandSize = expandSize,
                    EccCodeSize = codeSize,
                    EccDataSize = dataSize,
                    MaximumGamma = maximumGamma,
                    Key = key,
                })
                {
                    // Формирование баркода с параметрами для используемых алгоритмов
                    barcodeBitmap = new CvBitmap(barcode.Encode());
                    Size barcodeSize = barcodeBitmap.Size;
                    minSize.Width = Math.Max(minSize.Width, 4*barcodeSize.Width);
                    minSize.Height = Math.Max(minSize.Height, 4*barcodeSize.Height);
                }
            }
            catch (ArgumentNullException exception)
            {
            }

            byte[] bytes = Encoding.Default.GetBytes(bbsOptions.RtfText);
            Debug.WriteLine(string.Join("", bytes.Select(x => x.ToString("X02"))));

            //     В дополнение к самому методу широкополосного сигнала данные могут быть сжаты алгоритмом компрессии данных,
            //     добавлены коды исправления ошибок, последовательности бит могут размещаться в изображении не последовательно, а в
            //     соответствии с выбранным алгоритмом.
            IStreamTransform[] streamTransforms =
            {
                new Archiver(archiverIndex), // Алгоритм сжатия данных
                new Envelope(), // Добавление конверта
                new Ecc(eccIndex, codeSize, dataSize) // Алгоритм коррекции ошибок
            };
            var input = new MemoryStream(bytes);
            Debug.WriteLine("input {0}", input.Length);
            foreach (IStreamTransform transform in streamTransforms)
            {
                using (MemoryStream prev = input)
                    transform.Forward(prev, input = new MemoryStream());
                input.Seek(0, SeekOrigin.Begin);
                Debug.WriteLine("{0} {1}", transform, input.Length);
            }

            // для каждого бита сообщения нужно N байт носителя
            long inputLength = input.Length; // Количество байт передаваемых данных
            long requiredLength = inputLength*expandSize*BitsPerByte; // Требуемое число пикселей
            Size sampleSize = sampleBitmap.Size;
            long sampleLength = sampleBitmap.Length;
            double ratio = Math.Sqrt(1+(double) requiredLength/sampleLength);
            ratio = Math.Max(ratio, (double) minSize.Width/sampleSize.Width);
            ratio = Math.Max(ratio, (double) minSize.Height/sampleSize.Height);
            minSize.Width = (int) Math.Max(minSize.Width, Math.Ceiling(ratio*sampleSize.Width));
            minSize.Height = (int) Math.Max(minSize.Height, Math.Ceiling(ratio*sampleSize.Height));

            CvBitmap bitmap;

            using (var stretchBuilder = new StretchBuilder(minSize))
                bitmap = new CvBitmap(sampleBitmap, stretchBuilder, autoResize);

            long length = bitmap.Length;
            Size size = bitmap.Size;

            if (requiredLength > length)
                throw new Exception(
                    string.Format("Размер изображения недостаточен для сохранения данных {0}/{1}",
                        requiredLength, sampleLength));

            if (minSize.Width > size.Width || minSize.Height > size.Height)
                throw new Exception(
                    string.Format(
                        "Размер изображения недостаточен для сохранения данных {0}x{1}/{2}x{3}",
                        size.Width, size.Height, minSize.Width, minSize.Height));

            // Внедрения в передаваемое изображение баркода с настроечными параметрами для используемых алгоритмов
            if (barcodeBitmap != null) bitmap.DrawCopyright(barcodeBitmap);

            using (IStreamTransform streamTransform = new Politic(politicIndex, politicText, expandSize, bitmap))
            using (MemoryStream prev = input)
                streamTransform.Forward(prev, input = new MemoryStream());
            input.Seek(0, SeekOrigin.Begin);
            Debug.WriteLine("input {0}", input.Length);
            using (var reader = new BinaryReader(input))
            {
                byte[] data = reader.ReadBytes((int) input.Length);
                Debug.WriteLine(string.Join("", data.Select(x => x.ToString("X02"))));

                var index = new int[length];
                var colors = new byte[length];
                var cw = new byte[length];

                var gamma = new byte[maximumGamma
                    ? ((length + BitsPerByte - 1)/BitsPerByte)
                    : ((expandSize + BitsPerByte - 1)/BitsPerByte)];

                using (var builder = new Mixer(mixerIndex, key))
                    builder.GetInts(index);
                using (var builder = new Gamma(gammaIndex, key))
                    builder.GetBytes(gamma);

                bitmap.Select(index, colors);

                if (autoAlpha)
                {
                    using (var blurBuilder = new BlurBuilder(filterStep))
                    using (var median = new CvBitmap(bitmap, blurBuilder))
                    {
                        if (barcodeBitmap != null) median.DrawCopyright(barcodeBitmap);
                        var medianColors = new byte[length];
                        median.Select(index, medianColors);

                        double e1 = colors.Zip(medianColors,
                            (x, y) => (int) x - (int) y).Average(x => (double) x);
                        double e2 = colors.Zip(medianColors,
                            (x, y) => (int) x - (int) y).Average(x => (double) x*x);

                        alpha = (int) Math.Sqrt(e2 - e1*e1);
                        bbsOptions.Alpha = alpha;

                        // Вычисление оценки смещение яркости относительно средней яркости исходного изображения при прямом и дословном применении алгоритма
                        // Построение массивов, содержащих статистическую информацию о исходных данных и псевдослучайной последовательности
                        // То есть построение гистограмм исходных данных и псевдослучайной последовательности
                        var countData = new int[256];
                        var countGamma = new int[256];
                        foreach (byte ch in data) countData[ch]++;
                        foreach (byte ch in gamma) countGamma[ch]++;

                        // Построение массива, где каждый элемент содержит количество ненулевых бит в бинарном разложении индекса элемента
                        var count = new int[256];
                        count[0] = 0;
                        for (int k = 1; k < 256; k <<= 1)
                            for (int i = 0; i < k; i++)
                                count[k + i] = count[i] + 1;

                        // Использование псевдослучайной последовательности с характеристиками приближенными к равновероятной, для кодирования
                        // данных, позволяет сохранить среднюю яркость пикселей у исходного графического изображения и у изображения,
                        // содержащего внедрённые данные
                        // Однако при прямом и дословном применении алгоритма средняя яркость пикселей могла бы иметь смещение относительно средней яркости у исходного изображения
                        // Поэтому производим статистическую оценку такого смещения и вводим её в качестве компенсирующего слагаемого в алгоритм

                        // Вычисление количества единиц в исходных данных и псевдослучайной последовательности
                        double trueData = count.Zip(countData, (x, y) => (double) ((long) x*y)).Sum();
                        double trueGamma = count.Zip(countGamma, (x, y) => (double) ((long) x*y)).Sum();

                        // Вычисление количества нулей в исходных данных и псевдослучайной последовательности
                        double falseData = (long) data.Length*BitsPerByte - trueData;
                        double falseGamma = (long) gamma.Length*BitsPerByte - trueGamma;

                        // Вычисление оценки количества единиц и нулей при смешивании исходных данных и псевдослучайной последовательности
                        double trueCount = trueGamma*falseData + falseGamma*trueData;
                        double falseCount = trueGamma*trueData + falseGamma*falseData;

                        betta = (int) ((falseCount - trueCount)*alpha/(trueCount + falseCount));
                        bbsOptions.Alpha = alpha;
                    }
                }

                using (var bbSignals = new BbSignals(expandSize, maximumGamma))
                    bbSignals.Combine(colors, data, gamma, alpha, betta, cw);
                bitmap.Replace(index, cw);
                return bbsOptions.OutputBitmap = bitmap;
            }
        }
Esempio n. 9
0
 public bool UnpackOpenImage()
 {
     try
     {
         if (openImageDialog.ShowDialog() == DialogResult.OK)
         {
             _inputBitmap = new CvBitmap(openImageDialog.FileName);
             unpackImage.Image = _inputBitmap.Bitmap;
             return true;
         }
     }
     catch (Exception exception)
     {
         XtraMessageBox.Show(exception.Message);
     }
     return false;
 }
Esempio n. 10
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 (*.*)|*.*";
        }
Esempio n. 11
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 (*.*)|*.*";
        }
Esempio n. 12
0
 public bool PackOpenImage()
 {
     try
     {
         if (openSampleDialog.ShowDialog() == DialogResult.OK)
         {
             _sampleBitmap = new CvBitmap(openSampleDialog.FileName);
             packingSample.Image = _sampleBitmap.Bitmap;
             return true;
         }
     }
     catch (Exception exception)
     {
         XtraMessageBox.Show(exception.Message);
     }
     return false;
 }
Esempio n. 13
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();
 }
Esempio n. 14
0
 public bool Erase()
 {
     try
     {
         switch (SelectedMode)
         {
             case Mode.Pack:
                 packFile.RtfText = string.Empty;
                 packingSample.Image = null;
                 packingImage.Image = null;
                 _sampleBitmap = null;
                 _outputBitmap = null;
                 return true;
             case Mode.Unpack:
                 unpackFile.RtfText = string.Empty;
                 unpackImage.Image = null;
                 unpackMedian.Image = null;
                 _inputBitmap = null;
                 _medianBitmap = null;
                 return true;
         }
     }
     catch (Exception exception)
     {
         XtraMessageBox.Show(exception.Message);
     }
     return false;
 }
Esempio n. 15
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;
                 bool check = String.Compare(unpackFile.RtfText, packFile.RtfText, StringComparison.Ordinal) == 0;
                 XtraMessageBox.Show(check ? "Проверка пройдена" : "Проверка не пройдена", "Проверка");
                 return check;
         }
     }
     catch (Exception exception)
     {
         XtraMessageBox.Show(exception.Message);
     }
     return false;
 }