00001 /*************************************************************************** 00002 * Copyright (C) 1998-2008 by authors (see AUTHORS.txt ) * 00003 * * 00004 * This file is part of LuxRender. * 00005 * * 00006 * Lux Renderer is free software; you can redistribute it and/or modify * 00007 * it under the terms of the GNU General Public License as published by * 00008 * the Free Software Foundation; either version 3 of the License, or * 00009 * (at your option) any later version. * 00010 * * 00011 * Lux Renderer is distributed in the hope that it will be useful, * 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00014 * GNU General Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU General Public License * 00017 * along with this program. If not, see <http://www.gnu.org/licenses/>. * 00018 * * 00019 * This project is based on PBRT ; see http://www.pbrt.org * 00020 * Lux Renderer website : http://www.luxrender.net * 00021 ***************************************************************************/ 00022 00023 // linear.cpp* 00024 #include "linear.h" 00025 #include "error.h" 00026 00027 using namespace lux; 00028 00029 // LinearPixelSampler Method Definitions 00030 LinearPixelSampler::LinearPixelSampler(int xstart, int xend, 00031 int ystart, int yend) { 00032 int xPos = xstart; 00033 int yPos = ystart; 00034 // fill Pxa array in film pixel order 00035 short int x = (unsigned short int) xPos; 00036 short int y = (unsigned short int) yPos; 00037 TotalPx = 0; 00038 while(true) { 00039 PxLoc px; 00040 px.x = x; px.y = y; 00041 Pxa.push_back(px); 00042 x++; 00043 TotalPx++; 00044 if(x == xend) { 00045 x = xstart; 00046 y++; 00047 if(y == yend) 00048 break; 00049 } 00050 } 00051 } 00052 00053 u_int LinearPixelSampler::GetTotalPixels() { 00054 return TotalPx; 00055 } 00056 00057 bool LinearPixelSampler::GetNextPixel(int &xPos, int &yPos, u_int *use_pos) { 00058 u_int pos = (*use_pos); 00059 bool hasMorePixel = true; 00060 if(pos == TotalPx - 1) 00061 hasMorePixel = false; 00062 00063 xPos = Pxa[*use_pos].x; 00064 yPos = Pxa[*use_pos].y; 00065 00066 return hasMorePixel; 00067 }
1.6.1