@Override
	public Iterator<Integer> iterator()
	{
		return new Iterator<Integer>()
		{
			private int	mCurrent	= -1;
			
			@Override
			public boolean hasNext()
			{
				return findNext() != -1;
			}
			
			@Override
			public Integer next()
			{
				mCurrent = findNext();
				return mCurrent;
			}
			
			private int findNext()
			{
				int i = mCurrent;
				do
					i++ ;
				while (i < mWidth * mHeight && !mData[i]);
				if (i == mWidth * mHeight) return -1;
				return i;
			}
			
			@Override
			public void remove()
			{
				mData[mCurrent] = false;
			}
		};
	}