Annotation of 43BSDTahoe/new/X/libqvss/ddxdraw.c, revision 1.1

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:        }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.