using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenNI;
using System.Drawing;
using System.Drawing.Imaging;
using System.Threading;

namespace Kinect_viewer.Projection
{
    //class InfraProjection : AProjection, IProjection
    //{
    //    Form1 form;
    //    IRMetaData irMD;

    //    public InfraProjection(Form1 form)
    //        : base()
    //    {
    //          this.form = form;
            
    //    }
    //    public unsafe void ReaderThread()
    //    {
               
    //           while (this.ShouldRun)
    //           {
    //               try
    //               {
    //                   irMD = new IRMetaData();
    //                   this.context.WaitAnyUpdateAll();
    //                   this.irGen.GetMetaData(irMD);
    //               }
    //               catch (Exception e)
    //               {
    //                   throw e;
    //               }
                   
    //               //this.image.GetMetaData(imageMD);
    //               //CalcHist(depthMD);
    //               lock (this)
    //               {
    //                   // Debug.WriteLine(depthMD[153280].ToString());
    //                   Rectangle rect = new Rectangle(0, 0, this.ImageBitmap.Width, this.ImageBitmap.Height);
    //                   BitmapData data = this.ImageBitmap.LockBits(rect, ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
    //                   byte* pSrc = (byte*)image.ImageMapPtr.ToPointer();
    //                   ushort* pDepth = (ushort*)this.depth.DepthMapPtr.ToPointer();
    //                   for (int y = 0; y < irMD.YRes; ++y)
    //                   {//Scan0 vrátí hodnotu prvního řádku a stride postupně načte všechny řádky
    //                       byte* pDest = (byte*)data.Scan0.ToPointer() + y * data.Stride;
    //                       // byte* pDest2 = (byte*)imageData.Scan0.ToPointer() + y * imageData.Stride;
    //                       for (int x = 0; x < irMD.XRes; ++x, ++pDepth, pDest += 3, pSrc += 3)
    //                       {//Setting projection color
    //                           byte pixel = (byte)this.histogram[*pDepth];
    //                           pDest[0] = 0;//B
    //                           pDest[1] = pixel;//G
    //                           pDest[2] = pixel;//R
    //                       }
    //                   }
    //                   this.ImageBitmap.UnlockBits(data);
    //                   // this.imageBitmap.UnlockBits(imageData);                    
    //               }
    //               //Překreslení           
    //               ((Form1)form).im3(this.ImageBitmap);
    //               Thread.Sleep(100);
    //           }
    //    }
    //}
}
