Changeset 31560
- Timestamp:
- May 23, 2011, 6:01:32 PM (15 years ago)
- Location:
- trunk/Ohana/src/kapa2/src
- Files:
-
- 3 edited
-
DrawObjects.c (modified) (35 diffs)
-
PSObjects.c (modified) (2 diffs)
-
bDrawObjects.c (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/kapa2/src/DrawObjects.c
r29539 r31560 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 7 8 8 # define CONNECT 0 9 9 # define HISTOGRAM 1 10 10 # define POINTS 2 11 12 # define XCENTER 0.0 13 # define YCENTER 0.0 14 # define CAPSTYLE CapButt 15 # define JOINSTYLE JoinMiter 11 16 12 17 static Graphic *graphic; … … 34 39 // this function calls all of the supporting Draw... functions below 35 40 graphic = GetGraphic(); 36 37 lweight = MAX (0, MIN (10, object[0].lweight)); 41 42 lweight = MAX (1, MIN (10, object[0].lweight)); 43 44 /** some notes on drawing lines in X: 45 46 "In general, drawing a thin line will be faster than drawing a wide line of width 47 one. However, because of their different drawing algorithms, thin lines may not mix 48 well aesthetically with wide lines. If it is desirable to obtain precise and uniform 49 results across all displays, a client should always use a line-width of one rather 50 than a line-width of zero." -- http://www.hpc.unimelb.edu.au/nec/g1ae02e/chap7.html 51 52 */ 38 53 39 54 /* set line type */ 40 55 switch (object[0].ltype) { 41 56 case 0: 42 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, C apNotLast, JoinMiter);57 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, CAPSTYLE, JOINSTYLE); 43 58 break; 44 59 case 1: 45 60 XSetDashes (graphic->display, graphic->gc, 100, dash, 2); 46 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, C apNotLast, JoinMiter);61 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, CAPSTYLE, JOINSTYLE); 47 62 break; 48 63 case 2: 49 64 XSetDashes (graphic->display, graphic->gc, 10, dot, 2); 50 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, C apNotLast, JoinMiter);65 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineOnOffDash, CAPSTYLE, JOINSTYLE); 51 66 break; 52 67 default: 53 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, C apNotLast, JoinMiter);68 XSetLineAttributes (graphic->display, graphic->gc, lweight, LineSolid, CAPSTYLE, JOINSTYLE); 54 69 break; 55 70 } … … 76 91 } 77 92 78 XSetLineAttributes (graphic->display, graphic->gc, 0, LineSolid, C apNotLast, JoinMiter);93 XSetLineAttributes (graphic->display, graphic->gc, 0, LineSolid, CAPSTYLE, JOINSTYLE); 79 94 XSetForeground (graphic->display, graphic->gc, graphic->fore); 80 95 return (TRUE); … … 111 126 for (i = 0; (i < object[0].Npts) && !(finite(x[i]) && finite(y[i])); i++); 112 127 if (i >= object[0].Npts) return; 113 sx0 = x[i]*mxi + y[i]*mxj + bx ;114 sy0 = x[i]*myi + y[i]*myj + by ;128 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 129 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 115 130 116 131 for (i++; i < object[0].Npts; i++) { 117 132 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 ;133 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 134 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 120 135 121 136 ClipLine (sx0, sy0, sx1, sy1, X0, Y0, X1, Y1); … … 213 228 214 229 /* first valid data point */ 215 sx0 = x[i]*mxi + y[i]*mxj + bx ;216 sy0 = x[i]*myi + y[i]*myj + by ;230 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 231 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 217 232 sx0 = MIN (MAX (sx0, X0), X1); 218 233 sy0 = MAX (MIN (sy0, Y0), Y1); … … 223 238 224 239 /* second valid data point */ 225 sx1 = x[i]*mxi + y[i]*mxj + bx ;226 sy1 = x[i]*myi + y[i]*myj + by ;240 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 241 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 227 242 sx1 = MIN (MAX (sx1, X0), X1); 228 243 sy1 = MAX (MIN (sy1, Y0), Y1); … … 246 261 for (i++; i < object[0].Npts; i++) { 247 262 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 ;263 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 264 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 250 265 sx1 = MIN (MAX (sx1, X0), X1); 251 266 sy1 = MAX (MIN (sy1, Y0), Y1); … … 298 313 299 314 /* first valid data point */ 300 sx0 = x[i]*mxi + y[i]*mxj + bx ;301 sy0 = x[i]*myi + y[i]*myj + by ;315 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 316 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 302 317 sx0 = MIN (MAX (sx0, X0), X1); 303 318 sy0 = MAX (MIN (sy0, Y0), Y1); … … 308 323 309 324 /* second valid data point */ 310 sx1 = x[i]*mxi + y[i]*mxj + bx ;311 sy1 = x[i]*myi + y[i]*myj + by ;325 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 326 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 312 327 sx1 = MIN (MAX (sx1, X0), X1); 313 328 sy1 = MAX (MIN (sy1, Y0), Y1); … … 330 345 for (i++; i < object[0].Npts; i++) { 331 346 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 ;347 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 348 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 334 349 sx1 = MIN (MAX (sx1, X0), X1); 335 350 sy1 = MAX (MIN (sy1, Y0), Y1); … … 356 371 float *x, *y, *z; 357 372 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 358 double sx, sy, d, sx1, sy1, sx2, sy2;373 int sx, sy, sx1, sy1, sx2, sy2, d, D; 359 374 360 375 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); … … 375 390 d = 0.5 * (graphic->dx + graphic->dy) * 0.01; 376 391 x = object[0].x; y = object[0].y; z = object[0].z; 392 377 393 if (object[0].ptype == 0) { /* filled box */ 378 394 for (i = 0; i < object[0].Npts; i++) { 379 395 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]); 396 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 397 sy = x[i]*myi + y[i]*myj + by + YCENTER; 398 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 399 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 400 { 401 D = d*z[i]; 402 FillRectangle (sx - D, sy - D, 2*D + 1, 2*D + 1); 386 403 } 387 404 } … … 390 407 for (i = 0; i < object[0].Npts; i++) { 391 408 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]); 409 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 410 sy = x[i]*myi + y[i]*myj + by + YCENTER; 411 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 412 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 413 { 414 D = d*z[i]; 415 DrawRectangle (sx - D, sy - D, 2*D, 2*D); 398 416 } 399 417 } … … 402 420 for (i = 0; i < object[0].Npts; i++) { 403 421 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); 422 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 423 sy = x[i]*myi + y[i]*myj + by + YCENTER; 424 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 425 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 426 { 427 D = d*z[i]; 428 DrawLine (sx - D, sy, sx + D + 1, sy); 429 DrawLine (sx, sy - D, sx, sy + D + 1); 411 430 } 412 431 } … … 415 434 for (i = 0; i < object[0].Npts; i++) { 416 435 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); 436 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 437 sy = x[i]*myi + y[i]*myj + by + YCENTER; 438 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 439 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 440 { 441 D = d*z[i]; 442 DrawLine (sx - D, sy + D, sx + D + 1, sy - D - 1); 443 DrawLine (sx - D, sy - D, sx + D + 1, sy + D + 1); 424 444 } 425 445 } … … 429 449 for (i = 0; i < object[0].Npts; i++) { 430 450 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]; 451 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 452 sy = x[i]*myi + y[i]*myj + by + YCENTER; 453 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 454 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 455 { 456 D = d*z[i]; 457 points[0].x = sx - D; points[0].y = sy + 0.58*D; 458 points[1].x = sx + D; points[1].y = sy + 0.58*D; 459 points[2].x = sx; points[2].y = sy - 1.15*D; 460 points[3].x = sx - D; points[3].y = sy + 0.58*D; 440 461 XFillPolygon (graphic->display, graphic->window, graphic->gc, points, 4, Convex, CoordModeOrigin); 441 462 } … … 445 466 for (i = 0; i < object[0].Npts; i++) { 446 467 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]); 468 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 469 sy = x[i]*myi + y[i]*myj + by + YCENTER; 470 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 471 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 472 { 473 D = d*z[i]; 474 DrawLine (sx - D, sy + 0.58*D, sx + D, sy + 0.58*D); 475 DrawLine (sx + D, sy + 0.58*D, sx, sy - 1.15*D); 476 DrawLine (sx, sy - 1.15*D, sx - D, sy + 0.58*D); 455 477 } 456 478 } … … 459 481 for (i = 0; i < object[0].Npts; i++) { 460 482 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]); 483 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 484 sy = x[i]*myi + y[i]*myj + by + YCENTER; 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 D = d*z[i]; 489 DrawLine (sx, sy, sx - D, sy - 0.58*D); 490 DrawLine (sx, sy, sx + D, sy - 0.58*D); 491 DrawLine (sx, sy, sx, sy + 1.15*D); 469 492 } 470 493 } … … 473 496 for (i = 0; i < object[0].Npts; i++) { 474 497 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]); 498 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 499 sy = x[i]*myi + y[i]*myj + by + YCENTER; 500 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 501 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 502 { 503 D = d*z[i]; 504 DrawCircle (sx, sy, D); 481 505 } 482 506 } … … 485 509 for (i = 0; i < object[0].Npts; i++) { 486 510 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]); 511 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 512 sy = x[i]*myi + y[i]*myj + by + YCENTER; 513 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 514 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 515 { 516 D = d*z[i]; 517 DrawLine (sx + 0.00*D, sy - 1.00*D, sx + 0.95*D, sy - 0.31*D); 518 DrawLine (sx + 0.95*D, sy - 0.31*D, sx + 0.58*D, sy + 0.81*D); 519 DrawLine (sx + 0.58*D, sy + 0.81*D, sx - 0.58*D, sy + 0.81*D); 520 DrawLine (sx - 0.58*D, sy + 0.81*D, sx - 0.95*D, sy - 0.31*D); 521 DrawLine (sx - 0.95*D, sy - 0.31*D, sx + 0.00*D, sy - 1.00*D); 497 522 } 498 523 } … … 501 526 for (i = 0; i < object[0].Npts; i++) { 502 527 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); 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 { 533 D = d*z[i]; 534 DrawLine (sx - D, sy, sx - 0.50*D, sy + 0.87*D); 535 DrawLine (sx - 0.50*D, sy + 0.87*D, sx + 0.50*D, sy + 0.87*D); 536 DrawLine (sx + 0.50*D, sy + 0.87*D, sx + D, sy); 537 538 DrawLine (sx + D, sy, sx + 0.50*D, sy - 0.87*D); 539 DrawLine (sx + 0.50*D, sy - 0.87*D, sx - 0.50*D, sy - 0.87*D); 540 DrawLine (sx - 0.50*D, sy - 0.87*D, sx - D, sy); 515 541 } 516 542 } … … 525 551 for (i = 0; i + 1 < object[0].Npts; i+=2) { 526 552 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 ;553 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 554 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 529 555 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 ;556 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx + XCENTER; 557 sy2 = x[i+1]*myi + y[i+1]*myj + by + YCENTER; 532 558 ClipLine (sx1, sy1, sx2, sy2, X0, Y0, X1, Y1); 533 559 } … … 535 561 } 536 562 /**** points are not scaled by object.z ***/ 563 /** some rules on how the points are drawn: 564 1) the smallest point is always a dot (single pixel) 565 2) the point shape should be invarient on position 566 3) center of point is always center of a pixel 567 **/ 537 568 else { 538 d = object[0].size * 0.5 * (graphic->dx + graphic->dy) * 0.003;569 d = (int)(object[0].size * hypot((float)graphic->dx, (float)graphic->dy) * 0.003); 539 570 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; 571 572 if (object[0].ptype == 0) { /* filled box : OK */ 573 for (i = 0; i < object[0].Npts; i++) { 574 if (!(finite(x[i]) && finite(y[i]))) continue; 575 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 576 sy = x[i]*myi + y[i]*myj + by + YCENTER; 577 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 578 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 579 { 580 FillRectangle (sx - d, sy - d, 2*d + 1, 2*d + 1); 581 } 582 } 583 } 584 if (object[0].ptype == 1) { /* open box : OK*/ 585 for (i = 0; i < object[0].Npts; i++) { 586 if (!(finite(x[i]) && finite(y[i]))) continue; 587 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 588 sy = x[i]*myi + y[i]*myj + by + YCENTER; 557 589 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 558 590 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) … … 562 594 } 563 595 } 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); 596 if (object[0].ptype == 2) { /* cross : OK*/ 597 for (i = 0; i < object[0].Npts; i++) { 598 if (!(finite(x[i]) && finite(y[i]))) continue; 599 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 600 sy = x[i]*myi + y[i]*myj + by + YCENTER; 601 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 602 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 603 { 604 DrawLine (sx - d, sy, sx + d + 1, sy); // DrawLine does NOT draw the end pixel 573 605 DrawLine (sx, sy - d, sx, sy + d + 1); 574 606 } 575 607 } 576 608 } 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 ;609 if (object[0].ptype == 3) { /* x : OK */ 610 for (i = 0; i < object[0].Npts; i++) { 611 if (!(finite(x[i]) && finite(y[i]))) continue; 612 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 613 sy = x[i]*myi + y[i]*myj + by + YCENTER; 582 614 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 583 615 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 584 616 { 585 617 /* XDrawLine is a little funny, this is needed to fix endpost errors */ 586 DrawLine (sx + d + 1, sy - d - 1, sx - d, sy + d);618 DrawLine (sx - d, sy + d, sx + d + 1, sy - d - 1); 587 619 DrawLine (sx - d, sy - d, sx + d + 1, sy + d + 1); 588 620 } … … 593 625 for (i = 0; i < object[0].Npts; i++) { 594 626 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 ;627 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 628 sy = x[i]*myi + y[i]*myj + by + YCENTER; 597 629 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 598 630 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) … … 609 641 for (i = 0; i < object[0].Npts; i++) { 610 642 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 ;643 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 644 sy = x[i]*myi + y[i]*myj + by + YCENTER; 613 645 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 614 646 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) … … 623 655 for (i = 0; i < object[0].Npts; i++) { 624 656 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);657 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 658 sy = x[i]*myi + y[i]*myj + by + YCENTER; 659 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 660 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 661 { 662 DrawLine (sx, sy, sx - d, sy - 0.58*d); 663 DrawLine (sx, sy, sx + d, sy - 0.58*d); 664 DrawLine (sx, sy, sx, sy + 1.15*d); 633 665 } 634 666 } … … 637 669 for (i = 0; i < object[0].Npts; i++) { 638 670 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 ;671 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 672 sy = x[i]*myi + y[i]*myj + by + YCENTER; 641 673 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 642 674 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) … … 649 681 for (i = 0; i < object[0].Npts; i++) { 650 682 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 ;683 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 684 sy = x[i]*myi + y[i]*myj + by + YCENTER; 653 685 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 654 686 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) … … 665 697 for (i = 0; i < object[0].Npts; i++) { 666 698 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 ;699 sx = x[i]*mxi + y[i]*mxj + bx + XCENTER; 700 sy = x[i]*myi + y[i]*myj + by + YCENTER; 669 701 if ((sx > graph[0].axis[0].fx) && (sx < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 670 702 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) … … 687 719 for (i = 0; i + 1 < object[0].Npts; i+=2) { 688 720 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 ;721 sx1 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 722 sy1 = x[i]*myi + y[i]*myj + by + YCENTER; 723 sx2 = x[i+1]*mxi + y[i+1]*mxj + bx + XCENTER; 724 sy2 = x[i+1]*myi + y[i+1]*myj + by + YCENTER; 693 725 ClipLine (sx1, sy1, sx2, sy2, X0, Y0, X1, Y1); 694 726 } … … 723 755 for (i = 0; i < object[0].Npts; i++) { 724 756 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 ;757 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 758 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 759 sx1 = (x[i] + dxp[i])*mxi + y[i]*mxj + bx + XCENTER; 760 sy1 = (x[i] + dxp[i])*myi + y[i]*myj + by + YCENTER; 729 761 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 730 762 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 740 772 } 741 773 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 ;774 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 775 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 776 sx1 = (x[i] - dxm[i])*mxi + y[i]*mxj + bx + XCENTER; 777 sy1 = (x[i] - dxm[i])*myi + y[i]*myj + by + YCENTER; 746 778 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 747 779 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || … … 785 817 for (i = 0; i < object[0].Npts; i++) { 786 818 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 ;819 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 820 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 789 821 sx1 = sx0 + dyp[i]*mxj; 790 822 sy1 = sy0 + dyp[i]*myj; … … 802 834 } 803 835 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 ;836 sx0 = x[i]*mxi + y[i]*mxj + bx + XCENTER; 837 sy0 = x[i]*myi + y[i]*myj + by + YCENTER; 838 sx1 = x[i]*mxi + (y[i] - dym[i])*mxj + bx + XCENTER; 839 sy1 = x[i]*myi + (y[i] - dym[i])*myj + by + YCENTER; 808 840 if (((sx0 > graph[0].axis[0].fx) && (sx0 < graph[0].axis[0].fx + graph[0].axis[0].dfx) && 809 841 (sy0 < graph[0].axis[1].fy) && (sy0 > graph[0].axis[1].fy + graph[0].axis[1].dfy)) || -
trunk/Ohana/src/kapa2/src/PSObjects.c
r31160 r31560 365 365 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 366 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]);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 370 } 371 371 } … … 538 538 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 539 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);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 543 } 544 544 } -
trunk/Ohana/src/kapa2/src/bDrawObjects.c
r31160 r31560 4 4 # define DrawCircle(BUF,X1,Y1,R) (bDrawCircle (BUF, (X1), (Y1), (R))) 5 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)))6 # 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))) 7 # define FillTriangle(BUF,X1,Y1,dX,dY) (bDrawTriFill (BUF, (X1), (Y1), (dX), (dY))) 8 8 # define OpenTriangle(BUF,X1,Y1,X2,Y2,X3,Y3) (bDrawTriOpen (BUF, (X1), (Y1), (X2), (Y2), (X3), (Y3))) 9 9 … … 260 260 float *x, *y, *z; 261 261 double mxi, mxj, myi, myj, bxi, bxj, byi, byj, bx, by; 262 double sx, sy, d, sx1, sy1, sx2, sy2;262 int sx, sy, sx1, sy1, sx2, sy2, d, D; 263 263 264 264 mxi = graph[0].axis[0].dfx / (object[0].x1 - object[0].x0); … … 288 288 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 289 289 { 290 FillRectangle (buffer, sx, sy, 2*d*z[i], 2*d*z[i]); 290 D = d*z[i]; 291 FillRectangle (buffer, sx, sy, 2*D, 2*D); 291 292 } 292 293 } … … 300 301 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 301 302 { 302 DrawRectangle (buffer, sx, sy, 2*d*z[i], 2*d*z[i]); 303 D = d*z[i]; 304 DrawRectangle (buffer, sx, sy, 2*D, 2*D); 303 305 } 304 306 } … … 312 314 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 313 315 { 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 D = d*z[i]; 317 DrawLine (buffer, sx - D, sy, sx + D, sy); 318 DrawLine (buffer, sx, sy - D, sx, sy + D); 316 319 } 317 320 } … … 325 328 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 326 329 { 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]); 330 D = d*z[i]; 331 DrawLine (buffer, sx + D, sy - D, sx - D, sy + D); 332 DrawLine (buffer, sx - D, sy - D, sx + D, sy + D); 329 333 } 330 334 } … … 338 342 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 339 343 { 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]); 344 D = d*z[i]; 345 // FillTriangle (buffer, sx - D, sy - 0.58*D, sx + D, sy - 0.58*D, sx, sy + 1.15*D); 346 FillTriangle (buffer, sx, sy + 0.58*D, D, -1.73*D); 341 347 } 342 348 } … … 350 356 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 351 357 { 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]); 358 D = d*z[i]; 359 OpenTriangle (buffer, sx - D, sy + 0.58*D, sx + D, sy + 0.58*D, sx, sy - 1.15*D); 353 360 } 354 361 } … … 362 369 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 363 370 { 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]); 371 D = d*z[i]; 372 DrawLine (buffer, sx, sy, sx - D, sy - 0.58*D); 373 DrawLine (buffer, sx, sy, sx + D, sy - 0.58*D); 374 DrawLine (buffer, sx, sy, sx, sy + 1.15*D); 367 375 } 368 376 } … … 376 384 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 377 385 { 378 DrawCircle (buffer, sx, sy, d*z[i]); 386 D = d*z[i]; 387 DrawCircle (buffer, sx, sy, D); 379 388 } 380 389 } … … 388 397 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 389 398 { 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]); 399 D = d*z[i]; 400 DrawLine (buffer, sx + 0.00*D, sy - 1.00*D, sx + 0.95*D, sy - 0.31*D); 401 DrawLine (buffer, sx + 0.95*D, sy - 0.31*D, sx + 0.58*D, sy + 0.81*D); 402 DrawLine (buffer, sx + 0.58*D, sy + 0.81*D, sx - 0.58*D, sy + 0.81*D); 403 DrawLine (buffer, sx - 0.58*D, sy + 0.81*D, sx - 0.95*D, sy - 0.31*D); 404 DrawLine (buffer, sx - 0.95*D, sy - 0.31*D, sx + 0.00*D, sy - 1.00*D); 395 405 } 396 406 } … … 404 414 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 405 415 { 406 D rawLine (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);416 D = d*z[i]; 417 DrawLine (buffer, sx - D, sy, sx - 0.50*D, sy + 0.87*D); 418 DrawLine (buffer, sx - 0.50*D, sy + 0.87*D, sx + 0.50*D, sy + 0.87*D); 419 DrawLine (buffer, sx + 0.50*D, sy + 0.87*D, sx + D, sy); 420 DrawLine (buffer, sx + D, sy, sx + 0.50*D, sy - 0.87*D); 421 DrawLine (buffer, sx + 0.50*D, sy - 0.87*D, sx - 0.50*D, sy - 0.87*D); 422 DrawLine (buffer, sx - 0.50*D, sy - 0.87*D, sx - D, sy); 413 423 } 414 424 } … … 431 441 } 432 442 } else { 433 d = object[0].size * 0.5 * (graphic->dx + graphic->dy) * 0.003;443 d = (int)(object[0].size * hypot((float)graphic->dx, (float)graphic->dy) * 0.003); 434 444 x = object[0].x; y = object[0].y; 445 435 446 if (object[0].ptype == 0) { /* filled box */ 436 447 for (i = 0; i < object[0].Npts; i++) { … … 457 468 } 458 469 } 459 if (object[0].ptype == 2) { /* cross */470 if (object[0].ptype == 2) { /* cross : OK */ 460 471 for (i = 0; i < object[0].Npts; i++) { 461 472 if (!(finite(x[i]) && finite(y[i]))) continue; … … 491 502 (sy < graph[0].axis[1].fy) && (sy > graph[0].axis[1].fy + graph[0].axis[1].dfy)) 492 503 { 493 FillTriangle (buffer, sx - d, sy - 0.58*d, sx + d, sy - 0.58*d, sx, sy + 1.15*d);504 FillTriangle (buffer, sx, sy + 0.58*d, d, -1.73*d); 494 505 } 495 506 }
Note:
See TracChangeset
for help on using the changeset viewer.
