home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / dv_x / dvix.zip / BITORDER.H < prev    next >
C/C++ Source or Header  |  1992-10-05  |  2KB  |  59 lines

  1. /* bitorder.h: how to pack the bits */
  2.  
  3. #ifdef X11DVI
  4.  
  5. /* definitions for X11: pack into char, top row first */
  6. #define BYTE            unsigned char
  7. #define BYTESIZE        8
  8. #define BYTEMASK        (BYTESIZE-1)
  9. #define BYTESHIFT       3
  10. /* position of start of row n: top row first */
  11. #define row_start(n) (&(bits[(max_n-n)*rowbytes]))
  12.  
  13. #else /* ~X11DVI */
  14. #ifdef XDVI
  15.  
  16. /* definitions for X11: pack into short, top row first */
  17. #define BYTE            unsigned short
  18. #define BYTESIZE        16
  19. #define BYTEMASK        (BYTESIZE-1)
  20. #define BYTESHIFT       4
  21. /* position of start of row n: top row first */
  22. #define row_start(n) (&(bits[(max_n-n)*rowbytes]))
  23.  
  24. #else /* ~X11DVI && ~XDVI */
  25.  
  26. /* definitions for Postscript: pack into bytes, MSBit/bottom row first */
  27. #define BYTE            unsigned char
  28. #define BYTESIZE        8
  29. #define BYTEMASK        (BYTESIZE-1)
  30. #define BYTESHIFT       3
  31. #undef LSBITFIRST
  32. #undef MSBITFIRST
  33. #define MSBITFIRST
  34. /* position of start of row n: bottom row first */
  35. #define row_start(n) (&(bits[(n-min_n)*rowbytes]))
  36.  
  37. #endif
  38. #endif
  39.  
  40. #ifdef MSBITFIRST
  41. /* bit within BYTE for a given m: MSBit first */
  42. #define m_bit(m) (BYTEMASK-(m-min_m)&BYTEMASK)
  43. #define BITORDER MSBFirst
  44. #else
  45. /* bit within BYTE for a given m: LSBit first */
  46. #define m_bit(m) ((m-min_m)&BYTEMASK)
  47. #define BITORDER LSBFirst
  48. #endif
  49.  
  50. /* BYTE within within a row containing bit m */
  51. #define m_byte(m) ((m-min_m)>>BYTESHIFT)
  52.  
  53. #ifdef MSBYTEFIRST
  54. #define BYTEORDER MSBFirst
  55. #else
  56. #define BYTEORDER LSBFirst
  57. #endif
  58.  
  59.