This is preferences.c in view mode; [Download] [Up]
#include "plplot.h" #include <stdio.h> static int orient=0, curwid; static long bmapx, bmapy, bmapxmax, bmapymax, xdpi, ydpi; static long dwidth, dheight; void prefsetup(xddpi, yddpi, xwid, ywid) int xwid, ywid; double xddpi, yddpi; { /* Ignore these and use preferences data instead. */ } void preforient(ori) int ori; { orient = ori; } void prefselect(file) FILE *file; { } /* Most of the code is in plsupport.c where it is shared with the menu selection printer dump. */ void prefinit() { char line[10]; int mode, openprinter(), mapinit(), queryprint(); void closeprinter(); if(openprinter()) plexit(""); mode = queryprint(&bmapx, &bmapy, &bmapxmax, &bmapymax, &xdpi, &ydpi); /* If mode == 1 we want to adjust the bitmap size so that the aspect ratio is maintained. */ if(mode) { if((float)bmapxmax*bmapy > (float)bmapymax*bmapx) bmapy = (int)(((float)bmapx*bmapymax)/bmapxmax + .5); else bmapx = (int)(((float)bmapy*bmapxmax)/bmapymax + .5); } /* Leave a little space for pen width. */ dwidth = bmapx - 2; dheight = bmapy - 2; if(!orient) { setpxl((double)(ydpi/25.4), (double)(xdpi/25.4)); setphy(0,bmapymax,0,bmapxmax); } else { setpxl((double)(xdpi/25.4), (double)(ydpi/25.4)); setphy(0,bmapxmax,0,bmapymax); } scol(1); swid(1); smod(0); /* Allocate bitmap and initial for line drawing */ if(mapinit(bmapx, bmapy)) { closeprinter(); plexit(""); } } void preftext() { } void prefgraph() { } void prefclear() { void ejectpage(), dmpport(); dmpport(0L,bmapx,bmapy); /* Eject the page. */ ejectpage(); } void prefpage() { void mapclear(); mapclear(); } void prefeop() { } void prefwidth(width) int width; { if(width < 1) curwid = 1; else if(width > 3) curwid = 3; else curwid = width; } void prefcolor(color) int color; { } void prefline(x1,y1,x2,y2) int x1, y1, x2, y2; { long xn1, yn1, xn2, yn2; void mapline(); if(!orient) { xn1 = (x1*dheight)/bmapymax; yn1 = (y1*dwidth)/bmapxmax; xn2 = (x2*dheight)/bmapymax; yn2 = (y2*dwidth)/bmapxmax; switch(curwid) { case 3: mapline(yn1,xn1,yn2,xn2); case 2: mapline(yn1+2,xn1+2,yn2+2,xn2+2); case 1: default: mapline(yn1+1,xn1+1,yn2+1,xn2+1); } } else { xn1 = (x1*dwidth)/bmapxmax; yn1 = (y1*dheight)/bmapymax; xn2 = (x2*dwidth)/bmapxmax; yn2 = (y2*dheight)/bmapymax; switch(curwid) { case 3: mapline(xn1,dheight-yn1,xn2,dheight-yn2); case 2: mapline(xn1+2,dheight-yn1+2,xn2+2,dheight-yn2+2); case 1: default: mapline(xn1+1,dheight-yn1+1,xn2+1,dheight-yn2+1); } } } void preftidy() { void dmpport(), mapfree(), closeprinter(); dmpport(0L,bmapx,bmapy); mapfree(); closeprinter(); } void prefcwin() { } void prefgwin() { }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.