freebsd-ports/math/xplot/files/patch-ab
Pav Lucistnik 4b1d4f5c7d - Unbreak on 5.x
PR:		ports/59488
Submitted by:	Samy Al Bahra <samy@kerneled.com>
Approved by:	adamw (mentor)
2003-11-20 09:49:00 +00:00

389 lines
12 KiB
Text

--- xplot.c.orig Wed Nov 19 18:35:43 2003
+++ xplot.c Wed Nov 19 18:35:42 2003
@@ -46,7 +46,7 @@
#include <X11/cursorfont.h>
#include <math.h>
#include <ctype.h>
-#include <malloc.h>
+#include <stdlib.h>
#include "xplot.h"
#include "coord.h"
@@ -813,9 +813,7 @@
static struct dpy_info {
unsigned long line_plane_mask;
Colormap clr_map;
- XColor clr;
- unsigned long pixel[NCOLORS];
- int Colors[NCOLORS];
+ unsigned long Colors[NCOLORS];
int virgin;
Atom xplot_nagle_atom;
Display *saved_dpy;
@@ -842,38 +840,37 @@
/* Allocate some color cells */
if (d_i[d].virgin ) {
+ int usewhite;
+
d_i[d].virgin = 0;
d_i[d].xplot_nagle_atom = XInternAtom(pl->dpy, "XPLOT_NAGLE", False);
d_i[d].clr_map = DefaultColormap(pl->dpy, DefaultScreen(pl->dpy));
- if ( option_mono ||
+ if ( option_mono ) {
+ usewhite = 1;
+ } else {
+ usewhite = 0;
- ! XAllocColorCells(pl->dpy,
- d_i[d].clr_map, 0,
- &d_i[d].line_plane_mask, 1,
- d_i[d].pixel, NColors) )
- {
- /* probably only one bit plane, or all the color cells are taken */
-#if 1
- if (! option_mono)
- fputs("XAllocColorCells failed, will only have one plot color\n",
- stderr);
-#endif
- for ( i = 0; i < NColors; i++) {
- d_i[d].Colors[i] = WhitePixelOfScreen(pl->screen);
- }
- } else {
- for (i = 0; i < NColors; i++) {
- XParseColor(pl->dpy, d_i[d].clr_map, ColorNames[i], &d_i[d].clr);
- d_i[d].clr.pixel = d_i[d].pixel[i];
- XStoreColor (pl->dpy, d_i[d].clr_map, &d_i[d].clr);
- d_i[d].clr.pixel |= d_i[d].line_plane_mask;
- XStoreColor (pl->dpy, d_i[d].clr_map, &d_i[d].clr);
- d_i[d].Colors[i] = d_i[d].clr.pixel;
+ for (i = 0; i < NColors; i++) {
+ XColor alloc, exact;
+
+ if (XAllocNamedColor(pl->dpy, d_i[d].clr_map, ColorNames[i],
+ &alloc, &exact) == 0) {
+ XFreeColors(pl->dpy, d_i[d].clr_map, d_i[d].Colors, i, NULL);
+ usewhite = 1;
+ fprintf(stderr, "unable to allocate color \"%s\", falling back to only one plot color\n", ColorNames[i]);
+ break;
}
+ d_i[d].Colors[i] = alloc.pixel;
}
+ }
+ if ( usewhite ) {
+ for ( i = 0; i < NColors; i++) {
+ d_i[d].Colors[i] = WhitePixelOfScreen(pl->screen);
+ }
+ }
}
for (i = 0; i < NColors; i++) {
@@ -3154,11 +3151,7 @@
* GDT: 950310: put dot font hack in.
*/
-#ifdef SDO
fputs("%!PS\n", fp);
-#else
- fputs("%!PostScript\n", fp);
-#endif
/* Bracket the PS program with gsave/grestore so these page descriptions
can be concatenated, then printed. */
fputs("%%BoundingBox: ", fp);
@@ -3168,146 +3161,146 @@
fputs("gsave\n", fp);
/* Set up scale */
- fputs("
-%/sign { dup 0 gt { pop 1 } { 0 lt { -1 } { 0 } ifelse } ifelse } def
-
-%matrix currentmatrix
-%aload pop
-%6 2 roll sign
-%6 1 roll sign
-%6 1 roll sign
-%6 1 roll sign
-%6 1 roll
-%matrix astore setmatrix
-
-0.12 dup scale
-
+ fputs("\n\
+%/sign { dup 0 gt { pop 1 } { 0 lt { -1 } { 0 } ifelse } ifelse } def\n\
+\n\
+%matrix currentmatrix\n\
+%aload pop\n\
+%6 2 roll sign\n\
+%6 1 roll sign\n\
+%6 1 roll sign\n\
+%6 1 roll sign\n\
+%6 1 roll\n\
+%matrix astore setmatrix\n\
+\n\
+0.12 dup scale\n\
+\n\
", fp);
fprintf(fp, "/theta {%d mul} def\n", ( (state == PRINTING) ? 4 : 2));
/* Set up units of measurement. */
fprintf(fp, "/inch {%d mul} def\n", PER_INCH);
- fputs("/pt {inch 72 div} def
-%
-%
-/tfont /Times-Bold findfont 12 pt scalefont def
-%
-/lfont /Times-Roman findfont 10 pt scalefont def
-%
-%tfont /FontBBox get
-% aload pop
-% tfont /FontMatrix get dtransform pop /tascent exch def
-% tfont /FontMatrix get dtransform pop neg /tdescent exch def
-lfont /FontBBox get
- aload pop
- lfont /FontMatrix get dtransform pop 0.65 mul /lascent exch def
- lfont /FontMatrix get dtransform pop neg /ldescent exch def
-% begin gdt mod
-% define font for xplot characters
-/BuildCharDict 10 dict def
-/Xplotfontdict 7 dict def
-Xplotfontdict begin
- /FontType 3 def
- /FontMatrix [1 0 0 1 0 0] def
- /FontBBox [-1 -1 1 1]def
- /Encoding 256 array def
- 0 1 255 {Encoding exch /.notdef put} for
- Encoding (.) 0 get /xplotfontdot put
- /CharacterDefs 3 dict def
- CharacterDefs /.notdef {} put
- CharacterDefs /xplotfontdot
- { newpath
- 0 0 1 0 360 arc fill
- } put
- /BuildChar
- { BuildCharDict begin
- /char exch def
- /fontdict exch def
- /charname fontdict /Encoding get
- char get def
- /charproc fontdict /CharacterDefs
- get charname get def
- 1 0 -1 -1 1 1 setcachedevice
- gsave charproc grestore
- end
- } def
-end
-/XplotFont Xplotfontdict definefont pop
-% scale font according to theta
-/dotsetup { /dotfont /XplotFont findfont 4 theta scalefont def } def
-% DONE gdt mod
-%define procedures for each xplot primitive.
-% x y x --
-/x {moveto 8 8 rlineto -16 -16 rlineto
- 8 8 rmoveto
- -8 8 rlineto 16 -16 rlineto} def
-% x y + --
-/+ {moveto 0 8 rlineto 0 -16 rlineto
- 0 8 rmoveto
- -8 0 rlineto 16 0 rlineto} def
-% x y ?arrow --
-/darrow {moveto 8 theta 8 theta rmoveto -8 theta -8 theta rlineto
- -8 theta 8 theta rlineto } def
-/uarrow {moveto -8 theta -8 theta rmoveto 8 theta 8 theta rlineto
- 8 theta -8 theta rlineto } def
-/rarrow {moveto -8 theta 8 theta rmoveto 8 theta -8 theta rlineto
- -8 theta -8 theta rlineto } def
-/larrow {moveto 8 theta 8 theta rmoveto -8 theta -8 theta rlineto
- 8 theta -8 theta rlineto } def
-%x y x y line --
-/line {moveto lineto} def
-%x y dot --
-% begin gdt mod
-/dot { moveto dotfont setfont (.) show } def
-%/dot {stroke 8 theta 0 360 arc fill} def
-% end gdt mod
-%x y plus --
-/plus {moveto -16 theta 0 rmoveto 16 theta 0 rlineto
- -16 theta -16 theta rmoveto 0 16 theta rlineto} def
-%x y box --
-/box {moveto -8 theta -8 theta rmoveto
- 16 theta 0 rlineto
- 0 16 theta rlineto
- -16 theta 0 rlineto
- 0 -16 theta rlineto} def
-%x y diamond --
-/diamond { moveto 0 theta 24 theta rmoveto
- -24 theta -24 theta rlineto
- 24 theta -24 theta rlineto
- 24 theta 24 theta rlineto
- -24 theta 24 theta rlineto} def
-%x y ?tick --
-/utick {moveto 0 6 theta rlineto} def
-/dtick {moveto 0 -6 theta rlineto} def
-/ltick {moveto -6 theta 0 rlineto} def
-/rtick {moveto 6 theta 0 rlineto} def
-/htick {moveto -6 theta 0 rmoveto 12 theta 0 rlineto} def
-/vtick {moveto 0 -6 theta rmoveto 0 12 theta rlineto} def
-%Separate functions for each text position.
-%x y string ?text --
-/space 6 pt def
-% Set the font, figure out the width.
-% x y string tsetup string x width y
-/tsetup {lfont setfont dup stringwidth pop exch
- 4 1 roll exch} def
-%CENTER
-/ctext {tsetup lascent 2 div sub
- 3 1 roll 2 div sub exch
-% stack should now be string x y
- moveto show} def
-%ABOVE
-/atext {tsetup space ldescent add add
- 3 1 roll 2 div sub exch moveto show} def
-%BELOW
-/btext {tsetup space lascent add sub
- 3 1 roll 2 div sub exch moveto show} def
-%TO_THE_LEFT
-/ltext {tsetup lascent 2 div sub
- 3 1 roll space add sub exch moveto show} def
-%TO_THE_RIGHT
-/rtext {tsetup lascent 2 div sub
- 3 1 roll pop space add exch moveto show} def
+ fputs("/pt {inch 72 div} def\n\
+%\n\
+%\n\
+/tfont /Times-Bold findfont 12 pt scalefont def\n\
+%\n\
+/lfont /Times-Roman findfont 10 pt scalefont def\n\
+%\n\
+%tfont /FontBBox get\n\
+% aload pop\n\
+% tfont /FontMatrix get dtransform pop /tascent exch def\n\
+% tfont /FontMatrix get dtransform pop neg /tdescent exch def\n\
+lfont /FontBBox get\n\
+ aload pop\n\
+ lfont /FontMatrix get dtransform pop 0.65 mul /lascent exch def\n\
+ lfont /FontMatrix get dtransform pop neg /ldescent exch def\n\
+% begin gdt mod\n\
+% define font for xplot characters\n\
+/BuildCharDict 10 dict def\n\
+/Xplotfontdict 7 dict def\n\
+Xplotfontdict begin\n\
+ /FontType 3 def\n\
+ /FontMatrix [1 0 0 1 0 0] def\n\
+ /FontBBox [-1 -1 1 1]def\n\
+ /Encoding 256 array def\n\
+ 0 1 255 {Encoding exch /.notdef put} for\n\
+ Encoding (.) 0 get /xplotfontdot put\n\
+ /CharacterDefs 3 dict def\n\
+ CharacterDefs /.notdef {} put\n\
+ CharacterDefs /xplotfontdot\n\
+ { newpath\n\
+ 0 0 1 0 360 arc fill\n\
+ } put\n\
+ /BuildChar\n\
+ { BuildCharDict begin\n\
+ /char exch def\n\
+ /fontdict exch def\n\
+ /charname fontdict /Encoding get\n\
+ char get def\n\
+ /charproc fontdict /CharacterDefs\n\
+ get charname get def\n\
+ 1 0 -1 -1 1 1 setcachedevice\n\
+ gsave charproc grestore\n\
+ end\n\
+ } defn\n\
+end\n\
+/XplotFont Xplotfontdict definefont pop\n\
+% scale font according to theta\n\
+/dotsetup { /dotfont /XplotFont findfont 4 theta scalefont def } def\n\
+% DONE gdt mod\n\
+%define procedures for each xplot primitive.\n\
+% x y x --\n\
+/x {moveto 8 8 rlineto -16 -16 rlineto\n\
+ 8 8 rmoveto\n\
+ -8 8 rlineto 16 -16 rlineto} def\n\
+% x y + --\n\
+/+ {moveto 0 8 rlineto 0 -16 rlineto\n\
+ 0 8 rmoveto\n\
+ -8 0 rlineto 16 0 rlineto} def\n\
+% x y ?arrow --\n\
+/darrow {moveto 8 theta 8 theta rmoveto -8 theta -8 theta rlineto\n\
+ -8 theta 8 theta rlineto } def\n\
+/uarrow {moveto -8 theta -8 theta rmoveto 8 theta 8 theta rlineto\n\
+ 8 theta -8 theta rlineto } def\n\
+/rarrow {moveto -8 theta 8 theta rmoveto 8 theta -8 theta rlineto\n\
+ -8 theta -8 theta rlineto } def\n\
+/larrow {moveto 8 theta 8 theta rmoveto -8 theta -8 theta rlineto\n\
+ 8 theta -8 theta rlineto } def\n\
+%x y x y line --\n\
+/line {moveto lineto} def\n\
+%x y dot --\n\
+% begin gdt mod\n\
+/dot { moveto dotfont setfont (.) show } def\n\
+%/dot {stroke 8 theta 0 360 arc fill} def\n\
+% end gdt mod\n\
+%x y plus --\n\
+/plus {moveto -16 theta 0 rmoveto 16 theta 0 rlineto\n\
+ -16 theta -16 theta rmoveto 0 16 theta rlineto} def\n\
+%x y box --\n\
+/box {moveto -8 theta -8 theta rmoveto\n\
+ 16 theta 0 rlineto\n\
+ 0 16 theta rlineto\n\
+ -16 theta 0 rlineto\n\
+ 0 -16 theta rlineto} def\n\
+%x y diamond --\n\
+/diamond { moveto 0 theta 24 theta rmoveto\n\
+ -24 theta -24 theta rlineto\n\
+ 24 theta -24 theta rlineto\n\
+ 24 theta 24 theta rlineto\n\
+ -24 theta 24 theta rlineto} def\n\
+%x y ?tick --\n\
+/utick {moveto 0 6 theta rlineto} def\n\
+/dtick {moveto 0 -6 theta rlineto} def\n\
+/ltick {moveto -6 theta 0 rlineto} def\n\
+/rtick {moveto 6 theta 0 rlineto} def\n\
+/htick {moveto -6 theta 0 rmoveto 12 theta 0 rlineto} def\n\
+/vtick {moveto 0 -6 theta rmoveto 0 12 theta rlineto} def\n\
+%Separate functions for each text position.\n\
+%x y string ?text --\n\
+/space 6 pt def\n\
+% Set the font, figure out the width.\n\
+% x y string tsetup string x width y\n\
+/tsetup {lfont setfont dup stringwidth pop exch\n\
+ 4 1 roll exch} def\n\
+%CENTER\n\
+/ctext {tsetup lascent 2 div sub\n\
+ 3 1 roll 2 div sub exch\n\
+% stack should now be string x y\n\
+ moveto show} def\n\
+%ABOVE\n\
+/atext {tsetup space ldescent add add\n\
+ 3 1 roll 2 div sub exch moveto show} def\n\
+%BELOW\n\
+/btext {tsetup space lascent add sub\n\
+ 3 1 roll 2 div sub exch moveto show} def\n\
+%TO_THE_LEFT\n\
+/ltext {tsetup lascent 2 div sub\n\
+ 3 1 roll space add sub exch moveto show} def\n\
+%TO_THE_RIGHT\n\
+/rtext {tsetup lascent 2 div sub\n\
+ 3 1 roll pop space add exch moveto show} def\n\
", fp);
{
@@ -3354,9 +3347,9 @@
if (state == PRINTING) {
fputs("-90 rotate -11 inch 0 inch translate\n", fp);
} else {
- fputs("
-/notintex { currentdict userdict eq } def
-notintex { 1.5 inch 5.0 inch translate } if
+ fputs("\n\
+/notintex { currentdict userdict eq } def\n\
+notintex { 1.5 inch 5.0 inch translate } if\n\
", fp);
}
/* Move origin to create left & bottom margins. */