#ifndef _RENDER_RASTERIZER_CLASS_ #define _RENDER_RASTERIZER_CLASS_ /* Copyright (C) 1991-2001 and beyond by Bungie Studios, Inc. and the "Aleph One" developers. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. This license is contained in the file "COPYING", which is included with this source code; it is available online at http://www.gnu.org/licenses/gpl.html Rendering Clipping/Rasterization Class by Loren Petrich, August 7, 2000 Defines a class for doing rasterization from the prepared lists of objects; from render.c Made [view_data *view] a member and removed it as an argument Doing the setup and rasterization of each object through a RasterizerClass object Also removed [bitmap_definition *destination] as superfluous, now that there is a special rasterizer object that can contain it. Oct 13, 2000 LP: replaced ResizableList with STL vector class */ #include #include "world.h" #include "render.h" #include "RenderSortPoly.h" #include "RenderPlaceObjs.h" #include "Rasterizer.h" /* ---------- flagged world points */ struct flagged_world_point2d /* for floors */ { // LP change: made this more long-distance friendly int32 x, y; uint16 flags; /* _clip_left, _clip_right, _clip_top, _clip_bottom are valid */ }; struct flagged_world_point3d /* for ceilings */ { // LP change: made this more long-distance friendly int32 x, y; world_distance z; uint16 flags; /* _clip_left, _clip_right, _clip_top, _clip_bottom are valid */ }; /* ---------- vertical surface definition */ /* itÕs not worth putting this into the side_data structure, although the transfer mode should be in the side_texture_definition structure */ struct vertical_surface_data { short lightsource_index; _fixed ambient_delta; /* a delta to the lightsourceÕs intensity, then pinned to [0,FIXED_ONE] */ world_distance length; world_distance h0, h1, hmax; /* h0