123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- /*
- THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
- SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
- END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
- ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
- IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
- SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
- FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
- CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
- AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
- COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
- */
- #pragma off (unreferenced)
- static char rcsid[] = "$Id: scanline.c 1.3 1996/01/24 16:38:16 champaign Exp $";
- #pragma on (unreferenced)
- #include <math.h>
- #include <limits.h>
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include "fix.h"
- #include "mono.h"
- #include "gr.h"
- #include "grdef.h"
- #include "texmap.h"
- #include "texmapl.h"
- #include "scanline.h"
- extern ubyte * dest_row_data;
- extern int loop_count;
- void c_tmap_scanline_flat()
- {
- ubyte *dest;
- int x;
- dest = dest_row_data;
- for (x=loop_count; x >= 0; x-- ) {
- *dest++ = tmap_flat_color;
- }
- }
- void c_tmap_scanline_shaded()
- {
- int fade;
- ubyte *dest;
- int x;
- dest = dest_row_data;
- fade = tmap_flat_shade_value<<8;
- for (x=loop_count; x >= 0; x-- ) {
- *dest++ = gr_fade_table[ fade |(*dest)];
- }
- }
- void c_tmap_scanline_lin_nolight()
- {
- ubyte *dest;
- uint c;
- int x;
- fix u,v,dudx, dvdx;
- u = fx_u;
- v = fx_v*64;
- dudx = fx_du_dx;
- dvdx = fx_dv_dx*64;
- dest = dest_row_data;
- if (!Transparency_on) {
- for (x=loop_count; x >= 0; x-- ) {
- *dest++ = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
- u += dudx;
- v += dvdx;
- }
- } else {
- for (x=loop_count; x >= 0; x-- ) {
- c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
- if ( c!=255)
- *dest = c;
- dest++;
- u += dudx;
- v += dvdx;
- }
- }
- }
- void c_tmap_scanline_lin()
- {
- ubyte *dest;
- uint c;
- int x;
- fix u,v,l,dudx, dvdx, dldx;
- u = fx_u;
- v = fx_v*64;
- dudx = fx_du_dx;
- dvdx = fx_dv_dx*64;
- l = fx_l;
- dldx = fx_dl_dx;
- dest = dest_row_data;
- if (!Transparency_on) {
- for (x=loop_count; x >= 0; x-- ) {
- *dest++ = gr_fade_table[ (l&(0xff00)) + (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ] ];
- l += dldx;
- u += dudx;
- v += dvdx;
- }
- } else {
- for (x=loop_count; x >= 0; x-- ) {
- c = (uint)pixptr[ (f2i(v)&(64*63)) + (f2i(u)&63) ];
- if ( c!=255)
- *dest = gr_fade_table[ (l&(0xff00)) + c ];
- dest++;
- l += dldx;
- u += dudx;
- v += dvdx;
- }
- }
- }
- void c_tmap_scanline_per_nolight()
- {
- ubyte *dest;
- uint c;
- int x;
- fix u,v,z,dudx, dvdx, dzdx;
- u = fx_u;
- v = fx_v*64;
- z = fx_z;
- dudx = fx_du_dx;
- dvdx = fx_dv_dx*64;
- dzdx = fx_dz_dx;
- dest = dest_row_data;
- if (!Transparency_on) {
- for (x=loop_count; x >= 0; x-- ) {
- *dest++ = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
- u += dudx;
- v += dvdx;
- z += dzdx;
- }
- } else {
- for (x=loop_count; x >= 0; x-- ) {
- c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
- if ( c!=255)
- *dest = c;
- dest++;
- u += dudx;
- v += dvdx;
- z += dzdx;
- }
- }
- }
- void c_tmap_scanline_per()
- {
- ubyte *dest;
- uint c;
- int x;
- fix u,v,z,l,dudx, dvdx, dzdx, dldx;
- u = fx_u;
- v = fx_v*64;
- z = fx_z;
- dudx = fx_du_dx;
- dvdx = fx_dv_dx*64;
- dzdx = fx_dz_dx;
- l = fx_l;
- dldx = fx_dl_dx;
- dest = dest_row_data;
- if (!Transparency_on) {
- for (x=loop_count; x >= 0; x-- ) {
- *dest++ = gr_fade_table[ (l&(0xff00)) + (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ] ];
- l += dldx;
- u += dudx;
- v += dvdx;
- z += dzdx;
- }
- } else {
- for (x=loop_count; x >= 0; x-- ) {
- c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
- if ( c!=255)
- *dest = gr_fade_table[ (l&(0xff00)) + c ];
- dest++;
- l += dldx;
- u += dudx;
- v += dvdx;
- z += dzdx;
- }
- }
- }
- #define zonk 1
- void c_tmap_scanline_editor()
- {
- ubyte *dest;
- uint c;
- int x;
- fix u,v,z,dudx, dvdx, dzdx;
- u = fx_u;
- v = fx_v*64;
- z = fx_z;
- dudx = fx_du_dx;
- dvdx = fx_dv_dx*64;
- dzdx = fx_dz_dx;
- dest = dest_row_data;
- if (!Transparency_on) {
- for (x=loop_count; x >= 0; x-- ) {
- *dest++ = zonk;
- //(uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
- u += dudx;
- v += dvdx;
- z += dzdx;
- }
- } else {
- for (x=loop_count; x >= 0; x-- ) {
- c = (uint)pixptr[ ( (v/z)&(64*63) ) + ((u/z)&63) ];
- if ( c!=255)
- *dest = zonk;
- dest++;
- u += dudx;
- v += dvdx;
- z += dzdx;
- }
- }
- }
|