TESTG.C 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. /*
  2. THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  3. SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
  4. END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  5. ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  6. IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  7. SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  8. FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  9. CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
  10. AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
  11. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
  12. */
  13. /*
  14. * $Source: f:/miner/source/2d/rcs/testg.c $
  15. * $Revision: 1.19 $
  16. * $Author: john $
  17. * $Date: 1994/09/12 19:28:10 $
  18. *
  19. * Program to test the graphics package.
  20. *
  21. */
  22. #include <stdlib.h>
  23. #include <stdio.h>
  24. #include <conio.h>
  25. #include <math.h>
  26. #include <string.h>
  27. #include "gr.h"
  28. #include "key.h"
  29. #include "timer.h"
  30. #include "grdef.h"
  31. #include "mono.h"
  32. #include "fix.h"
  33. #include "iff.h"
  34. #include "palette.h"
  35. #include "rle.h"
  36. #include "pcx.h"
  37. void ReadBitmap( char * filename, grs_bitmap * bmp, ubyte * palette )
  38. {
  39. int iff_error;
  40. iff_error=iff_read_bitmap( filename, bmp, BM_LINEAR, palette );
  41. if (iff_error != IFF_NO_ERROR) {
  42. printf("Error loading bitmap <%s>, error=%d",filename,iff_error);
  43. exit(1);
  44. }
  45. }
  46. ubyte getpixel( grs_bitmap * bmp, int x, int y )
  47. {
  48. return bmp->bm_data[y*320+x];
  49. }
  50. #define EPSILON (0.0000001)
  51. float cfactor = 1.57;
  52. int myx = 0;
  53. ubyte getpixel1( grs_bitmap * bmp, int x, int y )
  54. {
  55. float xmid, ymid, xx, yy, delta, dist, factor;
  56. xmid = (bmp->bm_w - 1 ) / 2.0; xx = x - xmid;
  57. ymid = (bmp->bm_h - 1 ) / 2.0; yy = y - ymid;
  58. delta = xx*xx + yy*yy;
  59. if ( delta < EPSILON )
  60. dist = 0.0;
  61. else
  62. dist = 1.01 * sqrt(delta) / min(xmid,ymid);
  63. if ( dist > 1.0 )
  64. return 0;
  65. else if ( dist < EPSILON )
  66. factor = 1.0 / cfactor;
  67. else
  68. factor = asin(dist) / (dist * cfactor );
  69. xx = xx * factor; yy = yy * factor;
  70. x = xx + xmid + myx; y = yy+ymid;
  71. x = x % bmp->bm_w;
  72. return bmp->bm_data[y*320+x];
  73. }
  74. void circle_in_bitmap( grs_bitmap * bmp )
  75. {
  76. int i, x, y;
  77. for ( i=0; i < 10; i++ ) {
  78. for ( y=0; y<200; y++ ) {
  79. for ( x=0; x<319; x++ ) {
  80. gr_setcolor(getpixel1(bmp,x,y));
  81. gr_pixel( x, y );
  82. }
  83. }
  84. myx += 2;
  85. getch();
  86. }
  87. }
  88. int descent_critical_error;
  89. main(int argc, char * argv[] )
  90. {
  91. int x, y;
  92. grs_bitmap bmp;
  93. grs_bitmap bmp1;
  94. ubyte palette[768];
  95. minit();
  96. printf( "Reading %s...\n", "john.pcx" );
  97. gr_init( SM_320x200U );
  98. bmp.bm_data = NULL;
  99. pcx_read_bitmap( "big.pcx", &bmp, BM_LINEAR, palette );
  100. gr_palette_load( palette );
  101. key_init();
  102. x = y = 0;
  103. while(!keyd_pressed[KEY_ESC]) {
  104. y += keyd_pressed[KEY_UP] - keyd_pressed[KEY_DOWN];
  105. x += keyd_pressed[KEY_LEFT] - keyd_pressed[KEY_RIGHT];
  106. gr_bitmap( x, y, &bmp );
  107. }
  108. }
  109.