History

Plan 9 from Bell Labs Second Edition 1995-04-05

David du Colombier committed 31 years ago2e-1995-04-05

Commit 219b2ee1 parent bd389b311749 files · +2555453 −1889727Browse files

Showing the changes to sys/src/cmd/plot/libplot (3 of 11749 files). Show all

Unified · Split

3 files
  1. sys/src/cmd/plot/libplot/machdep.c +110 −1
  2. sys/src/cmd/plot/libplot/mplot.h +10 −9
  3. sys/src/cmd/plot/libplot/ppause.c +1 −1
sys/src/cmd/plot/libplot/machdep.c+110−1
@@ -44,6 +44,110 @@ void m_vector(int x0, int y0, int x1, int y1, int c){ · 43 unmodified lines
44 if(c>(1<<(1<<screen.ldepth))-1) c=(2<<screen.ldepth)-1;44 if(c>(1<<(1<<screen.ldepth))-1) c=(2<<screen.ldepth)-1;
45 segment(offscreen, Pt(x0, y0), Pt(x1, y1), c, S);45 segment(offscreen, Pt(x0, y0), Pt(x1, y1), c, S);
46}46}
47Rectangle scr;
48int scrset=0;
49char *scanint(char *s, int *n){
50 while(*s<'0' || '9'<*s){
51 if(*s=='\0'){
52 fprint(2, "plot: bad -Wxmin,ymin,xmax,ymax\n");
53 exits("bad arg");
54 }
55 s++;
56 }
57 *n=0;
58 while('0'<=*s && *s<='9'){
59 *n=*n*10+*s-'0';
60 s++;
61 }
62 return s;
63}
64void setwindow(char *s){
65 s=scanint(s, &scr.min.x);
66 s=scanint(s, &scr.min.y);
67 s=scanint(s, &scr.max.x);
68 scanint(s, &scr.max.y);
69 scrset=1;
70}
71Rectangle getscr(void){
72 int fd;
73 char buf[12*5];
74 fd=open("/dev/screen", OREAD);
75 if(fd==-1) fd=open("/mnt/term/dev/screen", OREAD);
76 if(fd==-1) return Rect(0,0,1024,1024);
77 if(read(fd, buf, sizeof buf)!=sizeof buf){
78 fprint(2, "Can't read /dev/screen: %r\n");
79 exits("screen read");
80 }
81 return Rect(atoi(buf+12), atoi(buf+24), atoi(buf+36), atoi(buf+48));
82}
83char *rdenv(char *name){
84 char *v;
85 int fd, size;
86 fd=open(name, OREAD);
87 if(fd<0) return 0;
88 size=seek(fd, 0, 2);
89 v=malloc(size+1);
90 if(v==0){
91 fprint(2, "Can't malloc: %r\n");
92 exits("no mem");
93 }
94 seek(fd, 0, 0);
95 read(fd, v, size);
96 v[size]=0;
97 close(fd);
98 return v;
99}
100void winit(void (*errfun)(char *), char *font, char *label, Rectangle r){
101 char *srv, *mntsrv;
102 char spec[100];
103 int srvfd, cons, pid;
104 switch(rfork(RFFDG|RFPROC|RFNAMEG|RFENVG|RFNOTEG|RFNOWAIT)){
105 case -1:
106 fprint(2, "Can't fork: %r\n");
107 exits("no fork");
108 case 0:
109 break;
110 default:
111 exits(0);
112 }
113 srv=rdenv("/env/8½srv");
114 if(srv==0){
115 free(srv);
116 mntsrv=rdenv("/mnt/term/env/8½srv");
117 srv=malloc(strlen(mntsrv)+10);
118 sprint(srv, "/mnt/term%s", mntsrv);
119 free(mntsrv);
120 pid=0; /* 8½srv can't send notes to remote processes! */
121 }
122 else pid=getpid();
123 srvfd=open(srv, ORDWR);
124 free(srv);
125 if(srvfd==-1){
126 fprint(2, "Can't open %s: %r\n", srv);
127 exits("no srv");
128 }
129 sprint(spec, "N%d,%d,%d,%d,%d\n", pid, r.min.x, r.min.y, r.max.x, r.max.y);
130 if(mount(srvfd, "/mnt/8½", 0, spec)==-1){
131 fprint(2, "Can't mount: %r\n");
132 exits("no mount");
133 }
134 close(srvfd);
135 bind("/mnt/8½", "/dev", MBEFORE);
136 cons=open("/dev/cons", OREAD);
137 if(cons==-1){
138 NoCons:
139 fprint(2, "Can't open /dev/cons: %r");
140 exits("no cons");
141 }
142 dup(cons, 0);
143 close(cons);
144 cons=open("/dev/cons", OWRITE);
145 if(cons==-1) goto NoCons;
146 dup(cons, 1);
147 dup(cons, 2);
148 close(cons);
149 binit(errfun, font, label);
150}
47/*151/*
48 * Startup initialization152 * Startup initialization
49 */153 */
@@ -52,7 +156,12 @@ void m_initialize(char *s){ · 2 unmodified lines
52 int dx, dy;156 int dx, dy;
53 USED(s);157 USED(s);
54 if(first){158 if(first){
55 binit(0,0,0);159 if(!scrset){
160 scr=getscr();
161 scr.min=div(sub(add(scr.min, scr.max), Pt(520, 520)), 2);
162 scr.max=add(scr.min, Pt(520, 520));
163 }
164 winit(0,0,0,scr);
56 clipminx=mapminx=screen.r.min.x+4;165 clipminx=mapminx=screen.r.min.x+4;
57 clipminy=mapminy=screen.r.min.y+4;166 clipminy=mapminy=screen.r.min.y+4;
58 clipmaxx=mapmaxx=screen.r.max.x-5;167 clipmaxx=mapmaxx=screen.r.max.x-5;
sys/src/cmd/plot/libplot/mplot.h+10−9
@@ -25,16 +25,17 @@ struct seg { · 24 unmodified lines
25 char stat;25 char stat;
26};26};
27/*27/*
28 * Color values28 * Color values -- these only work with ldepth=3 & standard plan 9 color map
29 */29 */
30#define ZERO 330#define RGB(r,g,b) (255&~(((r)<<5)|((g)<<2)|((b)>>1)))
31#define RED 231#define ZERO RGB(0,0,0) /* really should be ~0, but bcolor uses neg for error */
32#define GREEN 232#define RED RGB(7,0,0)
33#define YELLOW 133#define GREEN RGB(0,7,0)
34#define BLUE 234#define YELLOW RGB(7,7,0)
35#define MAGENTA 135#define BLUE RGB(0,0,7)
36#define CYAN 136#define MAGENTA RGB(7,0,7)
37#define WHITE 037#define CYAN RGB(0,7,7)
38#define WHITE RGB(7,7,7)
38/*39/*
39 * display parameters40 * display parameters
40 */41 */
sys/src/cmd/plot/libplot/ppause.c+1−1
@@ -2,6 +2,6 @@ · 1 unmodified line
2void ppause(void){ 2void ppause(void){
3 char aa[4]; 3 char aa[4];
4 fflush(stdout); 4 fflush(stdout);
5 read(2, aa, 4); 5 read(0, aa, 4);
6 erase(); 6 erase();
7}7}