Blame src/DrPoint.c

Packit Service dc579d
/*
Packit Service dc579d
Packit Service dc579d
Copyright 1986, 1998  The Open Group
Packit Service dc579d
Packit Service dc579d
Permission to use, copy, modify, distribute, and sell this software and its
Packit Service dc579d
documentation for any purpose is hereby granted without fee, provided that
Packit Service dc579d
the above copyright notice appear in all copies and that both that
Packit Service dc579d
copyright notice and this permission notice appear in supporting
Packit Service dc579d
documentation.
Packit Service dc579d
Packit Service dc579d
The above copyright notice and this permission notice shall be included in
Packit Service dc579d
all copies or substantial portions of the Software.
Packit Service dc579d
Packit Service dc579d
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Packit Service dc579d
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Packit Service dc579d
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
Packit Service dc579d
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
Packit Service dc579d
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
Packit Service dc579d
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Packit Service dc579d
Packit Service dc579d
Except as contained in this notice, the name of The Open Group shall not be
Packit Service dc579d
used in advertising or otherwise to promote the sale, use or other dealings
Packit Service dc579d
in this Software without prior written authorization from The Open Group.
Packit Service dc579d
Packit Service dc579d
*/
Packit Service dc579d
Packit Service dc579d
#ifdef HAVE_CONFIG_H
Packit Service dc579d
#include <config.h>
Packit Service dc579d
#endif
Packit Service dc579d
#include "Xlibint.h"
Packit Service dc579d
Packit Service dc579d
/* precompute the maximum size of batching request allowed */
Packit Service dc579d
Packit Service dc579d
#define size (SIZEOF(xPolyPointReq) + PTSPERBATCH * SIZEOF(xPoint))
Packit Service dc579d
Packit Service dc579d
int
Packit Service dc579d
XDrawPoint(
Packit Service dc579d
    register Display *dpy,
Packit Service dc579d
    Drawable d,
Packit Service dc579d
    GC gc,
Packit Service dc579d
    int x,
Packit Service dc579d
    int y) /* INT16 */
Packit Service dc579d
{
Packit Service dc579d
    xPoint *point;
Packit Service dc579d
Packit Service dc579d
    LockDisplay(dpy);
Packit Service dc579d
    FlushGC(dpy, gc);
Packit Service dc579d
Packit Service dc579d
    {
Packit Service dc579d
    register xPolyPointReq *req = (xPolyPointReq *) dpy->last_req;
Packit Service dc579d
Packit Service dc579d
Packit Service dc579d
    /* if same as previous request, with same drawable, batch requests */
Packit Service dc579d
    if (
Packit Service dc579d
          (req->reqType == X_PolyPoint)
Packit Service dc579d
       && (req->drawable == d)
Packit Service dc579d
       && (req->gc == gc->gid)
Packit Service dc579d
       && (req->coordMode == CoordModeOrigin)
Packit Service dc579d
       && ((dpy->bufptr + SIZEOF(xPoint)) <= dpy->bufmax)
Packit Service dc579d
       && (((char *)dpy->bufptr - (char *)req) < size) ) {
Packit Service dc579d
	 req->length += SIZEOF(xPoint) >> 2;
Packit Service dc579d
         point = (xPoint *) dpy->bufptr;
Packit Service dc579d
	 dpy->bufptr += SIZEOF(xPoint);
Packit Service dc579d
	 }
Packit Service dc579d
Packit Service dc579d
    else {
Packit Service dc579d
	GetReqExtra(PolyPoint, 4, req); /* 1 point = 4 bytes */
Packit Service dc579d
	req->drawable = d;
Packit Service dc579d
	req->gc = gc->gid;
Packit Service dc579d
	req->coordMode = CoordModeOrigin;
Packit Service dc579d
	point = (xPoint *) NEXTPTR(req,xPolyPointReq);
Packit Service dc579d
	}
Packit Service dc579d
Packit Service dc579d
    point->x = x;
Packit Service dc579d
    point->y = y;
Packit Service dc579d
Packit Service dc579d
    }
Packit Service dc579d
    UnlockDisplay(dpy);
Packit Service dc579d
    SyncHandle();
Packit Service dc579d
    return 1;
Packit Service dc579d
}
Packit Service dc579d