private static MyTiff decodeSubsample(MyCompressTiff myct, MyDeal.ProgressMonitor monitor)
        {
            MyTiff decodeTiff = new MyTiff();
            Bitmap baseImg    = null;

            for (int i = 0; i < myct.baseImg.Count; i++)
            {
                if (myct.baseImg.ElementAt(i) != null)
                {
                    decodeTiff.views.Add(baseImg = new Bitmap(myct.baseImg.ElementAt(i)));
                }
                else
                {
                    Bitmap left  = (Bitmap)decodeTiff.views.Last();
                    Bitmap right = new Bitmap(myct.baseImg.ElementAt(i + 1));
                    baseImg = MyDeal.Interpolation(left, right);
                    decodeTiff.views.Add(baseImg);
                }
                if (monitor != null)
                {
                    monitor.OnValueChanged(new MyDeal.ValueEventArgs()
                    {
                        value = (double)i / myct.baseImg.Count
                    });
                }
            }
            return(decodeTiff);
        }
Beispiel #2
0
 public void OnPlay(MyTiff tiff, PlayEventArgs e)
 {
     if (this.playEventHandler != null)
     {
         this.playEventHandler(tiff, e);
     }
 }
        private static MyTiff decodeMotion(MyCompressTiff myct, MyDeal.ProgressMonitor monitor)
        {
            MyTiff       decodeTiff = new MyTiff();
            Bitmap       baseImg    = null;
            MyMotionTiff targetMotion;

            for (int i = 0; i < myct.baseImg.Count; i++)
            {
                if (myct.baseImg.ElementAt(i) != null)
                {
                    decodeTiff.views.Add(baseImg = new Bitmap(myct.baseImg.ElementAt(i)));
                }
                else
                {
                    targetMotion = myct.motionTiff.ElementAt(i);
                    baseImg      = MyMotionTiff.decode(baseImg, targetMotion);
                    decodeTiff.views.Add(baseImg);
                }
                if (monitor != null)
                {
                    monitor.OnValueChanged(new MyDeal.ValueEventArgs()
                    {
                        value = (double)i / myct.baseImg.Count
                    });
                }
            }
            return(decodeTiff);
        }
Beispiel #4
0
        public MyTiff clone()
        {
            MyTiff newTiff = new MyTiff();

            newTiff.views = new List <Image>(Size);
            foreach (Image view in views)
            {
                newTiff.views.Add(view);
            }
            return(newTiff);
        }
        private static MyTiff decodeBB(MyCompressTiff myct, MyDeal.ProgressMonitor monitor)
        {
            MyTiff decodeTiff = new MyTiff();
            Bitmap dst        = null;

            for (int i = 0; i < myct.baseImg.Count; i++)
            {
                if (i == 0)
                {
                    decodeTiff.views.Add(dst = new Bitmap(myct.baseImg.ElementAt(i)));
                }
                else
                {
                    Bitmap left = (Bitmap)decodeTiff.views.Last();
                    dst = (Bitmap)myct.baseImg.ElementAt(i).Clone();
                    BitmapData leftData = left.LockBits(MyDeal.boundB(left), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
                    BitmapData dstData  = dst.LockBits(MyDeal.boundB(dst), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
                    unsafe
                    {
                        byte *leftPtr  = (byte *)leftData.Scan0;
                        byte *dstPtr   = (byte *)dstData.Scan0;
                        int   skipByte = dstData.Stride - 3 * dstData.Width;
                        for (int y = 0; y < dstData.Height; y++)
                        {
                            for (int x = 0; x < dstData.Width; x++)
                            {
                                if ((dstPtr[0] != dstPtr[1]) || (dstPtr[1] != dstPtr[2]))
                                {
                                    dstPtr[0] = leftPtr[0];
                                    dstPtr[1] = leftPtr[1];
                                    dstPtr[2] = leftPtr[2];
                                }
                                dstPtr  += 3;
                                leftPtr += 3;
                            }
                            dstPtr  += skipByte;
                            leftPtr += skipByte;
                        }
                    }
                    left.UnlockBits(leftData);
                    dst.UnlockBits(dstData);
                    decodeTiff.views.Add(dst);
                }
                if (monitor != null)
                {
                    monitor.OnValueChanged(new MyDeal.ValueEventArgs()
                    {
                        value = (double)i / myct.baseImg.Count
                    });
                }
            }
            return(decodeTiff);
        }
Beispiel #6
0
        protected virtual void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                switch (openFileDialog1.FilterIndex)
                {
                case 1:
                    if (!openFileDialog1.FileName.Contains(".tiff"))
                    {
                        MessageBox.Show(openFileDialog1.FileName, "open fail < not a tiff file >");
                        return;
                    }
                    myTiff.from(openFileDialog1.FileName);
                    myCompressTiff = null;
                    break;

                case 2:
                    if (!openFileDialog1.FileName.Contains(".MYCT"))
                    {
                        MessageBox.Show(openFileDialog1.FileName, "open fail < not a MYCT file >");
                        return;
                    }
                    if (basicProgress != null)
                    {
                        basicProgress.start();
                    }
                    FileStream fs = (FileStream)openFileDialog1.OpenFile();
                    myCompressTiff = MyCompressTiff.readFromFile(fs);
                    myTiff         = MyCompressTiff.decode(myCompressTiff, basicProgress);
                    fs.Close();
                    if (basicProgress != null)
                    {
                        basicProgress.fine();
                    }
                    break;
                }

                player.open(myTiff);
                player.connect(trackBar1);
                player.OnPlay(new MyPlayer.PlayEventArgs(0, MyPlayer.PlayState.STOP));
                textBox_progress.Text = "0 / " + (myTiff.Size - 1);

                chart1.ChartAreas.ElementAt(0).AxisX.Maximum = myTiff.Size - 1;//set x axis maximun
                if (chart1.Series.FindByName(seriesIdA) != null)
                {
                    chart1.Series.FindByName(seriesIdA).Points.Clear();
                    int[] xValue = Enumerable.Range(0, myTiff.Size).ToArray();
                    chart1.Series.FindByName(seriesIdA).Points.DataBindXY(xValue, new double[myTiff.Size]);
                }
            }
        }
