|
|
1.1 ! root 1: /************************************************************************/ ! 2: /************************************************************************/ ! 3: /* */ ! 4: /* DDX DRAW CURVE INTERFACE */ ! 5: /* */ ! 6: /* written by : MATT CORKUM 09-12-85 */ ! 7: /* modified 09-23-85: make it look like the ddx interface */ ! 8: /* */ ! 9: /* */ ! 10: /* The ddx draw curve interface code */ ! 11: /* */ ! 12: /* MODIFICATION HISTORY */ ! 13: /* */ ! 14: /* Carver 8510.21 Fixed "bwidth, bwidth" to be "bwidth, bheight" */ ! 15: /* */ ! 16: /* Carver 8510.21 Put in single plane code. */ ! 17: /* */ ! 18: /* Carver 8510.09 Fixed "if (mode = 1)" to be "if (mode == 1)" */ ! 19: /* */ ! 20: /* Carver 8510.03 Bad idea... after a few infinite loops we don't */ ! 21: /* ignore errors returned by the path list */ ! 22: /* converter anymore. */ ! 23: /* */ ! 24: /* Carver 8509.25 Removed error handling code */ ! 25: /* */ ! 26: /* */ ! 27: /************************************************************************/ ! 28: /************************************************************************/ ! 29: ! 30: /* THERE IS A CONFLICT BETWEEN ddxqvss.h and qvss.h (wpitch) SO MAKE SURE ! 31: TO INCLUDE ddxqvss.h FIRST */ ! 32: ! 33: #include "ddxqvss.h" ! 34: #include "qvss.h" ! 35: #include "extern.h" ! 36: #include "vstagbl.h" ! 37: ! 38: extern BITMAP pbm; ! 39: ! 40: ! 41: ! 42: DrawCurve( verts, vertcnt, xbase, ybase, srcpix, altpix, mode, bwidth, bheight, ! 43: pat, patlen, patmult, clips, clipcount, func, zmask ) ! 44: ! 45: Vertex *verts; /* vertexes and flags */ ! 46: int vertcnt; /* vertex count */ ! 47: int xbase; /* destination offset in x */ ! 48: int ybase; /* destination offset in y */ ! 49: int srcpix; /* source pixel */ ! 50: int altpix; /* alternate source pixel */ ! 51: int mode; /* 0:solid 1:dashed 2:patterned */ ! 52: int bwidth; /* brush width */ ! 53: int bheight; /* brush height */ ! 54: int pat; /* pattern */ ! 55: int patlen; /* pattern length */ ! 56: int patmult; /* pattern repeat count */ ! 57: CLIP *clips; /* clipping rectangles */ ! 58: int clipcount; /* count of clipping rectangles */ ! 59: int func; /* GX display function */ ! 60: int zmask; /* plane mask */ ! 61: ! 62: { ! 63: long error; /* error value to be returned*/ ! 64: char s_pixel_flag; /* single pixel flag */ ! 65: short *newvert; /* new vertex list */ ! 66: int newvertcnt; /* new vertex count */ ! 67: ! 68: ! 69: /* LIMIT THE DRAW OPERATION TO ONE PLANE */ ! 70: ! 71: if ((zmask & 1) == 0) ! 72: return; ! 73: ! 74: srcpix = srcpix & 1; ! 75: ! 76: altpix = altpix & 1; ! 77: ! 78: /* pre-process the specified path list ..... create another one ! 79: containing only absolute straight line drawing */ ! 80: ! 81: ! 82: error = path_list_converter ( &verts, &vertcnt, xbase, ybase, ! 83: &newvert, &newvertcnt ); ! 84: ! 85: if ( error ) ! 86: { ! 87: DeviceError ("DrawCurve failure\n"); ! 88: }; ! 89: ! 90: /* are we in single pixel mode or not ? */ ! 91: ! 92: if ( (bwidth == 1) && (bheight == 1)) s_pixel_flag = 1; ! 93: else s_pixel_flag = 0; ! 94: ! 95: if ((mode == 0) && (s_pixel_flag) ) /* solid single pixel */ ! 96: ! 97: /* call the solid single pixel draw command */ ! 98: ! 99: ! 100: error = draw_cons_solid_spix_line(srcpix, (short *)pbm.data, ! 101: pbm.width, pbm.height, func, newvertcnt, ! 102: newvert, clipcount, clips); ! 103: ! 104: ! 105: else if (mode == 0 ) /* solid mode */ ! 106: ! 107: ! 108: /* s_pixel_flag = 0 ( multiple pixel ) */ ! 109: /* call the solid multi-pixel draw command */ ! 110: ! 111: ! 112: error = draw_cons_solid_mpix_line(srcpix, bwidth, bheight, ! 113: (short *)pbm.data, pbm.width, pbm.height, ! 114: func, newvertcnt, newvert, clipcount, clips); ! 115: ! 116: else if ((mode == 1) && ( s_pixel_flag ) ) /* dashed mode */ ! 117: ! 118: ! 119: /* call dashed single pixel draw curve */ ! 120: ! 121: error = draw_cons_pat_spix_line(srcpix, (short *)pbm.data, ! 122: pbm.width, pbm.height, func, ! 123: newvertcnt, newvert, patlen, pat, ! 124: patmult, 0, 0, clipcount, clips); ! 125: ! 126: else if (mode == 1) /* dashed mode */ ! 127: ! 128: /* s_pixel_flag = 0 ( multiple pixel ) */ ! 129: /* call multiple pixel dashed draw command */ ! 130: ! 131: error = draw_cons_pat_mpix_line(srcpix, bwidth, bheight, ! 132: (short *)pbm.data, pbm.width, pbm.height, ! 133: func, newvertcnt, newvert, patlen, pat, ! 134: patmult, 0, 0, clipcount, clips); ! 135: ! 136: else if ((mode == 2) && (s_pixel_flag) ) /* patterned mode */ ! 137: { ! 138: ! 139: error = draw_2_src_cons_spix_line(srcpix, altpix, ! 140: (short *)pbm.data, pbm.width, pbm.height, ! 141: func, newvertcnt, newvert, patlen, pat, ! 142: patmult, 0, 0, clipcount, clips); ! 143: ! 144: } /* end of patterned single pixel */ ! 145: ! 146: ! 147: else if (mode == 2) /* patterned lines */ ! 148: { ! 149: ! 150: error = draw_2_src_mpix_line(srcpix, altpix, ! 151: bwidth, bheight, (short *)pbm.data, pbm.width, ! 152: pbm.height, func, newvertcnt, ! 153: newvert, patlen, pat, patmult, ! 154: 0, 0, clipcount, clips); ! 155: ! 156: } ! 157: ! 158: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.