mirror of
https://github.com/id-Software/DOOM-iOS.git
synced 2026-03-20 00:49:34 +01:00
The DOOM Classic for iPhone 1.0 source as released on November 3, 2009
This commit is contained in:
163
code/prboom/r_draw.h
Normal file
163
code/prboom/r_draw.h
Normal file
@@ -0,0 +1,163 @@
|
||||
/* Emacs style mode select -*- C++ -*-
|
||||
*-----------------------------------------------------------------------------
|
||||
*
|
||||
*
|
||||
* PrBoom: a Doom port merged with LxDoom and LSDLDoom
|
||||
* based on BOOM, a modified and improved DOOM engine
|
||||
* Copyright (C) 1999 by
|
||||
* id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
|
||||
* Copyright (C) 1999-2000 by
|
||||
* Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze
|
||||
* Copyright 2005, 2006 by
|
||||
* Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*
|
||||
* DESCRIPTION:
|
||||
* System specific interface stuff.
|
||||
*
|
||||
*-----------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __R_DRAW__
|
||||
#define __R_DRAW__
|
||||
|
||||
#include "r_defs.h"
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
enum column_pipeline_e {
|
||||
RDC_PIPELINE_STANDARD,
|
||||
RDC_PIPELINE_TRANSLUCENT,
|
||||
RDC_PIPELINE_TRANSLATED,
|
||||
RDC_PIPELINE_FUZZ,
|
||||
RDC_PIPELINE_MAXPIPELINES,
|
||||
};
|
||||
|
||||
// Used to specify what kind of filering you want
|
||||
enum draw_filter_type_e {
|
||||
RDRAW_FILTER_NONE,
|
||||
RDRAW_FILTER_POINT,
|
||||
RDRAW_FILTER_LINEAR,
|
||||
RDRAW_FILTER_ROUNDED,
|
||||
RDRAW_FILTER_MAXFILTERS
|
||||
};
|
||||
|
||||
// Used to specify what kind of column edge rendering to use on masked
|
||||
// columns. SQUARE = standard, SLOPED = slope the column edge up or down
|
||||
// based on neighboring columns
|
||||
enum sloped_edge_type_e {
|
||||
RDRAW_MASKEDCOLUMNEDGE_SQUARE,
|
||||
RDRAW_MASKEDCOLUMNEDGE_SLOPED
|
||||
};
|
||||
|
||||
// Packaged into a struct - POPE
|
||||
typedef struct {
|
||||
int x;
|
||||
int yl;
|
||||
int yh;
|
||||
fixed_t z; // the current column z coord
|
||||
fixed_t iscale;
|
||||
fixed_t texturemid;
|
||||
int texheight; // killough
|
||||
fixed_t texu; // the current column u coord
|
||||
const byte *source; // first pixel in a column
|
||||
const byte *prevsource; // first pixel in previous column
|
||||
const byte *nextsource; // first pixel in next column
|
||||
const lighttable_t *colormap;
|
||||
const lighttable_t *nextcolormap;
|
||||
const byte *translation;
|
||||
int edgeslope; // OR'ed RDRAW_EDGESLOPE_*
|
||||
// 1 if R_DrawColumn* is currently drawing a masked column, otherwise 0
|
||||
int drawingmasked;
|
||||
enum sloped_edge_type_e edgetype;
|
||||
} draw_column_vars_t;
|
||||
|
||||
void R_SetDefaultDrawColumnVars(draw_column_vars_t *dcvars);
|
||||
|
||||
void R_VideoErase(int x, int y, int count);
|
||||
|
||||
typedef struct {
|
||||
int y;
|
||||
int x1;
|
||||
int x2;
|
||||
fixed_t z; // the current span z coord
|
||||
fixed_t xfrac;
|
||||
fixed_t yfrac;
|
||||
fixed_t xstep;
|
||||
fixed_t ystep;
|
||||
const byte *source; // start of a 64*64 tile image
|
||||
const lighttable_t *colormap;
|
||||
const lighttable_t *nextcolormap;
|
||||
} draw_span_vars_t;
|
||||
|
||||
typedef struct {
|
||||
byte *byte_topleft;
|
||||
unsigned short *short_topleft;
|
||||
unsigned int *int_topleft;
|
||||
int byte_pitch;
|
||||
int short_pitch;
|
||||
int int_pitch;
|
||||
|
||||
enum draw_filter_type_e filterwall;
|
||||
enum draw_filter_type_e filterfloor;
|
||||
enum draw_filter_type_e filtersprite;
|
||||
enum draw_filter_type_e filterz;
|
||||
enum draw_filter_type_e filterpatch;
|
||||
|
||||
enum sloped_edge_type_e sprite_edges;
|
||||
enum sloped_edge_type_e patch_edges;
|
||||
|
||||
// Used to specify an early-out magnification threshold for filtering.
|
||||
// If a texture is being minified (dcvars.iscale > rdraw_magThresh), then it
|
||||
// drops back to point filtering.
|
||||
fixed_t mag_threshold;
|
||||
} draw_vars_t;
|
||||
|
||||
extern draw_vars_t drawvars;
|
||||
|
||||
extern byte playernumtotrans[MAXPLAYERS]; // CPhipps - what translation table for what player
|
||||
extern byte *translationtables;
|
||||
|
||||
typedef void (*R_DrawColumn_f)(draw_column_vars_t *dcvars);
|
||||
R_DrawColumn_f R_GetDrawColumnFunc(enum column_pipeline_e type,
|
||||
enum draw_filter_type_e filter,
|
||||
enum draw_filter_type_e filterz);
|
||||
|
||||
// Span blitting for rows, floor/ceiling. No Spectre effect needed.
|
||||
typedef void (*R_DrawSpan_f)(draw_span_vars_t *dsvars);
|
||||
R_DrawSpan_f R_GetDrawSpanFunc(enum draw_filter_type_e filter,
|
||||
enum draw_filter_type_e filterz);
|
||||
void R_DrawSpan(draw_span_vars_t *dsvars);
|
||||
|
||||
void R_InitBuffer(int width, int height);
|
||||
|
||||
// Initialize color translation tables, for player rendering etc.
|
||||
void R_InitTranslationTables(void);
|
||||
|
||||
// Rendering function.
|
||||
void R_FillBackScreen(void);
|
||||
|
||||
// If the view size is not full screen, draws a border around it.
|
||||
void R_DrawViewBorder(void);
|
||||
|
||||
// haleyjd 09/13/04: new function to call from main rendering loop
|
||||
// which gets rid of the unnecessary reset of various variables during
|
||||
// column drawing.
|
||||
void R_ResetColumnBuffer(void);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user