Changeset 31559
- Timestamp:
- May 23, 2011, 5:59:46 PM (15 years ago)
- Location:
- trunk/Ohana/src/libkapa
- Files:
-
- 2 edited
-
include/kapa.h (modified) (1 diff)
-
src/bDrawFuncs.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/libkapa/include/kapa.h
r31160 r31559 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 */ -
trunk/Ohana/src/libkapa/src/bDrawFuncs.c
r29938 r31559 134 134 Y2 = MIN (MAX (ROUND (y2), 1), buffer[0].Ny - 1); 135 135 136 bDrawLineHorizontal (buffer, X1, X2 , Y1);137 bDrawLineHorizontal (buffer, X1, X2 , Y2);136 bDrawLineHorizontal (buffer, X1, X2 + 1, Y1); 137 bDrawLineHorizontal (buffer, X1, X2 + 1, Y2); 138 138 bDrawLineVertical (buffer, X1, Y1, Y2); 139 139 bDrawLineVertical (buffer, X2, Y1, Y2); … … 275 275 } 276 276 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); 277 // upright triangle with base of width 2 dX + 1, height of dY, center of base at x1, y1 278 void bDrawTriFill (bDrawBuffer *buffer, double x1, double y1, double dx, double dy) { 279 280 int xs, xe, x, y; 281 float e, m; 282 283 double dX = fabs(dx); 284 285 xs = x1 - dX; 286 xe = x1 + dX + 1; 287 e = 0; 288 m = dX / dy; 289 290 if (dy > 0.0) { 291 for (y = y1; y < y1 + dy + 1; y++) { 292 for (x = xs; x < xe; x++) { 293 bDrawPoint (buffer, x, y); 294 } 295 e += m; 296 if (e > 0.5) { 297 xs ++; 298 xe --; 299 e -= 1.0; 300 } 301 if (e < -0.5) { 302 xs ++; 303 xe --; 304 e += 1.0; 305 } 306 } 307 } else { 308 for (y = y1; y > y1 + dy - 1; y--) { 309 for (x = xs; x < xe; x++) { 310 bDrawPoint (buffer, x, y); 311 } 312 e += m; 313 if (e > 0.5) { 314 xs ++; 315 xe --; 316 e -= 1.0; 317 } 318 if (e < -0.5) { 319 xs ++; 320 xe --; 321 e += 1.0; 322 } 323 } 324 } 325 280 326 return; 281 327 }
Note:
See TracChangeset
for help on using the changeset viewer.
