home *** CD-ROM | disk | FTP | other *** search
/ Photo CD Demo 1 / Demo.bin / gle / gle / bitmap.h < prev    next >
C/C++ Source or Header  |  1992-11-29  |  3KB  |  123 lines

  1. #ifdef __TURBOC__
  2. #include <alloc.h>
  3. #endif
  4. #include "all.h"
  5. #include <math.h>
  6. #include "core.h"
  7. #include "mygraph.h"
  8. #include "mydev.h"
  9.  
  10. #ifndef __TURBOC__
  11. #define huge
  12. #endif
  13. #define true (!false)
  14. #define false 0
  15. unsigned char (huge *bitmap)[NXBITS/8+2];
  16. int d_open(double x, double y);
  17. extern int gdebug;
  18. extern int nxbits,nybits;
  19. #define dbg if (gdebug==true)
  20. int bitmap_print(void);
  21. int bitmap_free(void);
  22. int bitmap_alloc(void);
  23. int bitmap_paint(int row, int x1, int x2);
  24. int printmem(char *x,int n);
  25.  
  26. #ifdef aix
  27. void pprintf(va_list);
  28. #else
  29. void pprintf(va_list arg_list, ...);
  30. #endif
  31. int dvitype(void);
  32.  
  33.  
  34.  
  35. /*--------------------------------------------------------------*/
  36. /*    Bitmap output for EPSON printers             */
  37. /*--------------------------------------------------------------*/
  38. int bitmap_print(void);
  39. char *bitmap_line(int y);
  40. int bitmap_size(int *xbits, int *ybits, double *width, double *height);
  41. bitmap_size(int *xbits, int *ybits, double *width, double *height)
  42. {
  43.     *xbits = NXBITS; *ybits = NYBITS; *width = XSIZECM; *height = YSIZECM;
  44. }
  45. int print_row(int i);
  46.  
  47. bitmap_free(void)
  48. {
  49.     if (bitmap==NULL) return;
  50. #ifdef __TURBOC__
  51.     farfree(bitmap);
  52. #else
  53.     free(bitmap);
  54. #endif
  55.     bitmap = 0;
  56. }
  57. bitmap_alloc(void)
  58. {
  59.     long bsize;
  60.     if (bitmap!=NULL) return;
  61.     bsize = ((long) nybits+1)*(NXBITS/8+2);
  62. #ifdef __TURBOC__
  63.     bitmap = farcalloc(nybits+1,NXBITS/8 +2);
  64.     printf("Core memory left %ld,  just used %ld  %d %d \n"
  65.         ,coreleft(),bsize,NXBITS,nybits);
  66. #else
  67.     bitmap = calloc(nybits+1,(NXBITS/8+2));
  68. #endif
  69.     dbg printf("bitmap allocated %p \n",bitmap);
  70.     if (bitmap==0) gle_abort("Not able to allocate bitmap \n");
  71. }
  72.  
  73.  
  74. unsigned int grey_bits[] = {0x0000, 0x0200, 0x0802, 0x0a02,
  75.         0x5050, 0x5250, 0x5852, 0x5a52,
  76.         0xa5a5, 0xa7a5, 0xada7, 0xafa7,
  77.         0xf5f5, 0xf7f5, 0xfdf7, 0xfff7, 0xffff};
  78. unsigned int cur_bits[4];
  79. #define NGREY 17
  80. set_grey(float f)
  81. {
  82.     int i,j,m;
  83.     i = (1.0-f)*(NGREY-.8);
  84.     m = grey_bits[i];
  85.     for (j=0; j<4; j++) {
  86.         cur_bits[j] = m & 0x000f;
  87.         m = m >> 4;
  88.     }
  89. }
  90. bitmap_paint(int row, int x1, int x2)
  91. {
  92.     int i,xm,ym,xadd=0;
  93.     x1-=1; x2-=1;
  94.     if (x1<0) x1 = 0;
  95.     if (x2>=nxbits) x2 = nxbits-1;
  96.     dbg printf("paint row,%d   %d %d \n",row,x1,x2);
  97.     ym = row % 4;
  98.     if ((row & 4)>0) xadd = 1;
  99.     for (;x1<=x2;x1++) {
  100.         xm = 1 << ((x1+xadd) % 4);
  101.         if ((cur_bits[ym] & xm)!=0) {
  102.             i = bitmap[row][x1/8];
  103.             bitmap[row][x1/8] = i | (1 << (x1 % 8));
  104.         }
  105.     }
  106. }
  107. char *bitmap_line(int y)
  108. {
  109.     return &bitmap[y][0];
  110. }
  111. bitmap_pixel(int x, int y)
  112. {
  113.     static char *line;
  114.     static int ly= -2;
  115. /*    if (x<0 || x>nxbits || y < 0 || y > nybits) return; */
  116.     if (ly!=y) line = &bitmap[y][0];
  117.     line[x/8] |= (1 << (x % 8));
  118.     ly = y;
  119. }
  120.  
  121.  
  122.  
  123.