home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / printer / graphpaper / src / src.lha / rastport.c < prev    next >
C/C++ Source or Header  |  1993-04-06  |  2KB  |  90 lines

  1. #include "graph.h"
  2.  
  3. struct BitMap   *bm   = NULL;
  4. struct RastPort *rast = NULL;
  5.  
  6. void cleanup_drawing(void)
  7. {
  8.     int i;
  9.  
  10.     if (bm) {
  11.         for (i=0; i<DEPTH; ++i) {
  12.             if (bm->Planes[i]) {
  13.                 FreeRaster(bm->Planes[i], WIDTH, HEIGHT);
  14.             }
  15.         }
  16.     }
  17. }
  18.  
  19. static int getbitmap(void)
  20. {
  21.     int i;
  22.  
  23.     bm = (struct BitMap *)malloc(sizeof(struct BitMap));
  24.     if (!bm) {
  25.         message("Error: Not enough memory to allocate bitmap.");
  26.         return 0;
  27.     }
  28.     InitBitMap(bm, DEPTH, WIDTH, HEIGHT);
  29.     for (i = 0; i<DEPTH; ++i) {
  30.         if (bm->Planes[i] = (PLANEPTR)AllocRaster(WIDTH, HEIGHT)) { 
  31.             /* clear it */
  32.             BltClear(bm->Planes[i], RASSIZE(WIDTH,HEIGHT), 0);
  33.         } else {
  34.             /* Memory allocation failed */
  35.             message("Error: Not enough memory to allocate raster.");
  36.             return 0;
  37.         }
  38.     }
  39.     /* success */
  40.     return 1;
  41. }
  42.  
  43. /* Experimental.  Where do I get dpi? */
  44. void getprefinfo(void)
  45. {
  46.  
  47.    /* under construction */
  48.    struct Preferences pref;
  49.    GetPrefs(&pref, sizeof(struct Preferences));
  50.    printf("Prefs: \n");
  51.    printf("PrintDensity     %d \n", (int)pref.PrintDensity);
  52.    printf("FontHeight       %d \n", (int)pref.FontHeight);
  53.    printf("BaudRate         %d \n", (int)pref.BaudRate);
  54.    printf("PrintMaxWidth    %d \n", (int)pref.PrintMaxWidth);
  55.    printf("PrintMaxHeight   %d \n", (int)pref.PrintMaxHeight);
  56.    printf("RowSizeChange    %d \n", (int)pref.RowSizeChange);
  57.    printf("ColumnSizeChange %d \n", (int)pref.ColumnSizeChange);
  58. }
  59.  
  60. int getraster(void)
  61. {
  62. #if 0
  63.     getprefinfo();
  64. #endif
  65.     if (getbitmap()) {
  66.         rast = (struct RastPort *)malloc(sizeof(struct RastPort));
  67.         if (rast) {
  68.             InitRastPort(rast);
  69.             SetAPen(rast, 1);
  70.             SetBPen(rast, 0);
  71.             rast->BitMap = bm;
  72.             return 1;
  73.         }
  74.     } else {
  75.         message("Error: not enough memory to allocate RastPort.");
  76.     }
  77.     /* couldn't get raster or bitmap */
  78.     return 0;
  79. }
  80.  
  81. void freeraster(void)
  82. {
  83.     cleanup_drawing();
  84.  
  85.     free(bm);
  86.     rast->BitMap = bm = NULL;
  87.     free(rast);
  88.     rast = NULL;
  89. }
  90.