4 @implementation GnuView
6 static NXCoord xsize= NEXT_XMAX;
7 static NXCoord ysize= NEXT_YMAX;
10 static void setprintsize();
12 - initFrame: (NXRect *)rects
14 [super initFrame:rects];
23 /* This is here to fix NeXT bug # 21973: failure to free D.O. memory */
24 /* Note: personally I don't think this fixes it. */
27 if (PSstring) free(PSstring);
34 - executePS:(char *) PStext
36 if (PSstring) free(PSstring);
39 [window makeKeyAndOrderFront:self];
47 - drawSelf:(const NXRect *) rects : (int) rectCount
51 d = DPSGetCurrentContext();
57 /* scale to gnuplot coords */
58 [self setDrawSize:xsize:ysize];
64 if (PSstring) DPSWritePostScript(d, PSstring, strlen(PSstring));
75 [super printPSCode:sender];
81 static void setprintsize()
89 d = DPSGetCurrentContext();
90 prInfo = [NXApp printInfo];
91 paperRect = (NXRect *) [prInfo paperRect];
93 width = paperRect->size.width;
94 height = paperRect->size.height;
96 /* Leave margins on paper */
98 DPSPrintf(d, "grestore\ngrestore\ngrestore\n");
101 if ([prInfo orientation] == NX_LANDSCAPE) {
102 DPSPrintf(d, "-90 rotate\n");
103 DPSPrintf(d, "%g 0 translate\n", -1 * paperRect->size.width);
104 DPSPrintf(d, "0 %g translate\n", paperRect->size.height/100);
106 xscale = width/NEXT_XMAX*0.95;
107 yscale = height/NEXT_YMAX*0.9;
108 DPSPrintf(d, "%g %g scale\n", xscale, yscale);
111 xscale = width/NEXT_XMAX*0.95;
112 yscale = height/NEXT_YMAX*0.95;
113 DPSPrintf(d, "%g %g scale\n", xscale, yscale);
114 DPSPrintf(d, "0 %g translate\n", paperRect->size.height/100);
117 DPSPrintf(d, "gsave\ngsave\n");