00001 /****************************************************************************************/ 00002 /* span.h */ 00003 /* */ 00004 /* Author: John Pollard, Ken Baird */ 00005 /* Description: Header for span.c and important defines */ 00006 /* */ 00007 /* The contents of this file are subject to the Genesis3D Public License */ 00008 /* Version 1.01 (the "License"); you may not use this file except in */ 00009 /* compliance with the License. You may obtain a copy of the License at */ 00010 /* http://www.genesis3d.com */ 00011 /* */ 00012 /* Software distributed under the License is distributed on an "AS IS" */ 00013 /* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ 00014 /* the License for the specific language governing rights and limitations */ 00015 /* under the License. */ 00016 /* */ 00017 /* The Original Code is Genesis3D, released March 25, 1999. */ 00018 /* Genesis3D Version 1.1 released November 15, 1999 */ 00019 /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */ 00020 /* */ 00021 /****************************************************************************************/ 00022 #ifndef SPAN_H 00023 #define SPAN_H 00024 00025 #include "basetype.h" 00026 00027 #define MAXSPANS 25000 00028 #define MAXSCANLINES 768 00029 00030 typedef struct SList 00031 { 00032 uint8 Used; 00033 int32 Min, Max; 00034 geFloat z1, z2; // So we can spit z spans out for other spans that need to be occluded 00035 uint32 Flags; 00036 struct SList *Last; 00037 struct SList *Next; 00038 } SList; 00039 00040 typedef struct 00041 { 00042 SList *First; 00043 SList *Current; 00044 } SpanMinMax; 00045 00046 extern int32 NumCachedAlphaPolys; 00047 extern int32 NumCachedAlphaSpans; 00048 00049 SList *NewSList(void); 00050 void FreeSList(SList *s); 00051 void ResetSList(void); 00052 void ResetSpans(uint32 Rows); 00053 00054 extern SpanMinMax SMinMax[MAXSCANLINES]; 00055 extern SList ScanHash[MAXSPANS]; // hash table for SList 00056 extern int32 CurrentSList; 00057 00058 00059 #endif
1.3.2