aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/obm/ObmW/RowCol.c
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/x11iraf/obm/ObmW/RowCol.c')
-rw-r--r--vendor/x11iraf/obm/ObmW/RowCol.c346
1 files changed, 346 insertions, 0 deletions
diff --git a/vendor/x11iraf/obm/ObmW/RowCol.c b/vendor/x11iraf/obm/ObmW/RowCol.c
new file mode 100644
index 00000000..c37fed43
--- /dev/null
+++ b/vendor/x11iraf/obm/ObmW/RowCol.c
@@ -0,0 +1,346 @@
+/* Generated by wbuild from "RowCol.w"
+** (generator version $Revision: 2.0 $ of $Date: 93/07/06 16:08:04 $)
+*/
+#include <X11/IntrinsicP.h>
+#include <X11/StringDefs.h>
+#include "RowColP.h"
+static void _resolve_inheritance(
+#if NeedFunctionPrototypes
+WidgetClass
+#endif
+);
+static void change_managed(
+#if NeedFunctionPrototypes
+Widget
+#endif
+);
+static void layout(
+#if NeedFunctionPrototypes
+Widget,int
+#endif
+);
+static XtGeometryResult geometry_manager(
+#if NeedFunctionPrototypes
+Widget ,XtWidgetGeometry *,XtWidgetGeometry *
+#endif
+);
+static void resize(
+#if NeedFunctionPrototypes
+Widget
+#endif
+);
+static void initialize(
+#if NeedFunctionPrototypes
+Widget ,Widget,ArgList ,Cardinal *
+#endif
+);
+static Boolean set_values(
+#if NeedFunctionPrototypes
+Widget ,Widget ,Widget,ArgList ,Cardinal *
+#endif
+);
+static char rcsid[] = "$Header: RowCol.w,v 1.1 92/10/14 18:36:36 bert Exp $";
+static void align_child(
+#if NeedFunctionPrototypes
+Widget,int ,int ,int ,int ,Alignment
+#endif
+);
+/*ARGSUSED*/static void align_child(self,cx,cy,width,height,alignment)Widget self;int cx;int cy;int width;int height;Alignment alignment;
+{
+ Position x, y;
+
+ if (alignment & XfwfLeft) x = cx;
+ else if (alignment & XfwfRight) x = cx + width - ((XfwfRowColWidget)self)->core.width;
+ else x = cx + (width - ((XfwfRowColWidget)self)->core.width) / 2;
+ if (alignment & XfwfTop) y = cy;
+ else if (alignment & XfwfBottom) y = cy + height - ((XfwfRowColWidget)self)->core.height;
+ else y = cy + (height - ((XfwfRowColWidget)self)->core.height) / 2;
+ XtMoveWidget(self, x, y);
+}
+
+static XtResource resources[] = {
+{XtNstoreByRow,XtCStoreByRow,XtRBoolean,sizeof(((XfwfRowColRec*)NULL)->xfwfRowCol.storeByRow),XtOffsetOf(XfwfRowColRec,xfwfRowCol.storeByRow),XtRImmediate,(XtPointer)True },
+{XtNrows,XtCRows,XtRInt,sizeof(((XfwfRowColRec*)NULL)->xfwfRowCol.rows),XtOffsetOf(XfwfRowColRec,xfwfRowCol.rows),XtRImmediate,(XtPointer)0 },
+{XtNcolumns,XtCColumns,XtRInt,sizeof(((XfwfRowColRec*)NULL)->xfwfRowCol.columns),XtOffsetOf(XfwfRowColRec,xfwfRowCol.columns),XtRImmediate,(XtPointer)0 },
+{XtNalignment,XtCAlignment,XtRAlignment,sizeof(((XfwfRowColRec*)NULL)->xfwfRowCol.alignment),XtOffsetOf(XfwfRowColRec,xfwfRowCol.alignment),XtRImmediate,(XtPointer)XfwfTopLeft },
+{XtNshrinkToFit,XtCShrinkToFit,XtRBoolean,sizeof(((XfwfRowColRec*)NULL)->xfwfRowCol.shrinkToFit),XtOffsetOf(XfwfRowColRec,xfwfRowCol.shrinkToFit),XtRImmediate,(XtPointer)False },
+{XtNframeType,XtCFrameType,XtRFrameType,sizeof(((XfwfRowColRec*)NULL)->xfwfFrame.frameType),XtOffsetOf(XfwfRowColRec,xfwfFrame.frameType),XtRImmediate,(XtPointer)XfwfSunken },
+{XtNframeWidth,XtCFrameWidth,XtRDimension,sizeof(((XfwfRowColRec*)NULL)->xfwfFrame.frameWidth),XtOffsetOf(XfwfRowColRec,xfwfFrame.frameWidth),XtRImmediate,(XtPointer)2 },
+};
+
+XfwfRowColClassRec xfwfRowColClassRec = {
+{ /* core_class part */
+(WidgetClass) &xfwfBoardClassRec,
+"RowCol",
+sizeof(XfwfRowColRec),
+NULL,
+_resolve_inheritance,
+FALSE,
+initialize,
+NULL,
+XtInheritRealize,
+NULL,
+0,
+resources,
+7,
+NULLQUARK,
+False ,
+FALSE ,
+False ,
+False ,
+NULL,
+resize,
+XtInheritExpose,
+set_values,
+NULL,
+XtInheritSetValuesAlmost,
+NULL,
+XtInheritAcceptFocus,
+XtVersion,
+NULL,
+NULL,
+XtInheritQueryGeometry,
+XtInheritDisplayAccelerator,
+NULL
+},
+{ /* composite_class part */
+geometry_manager,
+change_managed,
+XtInheritInsertChild,
+XtInheritDeleteChild,
+NULL
+},
+{ /* XfwfCommon_class part */
+XtInherit_compute_inside,
+XtInherit_highlight_border,
+XtInherit_unhighlight_border,
+XtInherit_would_accept_focus,
+XtInherit_traverse,
+XtInherit_choose_color,
+XtInherit_lighter_color,
+XtInherit_darker_color,
+NULL ,
+},
+{ /* XfwfFrame_class part */
+0
+},
+{ /* XfwfBoard_class part */
+XtInherit_set_abs_location,
+},
+{ /* XfwfRowCol_class part */
+layout,
+},
+};
+WidgetClass xfwfRowColWidgetClass = (WidgetClass) &xfwfRowColClassRec;
+static void _resolve_inheritance(class)
+WidgetClass class;
+{
+ XfwfRowColWidgetClass c = (XfwfRowColWidgetClass) class;
+ XfwfRowColWidgetClass super;
+ static CompositeClassExtensionRec extension_rec = {
+ NULL, NULLQUARK, XtCompositeExtensionVersion,
+ sizeof(CompositeClassExtensionRec), True};
+ CompositeClassExtensionRec *ext;
+ ext = (XtPointer)XtMalloc(sizeof(*ext));
+ *ext = extension_rec;
+ ext->next_extension = c->composite_class.extension;
+ c->composite_class.extension = ext;
+ if (class == xfwfRowColWidgetClass) return;
+ super = (XfwfRowColWidgetClass)class->core_class.superclass;
+ if (c->xfwfRowCol_class.layout == XtInherit_layout)
+ c->xfwfRowCol_class.layout = super->xfwfRowCol_class.layout;
+}
+/*ARGSUSED*/static void change_managed(self)Widget self;
+{
+ ((XfwfRowColWidgetClass)self->core.widget_class)->xfwfRowCol_class.layout(self, ((XfwfRowColWidget)self)->xfwfRowCol.shrinkToFit);
+}
+/*ARGSUSED*/static void layout(self,shrink)Widget self;int shrink;
+{
+ int nrows, ncols, i, nchild, n;
+ Position left, top, x, y;
+ Dimension width, height, w, h;
+ Widget child;
+
+ nchild = 0;
+ ((XfwfRowColWidget)self)->xfwfRowCol.max_width = 0;
+ ((XfwfRowColWidget)self)->xfwfRowCol.max_height = 0;
+
+ for (i = 0; i < ((XfwfRowColWidget)self)->composite.num_children; i++) {
+ child = ((XfwfRowColWidget)self)->composite.children[i];
+ if (! XtIsManaged(child)) continue;
+ nchild++;
+ ((XfwfRowColWidget)self)->xfwfRowCol.max_width =
+ max(((XfwfRowColWidget)self)->xfwfRowCol.max_width,
+ ((XfwfRowColWidget)child)->core.width +
+ 2*((XfwfRowColWidget)child)->core.border_width);
+ ((XfwfRowColWidget)self)->xfwfRowCol.max_height =
+ max(((XfwfRowColWidget)self)->xfwfRowCol.max_height,
+ ((XfwfRowColWidget)child)->core.height +
+ 2*((XfwfRowColWidget)child)->core.border_width);
+ }
+
+ ((XfwfRowColWidgetClass)self->core.widget_class)->xfwfCommon_class.compute_inside(self, &left, &top, &width, &height);
+
+ /* If there is a single child resize it to fill the window instead of
+ * laying out multiple child widgets. This allows a group widget to be
+ * used to draw a labeled frame around a composite child. 09Mar94 DCT.
+ */
+ if (((XfwfRowColWidget)self)->composite.num_children == 1) {
+ if (width > 0 && width < 16384 && height > 0 && height < 16384) {
+ /* Don't resize child if parent doesn't have a size yet.
+ */
+ child = ((XfwfRowColWidget)self)->composite.children[0];
+ w = width - 2 * child->core.border_width;
+ h = height - 2 * child->core.border_width;
+
+ XtResizeWidget (child, w, h,
+ ((XfwfRowColWidget)child)->core.border_width);
+ align_child (child, left, top, w, h, XfwfLeft|XfwfTop);
+
+ ((XfwfRowColWidget)self)->xfwfRowCol.max_width =
+ child->core.width - 2 * child->core.border_width;
+ ((XfwfRowColWidget)self)->xfwfRowCol.max_height =
+ child->core.height - 2 * child->core.border_width;
+
+ nrows = ncols = 1;
+ goto do_shrink;
+ }
+ }
+
+ if (((XfwfRowColWidget)self)->xfwfRowCol.columns != 0) {
+ ncols = ((XfwfRowColWidget)self)->xfwfRowCol.columns;
+ nrows = (nchild + ncols - 1)/ncols;
+ } else if (((XfwfRowColWidget)self)->xfwfRowCol.rows != 0) {
+ nrows = ((XfwfRowColWidget)self)->xfwfRowCol.rows;
+ ncols = (nchild + nrows - 1)/nrows;
+ } else if (((XfwfRowColWidget)self)->composite.num_children == 1) {
+ /* 09Mar94 DCT */
+ nrows = ncols = 1;
+ } else {
+ ncols = ((XfwfRowColWidget)self)->xfwfRowCol.max_width != 0 ? width/((XfwfRowColWidget)self)->xfwfRowCol.max_width : 1;
+ if (ncols == 0) ncols = 1;
+ nrows = (nchild + ncols - 1)/ncols;
+ }
+
+ x = left;
+ y = top;
+ n = 0;
+ if (((XfwfRowColWidget)self)->xfwfRowCol.storeByRow) {
+ for (i = 0; i < ((XfwfRowColWidget)self)->composite.num_children; i++) {
+ child = ((XfwfRowColWidget)self)->composite.children[i];
+ if (! XtIsManaged(child)) continue;
+ align_child(child, x, y, ((XfwfRowColWidget)self)->xfwfRowCol.max_width, ((XfwfRowColWidget)self)->xfwfRowCol.max_height, ((XfwfRowColWidget)self)->xfwfRowCol.alignment);
+ n++;
+ if (n == ncols) {
+ n = 0;
+ x = left;
+ y += ((XfwfRowColWidget)self)->xfwfRowCol.max_height;
+ } else
+ x += ((XfwfRowColWidget)self)->xfwfRowCol.max_width;
+ }
+ } else {
+ for (i = 0; i < ((XfwfRowColWidget)self)->composite.num_children; i++) {
+ child = ((XfwfRowColWidget)self)->composite.children[i];
+ if (! XtIsManaged(child)) continue;
+ align_child(child, x, y, ((XfwfRowColWidget)self)->xfwfRowCol.max_width, ((XfwfRowColWidget)self)->xfwfRowCol.max_height, ((XfwfRowColWidget)self)->xfwfRowCol.alignment);
+ n++;
+ if (n == nrows) {
+ n = 0;
+ y = top;
+ x += ((XfwfRowColWidget)self)->xfwfRowCol.max_width;
+ } else
+ y += ((XfwfRowColWidget)self)->xfwfRowCol.max_height;
+ }
+ }
+
+do_shrink:
+ if (shrink) {
+ w = 2*left + ncols * ((XfwfRowColWidget)self)->xfwfRowCol.max_width;
+ h = 2*top + nrows * ((XfwfRowColWidget)self)->xfwfRowCol.max_height;
+ if (((XfwfRowColWidget)self)->xfwfRowCol.columns != 0)
+ XtVaSetValues(self, XtNwidth, w, XtNheight, h, NULL);
+ else
+ XtVaSetValues(self, XtNheight, h, NULL);
+ }
+}
+
+
+/*ARGSUSED*/static XtGeometryResult
+geometry_manager (child,request,reply)
+Widget child;
+XtWidgetGeometry * request;
+XtWidgetGeometry * reply;
+{
+ Widget self = XtParent(child);
+ Dimension newwd, newht, newbd;
+
+ if (request->request_mode & (CWX | CWY))
+ return XtGeometryNo;
+ if (request->request_mode & XtCWQueryOnly)
+ return XtGeometryYes;
+
+ newwd = request->request_mode & CWWidth ?
+ request->width : ((XfwfRowColWidget)child)->core.width;
+ newht = request->request_mode & CWHeight ?
+ request->height : ((XfwfRowColWidget)child)->core.height;
+ newbd = request->request_mode & CWBorderWidth ?
+ request->border_width : ((XfwfRowColWidget)child)->core.border_width;
+
+ if (newwd == ((XfwfRowColWidget)child)->core.width &&
+ newht == ((XfwfRowColWidget)child)->core.height &&
+ newbd == ((XfwfRowColWidget)child)->core.border_width)
+ return XtGeometryNo;
+
+ XtResizeWidget(child, newwd, newht, newbd);
+
+ ((XfwfRowColWidgetClass)self->core.widget_class)->xfwfRowCol_class.layout
+ (self, ((XfwfRowColWidget)self)->xfwfRowCol.shrinkToFit);
+
+ /* Since layout can resize the child widget it isn't appropriate to just
+ * return XtGeometryDone here, as the FWF code does. 17Mar94 DCT.
+ */
+ if (newwd == ((XfwfRowColWidget)child)->core.width &&
+ newht == ((XfwfRowColWidget)child)->core.height &&
+ newbd == ((XfwfRowColWidget)child)->core.border_width) {
+
+ return XtGeometryDone;
+
+ } else {
+ reply->request_mode = 0;
+ if (newwd != child->core.width) {
+ reply->request_mode |= CWWidth;
+ reply->width = child->core.width;
+ }
+ if (newht != child->core.height) {
+ reply->request_mode |= CWHeight;
+ reply->height = child->core.height;
+ }
+
+ return XtGeometryAlmost;
+ }
+}
+
+/*ARGSUSED*/static void resize(self)Widget self;
+{
+ if (((XfwfRowColWidget)self)->xfwfRowCol.rows == 0 && ((XfwfRowColWidget)self)->xfwfRowCol.columns == 0) ((XfwfRowColWidgetClass)self->core.widget_class)->xfwfRowCol_class.layout(self, False);
+}
+/*ARGSUSED*/static void initialize(request,self,args,num_args)Widget request;Widget self;ArgList args;Cardinal * num_args;
+{
+ ((XfwfRowColWidget)self)->xfwfRowCol.max_width = ((XfwfRowColWidget)self)->xfwfRowCol.max_height = 0;
+}
+/*ARGSUSED*/static Boolean set_values(old,request,self,args,num_args)Widget old;Widget request;Widget self;ArgList args;Cardinal * num_args;
+{
+ Boolean need_layout = False;
+ Boolean need_redisplay = False;
+
+ if (((XfwfRowColWidget)old)->xfwfRowCol.storeByRow != ((XfwfRowColWidget)self)->xfwfRowCol.storeByRow) need_layout = True;
+ if (((XfwfRowColWidget)old)->xfwfRowCol.rows != ((XfwfRowColWidget)self)->xfwfRowCol.rows) need_layout = True;
+ if (((XfwfRowColWidget)old)->xfwfRowCol.columns != ((XfwfRowColWidget)self)->xfwfRowCol.columns) need_layout = True;
+ if (((XfwfRowColWidget)old)->xfwfRowCol.alignment != ((XfwfRowColWidget)self)->xfwfRowCol.alignment) need_layout = True;
+ if (((XfwfRowColWidget)old)->xfwfRowCol.shrinkToFit != ((XfwfRowColWidget)self)->xfwfRowCol.shrinkToFit) need_layout = True;
+ if (need_layout) {
+ ((XfwfRowColWidgetClass)self->core.widget_class)->xfwfRowCol_class.layout(self, ((XfwfRowColWidget)self)->xfwfRowCol.shrinkToFit);
+ need_redisplay = True;
+ }
+ return need_redisplay;
+}