Changeset 31615 for branches/eam_branches/ipp-20110505/Ohana
- Timestamp:
- Jun 8, 2011, 11:47:27 AM (15 years ago)
- Location:
- branches/eam_branches/ipp-20110505/Ohana
- Files:
-
- 18 edited
-
. (modified) (1 prop)
-
Makefile.in (modified) (4 diffs)
-
configure.tcsh (modified) (2 diffs)
-
src/kapa2/src/DrawObjects.c (modified) (16 diffs)
-
src/kapa2/src/LoadObject.c (modified) (2 diffs)
-
src/kapa2/src/PNGit.c (modified) (4 diffs)
-
src/kapa2/src/PSObjects.c (modified) (4 diffs)
-
src/kapa2/src/PSit.c (modified) (1 diff)
-
src/kapa2/src/SetChannel.c (modified) (1 diff)
-
src/kapa2/src/bDrawObjects.c (modified) (3 diffs)
-
src/libkapa/include/kapa.h (modified) (1 diff)
-
src/libkapa/src/bDrawFuncs.c (modified) (3 diffs)
-
src/libohana/src/string.c (modified) (1 diff)
-
src/opihi/Makefile (modified) (2 diffs)
-
src/opihi/cmd.data/init.c (modified) (2 diffs)
-
src/opihi/cmd.data/read_vectors.c (modified) (4 diffs)
-
src/opihi/cmd.data/tvcolors.c (modified) (2 diffs)
-
src/opihi/cmd.data/zplot.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20110505/Ohana
- Property svn:mergeinfo set to
-
branches/eam_branches/ipp-20110505/Ohana/Makefile.in
r28190 r31615 76 76 mkdir -p $(DESTLIB) 77 77 mkdir -p $(DESTBIN) 78 for i in $(LIBS); do make$$i.install || exit 1; done78 for i in $(LIBS); do $(MAKE) $$i.install || exit 1; done 79 79 chmod +x ohana-config 80 80 cp -f ohana-config $(DESTBIN)/ 81 81 82 82 bins: 83 for i in $(PROGRAM); do make$$i; done83 for i in $(PROGRAM); do $(MAKE) $$i; done 84 84 85 85 all: 86 makelibs || exit 187 for i in $(PROGRAM); do make$$i || exit 1; done86 $(MAKE) libs || exit 1 87 for i in $(PROGRAM); do $(MAKE) $$i || exit 1; done 88 88 89 89 extras: 90 for i in $(EXTRAS); do make$$i || exit 1; done90 for i in $(EXTRAS); do $(MAKE) $$i || exit 1; done 91 91 92 92 pantasks: 93 makelibs || exit 194 cd src/opihi; makepclient.install && exit 195 cd src/opihi; makepcontrol.install && exit 196 cd src/opihi; makepantasks.install && exit 193 $(MAKE) libs || exit 1 94 cd src/opihi; $(MAKE) pclient.install && exit 1 95 cd src/opihi; $(MAKE) pcontrol.install && exit 1 96 cd src/opihi; $(MAKE) pantasks.install && exit 1 97 97 98 98 mana: 99 makelibs100 makekapa2.install101 cd src/opihi; makemana.install && exit 199 $(MAKE) libs 100 $(MAKE) kapa2.install 101 cd src/opihi; $(MAKE) mana.install && exit 1 102 102 103 103 dvoshell: 104 makelibs105 makekapa2.install106 cd src/opihi; makedvo.install && exit 1104 $(MAKE) libs 105 $(MAKE) kapa2.install 106 cd src/opihi; $(MAKE) dvo.install && exit 1 107 107 108 108 clean: 109 109 @if [ "$(ARCH)" = "" ]; then echo ""; echo " *** please define ARCH ***"; echo; exit 1; fi 110 for i in $(LIBS); do make$$i.clean || exit 1; done111 for i in $(PROGRAM); do make$$i.clean || exit 1; done112 for i in $(EXTRAS); do make$$i.clean || exit 1; done110 for i in $(LIBS); do $(MAKE) $$i.clean || exit 1; done 111 for i in $(PROGRAM); do $(MAKE) $$i.clean || exit 1; done 112 for i in $(EXTRAS); do $(MAKE) $$i.clean || exit 1; done 113 113 @rm -f `find . -name .mana` 114 114 @rm -f `find . -name .dvo` … … 117 117 dist: 118 118 @if [ "$(ARCH)" = "" ]; then echo ""; echo " *** please define ARCH ***"; echo; exit 1; fi 119 for i in $(LIBS); do make$$i.dist || exit 1; done120 for i in $(PROGRAM); do make$$i.dist || exit 1; done119 for i in $(LIBS); do $(MAKE) $$i.dist || exit 1; done 120 for i in $(PROGRAM); do $(MAKE) $$i.dist || exit 1; done 121 121 @echo -n -e "\0033]0; *** Ohana: done $@ *** \0007" \ 122 122 123 123 install: 124 124 @if [ "$(ARCH)" = "" ]; then echo ""; echo " *** please define ARCH ***"; echo; exit 1; fi 125 for i in $(LIBS); do make$$i.install || exit 1; done126 for i in $(PROGRAM); do make$$i.install || exit 1; done125 for i in $(LIBS); do $(MAKE) $$i.install || exit 1; done 126 for i in $(PROGRAM); do $(MAKE) $$i.install || exit 1; done 127 127 @echo -n -e "\0033]0; *** Ohana: done $@ *** \0007" \ 128 128 129 129 install.extras: 130 for i in $(EXTRAS); do make$$i.install || exit 1; done130 for i in $(EXTRAS); do $(MAKE) $$i.install || exit 1; done 131 131 @echo -n -e "\0033]0; *** Ohana: done $@ *** \0007" \ 132 132 … … 135 135 @if [ -d "src/$@" ]; then \ 136 136 echo -n -e "\0033]0; *** Ohana: $@ *** \0007"; \ 137 (cd src/$@ && make); \137 (cd src/$@ && $(MAKE)); \ 138 138 fi 139 139 @echo -n -e "\0033]0; *** Ohana: done $@ *** \0007" \ … … 142 142 @echo -n -e "\0033]0; *** Ohana: $@ *** \0007" \ 143 143 mkdir -p bin/$(ARCH) 144 if [ -d "src/$*" ]; then (cd src/$* && makeinstall); fi144 if [ -d "src/$*" ]; then (cd src/$* && $(MAKE) install); fi 145 145 146 146 %.clean: 147 if [ -d "src/$*" ]; then (cd src/$* && makeclean); fi147 if [ -d "src/$*" ]; then (cd src/$* && $(MAKE) clean); fi 148 148 149 149 %.dist: 150 (cd src/$* && makedist)150 (cd src/$* && $(MAKE) dist) -
branches/eam_branches/ipp-20110505/Ohana/configure.tcsh
r31160 r31615 203 203 set CPPFLAGS = "" 204 204 endif 205 if ($pedantic) set CPPFLAGS = "$CPPFLAGS -Wall -Werror"206 if ($memcheck) set CPPFLAGS = "$CPPFLAGS -DOHANA_MEMORY"205 if ($pedantic) set CPPFLAGS = "$CPPFLAGS -Wall -Werror" 206 if ($memcheck) set CPPFLAGS = "$CPPFLAGS -DOHANA_MEMORY" 207 207 208 208 if (! $?LDFLAGS) then … … 540 540 endif 541 541 set haveflag = `echo $f | tr '[:lower:]' '[:upper:]' | tr '.' '_'` 542 set CPPFLAGS = "$CPPFLAGS -DHAVE_$haveflag"542 set CPPFLAGS = "$CPPFLAGS -DHAVE_$haveflag" 543 543 end 544 544 -
branches/eam_branches/ipp-20110505/Ohana/src/kapa2/src/DrawObjects.c
r29539 r31615 1 1 # include "Ximage.h" 2 2 3 # define DrawLine(X1,Y1,X2,Y2) (XDrawLine (graphic->display, graphic->window, graphic->gc, (int)(X1+0.5), (int)(Y1+0.5), (int)(X2+0.5), (int)(Y2+0.5))) 4 # define DrawRectangle(X1,Y1,X2,Y2) (XDrawRectangle (graphic->display, graphic->window, graphic->gc, (int)(X1+0.5), (int)(Y1+0.5), (int)(X2+0.5), (int)(Y2+0.5))) 5 # define FillRectangle(X1,Y1,X2,Y2) (XFillRectangle (graphic->display, graphic->window, graphic->gc, (int)(X1+0.5), (int)(Y1+0.5), (int)(X2+0.5), (int)(Y2+0.5))) 6 # define DrawCircle(X,Y,R) (XDrawArc (graphic->display, graphic->window, graphic->gc, (int)(X-R+0.5), (int)(Y-R+0.5), abs(2*R+0.5), abs(2*R+0.5), 0, 23040)) 3 # define DrawLine(X1,Y1,X2,Y2) (XDrawLine (graphic->display, graphic->window, graphic->gc, (int)(X1), (int)(Y1), (int)(X2), (int)(Y2))) 4 # define DrawRectangle(X1,Y1,X2,Y2) (XDrawRectangle (graphic->display, graphic->window, graphic->gc, (int)(X1), (int)(Y1), (int)(X2), (int)(Y2))) 5 # define FillRectangle(X1,Y1,X2,Y2) (XFillRectangle (graphic->display, graphic->window, graphic->gc, (int)(X1), (int)(Y1), (int)(X2), (int)(Y2))) 6 # define DrawCircle(X,Y,R) (XDrawArc (graphic->display, graphic->window, graphic->gc, (int)(X-R), (int)(Y-R), abs(2*R), abs(2*R), 0, 23040)) 7 # define FillCircle(X,Y,R) (XFillArc (graphic->display, graphic->window, graphic->gc, (int)(X-R), (int)(Y-R), abs(2*R+1), abs(2*R+1), 0, 23040)) 7 8 8 9 # define CONNECT 0 9 10 # define HISTOGRAM 1 10 11 # define POINTS 2 12 13 # define XCENTER 0.0 14 # define YCENTER 0.0 15 # define CAPSTYLE CapButt 16 # define JOINSTYLE JoinMiter 11 17 12 18 static Graphic *graphic; … … 34 40 // this function calls all of the supporting Draw... functions below 35 41 graphic = GetGraphic(); 36 37 lweight = MAX (0, MIN (10, object[0].lweight)); 42 43 lweight = MAX (1, MIN (10, object[0].lweight)); 44 45 /** some notes on drawing lines in X: 46 47 "In general, drawing a thin line will be faster than drawing a wide line of width 48 one. However, because of their different drawing algorithms, thin lines may not mix 49 well aesthetically with wide lines. If it is desirable to obtain precise and uniform 50 results across all displays, a client should always use a line-width of one rather 51 than a line-width of zero." -- http://www.hpc.unimelb.edu.au/nec/g1ae02e/chap7.html 52 53 */ 38 54 39 55 /* set line type */ 40 56 switch (object[0].ltype) { 41 57 case 0: 42 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, C apNotLast, JoinMiter);58 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, CAPSTYLE, JOINSTYLE); 43 59 break; 44 60 case 1: 45 61 XSetDashes (graphic->display, graphic->gc, 100, dash, 2); 46 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, C apNotLast, JoinMiter);62 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, CAPSTYLE, JOINSTYLE); 47 63 break; 48 64 case 2: 49 65 XSetDashes (graphic->display, graphic->gc, 10, dot, 2); 50 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, C apNotLast, JoinMiter);66 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, CAPSTYLE, JOINSTYLE); 51 67 break; 52 68 default: 53 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, C apNotLast, JoinMiter);69 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, CAPSTYLE, JOINSTYLE); 54 70 break; 55 71 } 56 72 57 XSetForeground (graphic->display, graphic->gc, graphic->color[object[0].color]); 73 // negative color values mean "scale color with object.z" 74 if (object[0].color >= 0) { 75 XSetForeground (graphic->display, graphic->gc, graphic->color[object[0].color]); 76 } 58 77 59 78 switch (object[0].style) { … … 76 95 } 77 96 78 XSetLineAttributes (graphic->display, graphic->gc, 0, LineSolid, C apNotLast, JoinMiter);97 XSetLineAttributes (graphic->display, graphic->gc, 0, LineSolid, CAPSTYLE, JOINSTYLE); 79 98 XSetForeground (graphic->display, graphic->gc, graphic->fore); 80 99 return (TRUE); … … 111 130 for (i = 0; (i < object[0].Npts) && !(finite(x[i]) && finite(y[i])); i++); 112 131 if (i >= object[0].Npts) return; 113 sx0 = x[i]*mxi + y[i]*mxj + bx ;114 sy0 = x[i]*myi + y[i]*myj + by ;132 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 133 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 115 134 116 135 for (i++; i < object[0].Npts; i++) { 117 136 if (!(finite(x[i]) && finite(y[i]))) continue; 118 sx1 = x[i]*mxi + y[i]*mxj + bx ;119 sy1 = x[i]*myi + y[i]*myj + by ;137 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 138 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 120 139 121 140 ClipLine (sx0, sy0, sx1, sy1, X0, Y0, X1, Y1); … … 213 232 214 233 /* first valid data point */ 215 sx0 = x[i]*mxi + y[i]*mxj + bx ;216 sy0 = x[i]*myi + y[i]*myj + by ;234 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 235 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 217 236 sx0 = MIN (MAX (sx0, X0), X1); 218 237 sy0 = MAX (MIN (sy0, Y0), Y1); … … 223 242 224 243 /* second valid data point */ 225 sx1 = x[i]*mxi + y[i]*mxj + bx ;226 sy1 = x[i]*myi + y[i]*myj + by ;244 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 245 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 227 246 sx1 = MIN (MAX (sx1, X0), X1); 228 247 sy1 = MAX (MIN (sy1, Y0), Y1); … … 246 265 for (i++; i < object[0].Npts; i++) { 247 266 if (!(finite(x[i]) && finite(y[i]))) continue; 248 sx1 = x[i]*mxi + y[i]*mxj + bx ;249 sy1 = x[i]*myi + y[i]*myj + by ;267 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 268 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 250 269 sx1 = MIN (MAX (sx1, X0), X1); 251 270 sy1 = MAX (MIN (sy1, Y0), Y1); … … 298 317 299 318 /* first valid data point */ 300 sx0 = x[i]*mxi + y[i]*mxj + bx ;301 sy0 = x[i]*myi + y[i]*myj + by ;319 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 320 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 302 321 sx0 = MIN (MAX (sx0, X0), X1); 303 322 sy0 = MAX (MIN (sy0, Y0), Y1); … … 308 327 309 328 /* second valid data point */ 310 sx1 = x[i]*mxi + y[i]*mxj + bx ;311 sy1 = x[i]*myi + y[i]*myj + by ;329 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 330 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 312 331 sx1 = MIN (MAX (sx1, X0), X1); 313 332 sy1 = MAX (MIN (sy1, Y0), Y1); … … 330 349 for (i++; i < object[0].Npts; i++) { 331 350 if (!(finite(x[i]) && finite(y[i]))) continue; 332 sx1 = x[i]*mxi + y[i]*mxj + bx ;333 sy1 = x[i]*myi + y[i]*myj + by ;351 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 352 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 334 353 sx1 = MIN (MAX (sx1, X0), X1); 335 354 sy1 = MAX (MIN (sy1, Y0), Y1); … … 356 375 float *x, *y, *z; 357 376 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 358 double sx, sy, d, sx1, sy1, sx2, sy2;377 int sx, sy, sx1, sy1, sx2, sy2, ds, dz, D; 359 378 360 379 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); … … 371 390 by = byi + byj; 372 391 392 Graphic *graphic = GetGraphic(); 393 373 394 /**** points are scaled by object.z ***/ 374 if (object[0].size < 0) { 375 d = 0.5 * (graphic->dx + graphic->dy) * 0.01; 376 x = object[0].x; y = object[0].y; z = object[0].z; 377 if (object[0].ptype == 0) { /* filled box */ 378 for (i = 0; i < object[0].Npts; i++) { 379 if (!(finite(x[i]) && finite(y[i]))) continue; 380 sx = x[i]*mxi + y[i]*mxj + bx; 381 sy = x[i]*myi + y[i]*myj + by; 382 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 383 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 384 { 385 FillRectangle (sx - d*z[i], sy - d*z[i], 2*d*z[i], 2*d*z[i]); 386 } 387 } 388 } 389 if (object[0].ptype == 1) { /* open box */ 390 for (i = 0; i < object[0].Npts; i++) { 391 if (!(finite(x[i]) && finite(y[i]))) continue; 392 sx = x[i]*mxi + y[i]*mxj + bx; 393 sy = x[i]*myi + y[i]*myj + by; 394 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 395 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 396 { 397 DrawRectangle (sx - d*z[i], sy - d*z[i], 2*d*z[i], 2*d*z[i]); 398 } 399 } 400 } 401 if (object[0].ptype == 2) { /* cross */ 402 for (i = 0; i < object[0].Npts; i++) { 403 if (!(finite(x[i]) && finite(y[i]))) continue; 404 sx = x[i]*mxi + y[i]*mxj + bx; 405 sy = x[i]*myi + y[i]*myj + by; 406 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 407 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 408 { 409 DrawLine (sx - d*z[i], sy, sx + d*z[i] + 1, sy); 410 DrawLine (sx, sy - d*z[i], sx, sy + d*z[i] + 1); 411 } 412 } 413 } 414 if (object[0].ptype == 3) { /* x */ 415 for (i = 0; i < object[0].Npts; i++) { 416 if (!(finite(x[i]) && finite(y[i]))) continue; 417 sx = x[i]*mxi + y[i]*mxj + bx; 418 sy = x[i]*myi + y[i]*myj + by; 419 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 420 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 421 { 422 DrawLine (sx + d*z[i] + 1, sy - d*z[i] - 1, sx - d*z[i], sy + d*z[i]); 423 DrawLine (sx - d*z[i], sy - d*z[i], sx + d*z[i] + 1, sy + d*z[i] + 1); 424 } 425 } 426 } 427 if (object[0].ptype == 4) { /* filled triangle */ 428 XPoint points[4]; 429 for (i = 0; i < object[0].Npts; i++) { 430 if (!(finite(x[i]) && finite(y[i]))) continue; 431 sx = x[i]*mxi + y[i]*mxj + bx; 432 sy = x[i]*myi + y[i]*myj + by; 433 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 434 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 435 { 436 points[0].x = sx - d*z[i]; points[0].y = sy + 0.58*d*z[i]; 437 points[1].x = sx + d*z[i]; points[1].y = sy + 0.58*d*z[i]; 438 points[2].x = sx; points[2].y = sy - 1.15*d*z[i]; 439 points[3].x = sx - d*z[i]; points[3].y = sy + 0.58*d*z[i]; 440 XFillPolygon (graphic->display, graphic->window, graphic->gc, points, 4, Convex, CoordModeOrigin); 441 } 442 } 443 } 444 if (object[0].ptype == 5) { /* open triangle */ 445 for (i = 0; i < object[0].Npts; i++) { 446 if (!(finite(x[i]) && finite(y[i]))) continue; 447 sx = x[i]*mxi + y[i]*mxj + bx; 448 sy = x[i]*myi + y[i]*myj + by; 449 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 450 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 451 { 452 DrawLine (sx - d*z[i], sy + 0.58*d*z[i], sx + d*z[i], sy + 0.58*d*z[i]); 453 DrawLine (sx + d*z[i], sy + 0.58*d*z[i], sx, sy - 1.15*d*z[i]); 454 DrawLine (sx, sy - 1.15*d*z[i], sx - d*z[i], sy + 0.58*d*z[i]); 455 } 456 } 457 } 458 if (object[0].ptype == 6) { /* Y */ 459 for (i = 0; i < object[0].Npts; i++) { 460 if (!(finite(x[i]) && finite(y[i]))) continue; 461 sx = x[i]*mxi + y[i]*mxj + bx; 462 sy = x[i]*myi + y[i]*myj + by; 463 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 464 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 465 { 466 DrawLine (sx, sy, sx - d*z[i], sy + 0.58*d*z[i]); 467 DrawLine (sx, sy, sx + d*z[i], sy + 0.58*d*z[i]); 468 DrawLine (sx, sy, sx, sy - 1.15*d*z[i]); 469 } 470 } 471 } 472 if (object[0].ptype == 7) { /* 0 */ 473 for (i = 0; i < object[0].Npts; i++) { 474 if (!(finite(x[i]) && finite(y[i]))) continue; 475 sx = x[i]*mxi + y[i]*mxj + bx; 476 sy = x[i]*myi + y[i]*myj + by; 477 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 478 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 479 { 480 DrawCircle (sx, sy, d*z[i]); 481 } 482 } 483 } 484 if (object[0].ptype == 8) { /* pentagon */ 485 for (i = 0; i < object[0].Npts; i++) { 486 if (!(finite(x[i]) && finite(y[i]))) continue; 487 sx = x[i]*mxi + y[i]*mxj + bx; 488 sy = x[i]*myi + y[i]*myj + by; 489 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 490 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 491 { 492 DrawLine (sx + 0.00*d*z[i], sy - 1.00*d*z[i], sx + 0.95*d*z[i], sy - 0.31*d*z[i]); 493 DrawLine (sx + 0.95*d*z[i], sy - 0.31*d*z[i], sx + 0.58*d*z[i], sy + 0.81*d*z[i]); 494 DrawLine (sx + 0.58*d*z[i], sy + 0.81*d*z[i], sx - 0.58*d*z[i], sy + 0.81*d*z[i]); 495 DrawLine (sx - 0.58*d*z[i], sy + 0.81*d*z[i], sx - 0.95*d*z[i], sy - 0.31*d*z[i]); 496 DrawLine (sx - 0.95*d*z[i], sy - 0.31*d*z[i], sx + 0.00*d*z[i], sy - 1.00*d*z[i]); 497 } 498 } 499 } 500 if (object[0].ptype == 9) { /* hexagon */ 501 for (i = 0; i < object[0].Npts; i++) { 502 if (!(finite(x[i]) && finite(y[i]))) continue; 503 sx = x[i]*mxi + y[i]*mxj + bx; 504 sy = x[i]*myi + y[i]*myj + by; 505 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 506 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 507 { 508 DrawLine (sx - d*z[i], sy, sx - 0.50*d*z[i], sy + 0.87*d*z[i]); 509 DrawLine (sx - 0.50*d*z[i], sy + 0.87*d*z[i], sx + 0.50*d*z[i], sy + 0.87*d*z[i]); 510 DrawLine (sx + 0.50*d*z[i], sy + 0.87*d*z[i], sx + d*z[i], sy); 511 512 DrawLine (sx + d*z[i], sy, sx + 0.50*d*z[i], sy - 0.87*d*z[i]); 513 DrawLine (sx + 0.50*d*z[i], sy - 0.87*d*z[i], sx - 0.50*d*z[i], sy - 0.87*d*z[i]); 514 DrawLine (sx - 0.50*d*z[i], sy - 0.87*d*z[i], sx - d*z[i], sy); 515 } 516 } 517 } 518 if (object[0].ptype == 100) { /* connect a pair of points */ 519 520 double X0 = graph[0].axis[0].fx; 521 double X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx; 522 double Y0 = graph[0].axis[1].fy; 523 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 524 525 for (i = 0; i + 1 < object[0].Npts; i+=2) { 526 if (!(finite(x[i]) && finite(y[i]))) continue; 527 sx1 = x[i]*mxi + y[i]*mxj + bx; 528 sy1 = x[i]*myi + y[i]*myj + by; 529 if (!(finite(x[i+1]) && finite(y[i+1]))) continue; 530 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx; 531 sy2 = x[i+1]*myi + y[i+1]*myj + by; 532 ClipLine (sx1, sy1, sx2, sy2, X0, Y0, X1, Y1); 533 } 534 } 535 } 536 /**** points are not scaled by object.z ***/ 537 else { 538 d = object[0].size * 0.5 * (graphic->dx + graphic->dy) * 0.003; 539 x = object[0].x; y = object[0].y; 540 if (object[0].ptype == 0) { /* filled box */ 541 for (i = 0; i < object[0].Npts; i++) { 542 if (!(finite(x[i]) && finite(y[i]))) continue; 543 sx = x[i]*mxi + y[i]*mxj + bx; 544 sy = x[i]*myi + y[i]*myj + by; 545 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 546 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 547 { 548 FillRectangle (sx - d, sy - d, 2*d, 2*d); 549 } 550 } 551 } 552 if (object[0].ptype == 1) { /* open box */ 553 for (i = 0; i < object[0].Npts; i++) { 554 if (!(finite(x[i]) && finite(y[i]))) continue; 555 sx = x[i]*mxi + y[i]*mxj + bx; 556 sy = x[i]*myi + y[i]*myj + by; 557 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 558 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 559 { 560 DrawRectangle (sx - d, sy - d, 2*d, 2*d); 561 } 562 } 563 } 564 if (object[0].ptype == 2) { /* cross */ 565 for (i = 0; i < object[0].Npts; i++) { 566 if (!(finite(x[i]) && finite(y[i]))) continue; 567 sx = x[i]*mxi + y[i]*mxj + bx; 568 sy = x[i]*myi + y[i]*myj + by; 569 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 570 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 571 { 572 DrawLine (sx - d, sy, sx + d + 1, sy); 573 DrawLine (sx, sy - d, sx, sy + d + 1); 574 } 575 } 576 } 577 if (object[0].ptype == 3) { /* x */ 578 for (i = 0; i < object[0].Npts; i++) { 579 if (!(finite(x[i]) && finite(y[i]))) continue; 580 sx = x[i]*mxi + y[i]*mxj + bx; 581 sy = x[i]*myi + y[i]*myj + by; 582 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 583 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 584 { 585 /* XDrawLine is a little funny, this is needed to fix endpost errors */ 586 DrawLine (sx + d + 1, sy - d - 1, sx - d, sy + d); 587 DrawLine (sx - d, sy - d, sx + d + 1, sy + d + 1); 588 } 589 } 590 } 591 if (object[0].ptype == 4) { /* filled triangle */ 592 XPoint points[4]; 593 for (i = 0; i < object[0].Npts; i++) { 594 if (!(finite(x[i]) && finite(y[i]))) continue; 595 sx = x[i]*mxi + y[i]*mxj + bx; 596 sy = x[i]*myi + y[i]*myj + by; 597 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 598 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 599 { 600 points[0].x = sx - d; points[0].y = sy + 0.58*d; 601 points[1].x = sx + d; points[1].y = sy + 0.58*d; 602 points[2].x = sx; points[2].y = sy - 1.15*d; 603 points[3].x = sx - d; points[3].y = sy + 0.58*d; 604 XFillPolygon (graphic->display, graphic->window, graphic->gc, points, 4, Convex, CoordModeOrigin); 605 } 606 } 607 } 608 if (object[0].ptype == 5) { /* open triangle */ 609 for (i = 0; i < object[0].Npts; i++) { 610 if (!(finite(x[i]) && finite(y[i]))) continue; 611 sx = x[i]*mxi + y[i]*mxj + bx; 612 sy = x[i]*myi + y[i]*myj + by; 613 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 614 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 615 { 616 DrawLine (sx - d, sy + 0.58*d, sx + d, sy + 0.58*d); 617 DrawLine (sx + d, sy + 0.58*d, sx, sy - 1.15*d); 618 DrawLine (sx, sy - 1.15*d, sx - d, sy + 0.58*d); 619 } 620 } 621 } 622 if (object[0].ptype == 6) { /* Y */ 623 for (i = 0; i < object[0].Npts; i++) { 624 if (!(finite(x[i]) && finite(y[i]))) continue; 625 sx = x[i]*mxi + y[i]*mxj + bx; 626 sy = x[i]*myi + y[i]*myj + by; 627 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 628 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 629 { 630 DrawLine (sx, sy, sx - d, sy + 0.58*d); 631 DrawLine (sx, sy, sx + d, sy + 0.58*d); 632 DrawLine (sx, sy, sx, sy - 1.15*d); 633 } 634 } 635 } 636 if (object[0].ptype == 7) { /* 0 */ 637 for (i = 0; i < object[0].Npts; i++) { 638 if (!(finite(x[i]) && finite(y[i]))) continue; 639 sx = x[i]*mxi + y[i]*mxj + bx; 640 sy = x[i]*myi + y[i]*myj + by; 641 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 642 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 643 { 644 DrawCircle (sx, sy, d); 645 } 646 } 647 } 648 if (object[0].ptype == 8) { /* pentagon */ 649 for (i = 0; i < object[0].Npts; i++) { 650 if (!(finite(x[i]) && finite(y[i]))) continue; 651 sx = x[i]*mxi + y[i]*mxj + bx; 652 sy = x[i]*myi + y[i]*myj + by; 653 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 654 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 655 { 656 DrawLine (sx + 0.00*d, sy - 1.00*d, sx + 0.95*d, sy - 0.31*d); 657 DrawLine (sx + 0.95*d, sy - 0.31*d, sx + 0.58*d, sy + 0.81*d); 658 DrawLine (sx + 0.58*d, sy + 0.81*d, sx - 0.58*d, sy + 0.81*d); 659 DrawLine (sx - 0.58*d, sy + 0.81*d, sx - 0.95*d, sy - 0.31*d); 660 DrawLine (sx - 0.95*d, sy - 0.31*d, sx + 0.00*d, sy - 1.00*d); 661 } 662 } 663 } 664 if (object[0].ptype == 9) { /* pentagon */ 665 for (i = 0; i < object[0].Npts; i++) { 666 if (!(finite(x[i]) && finite(y[i]))) continue; 667 sx = x[i]*mxi + y[i]*mxj + bx; 668 sy = x[i]*myi + y[i]*myj + by; 669 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 670 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 671 { 672 DrawLine (sx - 1.00*d, sy + 0.00*d, sx - 0.50*d, sy + 0.87*d); 673 DrawLine (sx - 0.50*d, sy + 0.87*d, sx + 0.50*d, sy + 0.87*d); 674 DrawLine (sx + 0.50*d, sy + 0.87*d, sx + 1.00*d, sy + 0.00*d); 675 DrawLine (sx + 1.00*d, sy + 0.00*d, sx + 0.50*d, sy - 0.87*d); 676 DrawLine (sx + 0.50*d, sy - 0.87*d, sx - 0.50*d, sy - 0.87*d); 677 DrawLine (sx - 0.50*d, sy - 0.87*d, sx - 1.00*d, sy + 0.00*d); 678 } 679 } 680 } 681 if (object[0].ptype == 100) { 682 double X0 = graph[0].axis[0].fx; 683 double X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx; 684 double Y0 = graph[0].axis[1].fy; 685 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 686 687 for (i = 0; i + 1 < object[0].Npts; i+=2) { 688 if (!(finite(x[i]) && finite(y[i]))) continue; 689 sx1 = x[i]*mxi + y[i]*mxj + bx; 690 sy1 = x[i]*myi + y[i]*myj + by; 691 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx; 692 sy2 = x[i+1]*myi + y[i+1]*myj + by; 693 ClipLine (sx1, sy1, sx2, sy2, X0, Y0, X1, Y1); 694 } 395 int scaleSize = (object[0].size < 0); 396 int scaleColor = (object[0].color < 0); 397 398 ds = 0.5 * (graphic->dx + graphic->dy) * 0.003 * object[0].size; 399 dz = 0.5 * (graphic->dx + graphic->dy) * 0.010; 400 x = object[0].x; y = object[0].y; z = object[0].z; 401 402 if (object[0].ptype == 0) { /* filled box */ 403 for (i = 0; i < object[0].Npts; i++) { 404 if (!(finite(x[i]) && finite(y[i]))) continue; 405 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 406 sy = x[i]*myi + y[i]*myj + by + YCENTER; 407 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 408 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 409 if (scaleColor) { 410 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 411 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 412 } 413 D = scaleSize ? dz*z[i] : ds; 414 FillRectangle (sx - D, sy - D, 2*D + 1, 2*D + 1); 415 } 416 } 417 } 418 if (object[0].ptype == 1) { /* open box */ 419 for (i = 0; i < object[0].Npts; i++) { 420 if (!(finite(x[i]) && finite(y[i]))) continue; 421 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 422 sy = x[i]*myi + y[i]*myj + by + YCENTER; 423 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 424 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 425 if (scaleColor) { 426 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 427 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 428 } 429 D = scaleSize ? dz*z[i] : ds; 430 DrawRectangle (sx - D, sy - D, 2*D, 2*D); 431 } 432 } 433 } 434 if (object[0].ptype == 2) { /* cross */ 435 for (i = 0; i < object[0].Npts; i++) { 436 if (!(finite(x[i]) && finite(y[i]))) continue; 437 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 438 sy = x[i]*myi + y[i]*myj + by + YCENTER; 439 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 440 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 441 if (scaleColor) { 442 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 443 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 444 } 445 D = scaleSize ? dz*z[i] : ds; 446 DrawLine (sx - D, sy, sx + D + 1, sy); 447 DrawLine (sx, sy - D, sx, sy + D + 1); 448 } 449 } 450 } 451 if (object[0].ptype == 3) { /* x */ 452 for (i = 0; i < object[0].Npts; i++) { 453 if (!(finite(x[i]) && finite(y[i]))) continue; 454 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 455 sy = x[i]*myi + y[i]*myj + by + YCENTER; 456 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 457 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 458 if (scaleColor) { 459 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 460 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 461 } 462 D = scaleSize ? dz*z[i] : ds; 463 DrawLine (sx - D, sy + D, sx + D + 1, sy - D - 1); 464 DrawLine (sx - D, sy - D, sx + D + 1, sy + D + 1); 465 } 466 } 467 } 468 if (object[0].ptype == 4) { /* filled triangle */ 469 XPoint points[4]; 470 for (i = 0; i < object[0].Npts; i++) { 471 if (!(finite(x[i]) && finite(y[i]))) continue; 472 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 473 sy = x[i]*myi + y[i]*myj + by + YCENTER; 474 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 475 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 476 if (scaleColor) { 477 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 478 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 479 } 480 D = scaleSize ? dz*z[i] : ds; 481 points[0].x = sx - D; points[0].y = sy + 0.58*D; 482 points[1].x = sx + D; points[1].y = sy + 0.58*D; 483 points[2].x = sx; points[2].y = sy - 1.15*D; 484 points[3].x = sx - D; points[3].y = sy + 0.58*D; 485 XFillPolygon (graphic->display, graphic->window, graphic->gc, points, 4, Convex, CoordModeOrigin); 486 } 487 } 488 } 489 if (object[0].ptype == 5) { /* open triangle */ 490 for (i = 0; i < object[0].Npts; i++) { 491 if (!(finite(x[i]) && finite(y[i]))) continue; 492 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 493 sy = x[i]*myi + y[i]*myj + by + YCENTER; 494 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 495 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 496 if (scaleColor) { 497 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 498 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 499 } 500 D = scaleSize ? dz*z[i] : ds; 501 DrawLine (sx - D, sy + 0.58*D, sx + D, sy + 0.58*D); 502 DrawLine (sx + D, sy + 0.58*D, sx, sy - 1.15*D); 503 DrawLine (sx, sy - 1.15*D, sx - D, sy + 0.58*D); 504 } 505 } 506 } 507 if (object[0].ptype == 6) { /* Y */ 508 for (i = 0; i < object[0].Npts; i++) { 509 if (!(finite(x[i]) && finite(y[i]))) continue; 510 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 511 sy = x[i]*myi + y[i]*myj + by + YCENTER; 512 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 513 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 514 if (scaleColor) { 515 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 516 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 517 } 518 D = scaleSize ? dz*z[i] : ds; 519 DrawLine (sx, sy, sx - D, sy - 0.58*D); 520 DrawLine (sx, sy, sx + D, sy - 0.58*D); 521 DrawLine (sx, sy, sx, sy + 1.15*D); 522 } 523 } 524 } 525 if (object[0].ptype == 7) { /* 0 */ 526 for (i = 0; i < object[0].Npts; i++) { 527 if (!(finite(x[i]) && finite(y[i]))) continue; 528 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 529 sy = x[i]*myi + y[i]*myj + by + YCENTER; 530 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 531 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 532 if (scaleColor) { 533 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 534 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 535 } 536 D = scaleSize ? dz*z[i] : ds; 537 DrawCircle (sx, sy, D); 538 } 539 } 540 } 541 if (object[0].ptype == 8) { /* pentagon */ 542 for (i = 0; i < object[0].Npts; i++) { 543 if (!(finite(x[i]) && finite(y[i]))) continue; 544 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 545 sy = x[i]*myi + y[i]*myj + by + YCENTER; 546 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 547 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 548 if (scaleColor) { 549 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 550 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 551 } 552 D = scaleSize ? dz*z[i] : ds; 553 DrawLine (sx + 0.00*D, sy - 1.00*D, sx + 0.95*D, sy - 0.31*D); 554 DrawLine (sx + 0.95*D, sy - 0.31*D, sx + 0.58*D, sy + 0.81*D); 555 DrawLine (sx + 0.58*D, sy + 0.81*D, sx - 0.58*D, sy + 0.81*D); 556 DrawLine (sx - 0.58*D, sy + 0.81*D, sx - 0.95*D, sy - 0.31*D); 557 DrawLine (sx - 0.95*D, sy - 0.31*D, sx + 0.00*D, sy - 1.00*D); 558 } 559 } 560 } 561 if (object[0].ptype == 9) { /* hexagon */ 562 for (i = 0; i < object[0].Npts; i++) { 563 if (!(finite(x[i]) && finite(y[i]))) continue; 564 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 565 sy = x[i]*myi + y[i]*myj + by + YCENTER; 566 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 567 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 568 if (scaleColor) { 569 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 570 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 571 } 572 D = scaleSize ? dz*z[i] : ds; 573 DrawLine (sx - D, sy, sx - 0.50*D, sy + 0.87*D); 574 DrawLine (sx - 0.50*D, sy + 0.87*D, sx + 0.50*D, sy + 0.87*D); 575 DrawLine (sx + 0.50*D, sy + 0.87*D, sx + D, sy); 576 577 DrawLine (sx + D, sy, sx + 0.50*D, sy - 0.87*D); 578 DrawLine (sx + 0.50*D, sy - 0.87*D, sx - 0.50*D, sy - 0.87*D); 579 DrawLine (sx - 0.50*D, sy - 0.87*D, sx - D, sy); 580 } 581 } 582 } 583 if (object[0].ptype == 10) { /* filled 0 */ 584 for (i = 0; i < object[0].Npts; i++) { 585 if (!(finite(x[i]) && finite(y[i]))) continue; 586 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 587 sy = x[i]*myi + y[i]*myj + by + YCENTER; 588 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 589 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) { 590 if (scaleColor) { 591 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 592 XSetForeground (graphic->display, graphic->gc, graphic->cmap[pixel].pixel); 593 } 594 D = scaleSize ? dz*z[i] : ds; 595 FillCircle (sx, sy, D); 596 } 597 } 598 } 599 if (object[0].ptype == 100) { /* connect a pair of points */ 600 601 double X0 = graph[0].axis[0].fx; 602 double X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx; 603 double Y0 = graph[0].axis[1].fy; 604 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 605 606 for (i = 0; i + 1 < object[0].Npts; i+=2) { 607 if (!(finite(x[i]) && finite(y[i]))) continue; 608 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 609 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 610 if (!(finite(x[i+1]) && finite(y[i+1]))) continue; 611 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx + XCENTER; 612 sy2 = x[i+1]*myi + y[i+1]*myj + by + YCENTER; 613 ClipLine (sx1, sy1, sx2, sy2, X0, Y0, X1, Y1); 695 614 } 696 615 } … … 723 642 for (i = 0; i < object[0].Npts; i++) { 724 643 if (!(finite(x[i]) && finite(y[i]) && finite(dxp[i]))) continue; 725 sx0 = x[i]*mxi + y[i]*mxj + bx ;726 sy0 = x[i]*myi + y[i]*myj + by ;727 sx1 = (x[i] + dxp[i])*mxi + y[i]*mxj + bx ;728 sy1 = (x[i] + dxp[i])*myi + y[i]*myj + by ;644 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 645 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 646 sx1 = (x[i] + dxp[i])*mxi + y[i]*mxj + bx + XCENTER; 647 sy1 = (x[i] + dxp[i])*myi + y[i]*myj + by + YCENTER; 729 648 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 730 649 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 740 659 } 741 660 if (!(finite(x[i]) && finite(y[i]) && finite(dxm[i]))) continue; 742 sx0 = x[i]*mxi + y[i]*mxj + bx ;743 sy0 = x[i]*myi + y[i]*myj + by ;744 sx1 = (x[i] - dxm[i])*mxi + y[i]*mxj + bx ;745 sy1 = (x[i] - dxm[i])*myi + y[i]*myj + by ;661 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 662 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 663 sx1 = (x[i] - dxm[i])*mxi + y[i]*mxj + bx + XCENTER; 664 sy1 = (x[i] - dxm[i])*myi + y[i]*myj + by + YCENTER; 746 665 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 747 666 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 785 704 for (i = 0; i < object[0].Npts; i++) { 786 705 if (!(finite(x[i]) && finite(y[i]) && finite(dyp[i]))) continue; 787 sx0 = x[i]*mxi + y[i]*mxj + bx ;788 sy0 = x[i]*myi + y[i]*myj + by ;706 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 707 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 789 708 sx1 = sx0 + dyp[i]*mxj; 790 709 sy1 = sy0 + dyp[i]*myj; … … 802 721 } 803 722 if (!(finite(x[i]) && finite(y[i]) && finite(dym[i]))) continue; 804 sx0 = x[i]*mxi + y[i]*mxj + bx ;805 sy0 = x[i]*myi + y[i]*myj + by ;806 sx1 = x[i]*mxi + (y[i] - dym[i])*mxj + bx ;807 sy1 = x[i]*myi + (y[i] - dym[i])*myj + by ;723 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 724 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 725 sx1 = x[i]*mxi + (y[i] - dym[i])*mxj + bx + XCENTER; 726 sy1 = x[i]*myi + (y[i] - dym[i])*myj + by + YCENTER; 808 727 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 809 728 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || -
branches/eam_branches/ipp-20110505/Ohana/src/kapa2/src/LoadObject.c
r29539 r31615 38 38 graph[0].objects[N].lweight, graph[0].objects[N].size); 39 39 40 /* force valid ranges */ 41 if ((graph[0].objects[N].color > KapaColormapSize()) || (graph[0].objects[N].color < 0)) 42 graph[0].objects[N].color = 0; 40 // limit color ranges (negative is allowed for ptype == 2 --> color scaled by z 41 if (graph[0].objects[N].color >= KapaColormapSize()) { 42 graph[0].objects[N].color = KapaColormapSize() - 1; 43 } 44 if ((graph[0].objects[N].style != 2) && (graph[0].objects[N].color < 0)) { 45 graph[0].objects[N].color = 0; 46 } 43 47 44 48 KiiScanMessage (sock, "%lf %lf %lf %lf", … … 64 68 REALLOCATE (graph[0].objects, Gobjects, MAX (1, graph[0].Nobjects)); 65 69 } 66 if ( graph[0].objects[N].size < 0.0) {70 if ((graph[0].objects[N].size < 0.0) || (graph[0].objects[N].color < 0.0)) { 67 71 if (!LoadVectorData (sock, graph, N, "z")) { 68 72 FreeObjectData (&graph[0].objects[N]); -
branches/eam_branches/ipp-20110505/Ohana/src/kapa2/src/PNGit.c
r29938 r31615 1 1 # include "Ximage.h" 2 3 /* I almost have PNG images + plots working. I need to do a few more things:4 1) decide on the dimensions of the output image/plot file -- like the jpeg covering the pixels? adjust the box to include the full plot box?5 2) update bDraw to either write palette values (as now) or RGB values into the buffer6 3) decision on output based on the existence of images or not7 */8 2 9 3 int PNGcommand (int sock) { … … 22 16 png_structp png_ptr; 23 17 png_infop info_ptr; 24 int i, status, Npalette, Nsection;18 int status, Npalette; 25 19 bDrawBuffer *buffer = NULL; 26 20 Graphic *graphic = NULL; 27 21 png_color *palette = NULL; 28 Section *section;29 22 30 23 graphic = GetGraphic(); … … 68 61 palette = KapaPNGPalette (&Npalette); 69 62 63 /* before we allowed colormap-scaled points, we had the option of writing an image using a 64 limited palette. we could get smart and check all objects to see if any of them use 65 scaled colors and choose a limited palette if not. but maybe that is not worth the effort. 66 */ 67 68 # if (0) 70 69 // do we have an image in any of the sections? 71 Nsection = GetNumberOfSections ();70 int Nsection = GetNumberOfSections (); 72 71 int haveImage = FALSE; 72 int i; 73 73 for (i = 0; !haveImage && (i < Nsection); i++) { 74 section = GetSectionByNumber (i);74 Section *section = GetSectionByNumber (i); 75 75 haveImage = (section->image != NULL); 76 76 } 77 # else 78 int haveImage = TRUE; 79 # endif 77 80 78 81 /* see docs for write-row-callback to provide progress info */ 79 82 if (haveImage) { 80 // png_set_IHDR (png_ptr, info_ptr, graphic->dx, graphic->dy, 16, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);81 83 png_set_IHDR (png_ptr, info_ptr, graphic->dx, graphic->dy, 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); 82 84 png_set_sRGB (png_ptr, info_ptr, PNG_sRGB_INTENT_ABSOLUTE); … … 95 97 if (haveImage) { 96 98 buffer = bDrawIt (palette, Npalette, 3); 97 // bDrawImage (buffer, graphic);98 99 } else { 99 100 buffer = bDrawIt (palette, Npalette, 1); -
branches/eam_branches/ipp-20110505/Ohana/src/kapa2/src/PSObjects.c
r31160 r31615 2 2 3 3 # define DrawLine(X1,Y1,X2,Y2) (fprintf (f, " %6.2f %6.2f %6.2f %6.2f L\n", X1, graphic->dy - Y1, X2, graphic->dy - Y2)) 4 # define DrawCircle(X1,Y1,R) (fprintf (f, " %6.2f %6.2f %6.2f C\n", (X1), (graphic->dy - Y1), (R)))5 4 # define DrawRectangle(X,Y,dX,dY) (fprintf (f, " %6.2f %6.2f %6.2f %6.2f B\n", (dX), (dY), (X-0.5*dX), (graphic->dy-Y-0.5*dY))) 6 5 # define FillRectangle(X,Y,dX,dY) (fprintf (f, " %6.2f %6.2f %6.2f %6.2f F\n", (dX), (dY), (X-0.5*dX), (graphic->dy-Y-0.5*dY))) 6 # define DrawCircle(X1,Y1,R) (fprintf (f, " %6.2f %6.2f %6.2f C\n", (X1), (graphic->dy - Y1), (R))) 7 # define FillCircle(X1,Y1,R) (fprintf (f, " %6.2f %6.2f %6.2f FC\n", (X1), (graphic->dy - Y1), (R))) 7 8 # define FillTriangle(X1,Y1,X2,Y2, X3, Y3) (fprintf (f, " %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f TF\n", (X1), (graphic->dy-Y1), (X2), (graphic->dy-Y2), (X3), (graphic->dy-Y3))) 8 9 # define CONNECT 0 … … 37 38 lweight = MAX (0, MIN (10, graph[0].objects[i].lweight)); 38 39 fprintf (f, "%.1f setlinewidth\n", lweight); 39 fprintf (f, "%s setrgbcolor\n", KapaColorRGBString(graph[0].objects[i].color)); 40 41 if (graph[0].objects[i].color >= 0) { 42 fprintf (f, "%s setrgbcolor\n", KapaColorRGBString(graph[0].objects[i].color)); 43 } 40 44 41 45 switch (graph[0].objects[i].style) { … … 270 274 float *x, *y, *z; 271 275 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 272 double sx, sy, d, sx1, sy1, sx2, sy2, X0, Y0, X1, Y1; 276 double sx, sy, sx1, sy1, sx2, sy2, ds, dz, D; 277 float *pixel1, *pixel2, *pixel3; 273 278 274 279 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); … … 285 290 by = byi + byj; 286 291 287 /* below here, code is identical with DrawObjects */ 292 Graphic *graphic = GetGraphic(); 293 294 ALLOCATE (pixel1, float, graphic[0].Npixels); 295 ALLOCATE (pixel2, float, graphic[0].Npixels); 296 ALLOCATE (pixel3, float, graphic[0].Npixels); 297 298 /** cmap[i].pixel must be defined even if X is not used **/ 299 for (i = 0; i < graphic[0].Npixels; i++) { /* set up pixel array */ 300 pixel1[i] = graphic[0].cmap[i].red / (float) 0xffff; 301 pixel2[i] = graphic[0].cmap[i].green / (float) 0xffff; 302 pixel3[i] = graphic[0].cmap[i].blue / (float) 0xffff; 303 } 304 305 // black, I think 306 // fprintf (f, "0.00 0.00 0.00 setrgbcolor\n"); 307 288 308 /**** points are scaled by object.z ***/ 289 if (object[0].size < 0) { 290 d = 0.5 * (graphic->dx + graphic->dy) * 0.01; 291 x = object[0].x; y = object[0].y; z = object[0].z; 292 if (object[0].ptype == 0) { /* filled box */ 293 for (i = 0; i < object[0].Npts; i++) { 294 if (!(finite(x[i]) && finite(y[i]))) continue; 295 sx = x[i]*mxi + y[i]*mxj + bx; 296 sy = x[i]*myi + y[i]*myj + by; 297 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 298 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 299 { 300 FillRectangle (sx, sy, 2*d*z[i], 2*d*z[i]); 301 } 302 } 303 } 304 if (object[0].ptype == 1) { /* open box */ 305 for (i = 0; i < object[0].Npts; i++) { 306 if (!(finite(x[i]) && finite(y[i]))) continue; 307 sx = x[i]*mxi + y[i]*mxj + bx; 308 sy = x[i]*myi + y[i]*myj + by; 309 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 310 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 311 { 312 DrawRectangle (sx, sy, 2*d*z[i], 2*d*z[i]); 313 } 314 } 315 } 316 if (object[0].ptype == 2) { /* cross */ 317 for (i = 0; i < object[0].Npts; i++) { 318 if (!(finite(x[i]) && finite(y[i]))) continue; 319 sx = x[i]*mxi + y[i]*mxj + bx; 320 sy = x[i]*myi + y[i]*myj + by; 321 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 322 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 323 { 324 DrawLine (sx - d*z[i], sy, sx + d*z[i], sy); 325 DrawLine (sx, sy - d*z[i], sx, sy + d*z[i]); 326 } 327 } 328 } 329 if (object[0].ptype == 3) { /* x */ 330 for (i = 0; i < object[0].Npts; i++) { 331 if (!(finite(x[i]) && finite(y[i]))) continue; 332 sx = x[i]*mxi + y[i]*mxj + bx; 333 sy = x[i]*myi + y[i]*myj + by; 334 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 335 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 336 { 337 DrawLine (sx + d*z[i], sy - d*z[i], sx - d*z[i], sy + d*z[i]); 338 DrawLine (sx - d*z[i], sy - d*z[i], sx + d*z[i], sy + d*z[i]); 339 } 340 } 341 } 342 if (object[0].ptype == 4) { /* filled triangle */ 343 for (i = 0; i < object[0].Npts; i++) { 344 if (!(finite(x[i]) && finite(y[i]))) continue; 345 sx = x[i]*mxi + y[i]*mxj + bx; 346 sy = x[i]*myi + y[i]*myj + by; 347 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 348 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 349 { 350 FillTriangle (sx - d*z[i], sy - 0.58*d*z[i], sx + d*z[i], sy - 0.58*d*z[i], sx, sy + 1.15*d*z[i]); 351 /* 352 DrawLine (sx - d*z[i], sy + 0.58*d*z[i], sx + d*z[i], sy + 0.58*d*z[i]); 353 DrawLine (sx + d*z[i], sy + 0.58*d*z[i], sx, sy - 1.15*d*z[i]); 354 DrawLine (sx, sy - 1.15*d*z[i], sx - d*z[i], sy + 0.58*d*z[i]); 355 */ 356 } 357 } 358 } 359 if (object[0].ptype == 5) { /* open triangle */ 360 for (i = 0; i < object[0].Npts; i++) { 361 if (!(finite(x[i]) && finite(y[i]))) continue; 362 sx = x[i]*mxi + y[i]*mxj + bx; 363 sy = x[i]*myi + y[i]*myj + by; 364 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 365 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 366 { 367 DrawLine (sx - d*z[i], sy + 0.58*d*z[i], sx + d*z[i], sy + 0.58*d*z[i]); 368 DrawLine (sx + d*z[i], sy + 0.58*d*z[i], sx, sy - 1.15*d*z[i]); 369 DrawLine (sx, sy - 1.15*d*z[i], sx - d*z[i], sy + 0.58*d*z[i]); 370 } 371 } 372 } 373 if (object[0].ptype == 6) { /* Y */ 374 for (i = 0; i < object[0].Npts; i++) { 375 if (!(finite(x[i]) && finite(y[i]))) continue; 376 sx = x[i]*mxi + y[i]*mxj + bx; 377 sy = x[i]*myi + y[i]*myj + by; 378 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 379 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 380 { 381 DrawLine (sx, sy, sx - d*z[i], sy + 0.58*d*z[i]); 382 DrawLine (sx, sy, sx + d*z[i], sy + 0.58*d*z[i]); 383 DrawLine (sx, sy, sx, sy - 1.15*d*z[i]); 384 } 385 } 386 } 387 if (object[0].ptype == 7) { /* 0 */ 388 for (i = 0; i < object[0].Npts; i++) { 389 if (!(finite(x[i]) && finite(y[i]))) continue; 390 sx = x[i]*mxi + y[i]*mxj + bx; 391 sy = x[i]*myi + y[i]*myj + by; 392 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 393 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 394 { 395 DrawCircle (sx, sy, d*z[i]); 396 } 397 } 398 } 399 if (object[0].ptype == 8) { /* pentagon */ 400 for (i = 0; i < object[0].Npts; i++) { 401 if (!(finite(x[i]) && finite(y[i]))) continue; 402 sx = x[i]*mxi + y[i]*mxj + bx; 403 sy = x[i]*myi + y[i]*myj + by; 404 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 405 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 406 { 407 DrawLine (sx + 0.00*d*z[i], sy + 1.00*d*z[i], sx + 0.95*d*z[i], sy + 0.31*d*z[i]); 408 DrawLine (sx + 0.95*d*z[i], sy + 0.31*d*z[i], sx + 0.58*d*z[i], sy - 0.81*d*z[i]); 409 DrawLine (sx + 0.58*d*z[i], sy - 0.81*d*z[i], sx - 0.58*d*z[i], sy - 0.81*d*z[i]); 410 DrawLine (sx - 0.58*d*z[i], sy - 0.81*d*z[i], sx - 0.95*d*z[i], sy + 0.31*d*z[i]); 411 DrawLine (sx - 0.95*d*z[i], sy + 0.31*d*z[i], sx + 0.00*d*z[i], sy + 1.00*d*z[i]); 412 } 413 } 414 } 415 if (object[0].ptype == 9) { /* hexagon */ 416 for (i = 0; i < object[0].Npts; i++) { 417 if (!(finite(x[i]) && finite(y[i]))) continue; 418 sx = x[i]*mxi + y[i]*mxj + bx; 419 sy = x[i]*myi + y[i]*myj + by; 420 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 421 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 422 { 423 DrawLine (sx - d*z[i], sy, sx - 0.50*d*z[i], sy + 0.87*d*z[i]); 424 DrawLine (sx - 0.50*d*z[i], sy + 0.87*d*z[i], sx + 0.50*d*z[i], sy + 0.87*d*z[i]); 425 DrawLine (sx + 0.50*d*z[i], sy + 0.87*d*z[i], sx + d*z[i], sy); 426 427 DrawLine (sx + d*z[i], sy, sx + 0.50*d*z[i], sy - 0.87*d*z[i]); 428 DrawLine (sx + 0.50*d*z[i], sy - 0.87*d*z[i], sx - 0.50*d*z[i], sy - 0.87*d*z[i]); 429 DrawLine (sx - 0.50*d*z[i], sy - 0.87*d*z[i], sx - d*z[i], sy); 430 } 431 } 432 } 433 if (object[0].ptype == 100) { /* connect a pair of points */ 434 X0 = graph[0].axis[0].fx; 435 X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx; 436 Y0 = graph[0].axis[1].fy; 437 Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 438 439 for (i = 0; i + 1 < object[0].Npts; i+=2) { 440 if (!(finite(x[i]) && finite(y[i]))) continue; 441 sx1 = x[i]*mxi + y[i]*mxj + bx; 442 sy1 = x[i]*myi + y[i]*myj + by; 443 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx; 444 sy2 = x[i+1]*myi + y[i+1]*myj + by; 445 ClipLinePS (sx1, sy1, sx2, sy2, X0, Y0, X1, Y1, f); 446 } 447 } 448 } else { 449 d = object[0].size * 0.5 * (graphic->dx + graphic->dy) * 0.003; 450 x = object[0].x; y = object[0].y; 451 if (object[0].ptype == 0) { /* filled box */ 452 for (i = 0; i < object[0].Npts; i++) { 453 if (!(finite(x[i]) && finite(y[i]))) continue; 454 sx = x[i]*mxi + y[i]*mxj + bx; 455 sy = x[i]*myi + y[i]*myj + by; 456 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 457 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 458 { 459 FillRectangle (sx, sy, 2*d, 2*d); 460 } 461 } 462 } 463 if (object[0].ptype == 1) { /* open box */ 464 for (i = 0; i < object[0].Npts; i++) { 465 if (!(finite(x[i]) && finite(y[i]))) continue; 466 sx = x[i]*mxi + y[i]*mxj + bx; 467 sy = x[i]*myi + y[i]*myj + by; 468 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 469 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 470 { 471 DrawRectangle (sx, sy, 2*d, 2*d); 472 } 473 } 474 } 475 if (object[0].ptype == 2) { /* cross */ 476 for (i = 0; i < object[0].Npts; i++) { 477 if (!(finite(x[i]) && finite(y[i]))) continue; 478 sx = x[i]*mxi + y[i]*mxj + bx; 479 sy = x[i]*myi + y[i]*myj + by; 480 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 481 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 482 { 483 DrawLine (sx - d, sy, sx + d, sy); 484 DrawLine (sx, sy - d, sx, sy + d); 485 } 486 } 487 } 488 if (object[0].ptype == 3) { /* x */ 489 for (i = 0; i < object[0].Npts; i++) { 490 if (!(finite(x[i]) && finite(y[i]))) continue; 491 sx = x[i]*mxi + y[i]*mxj + bx; 492 sy = x[i]*myi + y[i]*myj + by; 493 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 494 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 495 { 496 DrawLine (sx + d, sy - d, sx - d, sy + d); 497 DrawLine (sx - d, sy - d, sx + d, sy + d); 498 } 499 } 500 } 501 if (object[0].ptype == 4) { /* filled triangle */ 502 for (i = 0; i < object[0].Npts; i++) { 503 if (!(finite(x[i]) && finite(y[i]))) continue; 504 sx = x[i]*mxi + y[i]*mxj + bx; 505 sy = x[i]*myi + y[i]*myj + by; 506 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 507 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 508 { 509 /* 510 DrawLine (sx - d, sy + 0.58*d, sx + d, sy + 0.58*d); 511 DrawLine (sx + d, sy + 0.58*d, sx, sy - 1.15*d); 512 DrawLine (sx, sy - 1.15*d, sx - d, sy + 0.58*d); 513 */ 514 FillTriangle (sx - d, sy - 0.58*d, sx + d, sy - 0.58*d, sx, sy + 1.15*d); 515 } 516 } 517 } 518 if (object[0].ptype == 5) { /* open triangle */ 519 for (i = 0; i < object[0].Npts; i++) { 520 if (!(finite(x[i]) && finite(y[i]))) continue; 521 sx = x[i]*mxi + y[i]*mxj + bx; 522 sy = x[i]*myi + y[i]*myj + by; 523 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 524 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 525 { 526 DrawLine (sx - d, sy - 0.58*d, sx + d, sy - 0.58*d); 527 DrawLine (sx + d, sy - 0.58*d, sx, sy + 1.15*d); 528 DrawLine (sx, sy + 1.15*d, sx - d, sy - 0.58*d); 529 } 530 } 531 } 532 if (object[0].ptype == 6) { /* Y */ 533 for (i = 0; i < object[0].Npts; i++) { 534 if (!(finite(x[i]) && finite(y[i]))) continue; 535 sx = x[i]*mxi + y[i]*mxj + bx; 536 sy = x[i]*myi + y[i]*myj + by; 537 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 538 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 539 { 540 DrawLine (sx, sy, sx - d, sy - 0.58*d); 541 DrawLine (sx, sy, sx + d, sy - 0.58*d); 542 DrawLine (sx, sy, sx, sy + 1.15*d); 543 } 544 } 545 } 546 if (object[0].ptype == 7) { /* 0 */ 547 for (i = 0; i < object[0].Npts; i++) { 548 if (!(finite(x[i]) && finite(y[i]))) continue; 549 sx = x[i]*mxi + y[i]*mxj + bx; 550 sy = x[i]*myi + y[i]*myj + by; 551 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 552 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 553 { 554 DrawCircle (sx, sy, d); 555 } 556 } 557 } 558 if (object[0].ptype == 8) { /* pentagon */ 559 for (i = 0; i < object[0].Npts; i++) { 560 if (!(finite(x[i]) && finite(y[i]))) continue; 561 sx = x[i]*mxi + y[i]*mxj + bx; 562 sy = x[i]*myi + y[i]*myj + by; 563 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 564 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 565 { 566 DrawLine (sx + 0.00*d, sy + 1.00*d, sx + 0.95*d, sy + 0.31*d); 567 DrawLine (sx + 0.95*d, sy + 0.31*d, sx + 0.58*d, sy - 0.81*d); 568 DrawLine (sx + 0.58*d, sy - 0.81*d, sx - 0.58*d, sy - 0.81*d); 569 DrawLine (sx - 0.58*d, sy - 0.81*d, sx - 0.95*d, sy + 0.31*d); 570 DrawLine (sx - 0.95*d, sy + 0.31*d, sx + 0.00*d, sy + 1.00*d); 571 } 572 } 573 } 574 if (object[0].ptype == 9) { /* pentagon */ 575 for (i = 0; i < object[0].Npts; i++) { 576 if (!(finite(x[i]) && finite(y[i]))) continue; 577 sx = x[i]*mxi + y[i]*mxj + bx; 578 sy = x[i]*myi + y[i]*myj + by; 579 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 580 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 581 { 582 DrawLine (sx - 1.00*d, sy + 0.00*d, sx - 0.50*d, sy + 0.87*d); 583 DrawLine (sx - 0.50*d, sy + 0.87*d, sx + 0.50*d, sy + 0.87*d); 584 DrawLine (sx + 0.50*d, sy + 0.87*d, sx + 1.00*d, sy + 0.00*d); 585 DrawLine (sx + 1.00*d, sy + 0.00*d, sx + 0.50*d, sy - 0.87*d); 586 DrawLine (sx + 0.50*d, sy - 0.87*d, sx - 0.50*d, sy - 0.87*d); 587 DrawLine (sx - 0.50*d, sy - 0.87*d, sx - 1.00*d, sy + 0.00*d); 588 } 589 } 590 } 591 if (object[0].ptype == 100) { 592 X0 = graph[0].axis[0].fx; 593 X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx; 594 Y0 = graph[0].axis[1].fy; 595 Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 596 597 for (i = 0; i + 1 < object[0].Npts; i+=2) { 598 if (!(finite(x[i]) && finite(y[i]))) continue; 599 sx1 = x[i]*mxi + y[i]*mxj + bx; 600 sy1 = x[i]*myi + y[i]*myj + by; 601 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx; 602 sy2 = x[i+1]*myi + y[i+1]*myj + by; 603 ClipLinePS (sx1, sy1, sx2, sy2, X0, Y0, X1, Y1, f); 604 } 605 } 606 } 309 int scaleSize = (object[0].size < 0); 310 int scaleColor = (object[0].color < 0); 311 312 ds = 0.5 * (graphic->dx + graphic->dy) * 0.003 * object[0].size; 313 dz = 0.5 * (graphic->dx + graphic->dy) * 0.010; 314 x = object[0].x; y = object[0].y; z = object[0].z; 315 316 if (object[0].ptype == 0) { /* filled box */ 317 for (i = 0; i < object[0].Npts; i++) { 318 if (!(finite(x[i]) && finite(y[i]))) continue; 319 sx = x[i]*mxi + y[i]*mxj + bx; 320 sy = x[i]*myi + y[i]*myj + by; 321 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 322 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 323 { 324 if (scaleColor) { 325 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 326 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 327 } 328 D = scaleSize ? dz*z[i] : ds; 329 FillRectangle (sx, sy, 2*D, 2*D); 330 } 331 } 332 } 333 if (object[0].ptype == 1) { /* open box */ 334 for (i = 0; i < object[0].Npts; i++) { 335 if (!(finite(x[i]) && finite(y[i]))) continue; 336 sx = x[i]*mxi + y[i]*mxj + bx; 337 sy = x[i]*myi + y[i]*myj + by; 338 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 339 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 340 { 341 if (scaleColor) { 342 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 343 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 344 } 345 D = scaleSize ? dz*z[i] : ds; 346 DrawRectangle (sx, sy, 2*D, 2*D); 347 } 348 } 349 } 350 if (object[0].ptype == 2) { /* cross */ 351 for (i = 0; i < object[0].Npts; i++) { 352 if (!(finite(x[i]) && finite(y[i]))) continue; 353 sx = x[i]*mxi + y[i]*mxj + bx; 354 sy = x[i]*myi + y[i]*myj + by; 355 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 356 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 357 { 358 if (scaleColor) { 359 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 360 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 361 } 362 D = scaleSize ? dz*z[i] : ds; 363 DrawLine (sx - D, sy, sx + D, sy); 364 DrawLine (sx, sy - D, sx, sy + D); 365 } 366 } 367 } 368 if (object[0].ptype == 3) { /* x */ 369 for (i = 0; i < object[0].Npts; i++) { 370 if (!(finite(x[i]) && finite(y[i]))) continue; 371 sx = x[i]*mxi + y[i]*mxj + bx; 372 sy = x[i]*myi + y[i]*myj + by; 373 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 374 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 375 { 376 if (scaleColor) { 377 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 378 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 379 } 380 D = scaleSize ? dz*z[i] : ds; 381 DrawLine (sx + D, sy - D, sx - D, sy + D); 382 DrawLine (sx - D, sy - D, sx + D, sy + D); 383 } 384 } 385 } 386 if (object[0].ptype == 4) { /* filled triangle */ 387 for (i = 0; i < object[0].Npts; i++) { 388 if (!(finite(x[i]) && finite(y[i]))) continue; 389 sx = x[i]*mxi + y[i]*mxj + bx; 390 sy = x[i]*myi + y[i]*myj + by; 391 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 392 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 393 { 394 if (scaleColor) { 395 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 396 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 397 } 398 D = scaleSize ? dz*z[i] : ds; 399 FillTriangle (sx - D, sy - 0.58*D, sx + D, sy - 0.58*D, sx, sy + 1.15*D); 400 /* 401 DrawLine (sx - D, sy + 0.58*D, sx + D, sy + 0.58*D); 402 DrawLine (sx + D, sy + 0.58*D, sx, sy - 1.15*D); 403 DrawLine (sx, sy - 1.15*D, sx - D, sy + 0.58*D); 404 */ 405 } 406 } 407 } 408 if (object[0].ptype == 5) { /* open triangle */ 409 for (i = 0; i < object[0].Npts; i++) { 410 if (!(finite(x[i]) && finite(y[i]))) continue; 411 sx = x[i]*mxi + y[i]*mxj + bx; 412 sy = x[i]*myi + y[i]*myj + by; 413 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 414 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 415 { 416 if (scaleColor) { 417 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 418 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 419 } 420 D = scaleSize ? dz*z[i] : ds; 421 DrawLine (sx - D, sy - 0.58*D, sx + D, sy - 0.58*D); 422 DrawLine (sx + D, sy - 0.58*D, sx, sy + 1.15*D); 423 DrawLine (sx, sy + 1.15*D, sx - D, sy - 0.58*D); 424 } 425 } 426 } 427 if (object[0].ptype == 6) { /* Y */ 428 for (i = 0; i < object[0].Npts; i++) { 429 if (!(finite(x[i]) && finite(y[i]))) continue; 430 sx = x[i]*mxi + y[i]*mxj + bx; 431 sy = x[i]*myi + y[i]*myj + by; 432 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 433 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 434 { 435 if (scaleColor) { 436 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 437 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 438 } 439 D = scaleSize ? dz*z[i] : ds; 440 DrawLine (sx, sy, sx - D, sy + 0.58*D); 441 DrawLine (sx, sy, sx + D, sy + 0.58*D); 442 DrawLine (sx, sy, sx, sy - 1.15*D); 443 } 444 } 445 } 446 if (object[0].ptype == 7) { /* 0 */ 447 for (i = 0; i < object[0].Npts; i++) { 448 if (!(finite(x[i]) && finite(y[i]))) continue; 449 sx = x[i]*mxi + y[i]*mxj + bx; 450 sy = x[i]*myi + y[i]*myj + by; 451 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 452 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 453 { 454 if (scaleColor) { 455 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 456 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 457 } 458 D = scaleSize ? dz*z[i] : ds; 459 DrawCircle (sx, sy, D); 460 } 461 } 462 } 463 if (object[0].ptype == 8) { /* pentagon */ 464 for (i = 0; i < object[0].Npts; i++) { 465 if (!(finite(x[i]) && finite(y[i]))) continue; 466 sx = x[i]*mxi + y[i]*mxj + bx; 467 sy = x[i]*myi + y[i]*myj + by; 468 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 469 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 470 { 471 if (scaleColor) { 472 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 473 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 474 } 475 D = scaleSize ? dz*z[i] : ds; 476 DrawLine (sx + 0.00*D, sy + 1.00*D, sx + 0.95*D, sy + 0.31*D); 477 DrawLine (sx + 0.95*D, sy + 0.31*D, sx + 0.58*D, sy - 0.81*D); 478 DrawLine (sx + 0.58*D, sy - 0.81*D, sx - 0.58*D, sy - 0.81*D); 479 DrawLine (sx - 0.58*D, sy - 0.81*D, sx - 0.95*D, sy + 0.31*D); 480 DrawLine (sx - 0.95*D, sy + 0.31*D, sx + 0.00*D, sy + 1.00*D); 481 } 482 } 483 } 484 if (object[0].ptype == 9) { /* hexagon */ 485 for (i = 0; i < object[0].Npts; i++) { 486 if (!(finite(x[i]) && finite(y[i]))) continue; 487 sx = x[i]*mxi + y[i]*mxj + bx; 488 sy = x[i]*myi + y[i]*myj + by; 489 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 490 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 491 { 492 if (scaleColor) { 493 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 494 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 495 } 496 D = scaleSize ? dz*z[i] : ds; 497 DrawLine (sx - D, sy, sx - 0.50*D, sy + 0.87*D); 498 DrawLine (sx - 0.50*D, sy + 0.87*D, sx + 0.50*D, sy + 0.87*D); 499 DrawLine (sx + 0.50*D, sy + 0.87*D, sx + D, sy); 500 501 DrawLine (sx + D, sy, sx + 0.50*D, sy - 0.87*D); 502 DrawLine (sx + 0.50*D, sy - 0.87*D, sx - 0.50*D, sy - 0.87*D); 503 DrawLine (sx - 0.50*D, sy - 0.87*D, sx - D, sy); 504 } 505 } 506 } 507 if (object[0].ptype == 10) { /* 0 */ 508 for (i = 0; i < object[0].Npts; i++) { 509 if (!(finite(x[i]) && finite(y[i]))) continue; 510 sx = x[i]*mxi + y[i]*mxj + bx; 511 sy = x[i]*myi + y[i]*myj + by; 512 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 513 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 514 { 515 if (scaleColor) { 516 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 517 fprintf (f, "%4.2f %4.2f %4.2f setrgbcolor\n", pixel1[pixel], pixel2[pixel], pixel3[pixel]); 518 } 519 D = scaleSize ? dz*z[i] : ds; 520 FillCircle (sx, sy, D); 521 } 522 } 523 } 524 if (object[0].ptype == 100) { /* connect a pair of points */ 525 double X0 = graph[0].axis[0].fx; 526 double X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx; 527 double Y0 = graph[0].axis[1].fy; 528 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 529 530 for (i = 0; i + 1 < object[0].Npts; i+=2) { 531 if (!(finite(x[i]) && finite(y[i]))) continue; 532 sx1 = x[i]*mxi + y[i]*mxj + bx; 533 sy1 = x[i]*myi + y[i]*myj + by; 534 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx; 535 sy2 = x[i+1]*myi + y[i+1]*myj + by; 536 ClipLinePS (sx1, sy1, sx2, sy2, X0, Y0, X1, Y1, f); 537 } 538 } 539 540 free (pixel1); 541 free (pixel2); 542 free (pixel3); 607 543 } 608 544 -
branches/eam_branches/ipp-20110505/Ohana/src/kapa2/src/PSit.c
r29938 r31615 76 76 fprintf (f, " 0 exch rlineto -1 mul 0 rlineto closepath fill stroke } def\n"); 77 77 fprintf (f, "/C {0 360 arc stroke} def\n"); 78 fprintf (f, "/FC {0 360 arc fill stroke} def\n"); 79 fprintf (f, "/RGB {setrgbcolor} def\n"); 78 80 fprintf (f, "/L {newpath moveto lineto stroke} def\n\n"); 79 81 fprintf (f, "/TF {newpath moveto lineto lineto fill stroke} def\n\n"); -
branches/eam_branches/ipp-20110505/Ohana/src/kapa2/src/SetChannel.c
r16011 r31615 39 39 Graphic *graphic; 40 40 Section *section; 41 KapaImageWidget *image;42 41 char colormap[256]; 43 42 int status; 44 43 44 KiiScanMessage (sock, "%s", colormap); 45 status = SetColormap (colormap); 46 if (!status) { 47 fprintf (stderr, "unknown colormap %s\n", colormap); 48 return (TRUE); 49 } 50 45 51 graphic = GetGraphic (); 46 52 section = GetActiveSection(); 47 if (section->image == NULL) { 48 section->image = InitImageWidget (); 49 SetSectionSizes (section); 53 if (section->image) { 54 // section->image = InitImageWidget (); 55 // SetSectionSizes (section); 56 // image = section->image; 57 SetColorScale (graphic, section->image); 58 if (!USE_XWINDOW) return (TRUE); 59 Remap (graphic, section->image); 50 60 } 51 image = section->image;52 61 53 KiiScanMessage (sock, "%s", colormap);54 55 status = SetColormap (colormap);56 if (!status) fprintf (stderr, "unknown colormap %s\n", colormap);57 58 SetColorScale (graphic, image);59 if (!USE_XWINDOW) return (TRUE);60 61 Remap (graphic, image);62 62 Refresh (); 63 63 XFlush (graphic[0].display); -
branches/eam_branches/ipp-20110505/Ohana/src/kapa2/src/bDrawObjects.c
r31160 r31615 2 2 3 3 # define DrawLine(BUF,X1,Y1,X2,Y2) (bDrawLine (BUF, (X1), (Y1), (X2), (Y2))) 4 # define DrawRectangle(BUF,X,Y,dX,dY) (bDrawRectOpen (BUF, (X-0.5*dX), (Y-0.5*dY), (X+0.5*dX), (Y+0.5*dY))) 5 # define FillRectangle(BUF,X,Y,dX,dY) (bDrawRectFill (BUF, (X-0.5*dX), (Y-0.5*dY), (X+0.5*dX+1), (Y+0.5*dY+1))) 4 6 # define DrawCircle(BUF,X1,Y1,R) (bDrawCircle (BUF, (X1), (Y1), (R))) 5 # define DrawRectangle(BUF,X,Y,dX,dY) (bDrawRectOpen (BUF, (X-0.5*dX), (Y-0.5*dY), (X+0.5*dX), (Y+0.5*dY))) 6 # define FillRectangle(BUF,X,Y,dX,dY) (bDrawRectFill (BUF, (X-0.5*dX), (Y-0.5*dY), (X+0.5*dX), (Y+0.5*dY))) 7 # define FillTriangle(BUF,X1,Y1,X2,Y2,X3,Y3) (bDrawTriFill (BUF, (X1), (Y1), (X2), (Y2), (X3), (Y3))) 7 # define FillCircle(BUF,X1,Y1,R) (bDrawCircleFill (BUF, (X1), (Y1), (R))) 8 # define FillTriangle(BUF,X1,Y1,dX,dY) (bDrawTriFill (BUF, (X1), (Y1), (dX), (dY))) 8 9 # define OpenTriangle(BUF,X1,Y1,X2,Y2,X3,Y3) (bDrawTriOpen (BUF, (X1), (Y1), (X2), (Y2), (X3), (Y3))) 9 10 … … 260 261 float *x, *y, *z; 261 262 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 262 double sx, sy, d, sx1, sy1, sx2, sy2; 263 int sx, sy, sx1, sy1, sx2, sy2, ds, dz, D; 264 unsigned char *pixel1, *pixel2, *pixel3; 263 265 264 266 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); … … 275 277 by = byi + byj; 276 278 277 /* below here, code is identical with DrawObjects */ 279 Graphic *graphic = GetGraphic(); 280 281 ALLOCATE (pixel1, unsigned char, graphic[0].Npixels); 282 ALLOCATE (pixel2, unsigned char, graphic[0].Npixels); 283 ALLOCATE (pixel3, unsigned char, graphic[0].Npixels); 284 285 /** cmap[i].pixel must be defined even if X is not used **/ 286 for (i = 0; i < graphic[0].Npixels; i++) { /* set up pixel array */ 287 pixel1[i] = graphic[0].cmap[i].red >> 8; 288 pixel2[i] = graphic[0].cmap[i].green >> 8; 289 pixel3[i] = graphic[0].cmap[i].blue >> 8; 290 } 291 278 292 /**** points are scaled by object.z ***/ 279 if (object[0].size < 0) { 280 d = 0.5 * (graphic->dx + graphic->dy) * 0.01; 281 x = object[0].x; y = object[0].y; z = object[0].z; 282 if (object[0].ptype == 0) { /* filled box */ 283 for (i = 0; i < object[0].Npts; i++) { 284 if (!(finite(x[i]) && finite(y[i]))) continue; 285 sx = x[i]*mxi + y[i]*mxj + bx; 286 sy = x[i]*myi + y[i]*myj + by; 287 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 288 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 289 { 290 FillRectangle (buffer, sx, sy, 2*d*z[i], 2*d*z[i]); 291 } 292 } 293 } 294 if (object[0].ptype == 1) { /* open box */ 295 for (i = 0; i < object[0].Npts; i++) { 296 if (!(finite(x[i]) && finite(y[i]))) continue; 297 sx = x[i]*mxi + y[i]*mxj + bx; 298 sy = x[i]*myi + y[i]*myj + by; 299 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 300 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 301 { 302 DrawRectangle (buffer, sx, sy, 2*d*z[i], 2*d*z[i]); 303 } 304 } 305 } 306 if (object[0].ptype == 2) { /* cross */ 307 for (i = 0; i < object[0].Npts; i++) { 308 if (!(finite(x[i]) && finite(y[i]))) continue; 309 sx = x[i]*mxi + y[i]*mxj + bx; 310 sy = x[i]*myi + y[i]*myj + by; 311 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 312 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 313 { 314 DrawLine (buffer, sx - d*z[i], sy, sx + d*z[i], sy); 315 DrawLine (buffer, sx, sy - d*z[i], sx, sy + d*z[i]); 316 } 317 } 318 } 319 if (object[0].ptype == 3) { /* x */ 320 for (i = 0; i < object[0].Npts; i++) { 321 if (!(finite(x[i]) && finite(y[i]))) continue; 322 sx = x[i]*mxi + y[i]*mxj + bx; 323 sy = x[i]*myi + y[i]*myj + by; 324 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 325 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 326 { 327 DrawLine (buffer, sx + d*z[i], sy - d*z[i], sx - d*z[i], sy + d*z[i]); 328 DrawLine (buffer, sx - d*z[i], sy - d*z[i], sx + d*z[i], sy + d*z[i]); 329 } 330 } 331 } 332 if (object[0].ptype == 4) { /* filled triangle */ 333 for (i = 0; i < object[0].Npts; i++) { 334 if (!(finite(x[i]) && finite(y[i]))) continue; 335 sx = x[i]*mxi + y[i]*mxj + bx; 336 sy = x[i]*myi + y[i]*myj + by; 337 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 338 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 339 { 340 FillTriangle (buffer, sx - d*z[i], sy - 0.58*d*z[i], sx + d*z[i], sy - 0.58*d*z[i], sx, sy + 1.15*d*z[i]); 341 } 342 } 343 } 344 if (object[0].ptype == 5) { /* open triangle */ 345 for (i = 0; i < object[0].Npts; i++) { 346 if (!(finite(x[i]) && finite(y[i]))) continue; 347 sx = x[i]*mxi + y[i]*mxj + bx; 348 sy = x[i]*myi + y[i]*myj + by; 349 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 350 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 351 { 352 OpenTriangle (buffer, sx - d*z[i], sy + 0.58*d*z[i], sx, sy - 1.15*d*z[i], sx + d*z[i], sy + 0.58*d*z[i]); 353 } 354 } 355 } 356 if (object[0].ptype == 6) { /* Y */ 357 for (i = 0; i < object[0].Npts; i++) { 358 if (!(finite(x[i]) && finite(y[i]))) continue; 359 sx = x[i]*mxi + y[i]*mxj + bx; 360 sy = x[i]*myi + y[i]*myj + by; 361 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 362 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 363 { 364 DrawLine (buffer, sx, sy, sx - d*z[i], sy + 0.58*d*z[i]); 365 DrawLine (buffer, sx, sy, sx + d*z[i], sy + 0.58*d*z[i]); 366 DrawLine (buffer, sx, sy, sx, sy - 1.15*d*z[i]); 367 } 368 } 369 } 370 if (object[0].ptype == 7) { /* 0 */ 371 for (i = 0; i < object[0].Npts; i++) { 372 if (!(finite(x[i]) && finite(y[i]))) continue; 373 sx = x[i]*mxi + y[i]*mxj + bx; 374 sy = x[i]*myi + y[i]*myj + by; 375 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 376 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 377 { 378 DrawCircle (buffer, sx, sy, d*z[i]); 379 } 380 } 381 } 382 if (object[0].ptype == 8) { /* pentagon */ 383 for (i = 0; i < object[0].Npts; i++) { 384 if (!(finite(x[i]) && finite(y[i]))) continue; 385 sx = x[i]*mxi + y[i]*mxj + bx; 386 sy = x[i]*myi + y[i]*myj + by; 387 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 388 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 389 { 390 DrawLine (buffer, sx + 0.00*d*z[i], sy - 1.00*d*z[i], sx + 0.95*d*z[i], sy - 0.31*d*z[i]); 391 DrawLine (buffer, sx + 0.95*d*z[i], sy - 0.31*d*z[i], sx + 0.58*d*z[i], sy + 0.81*d*z[i]); 392 DrawLine (buffer, sx + 0.58*d*z[i], sy + 0.81*d*z[i], sx - 0.58*d*z[i], sy + 0.81*d*z[i]); 393 DrawLine (buffer, sx - 0.58*d*z[i], sy + 0.81*d*z[i], sx - 0.95*d*z[i], sy - 0.31*d*z[i]); 394 DrawLine (buffer, sx - 0.95*d*z[i], sy - 0.31*d*z[i], sx + 0.00*d*z[i], sy - 1.00*d*z[i]); 395 } 396 } 397 } 398 if (object[0].ptype == 9) { /* hexagon */ 399 for (i = 0; i < object[0].Npts; i++) { 400 if (!(finite(x[i]) && finite(y[i]))) continue; 401 sx = x[i]*mxi + y[i]*mxj + bx; 402 sy = x[i]*myi + y[i]*myj + by; 403 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 404 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 405 { 406 DrawLine (buffer, sx - d*z[i], sy, sx - 0.50*d*z[i], sy + 0.87*d*z[i]); 407 DrawLine (buffer, sx - 0.50*d*z[i], sy + 0.87*d*z[i], sx + 0.50*d*z[i], sy + 0.87*d*z[i]); 408 DrawLine (buffer, sx + 0.50*d*z[i], sy + 0.87*d*z[i], sx + d*z[i], sy); 409 410 DrawLine (buffer, sx + d*z[i], sy, sx + 0.50*d*z[i], sy - 0.87*d*z[i]); 411 DrawLine (buffer, sx + 0.50*d*z[i], sy - 0.87*d*z[i], sx - 0.50*d*z[i], sy - 0.87*d*z[i]); 412 DrawLine (buffer, sx - 0.50*d*z[i], sy - 0.87*d*z[i], sx - d*z[i], sy); 413 } 414 } 415 } 416 if (object[0].ptype == 100) { /* connect a pair of points */ 417 418 double X0 = graph[0].axis[0].fx; 419 double X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx; 420 double Y0 = graph[0].axis[1].fy; 421 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 422 423 for (i = 0; i + 1 < object[0].Npts; i+=2) { 424 if (!(finite(x[i]) && finite(y[i]))) continue; 425 sx1 = x[i]*mxi + y[i]*mxj + bx; 426 sy1 = x[i]*myi + y[i]*myj + by; 427 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx; 428 sy2 = x[i+1]*myi + y[i+1]*myj + by; 429 bDrawClipLine (buffer, sx1, sy1, sx2, sy2, X0, Y0, X1, Y1); 430 } 431 } 432 } else { 433 d = object[0].size * 0.5 * (graphic->dx + graphic->dy) * 0.003; 434 x = object[0].x; y = object[0].y; 435 if (object[0].ptype == 0) { /* filled box */ 436 for (i = 0; i < object[0].Npts; i++) { 437 if (!(finite(x[i]) && finite(y[i]))) continue; 438 sx = x[i]*mxi + y[i]*mxj + bx; 439 sy = x[i]*myi + y[i]*myj + by; 440 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 441 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 442 { 443 FillRectangle (buffer, sx, sy, 2*d, 2*d); 444 } 445 } 446 } 447 if (object[0].ptype == 1) { /* open box */ 448 for (i = 0; i < object[0].Npts; i++) { 449 if (!(finite(x[i]) && finite(y[i]))) continue; 450 sx = x[i]*mxi + y[i]*mxj + bx; 451 sy = x[i]*myi + y[i]*myj + by; 452 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 453 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 454 { 455 DrawRectangle (buffer, sx, sy, 2*d, 2*d); 456 } 457 } 458 } 459 if (object[0].ptype == 2) { /* cross */ 460 for (i = 0; i < object[0].Npts; i++) { 461 if (!(finite(x[i]) && finite(y[i]))) continue; 462 sx = x[i]*mxi + y[i]*mxj + bx; 463 sy = x[i]*myi + y[i]*myj + by; 464 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 465 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 466 { 467 DrawLine (buffer, sx - d, sy, sx + d, sy); 468 DrawLine (buffer, sx, sy - d, sx, sy + d); 469 } 470 } 471 } 472 if (object[0].ptype == 3) { /* x */ 473 for (i = 0; i < object[0].Npts; i++) { 474 if (!(finite(x[i]) && finite(y[i]))) continue; 475 sx = x[i]*mxi + y[i]*mxj + bx; 476 sy = x[i]*myi + y[i]*myj + by; 477 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 478 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 479 { 480 DrawLine (buffer, sx + d, sy - d, sx - d, sy + d); 481 DrawLine (buffer, sx - d, sy - d, sx + d, sy + d); 482 } 483 } 484 } 485 if (object[0].ptype == 4) { /* filled triangle */ 486 for (i = 0; i < object[0].Npts; i++) { 487 if (!(finite(x[i]) && finite(y[i]))) continue; 488 sx = x[i]*mxi + y[i]*mxj + bx; 489 sy = x[i]*myi + y[i]*myj + by; 490 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 491 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 492 { 493 FillTriangle (buffer, sx - d, sy - 0.58*d, sx + d, sy - 0.58*d, sx, sy + 1.15*d); 494 } 495 } 496 } 497 if (object[0].ptype == 5) { /* open triangle */ 498 for (i = 0; i < object[0].Npts; i++) { 499 if (!(finite(x[i]) && finite(y[i]))) continue; 500 sx = x[i]*mxi + y[i]*mxj + bx; 501 sy = x[i]*myi + y[i]*myj + by; 502 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 503 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 504 { 505 OpenTriangle (buffer, sx - d, sy + 0.58*d, sx + d, sy + 0.58*d, sx, sy - 1.15*d); 506 } 507 } 508 } 509 if (object[0].ptype == 6) { /* Y */ 510 for (i = 0; i < object[0].Npts; i++) { 511 if (!(finite(x[i]) && finite(y[i]))) continue; 512 sx = x[i]*mxi + y[i]*mxj + bx; 513 sy = x[i]*myi + y[i]*myj + by; 514 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 515 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 516 { 517 DrawLine (buffer, sx, sy, sx - d, sy - 0.58*d); 518 DrawLine (buffer, sx, sy, sx + d, sy - 0.58*d); 519 DrawLine (buffer, sx, sy, sx, sy + 1.15*d); 520 } 521 } 522 } 523 if (object[0].ptype == 7) { /* 0 */ 524 for (i = 0; i < object[0].Npts; i++) { 525 if (!(finite(x[i]) && finite(y[i]))) continue; 526 sx = x[i]*mxi + y[i]*mxj + bx; 527 sy = x[i]*myi + y[i]*myj + by; 528 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 529 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 530 { 531 DrawCircle (buffer, sx, sy, d); 532 } 533 } 534 } 535 if (object[0].ptype == 8) { /* pentagon */ 536 for (i = 0; i < object[0].Npts; i++) { 537 if (!(finite(x[i]) && finite(y[i]))) continue; 538 sx = x[i]*mxi + y[i]*mxj + bx; 539 sy = x[i]*myi + y[i]*myj + by; 540 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 541 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 542 { 543 DrawLine (buffer, sx + 0.00*d, sy - 1.00*d, sx + 0.95*d, sy - 0.31*d); 544 DrawLine (buffer, sx + 0.95*d, sy - 0.31*d, sx + 0.58*d, sy + 0.81*d); 545 DrawLine (buffer, sx + 0.58*d, sy + 0.81*d, sx - 0.58*d, sy + 0.81*d); 546 DrawLine (buffer, sx - 0.58*d, sy + 0.81*d, sx - 0.95*d, sy - 0.31*d); 547 DrawLine (buffer, sx - 0.95*d, sy - 0.31*d, sx + 0.00*d, sy - 1.00*d); 548 } 549 } 550 } 551 if (object[0].ptype == 9) { /* pentagon */ 552 for (i = 0; i < object[0].Npts; i++) { 553 if (!(finite(x[i]) && finite(y[i]))) continue; 554 sx = x[i]*mxi + y[i]*mxj + bx; 555 sy = x[i]*myi + y[i]*myj + by; 556 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 557 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 558 { 559 DrawLine (buffer, sx - 1.00*d, sy + 0.00*d, sx - 0.50*d, sy + 0.87*d); 560 DrawLine (buffer, sx - 0.50*d, sy + 0.87*d, sx + 0.50*d, sy + 0.87*d); 561 DrawLine (buffer, sx + 0.50*d, sy + 0.87*d, sx + 1.00*d, sy + 0.00*d); 562 DrawLine (buffer, sx + 1.00*d, sy + 0.00*d, sx + 0.50*d, sy - 0.87*d); 563 DrawLine (buffer, sx + 0.50*d, sy - 0.87*d, sx - 0.50*d, sy - 0.87*d); 564 DrawLine (buffer, sx - 0.50*d, sy - 0.87*d, sx - 1.00*d, sy + 0.00*d); 565 } 566 } 567 } 568 if (object[0].ptype == 100) { 569 570 double X0 = graph[0].axis[0].fx; 571 double X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx; 572 double Y0 = graph[0].axis[1].fy; 573 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 574 575 for (i = 0; i + 1 < object[0].Npts; i+=2) { 576 if (!(finite(x[i]) && finite(y[i]))) continue; 577 sx1 = x[i]*mxi + y[i]*mxj + bx; 578 sy1 = x[i]*myi + y[i]*myj + by; 579 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx; 580 sy2 = x[i+1]*myi + y[i+1]*myj + by; 581 bDrawClipLine (buffer, sx1, sy1, sx2, sy2, X0, Y0, X1, Y1); 582 } 583 } 584 } 293 int scaleSize = (object[0].size < 0); 294 int scaleColor = (object[0].color < 0); 295 296 ds = 0.5 * (graphic->dx + graphic->dy) * 0.003 * object[0].size; 297 dz = 0.5 * (graphic->dx + graphic->dy) * 0.010; 298 x = object[0].x; y = object[0].y; z = object[0].z; 299 300 if (object[0].ptype == 0) { /* filled box */ 301 for (i = 0; i < object[0].Npts; i++) { 302 if (!(finite(x[i]) && finite(y[i]))) continue; 303 sx = x[i]*mxi + y[i]*mxj + bx; 304 sy = x[i]*myi + y[i]*myj + by; 305 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 306 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 307 { 308 if (scaleColor) { 309 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 310 buffer->bColor_R = pixel1[pixel]; 311 buffer->bColor_G = pixel2[pixel]; 312 buffer->bColor_B = pixel3[pixel]; 313 } 314 D = scaleSize ? dz*z[i] : ds; 315 FillRectangle (buffer, sx, sy, 2*D, 2*D); 316 } 317 } 318 } 319 if (object[0].ptype == 1) { /* open box */ 320 for (i = 0; i < object[0].Npts; i++) { 321 if (!(finite(x[i]) && finite(y[i]))) continue; 322 sx = x[i]*mxi + y[i]*mxj + bx; 323 sy = x[i]*myi + y[i]*myj + by; 324 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 325 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 326 { 327 if (scaleColor) { 328 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 329 buffer->bColor_R = pixel1[pixel]; 330 buffer->bColor_G = pixel2[pixel]; 331 buffer->bColor_B = pixel3[pixel]; 332 } 333 D = scaleSize ? dz*z[i] : ds; 334 DrawRectangle (buffer, sx, sy, 2*D, 2*D); 335 } 336 } 337 } 338 if (object[0].ptype == 2) { /* cross */ 339 for (i = 0; i < object[0].Npts; i++) { 340 if (!(finite(x[i]) && finite(y[i]))) continue; 341 sx = x[i]*mxi + y[i]*mxj + bx; 342 sy = x[i]*myi + y[i]*myj + by; 343 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 344 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 345 { 346 if (scaleColor) { 347 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 348 buffer->bColor_R = pixel1[pixel]; 349 buffer->bColor_G = pixel2[pixel]; 350 buffer->bColor_B = pixel3[pixel]; 351 } 352 D = scaleSize ? dz*z[i] : ds; 353 DrawLine (buffer, sx - D, sy, sx + D, sy); 354 DrawLine (buffer, sx, sy - D, sx, sy + D); 355 } 356 } 357 } 358 if (object[0].ptype == 3) { /* x */ 359 for (i = 0; i < object[0].Npts; i++) { 360 if (!(finite(x[i]) && finite(y[i]))) continue; 361 sx = x[i]*mxi + y[i]*mxj + bx; 362 sy = x[i]*myi + y[i]*myj + by; 363 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 364 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 365 { 366 if (scaleColor) { 367 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 368 buffer->bColor_R = pixel1[pixel]; 369 buffer->bColor_G = pixel2[pixel]; 370 buffer->bColor_B = pixel3[pixel]; 371 } 372 D = scaleSize ? dz*z[i] : ds; 373 DrawLine (buffer, sx + D, sy - D, sx - D, sy + D); 374 DrawLine (buffer, sx - D, sy - D, sx + D, sy + D); 375 } 376 } 377 } 378 if (object[0].ptype == 4) { /* filled triangle */ 379 for (i = 0; i < object[0].Npts; i++) { 380 if (!(finite(x[i]) && finite(y[i]))) continue; 381 sx = x[i]*mxi + y[i]*mxj + bx; 382 sy = x[i]*myi + y[i]*myj + by; 383 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 384 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 385 { 386 if (scaleColor) { 387 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 388 buffer->bColor_R = pixel1[pixel]; 389 buffer->bColor_G = pixel2[pixel]; 390 buffer->bColor_B = pixel3[pixel]; 391 } 392 D = scaleSize ? dz*z[i] : ds; 393 // FillTriangle (buffer, sx - D, sy - 0.58*D, sx + D, sy - 0.58*D, sx, sy + 1.15*D); 394 FillTriangle (buffer, sx, sy + 0.58*D, D, -1.73*D); 395 } 396 } 397 } 398 if (object[0].ptype == 5) { /* open triangle */ 399 for (i = 0; i < object[0].Npts; i++) { 400 if (!(finite(x[i]) && finite(y[i]))) continue; 401 sx = x[i]*mxi + y[i]*mxj + bx; 402 sy = x[i]*myi + y[i]*myj + by; 403 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 404 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 405 { 406 if (scaleColor) { 407 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 408 buffer->bColor_R = pixel1[pixel]; 409 buffer->bColor_G = pixel2[pixel]; 410 buffer->bColor_B = pixel3[pixel]; 411 } 412 D = scaleSize ? dz*z[i] : ds; 413 OpenTriangle (buffer, sx - D, sy + 0.58*D, sx + D, sy + 0.58*D, sx, sy - 1.15*D); 414 } 415 } 416 } 417 if (object[0].ptype == 6) { /* Y */ 418 for (i = 0; i < object[0].Npts; i++) { 419 if (!(finite(x[i]) && finite(y[i]))) continue; 420 sx = x[i]*mxi + y[i]*mxj + bx; 421 sy = x[i]*myi + y[i]*myj + by; 422 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 423 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 424 { 425 if (scaleColor) { 426 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 427 buffer->bColor_R = pixel1[pixel]; 428 buffer->bColor_G = pixel2[pixel]; 429 buffer->bColor_B = pixel3[pixel]; 430 } 431 D = scaleSize ? dz*z[i] : ds; 432 DrawLine (buffer, sx, sy, sx - D, sy - 0.58*D); 433 DrawLine (buffer, sx, sy, sx + D, sy - 0.58*D); 434 DrawLine (buffer, sx, sy, sx, sy + 1.15*D); 435 } 436 } 437 } 438 if (object[0].ptype == 7) { /* 0 */ 439 for (i = 0; i < object[0].Npts; i++) { 440 if (!(finite(x[i]) && finite(y[i]))) continue; 441 sx = x[i]*mxi + y[i]*mxj + bx; 442 sy = x[i]*myi + y[i]*myj + by; 443 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 444 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 445 { 446 if (scaleColor) { 447 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 448 buffer->bColor_R = pixel1[pixel]; 449 buffer->bColor_G = pixel2[pixel]; 450 buffer->bColor_B = pixel3[pixel]; 451 } 452 D = scaleSize ? dz*z[i] : ds; 453 DrawCircle (buffer, sx, sy, D); 454 } 455 } 456 } 457 if (object[0].ptype == 8) { /* pentagon */ 458 for (i = 0; i < object[0].Npts; i++) { 459 if (!(finite(x[i]) && finite(y[i]))) continue; 460 sx = x[i]*mxi + y[i]*mxj + bx; 461 sy = x[i]*myi + y[i]*myj + by; 462 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 463 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 464 { 465 if (scaleColor) { 466 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 467 buffer->bColor_R = pixel1[pixel]; 468 buffer->bColor_G = pixel2[pixel]; 469 buffer->bColor_B = pixel3[pixel]; 470 } 471 D = scaleSize ? dz*z[i] : ds; 472 DrawLine (buffer, sx + 0.00*D, sy - 1.00*D, sx + 0.95*D, sy - 0.31*D); 473 DrawLine (buffer, sx + 0.95*D, sy - 0.31*D, sx + 0.58*D, sy + 0.81*D); 474 DrawLine (buffer, sx + 0.58*D, sy + 0.81*D, sx - 0.58*D, sy + 0.81*D); 475 DrawLine (buffer, sx - 0.58*D, sy + 0.81*D, sx - 0.95*D, sy - 0.31*D); 476 DrawLine (buffer, sx - 0.95*D, sy - 0.31*D, sx + 0.00*D, sy - 1.00*D); 477 } 478 } 479 } 480 if (object[0].ptype == 9) { /* hexagon */ 481 for (i = 0; i < object[0].Npts; i++) { 482 if (!(finite(x[i]) && finite(y[i]))) continue; 483 sx = x[i]*mxi + y[i]*mxj + bx; 484 sy = x[i]*myi + y[i]*myj + by; 485 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 486 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 487 { 488 if (scaleColor) { 489 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 490 buffer->bColor_R = pixel1[pixel]; 491 buffer->bColor_G = pixel2[pixel]; 492 buffer->bColor_B = pixel3[pixel]; 493 } 494 D = scaleSize ? dz*z[i] : ds; 495 DrawLine (buffer, sx - D, sy, sx - 0.50*D, sy + 0.87*D); 496 DrawLine (buffer, sx - 0.50*D, sy + 0.87*D, sx + 0.50*D, sy + 0.87*D); 497 DrawLine (buffer, sx + 0.50*D, sy + 0.87*D, sx + D, sy); 498 DrawLine (buffer, sx + D, sy, sx + 0.50*D, sy - 0.87*D); 499 DrawLine (buffer, sx + 0.50*D, sy - 0.87*D, sx - 0.50*D, sy - 0.87*D); 500 DrawLine (buffer, sx - 0.50*D, sy - 0.87*D, sx - D, sy); 501 } 502 } 503 } 504 if (object[0].ptype == 10) { /* filled circle */ 505 for (i = 0; i < object[0].Npts; i++) { 506 if (!(finite(x[i]) && finite(y[i]))) continue; 507 sx = x[i]*mxi + y[i]*mxj + bx; 508 sy = x[i]*myi + y[i]*myj + by; 509 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 510 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 511 { 512 if (scaleColor) { 513 int pixel = MIN (graphic->Npixels - 2, MAX (0, z[i]*(graphic->Npixels - 1))); 514 buffer->bColor_R = pixel1[pixel]; 515 buffer->bColor_G = pixel2[pixel]; 516 buffer->bColor_B = pixel3[pixel]; 517 } 518 D = scaleSize ? dz*z[i] : ds; 519 FillCircle (buffer, sx, sy, D); 520 } 521 } 522 } 523 if (object[0].ptype == 100) { /* connect a pair of points */ 524 525 double X0 = graph[0].axis[0].fx; 526 double X1 = graph[0].axis[0].fx + graph[0].axis[0].dfx; 527 double Y0 = graph[0].axis[1].fy; 528 double Y1 = graph[0].axis[1].fy + graph[0].axis[1].dfy; 529 530 for (i = 0; i + 1 < object[0].Npts; i+=2) { 531 if (!(finite(x[i]) && finite(y[i]))) continue; 532 sx1 = x[i]*mxi + y[i]*mxj + bx; 533 sy1 = x[i]*myi + y[i]*myj + by; 534 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx; 535 sy2 = x[i+1]*myi + y[i+1]*myj + by; 536 bDrawClipLine (buffer, sx1, sy1, sx2, sy2, X0, Y0, X1, Y1); 537 } 538 } 539 540 free (pixel1); 541 free (pixel2); 542 free (pixel3); 585 543 } 586 544 -
branches/eam_branches/ipp-20110505/Ohana/src/libkapa/include/kapa.h
r31160 r31615 255 255 void bDrawRectFill (bDrawBuffer *buffer, double x1, double y1, double x2, double y2); 256 256 void bDrawTriOpen (bDrawBuffer *buffer, double x1, double y1, double x2, double y2, double x3, double y3); 257 void bDrawTriFill (bDrawBuffer *buffer, double x1, double y1, double x2, double y2, double x3, double y3);257 void bDrawTriFill (bDrawBuffer *buffer, double x1, double y1, double dx, double dy); 258 258 259 259 /* bDrawRotFont.c */ -
branches/eam_branches/ipp-20110505/Ohana/src/libkapa/src/bDrawFuncs.c
r29938 r31615 78 78 79 79 void bDrawSetStyle (bDrawBuffer *buffer, bDrawColor color, int lw, int lt) { 80 buffer->bColor = color; 81 buffer->bColor_R = buffer->palette[color].red; 82 buffer->bColor_G = buffer->palette[color].green; 83 buffer->bColor_B = buffer->palette[color].blue; 80 if (color >= 0) { 81 buffer->bColor = color; 82 buffer->bColor_R = buffer->palette[color].red; 83 buffer->bColor_G = buffer->palette[color].green; 84 buffer->bColor_B = buffer->palette[color].blue; 85 } 84 86 buffer->bWeight = lw; 85 87 buffer->bType = lt; … … 134 136 Y2 = MIN (MAX (ROUND (y2), 1), buffer[0].Ny - 1); 135 137 136 bDrawLineHorizontal (buffer, X1, X2 , Y1);137 bDrawLineHorizontal (buffer, X1, X2 , Y2);138 bDrawLineHorizontal (buffer, X1, X2 + 1, Y1); 139 bDrawLineHorizontal (buffer, X1, X2 + 1, Y2); 138 140 bDrawLineVertical (buffer, X1, Y1, Y2); 139 141 bDrawLineVertical (buffer, X2, Y1, Y2); … … 275 277 } 276 278 277 void bDrawTriFill (bDrawBuffer *buffer, double x1, double y1, double x2, double y2, double x3, double y3) { 278 279 bDrawTriOpen (buffer, x1, y1, x2, y2, x3, y3); 279 // upright triangle with base of width 2 dX + 1, height of dY, center of base at x1, y1 280 void bDrawTriFill (bDrawBuffer *buffer, double x1, double y1, double dx, double dy) { 281 282 int xs, xe, x, y; 283 float e, m; 284 285 double dX = fabs(dx); 286 287 xs = x1 - dX; 288 xe = x1 + dX + 1; 289 e = 0; 290 m = dX / dy; 291 292 if (dy > 0.0) { 293 for (y = y1; y < y1 + dy + 1; y++) { 294 for (x = xs; x < xe; x++) { 295 bDrawPoint (buffer, x, y); 296 } 297 e += m; 298 if (e > 0.5) { 299 xs ++; 300 xe --; 301 e -= 1.0; 302 } 303 if (e < -0.5) { 304 xs ++; 305 xe --; 306 e += 1.0; 307 } 308 } 309 } else { 310 for (y = y1; y > y1 + dy - 1; y--) { 311 for (x = xs; x < xe; x++) { 312 bDrawPoint (buffer, x, y); 313 } 314 e += m; 315 if (e > 0.5) { 316 xs ++; 317 xe --; 318 e -= 1.0; 319 } 320 if (e < -0.5) { 321 xs ++; 322 xe --; 323 e += 1.0; 324 } 325 } 326 } 327 280 328 return; 281 329 } -
branches/eam_branches/ipp-20110505/Ohana/src/libohana/src/string.c
r31598 r31615 193 193 word = _parse_nextword_csv (word); 194 194 195 if (word[0] == '"') word[0] = ' '; 195 196 if (word[0] == ',') { 196 197 *X = NAN; -
branches/eam_branches/ipp-20110505/Ohana/src/opihi/Makefile
r8566 r31615 23 23 24 24 all: 25 for i in $(PROGRAM) $(SPECIAL); do make$$i || exit; done26 makepantasks_client27 makepantasks_server25 for i in $(PROGRAM) $(SPECIAL); do $(MAKE) $$i || exit; done 26 $(MAKE) pantasks_client 27 $(MAKE) pantasks_server 28 28 29 29 libs: 30 for i in $(LIBS); do make$$i || exit; done30 for i in $(LIBS); do $(MAKE) $$i || exit; done 31 31 32 32 extras: 33 for i in $(EXTRAS); do make$$i || exit; done33 for i in $(EXTRAS); do $(MAKE) $$i || exit; done 34 34 35 35 install: 36 for i in $(PROGRAM) $(SPECIAL); do make$$i.install || exit; done37 makepantasks_client.install38 makepantasks_server.install36 for i in $(PROGRAM) $(SPECIAL); do $(MAKE) $$i.install || exit; done 37 $(MAKE) pantasks_client.install 38 $(MAKE) pantasks_server.install 39 39 40 40 extras-install: 41 for i in $(EXTRAS); do make$$i.install || exit; done41 for i in $(EXTRAS); do $(MAKE) $$i.install || exit; done 42 42 43 43 clean: 44 for i in $(PROGRAM) $(SPECIAL) $(EXTRAS) $(LIBS); do make$$i.clean || exit; done44 for i in $(PROGRAM) $(SPECIAL) $(EXTRAS) $(LIBS); do $(MAKE) $$i.clean || exit; done 45 45 46 46 libs-uninstall: 47 for i in $(LIBS); do make$$i.uninstall || exit; done47 for i in $(LIBS); do $(MAKE) $$i.uninstall || exit; done 48 48 49 49 dist: clean 50 for i in $(PROGRAM) $(SPECIAL) $(EXTRAS) $(LIBS); do make$$i.dist || exit; done50 for i in $(PROGRAM) $(SPECIAL) $(EXTRAS) $(LIBS); do $(MAKE) $$i.dist || exit; done 51 51 rm -rf bin 52 52 rm -rf lib … … 55 55 56 56 pantasks_client pantasks_server: 57 if [ -d pantasks ]; then (cd pantasks && make$@); fi57 if [ -d pantasks ]; then (cd pantasks && $(MAKE) $@); fi 58 58 59 59 pantasks_client.install: pantasks_client 60 if [ -d pantasks ]; then (cd pantasks && make$@); fi60 if [ -d pantasks ]; then (cd pantasks && $(MAKE) $@); fi 61 61 62 62 pantasks_server.install: pantasks_server 63 if [ -d pantasks ]; then (cd pantasks && make$@); fi63 if [ -d pantasks ]; then (cd pantasks && $(MAKE) $@); fi 64 64 65 65 $(PROGRAM) $(LIBS) $(EXTRAS): 66 if [ -d "$@" ]; then (cd $@ && make); fi66 if [ -d "$@" ]; then (cd $@ && $(MAKE)); fi 67 67 68 68 %.install: 69 if [ -d "$*" ]; then make$*; fi70 if [ -d "$*" ]; then (cd $* && makeinstall); fi69 if [ -d "$*" ]; then $(MAKE) $*; fi 70 if [ -d "$*" ]; then (cd $* && $(MAKE) install); fi 71 71 72 72 %.clean: 73 if [ -d "$*" ]; then (cd $* && makeclean); fi73 if [ -d "$*" ]; then (cd $* && $(MAKE) clean); fi 74 74 75 75 %.dist: 76 if [ -d "$*" ]; then (cd $* && makedist); fi76 if [ -d "$*" ]; then (cd $* && $(MAKE) dist); fi 77 77 78 78 %.uninstall: 79 if [ -d "$*" ]; then (cd $* && makeuninstall); fi79 if [ -d "$*" ]; then (cd $* && $(MAKE) uninstall); fi 80 80 81 81 .PHONY: $(PROGRAM) $(LIBS) pantasks_server pantasks_client -
branches/eam_branches/ipp-20110505/Ohana/src/opihi/cmd.data/init.c
r31450 r31615 137 137 int zap PROTO((int, char **)); 138 138 int zplot PROTO((int, char **)); 139 int zcplot PROTO((int, char **)); 139 140 140 141 static Command cmds[] = { … … 284 285 {1, "zap", zap, "assign values to pixel regions"}, 285 286 {1, "zplot", zplot, "plot x y with size scaled by z"}, 287 {1, "zcplot", zcplot, "plot x y with color scaled by z"}, 286 288 }; 287 289 -
branches/eam_branches/ipp-20110505/Ohana/src/opihi/cmd.data/read_vectors.c
r31598 r31615 2 2 3 3 FILE *f = (FILE *) NULL; 4 char filename[ 1024];4 char filename[2048]; 5 5 6 6 int datafile (int argc, char **argv) { … … 84 84 colstr = argv[2*i+2]; 85 85 for (j = 0; j < strlen (colstr); j++) { 86 if (!isdigit(colstr[j])) { 87 gprint (GP_ERR, "USAGE: read name N name N ...\n"); 88 free (vec); 89 free (col); 90 return (FALSE); 91 } 92 } 93 col[i] = atof (colstr); 86 if (isdigit(colstr[j])) { 87 col[i] = atof (colstr); 88 continue; 89 } 90 // allow 'excel' columns names of the form A-Z, AA-AZ, BA-BZ, .. ZA-ZZ 91 if (strlen(colstr) >= 3) goto bad_colname; 92 if (colstr[0] < 'A') goto bad_colname; 93 if (colstr[0] > 'Z') goto bad_colname; 94 if (colstr[1] && colstr[1] < 'A') goto bad_colname; 95 if (colstr[1] && colstr[1] > 'Z') goto bad_colname; 96 97 col[i] = colstr[0] - 'A' + 1; 98 if (colstr[1]) { 99 col[i] *= 26; 100 col[i] += colstr[1] - 'A' + 1; 101 } 102 continue; 103 104 bad_colname: 105 gprint (GP_ERR, "USAGE: read name N name N ...\n"); 106 free (vec); 107 free (col); 108 return (FALSE); 109 } 94 110 } 95 111 … … 105 121 scan_line (f, buffer); 106 122 } 123 124 int Nfield = 0; 125 int Nline = 0; 107 126 108 127 Nstart = 0; … … 139 158 } 140 159 vec[i][0].elements.Flt[N] = value; 160 if (status) { 161 Nfield ++; 162 } 141 163 if (!status) vec[i][0].elements.Flt[N] = NAN; 142 164 } 143 165 if (status) N++; 144 166 } 167 Nline ++; 168 if (c1) { 169 // fprintf (stderr, "line %d, chars %ld, fields %d\n", Nline, (c1 - c0), Nfield); 170 } 171 Nfield = 0; 145 172 c0 = c1 + 1; 146 173 if (N == NELEM) { -
branches/eam_branches/ipp-20110505/Ohana/src/opihi/cmd.data/tvcolors.c
r25757 r31615 5 5 int N, kapa; 6 6 char *name; 7 KapaImageData data;7 // KapaImageData data; 8 8 9 9 name = NULL; … … 13 13 remove_argument (N, &argc, argv); 14 14 } 15 if (!Get Image (&data, &kapa, name)) return (FALSE);15 if (!GetGraph (NULL, &kapa, name)) return (FALSE); 16 16 FREE (name); 17 17 -
branches/eam_branches/ipp-20110505/Ohana/src/opihi/cmd.data/zplot.c
r20936 r31615 58 58 } 59 59 60 int zcplot (int argc, char **argv) { 61 62 int i, kapa; 63 opihi_flt *out; 64 double min, range; 65 Graphdata graphmode; 66 Vector *xvec, *yvec, *zvec, Zvec; 60 67 68 if (!style_args (&graphmode, &argc, argv, &kapa)) return (FALSE); 69 70 if (argc != 6) { 71 gprint (GP_ERR, "USAGE: zplot <x> <y> <z> min max\n"); 72 return (FALSE); 73 } 74 75 min = atof(argv[4]); 76 range = atof(argv[5]) - min; 77 78 /* find vectors */ 79 if ((xvec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE); 80 if ((yvec = SelectVector (argv[2], OLDVECTOR, TRUE)) == NULL) return (FALSE); 81 if ((zvec = SelectVector (argv[3], OLDVECTOR, TRUE)) == NULL) return (FALSE); 82 if (xvec[0].Nelements != yvec[0].Nelements) { 83 gprint (GP_ERR, "vectors %s and %s not the same length\n", argv[1], argv[2]); 84 return (FALSE); 85 } 86 if (xvec[0].Nelements != zvec[0].Nelements) { 87 gprint (GP_ERR, "vectors %s and %s not the same length\n", argv[1], argv[3]); 88 return (FALSE); 89 } 90 SetVector (&Zvec, OPIHI_FLT, zvec[0].Nelements); 91 out = Zvec.elements.Flt; 92 93 if (zvec[0].type == OPIHI_FLT) { 94 opihi_flt *in = zvec[0].elements.Flt; 95 for (i = 0; i < Zvec.Nelements; i++, in++, out++) { 96 *out = MIN (1.0, MAX (0.01, (*in - min) / range)); 97 } 98 } else { 99 opihi_int *in = zvec[0].elements.Int; 100 for (i = 0; i < Zvec.Nelements; i++, in++, out++) { 101 *out = MIN (1.0, MAX (0.01, (*in - min) / range)); 102 } 103 } 104 105 /* point size determined by Zvec */ 106 graphmode.style = 2; /* plot points */ 107 graphmode.color = -1; /* point color determined by Zvec */ 108 graphmode.etype = 0; /* no errorbars */ 109 PlotVectorTriplet (kapa, xvec, yvec, &Zvec, &graphmode); 110 111 free (Zvec.elements.Ptr); 112 113 return (TRUE); 114 115 } 116 117
Note:
See TracChangeset
for help on using the changeset viewer.
