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); }
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); }
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); }
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]); } } }
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); } } }
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; }
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; } } }
public void open(MyTiff tiff) { this.tiff = tiff; OnPlay(new PlayEventArgs(0, PlayState.KEEP)); }