00001
00002
00004
00005 #if !defined(AFX_IMAGEQUEUE_H__894B468B_97A0_47FC_8C85_1B47D5C60DBD__INCLUDED_)
00006 #define AFX_IMAGEQUEUE_H__894B468B_97A0_47FC_8C85_1B47D5C60DBD__INCLUDED_
00007
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif // _MSC_VER > 1000
00011
00012 #include "CImage"
00013
00015
00019 template <class T>
00020 class ImageQueue
00021 {
00022 public:
00024 ImageQueue(int size, int x, int y);
00026 ReMake(int subset, int x, int y);
00027 virtual ~ImageQueue();
00029 ColorImage<T> & Pop();
00031 ColorImage<T> & Look() {return ImageList[currpic];};
00033 ColorImage<T> & Prev() {return ImageList[currpic==0?size-1:currpic-1];};
00035 ColorImage<T> & Next() {return ImageList[(currpic+1) % size];};
00037
00038 private:
00039 ColorImage<T> *ImageList;
00040 int size, currpic;
00041 };
00042
00043 template <class T>
00044 ImageQueue<T>::ImageQueue(int size, int x, int y)
00045 {
00046 ImageList=new ColorImage<T>[size];
00047 for(int i=0; i<size; i++)
00048 ImageList[i].SetSize(x,y);
00049 currpic=0;
00050 }
00051
00052 template <class T>
00053 ImageQueue<T>::ReMake(int subset, int x, int y)
00054 {
00055 size = subset;
00056 delete [] ImageList;
00057 ImageList=new ColorImage<T>[size];
00058 for(int i=0; i<size; i++)
00059 ImageList[i].SetSize(x,y);
00060 currpic=0;
00061 }
00062
00063 template <class T>
00064 ColorImage<T> & ImageQueue<T>::Pop()
00065 {
00066 int temp=currpic;
00067 currpic=(currpic +1) %size;
00068 return ImageList[temp];
00069 }
00070
00071 template <class T>
00072 ImageQueue<T>::~ImageQueue()
00073 {
00074 delete[] ImageList;
00075 }
00076
00077 #endif // !defined(AFX_IMAGEQUEUE_H__894B468B_97A0_47FC_8C85_1B47D5C60DBD__INCLUDED_)