161 lines
5.5 KiB
C
161 lines
5.5 KiB
C
/* $XFree86$ */
|
|
/*
|
|
* 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;
|