160 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C
		
	
	
	
/*
 | 
						|
 * Copyright 1987, 1998  The Open Group
 | 
						|
 *
 | 
						|
 * Permission to use, copy, modify, distribute, and sell this software and its
 | 
						|
 * documentation for any purpose is hereby granted without fee, provided that
 | 
						|
 * the above copyright notice appear in all copies and that both that
 | 
						|
 * copyright notice and this permission notice appear in supporting
 | 
						|
 * documentation.
 | 
						|
 *
 | 
						|
 * The above copyright notice and this permission notice shall be included in
 | 
						|
 * all copies or substantial portions of the Software.
 | 
						|
 * 
 | 
						|
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
						|
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
						|
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
 | 
						|
 * OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 | 
						|
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
						|
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
						|
 *
 | 
						|
 * Except as contained in this notice, the name of The Open Group shall not be
 | 
						|
 * used in advertising or otherwise to promote the sale, use or other dealings
 | 
						|
 * in this Software without prior written authorization from The Open Group.
 | 
						|
 */
 | 
						|
 | 
						|
/*
 | 
						|
 * Copyright 2002 Red Hat Inc., Durham, North Carolina.
 | 
						|
 *
 | 
						|
 * All Rights Reserved.
 | 
						|
 *
 | 
						|
 * Permission is hereby granted, free of charge, to any person obtaining
 | 
						|
 * a copy of this software and associated documentation files (the
 | 
						|
 * "Software"), to deal in the Software without restriction, including
 | 
						|
 * without limitation on the rights to use, copy, modify, merge,
 | 
						|
 * publish, distribute, sublicense, and/or sell copies of the Software,
 | 
						|
 * and to permit persons to whom the Software is furnished to do so,
 | 
						|
 * subject to the following conditions:
 | 
						|
 *
 | 
						|
 * The above copyright notice and this permission notice (including the
 | 
						|
 * next paragraph) shall be included in all copies or substantial
 | 
						|
 * portions of the Software.
 | 
						|
 *
 | 
						|
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
						|
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
						|
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
						|
 * NON-INFRINGEMENT.  IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
 | 
						|
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 | 
						|
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
						|
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
						|
 * SOFTWARE.
 | 
						|
 */
 | 
						|
 | 
						|
/*
 | 
						|
 * Authors:
 | 
						|
 *   Rickard E. (Rik) Faith <faith@redhat.com>
 | 
						|
 *
 | 
						|
 * This file was originally taken from xc/lib/Xaw/Template.c
 | 
						|
 */
 | 
						|
 | 
						|
#include <X11/IntrinsicP.h>
 | 
						|
#include <X11/StringDefs.h>
 | 
						|
#include "CanvasP.h"
 | 
						|
 | 
						|
static void CanvasInitialize(Widget request, Widget w,
 | 
						|
                             ArgList args, Cardinal *num_args)
 | 
						|
{
 | 
						|
}
 | 
						|
 | 
						|
static void CanvasExpose(Widget w, XEvent *event, Region region)
 | 
						|
{
 | 
						|
    CanvasExposeDataRec data;
 | 
						|
 | 
						|
    data.w      = w;
 | 
						|
    data.event  = event;
 | 
						|
    data.region = region;
 | 
						|
    
 | 
						|
    if (!XtIsRealized(w)) return;
 | 
						|
    XtCallCallbacks(w, XtNcanvasExposeCallback, (XtPointer)&data);
 | 
						|
}
 | 
						|
 | 
						|
static void CanvasResize(Widget w)
 | 
						|
{
 | 
						|
    if (!XtIsRealized(w)) return;
 | 
						|
    XtCallCallbacks(w, XtNcanvasResizeCallback, (XtPointer)w);
 | 
						|
}
 | 
						|
 | 
						|
