aboutsummaryrefslogtreecommitdiff
path: root/libXaw/src/SmeLine.c
diff options
context:
space:
mode:
Diffstat (limited to 'libXaw/src/SmeLine.c')
-rw-r--r--libXaw/src/SmeLine.c531
1 files changed, 264 insertions, 267 deletions
diff --git a/libXaw/src/SmeLine.c b/libXaw/src/SmeLine.c
index 88a6e9ce5..f735a3c9f 100644
--- a/libXaw/src/SmeLine.c
+++ b/libXaw/src/SmeLine.c
@@ -1,267 +1,264 @@
-/* $Xorg: SmeLine.c,v 1.4 2001/02/09 02:03:45 xorgcvs Exp $ */
-
-/*
-Copyright 1989, 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.
- *
- * Author: Chris D. Peterson, MIT X Consortium
- */
-/* $XFree86: xc/lib/Xaw/SmeLine.c,v 1.7 2001/01/17 19:42:31 dawes Exp $ */
-
-/*
- * Sme.c - Source code for the generic menu entry
- *
- * Date: September 26, 1989
- *
- * By: Chris D. Peterson
- * MIT X Consortium
- * kit@expo.lcs.mit.edu
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <X11/IntrinsicP.h>
-#include <X11/StringDefs.h>
-#include <X11/Xaw/Cardinals.h>
-#include <X11/Xaw/SmeLineP.h>
-#include <X11/Xaw/XawInit.h>
-#include "Private.h"
-
-/*
- * Class Methods
- */
-static void XawSmeLineDestroy(Widget);
-static void XawSmeLineInitialize(Widget, Widget, ArgList, Cardinal*);
-static void XawSmeLineRedisplay(Widget, XEvent*, Region);
-static Boolean XawSmeLineSetValues(Widget, Widget, Widget,
- ArgList, Cardinal*);
-
-/*
- * Prototypes
- */
-static void CreateGC(Widget);
-static void DestroyGC(Widget);
-
-/*
- * Initialization
- */
-#define offset(field) XtOffsetOf(SmeLineRec, sme_line.field)
-static XtResource resources[] = {
- {
- XtNlineWidth,
- XtCLineWidth,
- XtRDimension,
- sizeof(Dimension),
- offset(line_width),
- XtRImmediate,
- (XtPointer)1
- },
- {
- XtNstipple,
- XtCStipple,
- XtRBitmap,
- sizeof(Pixmap),
- offset(stipple),
- XtRImmediate,
- (XtPointer)XtUnspecifiedPixmap
- },
- {
- XtNforeground,
- XtCForeground,
- XtRPixel,
- sizeof(Pixel),
- offset(foreground),
- XtRString,
- XtDefaultForeground
- },
-};
-#undef offset
-
-#define Superclass (&smeClassRec)
-SmeLineClassRec smeLineClassRec = {
- /* rectangle */
- {
- (WidgetClass)Superclass, /* superclass */
- "SmeLine", /* class_name */
- sizeof(SmeLineRec), /* widget_size */
- XawInitializeWidgetSet, /* class_initialize */
- NULL, /* class_part_initialize */
- False, /* class inited */
- XawSmeLineInitialize, /* initialize */
- NULL, /* initialize_hook */
- NULL, /* realize */
- NULL, /* actions */
- 0, /* num_actions */
- resources, /* resources */
- XtNumber(resources), /* num_resources */
- NULLQUARK, /* xrm_class */
- False, /* compress_motion */
- False, /* compress_exposure */
- False, /* compress_enterleave */
- False, /* visible_interest */
- XawSmeLineDestroy, /* destroy */
- NULL, /* resize */
- XawSmeLineRedisplay, /* expose */
- XawSmeLineSetValues, /* set_values */
- NULL, /* set_values_hook */
- XtInheritSetValuesAlmost, /* set_values_almost */
- NULL, /* get_values_hook */
- NULL, /* accept_focus */
- XtVersion, /* intrinsics version */
- NULL, /* callback offsets */
- NULL, /* tm_table */
- XtInheritQueryGeometry, /* query_geometry */
- NULL, /* display_accelerator */
- NULL, /* extension */
- },
- /* sme */
- {
- XtInheritHighlight, /* highlight */
- XtInheritUnhighlight, /* unhighlight */
- XtInheritNotify, /* notify */
- NULL, /* extension */
- },
- /* sme_line */
- {
- NULL, /* extension */
- }
-};
-
-WidgetClass smeLineObjectClass = (WidgetClass)&smeLineClassRec;
-
-/*
- * Implementation
- */
-/*ARGSUSED*/
-static void
-XawSmeLineInitialize(Widget request, Widget cnew,
- ArgList args, Cardinal *num_args)
-{
- SmeLineObject entry = (SmeLineObject)cnew;
-
- if (XtHeight(entry) == 0)
- XtHeight(entry) = entry->sme_line.line_width;
-
- CreateGC(cnew);
-}
-
-/*
- * Function:
- * CreateGC
- *
- * Parameters:
- * w - Line entry widget
- *
- * Description:
- * Creates the GC for the line entry widget.
- *
- * Note:
- * We can only share the GC if there is no stipple, because
- * we need to change the stipple origin when drawing
- */
-static void
-CreateGC(Widget w)
-{
- SmeLineObject entry = (SmeLineObject)w;
- XGCValues values;
- XtGCMask mask = GCForeground | GCGraphicsExposures | GCLineWidth;
-
- values.foreground = entry->sme_line.foreground;
- values.graphics_exposures = False;
- values.line_width = entry->sme_line.line_width;
-
- if (entry->sme_line.stipple != XtUnspecifiedPixmap) {
- values.stipple = entry->sme_line.stipple;
- values.fill_style = FillStippled;
- mask |= GCStipple | GCFillStyle;
-
- entry->sme_line.gc = XCreateGC(XtDisplayOfObject(w),
- RootWindowOfScreen(XtScreenOfObject(w)),
- mask, &values);
- }
- else
- entry->sme_line.gc = XtGetGC(w, mask, &values);
-}
-
-static void
-XawSmeLineDestroy(Widget w)
-{
- DestroyGC(w);
-}
-
-static void
-DestroyGC(Widget w)
-{
- SmeLineObject entry = (SmeLineObject)w;
-
- if (entry->sme_line.stipple != XtUnspecifiedPixmap)
- XFreeGC(XtDisplayOfObject(w), entry->sme_line.gc);
- else
- XtReleaseGC(w, entry->sme_line.gc);
-}
-
-/*ARGSUSED*/
-static void
-XawSmeLineRedisplay(Widget w, XEvent *event, Region region)
-{
- SmeLineObject entry = (SmeLineObject)w;
- int y = XtY(w) + (((int)XtHeight(w) - entry->sme_line.line_width) >> 1);
-
- if (entry->sme_line.stipple != XtUnspecifiedPixmap)
- XSetTSOrigin(XtDisplayOfObject(w), entry->sme_line.gc, 0, y);
-
- XFillRectangle(XtDisplayOfObject(w), XtWindowOfObject(w),
- entry->sme_line.gc, XtX(w), y,
- XtWidth(w), entry->sme_line.line_width);
-}
-
-/*
- * Function:
- * XawSmeLineSetValues
- *
- * Parameters:
- * current - current state of the widget
- * request - what was requested
- * cnew - what the widget will become
- *
- * Description:
- * Relayout the menu when one of the resources is changed.
- */
-/*ARGSUSED*/
-static Boolean
-XawSmeLineSetValues(Widget current, Widget request, Widget cnew,
- ArgList args, Cardinal *num_args)
-{
- SmeLineObject entry = (SmeLineObject)cnew;
- SmeLineObject old_entry = (SmeLineObject)current;
-
- if (entry->sme_line.line_width != old_entry->sme_line.line_width &&
- entry->sme_line.stipple != old_entry->sme_line.stipple) {
- DestroyGC(current);
- CreateGC(cnew);
- return (True);
- }
-
- return (False);
-}
+/*
+Copyright 1989, 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.
+ *
+ * Author: Chris D. Peterson, MIT X Consortium
+ */
+
+/*
+ * Sme.c - Source code for the generic menu entry
+ *
+ * Date: September 26, 1989
+ *
+ * By: Chris D. Peterson
+ * MIT X Consortium
+ * kit@expo.lcs.mit.edu
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <X11/IntrinsicP.h>
+#include <X11/StringDefs.h>
+#include <X11/Xaw/Cardinals.h>
+#include <X11/Xaw/SmeLineP.h>
+#include <X11/Xaw/XawInit.h>
+#include "Private.h"
+
+/*
+ * Class Methods
+ */
+static void XawSmeLineDestroy(Widget);
+static void XawSmeLineInitialize(Widget, Widget, ArgList, Cardinal*);
+static void XawSmeLineRedisplay(Widget, XEvent*, Region);
+static Boolean XawSmeLineSetValues(Widget, Widget, Widget,
+ ArgList, Cardinal*);
+
+/*
+ * Prototypes
+ */
+static void CreateGC(Widget);
+static void DestroyGC(Widget);
+
+/*
+ * Initialization
+ */
+#define offset(field) XtOffsetOf(SmeLineRec, sme_line.field)
+static XtResource resources[] = {
+ {
+ XtNlineWidth,
+ XtCLineWidth,
+ XtRDimension,
+ sizeof(Dimension),
+ offset(line_width),
+ XtRImmediate,
+ (XtPointer)1
+ },
+ {
+ XtNstipple,
+ XtCStipple,
+ XtRBitmap,
+ sizeof(Pixmap),
+ offset(stipple),
+ XtRImmediate,
+ (XtPointer)XtUnspecifiedPixmap
+ },
+ {
+ XtNforeground,
+ XtCForeground,
+ XtRPixel,
+ sizeof(Pixel),
+ offset(foreground),
+ XtRString,
+ XtDefaultForeground
+ },
+};
+#undef offset
+
+#define Superclass (&smeClassRec)
+SmeLineClassRec smeLineClassRec = {
+ /* rectangle */
+ {
+ (WidgetClass)Superclass, /* superclass */
+ "SmeLine", /* class_name */
+ sizeof(SmeLineRec), /* widget_size */
+ XawInitializeWidgetSet, /* class_initialize */
+ NULL, /* class_part_initialize */
+ False, /* class inited */
+ XawSmeLineInitialize, /* initialize */
+ NULL, /* initialize_hook */
+ NULL, /* realize */
+ NULL, /* actions */
+ 0, /* num_actions */
+ resources, /* resources */
+ XtNumber(resources), /* num_resources */
+ NULLQUARK, /* xrm_class */
+ False, /* compress_motion */
+ False, /* compress_exposure */
+ False, /* compress_enterleave */
+ False, /* visible_interest */
+ XawSmeLineDestroy, /* destroy */
+ NULL, /* resize */
+ XawSmeLineRedisplay, /* expose */
+ XawSmeLineSetValues, /* set_values */
+ NULL, /* set_values_hook */
+ XtInheritSetValuesAlmost, /* set_values_almost */
+ NULL, /* get_values_hook */
+ NULL, /* accept_focus */
+ XtVersion, /* intrinsics version */
+ NULL, /* callback offsets */
+ NULL, /* tm_table */
+ XtInheritQueryGeometry, /* query_geometry */
+ NULL, /* display_accelerator */
+ NULL, /* extension */
+ },
+ /* sme */
+ {
+ XtInheritHighlight, /* highlight */
+ XtInheritUnhighlight, /* unhighlight */
+ XtInheritNotify, /* notify */
+ NULL, /* extension */
+ },
+ /* sme_line */
+ {
+ NULL, /* extension */
+ }
+};
+
+WidgetClass smeLineObjectClass = (WidgetClass)&smeLineClassRec;
+
+/*
+ * Implementation
+ */
+/*ARGSUSED*/
+static void
+XawSmeLineInitialize(Widget request, Widget cnew,
+ ArgList args, Cardinal *num_args)
+{
+ SmeLineObject entry = (SmeLineObject)cnew;
+
+ if (XtHeight(entry) == 0)
+ XtHeight(entry) = entry->sme_line.line_width;
+
+ CreateGC(cnew);
+}
+
+/*
+ * Function:
+ * CreateGC
+ *
+ * Parameters:
+ * w - Line entry widget
+ *
+ * Description:
+ * Creates the GC for the line entry widget.
+ *
+ * Note:
+ * We can only share the GC if there is no stipple, because
+ * we need to change the stipple origin when drawing
+ */
+static void
+CreateGC(Widget w)
+{
+ SmeLineObject entry = (SmeLineObject)w;
+ XGCValues values;
+ XtGCMask mask = GCForeground | GCGraphicsExposures | GCLineWidth;
+
+ values.foreground = entry->sme_line.foreground;
+ values.graphics_exposures = False;
+ values.line_width = entry->sme_line.line_width;
+
+ if (entry->sme_line.stipple != XtUnspecifiedPixmap) {
+ values.stipple = entry->sme_line.stipple;
+ values.fill_style = FillStippled;
+ mask |= GCStipple | GCFillStyle;
+
+ entry->sme_line.gc = XCreateGC(XtDisplayOfObject(w),
+ RootWindowOfScreen(XtScreenOfObject(w)),
+ mask, &values);
+ }
+ else
+ entry->sme_line.gc = XtGetGC(w, mask, &values);
+}
+
+static void
+XawSmeLineDestroy(Widget w)
+{
+ DestroyGC(w);
+}
+
+static void
+DestroyGC(Widget w)
+{
+ SmeLineObject entry = (SmeLineObject)w;
+
+ if (entry->sme_line.stipple != XtUnspecifiedPixmap)
+ XFreeGC(XtDisplayOfObject(w), entry->sme_line.gc);
+ else
+ XtReleaseGC(w, entry->sme_line.gc);
+}
+
+/*ARGSUSED*/
+static void
+XawSmeLineRedisplay(Widget w, XEvent *event, Region region)
+{
+ SmeLineObject entry = (SmeLineObject)w;
+ int y = XtY(w) + (((int)XtHeight(w) - entry->sme_line.line_width) >> 1);
+
+ if (entry->sme_line.stipple != XtUnspecifiedPixmap)
+ XSetTSOrigin(XtDisplayOfObject(w), entry->sme_line.gc, 0, y);
+
+ XFillRectangle(XtDisplayOfObject(w), XtWindowOfObject(w),
+ entry->sme_line.gc, XtX(w), y,
+ XtWidth(w), entry->sme_line.line_width);
+}
+
+/*
+ * Function:
+ * XawSmeLineSetValues
+ *
+ * Parameters:
+ * current - current state of the widget
+ * request - what was requested
+ * cnew - what the widget will become
+ *
+ * Description:
+ * Relayout the menu when one of the resources is changed.
+ */
+/*ARGSUSED*/
+static Boolean
+XawSmeLineSetValues(Widget current, Widget request, Widget cnew,
+ ArgList args, Cardinal *num_args)
+{
+ SmeLineObject entry = (SmeLineObject)cnew;
+ SmeLineObject old_entry = (SmeLineObject)current;
+
+ if (entry->sme_line.line_width != old_entry->sme_line.line_width &&
+ entry->sme_line.stipple != old_entry->sme_line.stipple) {
+ DestroyGC(current);
+ CreateGC(cnew);
+ return (True);
+ }
+
+ return (False);
+}