Beispiel #7
0
        private void openBToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                switch (openFileDialog1.FilterIndex)
                {
                case 1:
                    if (!openFileDialog1.FileName.Contains(".tiff"))
                    {
                        MessageBox.Show(openFileDialog1.FileName, "open fail < not a tiff file >");
                        return;
                    }
                    myTiffB.from(openFileDialog1.FileName);
                    myCompressTiffB = null;
                    break;

                case 2:
                    if (!openFileDialog1.FileName.Contains(".MYCT"))
                    {
                        MessageBox.Show(openFileDialog1.FileName, "open fail < not a MYCT file >");
                        return;
                    }
                    if (basicProgress != null)
                    {
                        basicProgress.start();
                    }
                    FileStream fs = (FileStream)openFileDialog1.OpenFile();
                    myCompressTiffB = MyCompressTiff.readFromFile(fs);
                    myTiffB         = MyCompressTiff.decode(myCompressTiffB, basicProgress);
                    fs.Close();
                    if (basicProgress != null)
                    {
                        basicProgress.fine();
                    }
                    break;
                }

                playerB.open(myTiffB);
                playerB.OnPlay(new MyPlayer.PlayEventArgs(0, MyPlayer.PlayState.STOP));

                if (chart1.Series.FindByName(seriesIdB) != null)
                {
                    chart1.Series.FindByName(seriesIdB).Points.Clear();
                    int[]    xValue = Enumerable.Range(0, myTiffB.Size).ToArray();
                    double[] yValue = new double[myTiffB.Size];
                    chart1.Series.FindByName(seriesIdB).Points.DataBindXY(xValue, yValue);
                }
            }
        }
Beispiel #8
0
        protected override void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Enabled = false;
            base.openToolStripMenuItem_Click(sender, e);
            if (myCompressTiff != null)
            {
                switch (myCompressTiff.type)
                {
                case MyCompressTiffDefine.TYPE.MOTION:
                    motionVector = new MyTiff();
                    foreach (MyMotionTiff motionTiff in myCompressTiff.motionTiff)
                    {
                        motionVector.views.Add(MyMotionTiff.drawVector(motionTiff));
                    }
                    motionPlayer.open(motionVector);
                    groupBox3.Text = "motion Vector";
                    break;

                case MyCompressTiffDefine.TYPE.BLOCKBASE:
                    motionVector = new MyTiff();
                    foreach (Image tiff in myCompressTiff.baseImg)
                    {
                        motionVector.views.Add(tiff);
                    }
                    motionPlayer.open(motionVector);
                    groupBox3.Text = "Block Base diff";
                    break;

                default:
                    motionVector      = null;
                    motionPlayer.Tiff = null;
                    groupBox3.Text    = "not use";
                    break;
                }
            }
            else
            {
                motionVector      = null;
                motionPlayer.Tiff = null;
                groupBox3.Text    = "not use";
            }
            this.Enabled = true;
        }
Beispiel #9
0
        protected virtual void playChangeMethod(MyTiff tiff, PlayEventArgs e)
        {
            this.tiff = tiff;
            if (tiff == null)
            {
                return;
            }
            if (e.value >= 0)
            {
                tiff.Current = e.value;
            }
            PlayState oldState = curState;

            if (trackBar != null)
            {
                trackBar.Invoke(trackHandle);
            }
            if (viewer != null)
            {
                switch (e.state)
                {
                case PlayState.PLAY:
                    curState = PlayState.PLAY;
                    Keep();
                    //if (oldState == PlayState.STOP)
                    //    Next();
                    break;

                case PlayState.STOP:
                    curState = PlayState.STOP;
                    //Stop();
                    break;

                case PlayState.BACK:
                    curState = PlayState.BACK;
                    Keep();
                    //if (oldState == PlayState.STOP)
                    //    Back();
                    break;

                case PlayState.KEEP:
                    sideWorking();
                    if (e.args == null)
                    {
                        draw();
                    }
                    else
                    {
                        draw((int)e.args[0], (int)e.args[1], (int)e.args[2], (int)e.args[3]);
                    }
                    switch (curState)
                    {
                    case PlayState.PLAY:
                        new Thread(new ThreadStart(new Action(() =>
                        {
                            if (tiff.CurrState == 2)
                            {
                                curState = PlayState.STOP;
                            }
                            Thread.Sleep(Speed);
                            if (curState == oldState)
                            {
                                Next();
                            }
                        }))).Start();
                        break;

                    case PlayState.BACK:
                        new Thread(new ThreadStart(new Action(() =>
                        {
                            if (tiff.CurrState == 0)
                            {
                                curState = PlayState.STOP;
                            }
                            Thread.Sleep(Speed);
                            if (curState == oldState)
                            {
                                Back();
                            }
                        }))).Start();
                        break;
                    }
                    break;
                }
            }
        }
Beispiel #10
0
 public void open(MyTiff tiff)
 {
     this.tiff = tiff;
     OnPlay(new PlayEventArgs(0, PlayState.KEEP));
 }