static void CanvasAction(Widget w, XEvent *event,
 | 
						|
                         String *params, Cardinal *num_params)
 | 
						|
{
 | 
						|
    XtCallCallbacks(w, XtNcallback, (XtPointer)event);
 | 
						|
}
 | 
						|
 | 
						|
#define offset(field) XtOffsetOf(CanvasRec, canvas.field)
 | 
						|
static XtResource resources[] = {
 | 
						|
    { XtNcallback, XtCCallback, XtRCallback,
 | 
						|
      sizeof(XtCallbackList), offset(input_callback), XtRCallback, NULL },
 | 
						|
    { XtNcanvasExposeCallback, XtCcanvasExposeCallback, XtRCallback,
 | 
						|
      sizeof(XtCallbackList), offset(expose_callback), XtRCallback, NULL },
 | 
						|
    { XtNcanvasResizeCallback, XtCcanvasResizeCallback, XtRCallback,
 | 
						|
      sizeof(XtCallbackList), offset(resize_callback), XtRCallback, NULL },
 | 
						|
};
 | 
						|
#undef offset
 | 
						|
 | 
						|
static XtActionsRec actions[] =
 | 
						|
{
 | 
						|
    {"canvas",	CanvasAction},
 | 
						|
};
 | 
						|
 | 
						|
static char translations[] =
 | 
						|
"<Key>:    canvas()\n\
 | 
						|
<Motion>:  canvas()\n\
 | 
						|
<BtnDown>: canvas()\n\
 | 
						|
<BtnUp>: canvas()\n\
 | 
						|
"
 | 
						|
;
 | 
						|
 | 
						|
#define Superclass	(&widgetClassRec)
 | 
						|
CanvasClassRec canvasClassRec = {
 | 
						|
    /* core */
 | 
						|
    {
 | 
						|
        (WidgetClass)Superclass,        /* superclass */
 | 
						|
        "Canvas",			/* class_name */
 | 
						|
        sizeof(CanvasRec),		/* widget_size */
 | 
						|
        NULL,				/* class_initialize */
 | 
						|
        NULL,				/* class_part_initialize */
 | 
						|
        False,				/* class_inited */
 | 
						|
        CanvasInitialize,		/* initialize */
 | 
						|
        NULL,				/* initialize_hook */
 | 
						|
        XtInheritRealize,		/* realize */
 | 
						|
        actions,			/* actions */
 | 
						|
        XtNumber(actions),		/* num_actions */
 | 
						|
        resources,			/* resources */
 | 
						|
        XtNumber(resources),		/* num_resources */
 | 
						|
        NULLQUARK,			/* xrm_class */
 | 
						|
        True,				/* compress_motion */
 | 
						|
        True,				/* compress_exposure */
 | 
						|
        True,				/* compress_enterleave */
 | 
						|
        False,				/* visible_interest */
 | 
						|
        NULL,				/* destroy */
 | 
						|
        CanvasResize,			/* resize */
 | 
						|
        CanvasExpose,                   /* expose */
 | 
						|
        NULL,				/* set_values */
 | 
						|
        NULL,				/* set_values_hook */
 | 
						|
        XtInheritSetValuesAlmost,	/* set_values_almost */
 | 
						|
        NULL,				/* get_values_hook */
 | 
						|
        NULL,				/* accept_focus */
 | 
						|
        XtVersion,			/* version */
 | 
						|
        NULL,				/* callback_private */
 | 
						|
        translations,			/* tm_table */
 | 
						|
        XtInheritQueryGeometry,		/* query_geometry */
 | 
						|
        XtInheritDisplayAccelerator,	/* display_accelerator */
 | 
						|
        NULL,				/* extension */
 | 
						|
    },
 | 
						|
    /* canvas */
 | 
						|
    {
 | 
						|
        NULL,				/* extension */
 | 
						|
    }
 | 
						|
};
 | 
						|
 | 
						|
WidgetClass canvasWidgetClass = (WidgetClass)&canvasClassRec;
 |