Annotation of researchv9/X11/src/X.V11R1/server/ddx/mi/mipolypnt.c, revision 1.1

1.1     ! root        1: /***********************************************************
        !             2: Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
        !             3: and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
        !             4: 
        !             5:                         All Rights Reserved
        !             6: 
        !             7: Permission to use, copy, modify, and distribute this software and its 
        !             8: documentation for any purpose and without fee is hereby granted, 
        !             9: provided that the above copyright notice appear in all copies and that
        !            10: both that copyright notice and this permission notice appear in 
        !            11: supporting documentation, and that the names of Digital or MIT not be
        !            12: used in advertising or publicity pertaining to distribution of the
        !            13: software without specific, written prior permission.  
        !            14: 
        !            15: DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
        !            16: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
        !            17: DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
        !            18: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
        !            19: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
        !            20: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
        !            21: SOFTWARE.
        !            22: 
        !            23: ******************************************************************/
        !            24: /* $Header: mipolypnt.c,v 1.7 87/09/11 07:20:17 toddb Exp $ */
        !            25: #include "X.h"
        !            26: #include "Xprotostr.h"
        !            27: #include "pixmapstr.h"
        !            28: #include "gcstruct.h"
        !            29: #include "windowstr.h"
        !            30: 
        !            31: void
        !            32: miPolyPoint(pDrawable, pGC, mode, npt, pptInit)
        !            33:     DrawablePtr        pDrawable;
        !            34:     GCPtr              pGC;
        !            35:     int                mode;           /* Origin or Previous */
        !            36:     int                npt;
        !            37:     xPoint             *pptInit;
        !            38: {
        !            39: 
        !            40:     int                xorg;
        !            41:     int                yorg;
        !            42:     int                nptTmp;
        !            43:     int                        fsOld, fsNew;
        !            44:     int                        *pwidthInit, *pwidth;
        !            45:     int                        i;
        !            46:     register xPoint    *ppt;
        !            47: 
        !            48: 
        !            49:     if (pDrawable->type == DRAWABLE_WINDOW)
        !            50:     {
        !            51:        xorg = ((WindowPtr)pDrawable)->absCorner.x;
        !            52:        yorg = ((WindowPtr)pDrawable)->absCorner.y;
        !            53:     }
        !            54:     else
        !            55:     {
        !            56:        xorg = 0;
        !            57:        yorg = 0;
        !            58:     }
        !            59: 
        !            60:     /* make pointlist origin relative */
        !            61:     if (mode == CoordModePrevious)
        !            62:     {
        !            63:         ppt = pptInit;
        !            64:         nptTmp = npt;
        !            65:        nptTmp--;
        !            66:        while(nptTmp--)
        !            67:        {
        !            68:            ppt++;
        !            69:            ppt->x += (ppt-1)->x;
        !            70:            ppt->y += (ppt-1)->y;
        !            71:        }
        !            72:     }
        !            73: 
        !            74:     if(pGC->miTranslate)
        !            75:     {
        !            76:        ppt = pptInit;
        !            77:        nptTmp = npt;
        !            78:        while(nptTmp--)
        !            79:        {
        !            80:            ppt->x += xorg;
        !            81:            ppt++->y += yorg;
        !            82:        }
        !            83:     }
        !            84: 
        !            85:     fsOld = pGC->fillStyle;
        !            86:     fsNew = FillSolid;
        !            87:     if(pGC->fillStyle != FillSolid)
        !            88:     {
        !            89:        DoChangeGC(pGC, GCFillStyle, &fsNew, 0);
        !            90:        ValidateGC(pDrawable, pGC);
        !            91:     }
        !            92:     if(!(pwidthInit = (int *)ALLOCATE_LOCAL(npt * sizeof(int))))
        !            93:        return;
        !            94:     pwidth = pwidthInit;
        !            95:     for(i = 0; i < npt; i++)
        !            96:        *pwidth++ = 1;
        !            97:     (*pGC->FillSpans)(pDrawable, pGC, npt, pptInit, pwidthInit, FALSE); 
        !            98: 
        !            99:     if(fsOld != FillSolid)
        !           100:     {
        !           101:        DoChangeGC(pGC, GCFillStyle, &fsOld, 0);
        !           102:        ValidateGC(pDrawable, pGC);
        !           103:     }
        !           104:     DEALLOCATE_LOCAL(pwidthInit);
        !           105: }
        !           106: 

unix.superglobalmegacorp.com

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