home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / languages / c / oslib / Examples / p3-549 < prev    next >
Encoding:
Text File  |  1995-02-16  |  1.8 KB  |  65 lines

  1. #include "macros.h"
  2. #include "draw.h"
  3.  
  4. #define PATH_LEN 256
  5.  
  6. static int Path [PATH_LEN/sizeof (int)], Path_Ptr = 0;
  7. static os_error Too_Small = {0, "Insufficient path buffer"};
  8.  
  9. void add (int value)
  10.  
  11. {  if (Path_Ptr + 1 > COUNT (Path))
  12.       os_generate_error (&Too_Small);
  13.  
  14.    Path [Path_Ptr++] = value;
  15. }
  16.  
  17. int main (void)
  18.  
  19. {  int xsize, ysize, xscale, yscale;
  20.    os_trfm trfm;
  21.    draw_path *path = (draw_path *) Path;
  22.    draw_line_style line_style;
  23.  
  24.    xsize = 210000, ysize = 160000;
  25.  
  26.    xscale = 1280*256/xsize << 16;
  27.    yscale = 1024*256/ysize << 16;
  28.  
  29.    trfm.entries [0] [0] = xscale;
  30.    trfm.entries [0] [1] = 0;
  31.    trfm.entries [1] [0] = 0;
  32.    trfm.entries [1] [1] = yscale;
  33.    trfm.entries [2] [0] = 0;
  34.    trfm.entries [2] [1] = 0;
  35.  
  36.    line_style.join_style = draw_JOIN_BEVELLED;
  37.    line_style.end_cap_style = draw_CAP_ROUND;
  38.    line_style.start_cap_style = draw_CAP_ROUND;
  39.    line_style.reserved = 0;
  40.    line_style.mitre_limit = 0;
  41.    line_style.start_cap_width = 0;
  42.    line_style.start_cap_length = 0;
  43.    line_style.end_cap_width = 0;
  44.    line_style.end_cap_length = 0;
  45.  
  46.    add (draw_MOVE_TO), add (80000), add (80000);
  47.    add (draw_LINE_TO), add (80000), add (120000);
  48.    add (draw_LINE_TO), add (170000), add (120000);
  49.    add (draw_LINE_TO), add (170000), add (80000);
  50.    add (draw_MOVE_TO), add (50000), add (50000);
  51.    add (draw_BEZIER_TO), add (80000), add (80000),
  52.          add (85000), add (30000), add (50000), add (60000);
  53.    add (draw_CLOSE_GAP);
  54.    add (draw_END_PATH), add (PATH_LEN - (Path_Ptr + 1)*sizeof (int));
  55.    
  56.    os_writen ("\x1D\0\0\0\0", 5);
  57.    draw_stroke (path, NONE, &trfm, xsize/640, 5000, &line_style, NULL);
  58.  
  59.    trfm.entries [2] [0] = 60 << 8;
  60.    trfm.entries [2] [1] = -100 << 8;
  61.    draw_stroke (path, NONE, &trfm, xsize/640, 2500, &line_style, NULL);
  62.  
  63.    return 0;
  64. }
  65.