aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/obm/ObmW/Container.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /vendor/x11iraf/obm/ObmW/Container.c
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'vendor/x11iraf/obm/ObmW/Container.c')
-rw-r--r--vendor/x11iraf/obm/ObmW/Container.c346
1 files changed, 346 insertions, 0 deletions
diff --git a/vendor/x11iraf/obm/ObmW/Container.c b/vendor/x11iraf/obm/ObmW/Container.c
new file mode 100644
index 00000000..cc13769f
--- /dev/null
+++ b/vendor/x11iraf/obm/ObmW/Container.c
@@ -0,0 +1,346 @@
+#include <stdio.h>
+
+#include <X11/IntrinsicP.h>
+#include <X11/StringDefs.h>
+#include <X11/Xraw/XawInit.h>
+#include <X11/Xraw/3d.h>
+#include <X11/Xraw/ContainerP.h>
+
+
+
+#define UnspecifiedPixmap (Pixmap)2
+#define UndefinedGC (GC)2
+
+static void InsPixel();
+
+static XtResource resources[] = {
+#define offset(field) XtOffsetOf(ContainerRec, container.field)
+ {
+ "top.gc", "Top.gc", XtRString, sizeof(String),
+ offset(top_shadow_GC), XtRImmediate, (XtPointer)NULL
+ },
+ {
+ "bottom.gc", "Bottom.gc", XtRString, sizeof(String),
+ offset(bottom_shadow_GC), XtRImmediate, (XtPointer)NULL
+ },
+ {
+ XtNshadowWidth, XtCShadowWidth, XtRDimension, sizeof(Dimension),
+ offset(shadow_thickness), XtRImmediate, (XtPointer) 0
+ },
+ {
+ XtNtopShadowPixmap, XtCTopShadowPixmap, XtRPixmap, sizeof(Pixmap),
+ offset(top_shadow_pixmap), XtRImmediate, (XtPointer) UnspecifiedPixmap
+ },
+ {
+ XtNtopShadowPixel, XtCTopShadowPixel, XtRPixel, sizeof(Pixel),
+ offset(top_shadow_color), XtRCallProc, (XtPointer) InsPixel
+ },
+ {
+ XtNbottomShadowPixmap, XtCBottomShadowPixmap, XtRPixmap, sizeof(Pixmap),
+ offset(bottom_shadow_pixmap), XtRImmediate, (XtPointer) UnspecifiedPixmap
+ },
+ {
+ XtNbottomShadowPixel, XtCBottomShadowPixel, XtRPixel, sizeof(Pixel),
+ offset(bottom_shadow_color), XtRCallProc, (XtPointer) InsPixel
+ },
+ {
+ XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
+ offset(foreground), XtRString, (caddr_t) XtDefaultForeground
+ },
+ {
+ XtNuserData, XtCUserData, XtRPixmap, sizeof(Pixmap),
+ offset(user_data), XtRImmediate, (caddr_t) NULL
+ },
+ {
+ XtNborderWidth, XtCBorderWidth, XtRDimension, sizeof(Dimension),
+ XtOffsetOf(RectObjRec,rectangle.border_width), XtRImmediate, (XtPointer)0
+ }
+
+};
+static void InsPixel(w, off, value)
+ Widget w;
+ int off;
+ XrmValue *value;
+{
+ register ContainerWidget p = (ContainerWidget) w;
+ static Pixel pixel;
+
+ if (off == offset(top_shadow_color))
+ {
+ p->container.top_shadow_GC = UndefinedGC;
+ }
+ else /*bottom_shadow_color */
+ {
+ p->container.bottom_shadow_GC = UndefinedGC;
+ }
+ value->addr = (caddr_t) &pixel;
+}
+
+#undef offset
+
+
+static void ClassInitialize();
+static void ClassPartInitialize();
+static void initialize();
+static void realize();
+static void destroy();
+static void Redisplay();
+
+static Boolean SetValues();
+
+/*static XtGeometryResult query_geometry();*/
+/*static XtGeometryResult geometry_manager();*/
+/*static void changed_managed();*/
+
+ContainerClassRec containerClassRec = {
+ /* Core class part */
+ {
+ /* superclass */ (WidgetClass) &constraintClassRec,
+ /* class_name */ "Container",
+ /* widget_size */ sizeof(ContainerRec),
+ /* class_cnitialize */ ClassInitialize,
+ /* class_part_initialize */ ClassPartInitialize,
+ /* class_inited */ FALSE,
+ /* initialize */ initialize,
+ /* initialize_hook */ NULL,
+ /* realize */ realize,
+ /* actions */ NULL,
+ /* num_actions */ 0,
+ /* resources */ resources,
+ /* num_resources */ XtNumber(resources),
+ /* xrm_class */ NULLQUARK,
+ /* compress_motion */ TRUE,
+ /* compress_exposure */ XtExposeCompressMultiple,
+ /* compress_enterleave */ TRUE,
+ /* visible_interest */ FALSE,
+ /* destroy */ destroy,
+ /* resize */ NULL,
+ /* expose */ Redisplay,
+ /* set_values */ SetValues,
+ /* set_values_hook */ NULL,
+ /* set_values_almost */ XtInheritSetValuesAlmost,
+ /* get_values_hook */ NULL,
+ /* accept_focus */ NULL,
+ /* version */ XtVersion,
+ /* callback offsets */ NULL,
+ /* tm_table */ NULL,
+ /* query_geometry */ NULL,
+ /* display_accelerator */ XtInheritDisplayAccelerator,
+ /* extension */ NULL
+ },
+ /* Composite class part */
+ {
+ /* geometry manager */ XtInheritGeometryManager,
+ /* change_managed */ XtInheritChangeManaged,
+ /* insert_child */ XtInheritInsertChild,
+ /* delete_child */ XtInheritDeleteChild,
+ /* extension */ NULL,
+ },
+ /* Constraint class part */
+ {
+ /* subresources */ NULL,
+ /* subresource_count */ 0,
+ /* constraint_size */ 0,
+ /* initialize */ NULL,
+ /* destroy */ NULL,
+ /* set_values */ NULL,
+ /* extension */ NULL,
+ },
+ /* Container class part */
+ {
+ /* unused */ 0,
+ }
+};
+
+WidgetClass containerWidgetClass = (WidgetClass)&containerClassRec;
+
+static void
+ClassInitialize()
+{
+}
+
+static void
+ClassPartInitialize(widget_class)
+ WidgetClass widget_class;
+{
+}
+
+/* ARGSUSED */
+static void initialize(request, new, args, num_args)
+ Widget request, new;
+ ArgList args;
+ Cardinal *num_args;
+{
+ ContainerWidget sw = (ContainerWidget)new;
+ ContainerPart* cp = (ContainerPart*)&(sw->container);
+
+
+ if (cp->top_shadow_pixmap == UnspecifiedPixmap)
+ cp->top_shadow_pixmap = None;
+
+ if (cp->top_shadow_GC == NULL){
+ if (cp->top_shadow_pixmap != None)
+ cp->top_shadow_GC = AllocGCFromPixmap (new, cp->top_shadow_pixmap);
+ else
+ cp->top_shadow_GC = AllocGCFromPixel (new, cp->top_shadow_color);
+ } else if (cp->top_shadow_GC == UndefinedGC)
+ cp->top_shadow_GC = MakeTopShadowGC (new, new->core.background_pixel);
+
+
+ if (cp->bottom_shadow_pixmap == UnspecifiedPixmap)
+ cp->bottom_shadow_pixmap = None;
+
+ if (cp->bottom_shadow_GC == NULL){
+ if (cp->bottom_shadow_pixmap != None)
+ cp->bottom_shadow_GC = AllocGCFromPixmap (new, cp->bottom_shadow_pixmap);
+ else
+ cp->bottom_shadow_GC = AllocGCFromPixel (new, cp->bottom_shadow_color);
+ } else if (cp->bottom_shadow_GC == UndefinedGC)
+ cp->bottom_shadow_GC =MakeBottomShadowGC (new, new->core.background_pixel);
+
+ cp->background_GC = AllocGCFromPixel (new, new->core.background_pixel);
+}
+
+static void destroy(w)
+ Widget w;
+{
+ register ContainerWidget c = (ContainerWidget)w;
+
+ XtReleaseGC(w, c->container.top_shadow_GC);
+ XtReleaseGC(w, c->container.bottom_shadow_GC);
+ XtReleaseGC(w, c->container.background_GC);
+
+}
+
+static void realize(w, valueMask, attributes)
+ Widget w;
+ Mask *valueMask;
+ XSetWindowAttributes *attributes;
+{
+ (*coreClassRec.core_class.realize) (w, valueMask, attributes);
+}
+
+/* ARGSUSED */
+static Boolean SetValues(current, request, new, args, num_args)
+ Widget current, request, new;
+ ArgList args;
+ Cardinal *num_args;
+{
+ ContainerWidget s_old = (ContainerWidget) current;
+ ContainerWidget s_new = (ContainerWidget) new;
+ ContainerPart* sp = (ContainerPart*)&(s_new->container);
+ Boolean redraw = False;
+
+#define NE(field) (s_new->container.field != s_old->container.field)
+
+ if (NE(top_shadow_pixmap))
+ {
+
+ XtReleaseGC (new, sp->top_shadow_GC);
+ sp->top_shadow_GC = AllocGCFromPixmap (new, sp->top_shadow_pixmap);
+ redraw = True;
+
+ }
+ else if (NE(top_shadow_color) && sp->top_shadow_pixmap == None)
+ {
+
+ XtReleaseGC (new, sp->top_shadow_GC);
+ sp->top_shadow_GC = AllocGCFromPixel (new, sp->top_shadow_color);
+ redraw = True;
+
+ }
+
+ if (NE(bottom_shadow_pixmap))
+ {
+
+ XtReleaseGC (new, sp->bottom_shadow_GC);
+ sp->bottom_shadow_GC = AllocGCFromPixmap (new, sp->bottom_shadow_pixmap);
+ redraw = True;
+
+ }
+ else if (NE(bottom_shadow_color) && sp->bottom_shadow_pixmap == None)
+ {
+
+ XtReleaseGC (new, sp->bottom_shadow_GC);
+ sp->bottom_shadow_GC = AllocGCFromPixel (new, sp->bottom_shadow_color);
+ redraw = True;
+
+ }
+
+#undef NE
+
+ return redraw;
+}
+
+
+/* ARGSUSED */
+static void Redisplay(gw, event, region)
+ Widget gw;
+ XEvent *event; /* unused */
+ Region region; /* unused */
+{
+ register ContainerWidget c = (ContainerWidget) gw;
+
+ XClearWindow (XtDisplay(gw), XtWindow(gw));
+
+ XawDrawFrame (gw,
+ 0,
+ 0,
+ c->core.width,
+ c->core.height,
+ XawRAISED,
+ c->container.shadow_thickness,
+ c->container.top_shadow_GC,
+ c->container.bottom_shadow_GC);
+
+}
+
+void _XawQueryGeometry (widget, reply_return)
+ Widget widget;
+ XtWidgetGeometry *reply_return;
+{
+ XtGeometryResult result;
+ String subs[1];
+ Cardinal num_subs;
+ WidgetClass class;
+
+ if (widget != (Widget)NULL)
+ {
+
+ reply_return->request_mode = CWWidth | CWHeight;
+
+ result = XtQueryGeometry (widget, NULL, reply_return);
+
+ switch (result)
+ {
+ case XtGeometryNo :
+ case XtGeometryYes :
+ reply_return->width = widget->core.width;
+ reply_return->height = widget->core.height;
+ break;
+ case XtGeometryAlmost :
+ if (!(reply_return->request_mode & CWWidth))
+ reply_return->width = widget->core.width;
+
+ if (!(reply_return->request_mode & CWHeight))
+ reply_return->height = widget->core.height;
+ break;
+ default :
+ class = XtClass(widget);
+ subs[0] = class->core_class.class_name;
+ num_subs = 1;
+ XtAppWarningMsg(
+ XtWidgetToApplicationContext(widget),
+ "QueryGeometry",
+ "QueryGeometry",
+ "WidgetToolkit",
+ "WidgetClass '%s' returns invalid value for XtQueryGeometry",
+ subs, &num_subs);
+ break;
+ }
+ reply_return->request_mode = CWWidth | CWHeight;
+ }
+}
+
+
+