예제 #1
0
        public void Aply_Button_Click(object sender, EventArgs e)
        {
            string OperationName = PROGRAM.GiveOperationName(OperationIDName);

            SERVICE.DataOperation(LastModification, OperationName);

            if (!SERVICE.data.LastData().Ready)
            {
                SERVICE.ImageOperation("RecalculateHistogramData_tsmi");
            }

            this.Histogram.ReloadHistogram(SERVICE.data.LastData().data.data);
        }
예제 #2
0
        public override void Start(Program program, ImageForm_Service service, IOperation operation, string operationName)
        {
            if (program == null)
            {
                return;
            }
            if (service == null)
            {
                return;
            }
            if (operation == null)
            {
                return;
            }
            if (operationName == null)
            {
                return;
            }

            this.PROGRAM         = program;
            this.SERVICE         = service;
            this.OPERATION       = operation;
            this.OperationIDName = operationName;

            if (SERVICE.data == null)
            {
                return;
            }
            if (SERVICE.data.LastData() == null)
            {
                return;
            }

            if (!SERVICE.data.LastData().Ready)
            {
                SERVICE.ImageOperation("RecalculateHistogramData_tsmi");
            }

            this.Histogram.ReloadHistogram(SERVICE.data.LastData().data.data);

            MaxValue.Value = SERVICE.data.LastData().data.maxValue;
            value.Value    = MaxValue.Value / 2;

            ReloadLanguage();
            ReloadColorSet();

            this.form.Show();
            wait = false;
        }
예제 #3
0
        public override ImageData GetResult(ImageForm_Service service)
        {
            if (service.data.LastData() == null)
            {
                return(null);
            }

            if (service.data.LastData().Bitmap == null)
            {
                return(null);
            }

            if (!service.data.LastData().Ready)
            {
                service.ImageOperation("RecalculateHistogramData_tsmi");
            }


            Bitmap oldBitmap = service.data.LastData().Bitmap;
            Bitmap newBitmap = new Bitmap(oldBitmap.Width, oldBitmap.Height, service.data.LastData().Bitmap.PixelFormat);

            List <int> LUTred   = CalculateLUT(service.data.LastData().data_R);
            List <int> LUTgreen = CalculateLUT(service.data.LastData().data_G);
            List <int> LUTblue  = CalculateLUT(service.data.LastData().data_B);

            HistogramData general = new HistogramData();
            HistogramData red     = new HistogramData();
            HistogramData green   = new HistogramData();
            HistogramData blue    = new HistogramData();

            service.imageWindow.StartProgressBar();

            for (int h = 0; h < oldBitmap.Height; ++h)
            {
                service.imageWindow.SetProgressBarValue(h * 100 / oldBitmap.Height);

                for (int w = 0; w < oldBitmap.Width; ++w)
                {
                    Color pixel    = oldBitmap.GetPixel(w, h);
                    Color newPixel = Color.FromArgb(pixel.A, LUTred[pixel.R], LUTgreen[pixel.G], LUTblue[pixel.B]);
                    newBitmap.SetPixel(w, h, newPixel);

                    general.SumUp(newPixel.R);
                    general.SumUp(newPixel.G);
                    general.SumUp(newPixel.B);

                    red.SumUp(newPixel.R);
                    green.SumUp(newPixel.G);
                    blue.SumUp(newPixel.B);
                }
            }
            general.SetLeast();
            red.SetLeast();
            green.SetLeast();
            blue.SetLeast();

            ImageData after = new ImageData(newBitmap, service.data.LastData().ID)
            {
                data   = general,
                data_A = service.data.LastData().data_A,
                data_R = red,
                data_G = green,
                data_B = blue
            };

            after.SetReady();

            service.imageWindow.CloseProgressBar();
            return(after);
        }