summaryrefslogtreecommitdiff
path: root/src/Panner.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Panner.c')
-rw-r--r--src/Panner.c1305
1 files changed, 714 insertions, 591 deletions
diff --git a/src/Panner.c b/src/Panner.c
index 47f1886..d388e06 100644
--- a/src/Panner.c
+++ b/src/Panner.c
@@ -26,184 +26,335 @@ in this Software without prior written authorization from The Open Group.
* Author: Jim Fulton, MIT X Consortium
*/
+/* $XFree86: xc/lib/Xaw/Panner.c,v 3.9 2001/12/14 19:54:41 dawes Exp $ */
+
+#include <ctype.h>
+#include <math.h>
#include <X11/IntrinsicP.h>
-#include <X11/StringDefs.h> /* for XtN and XtC defines */
-#include <X11/Xmu/CharSet.h> /* for XmuCompareISOLatin1() */
-#include <X11/Xaw/XawInit.h> /* for XawInitializeWidgetSet */
-#include <X11/Xaw/PannerP.h> /* us */
+#include <X11/StringDefs.h>
#include <X11/Xos.h>
-#include <X11/Xmu/Misc.h> /* for Min */
+#include <X11/Xmu/CharSet.h>
#include <X11/Xmu/Drawing.h>
-#include <ctype.h> /* for isascii() etc. */
-#include <math.h> /* for atof() */
-
-extern Bool XmuDistinguishablePixels(); /* not defined in any Xmu headers */
+#include <X11/Xmu/Misc.h>
+#include <X11/Xaw/PannerP.h>
+#include <X11/Xaw/XawInit.h>
+#include "Private.h"
#if defined(ISC) && __STDC__ && !defined(ISC30)
extern double atof(char *);
+#else
+#include <stdlib.h> /* for atof() */
#endif
-static char defaultTranslations[] =
- "<Btn1Down>: start() \n\
- <Btn1Motion>: move() \n\
- <Btn1Up>: notify() stop() \n\
- <Btn2Down>: abort() \n\
- :<Key>KP_Enter: set(rubberband,toggle) \n\
- <Key>space: page(+1p,+1p) \n\
- <Key>Delete: page(-1p,-1p) \n\
- :<Key>KP_Delete: page(-1p,-1p) \n\
- <Key>BackSpace: page(-1p,-1p) \n\
- <Key>Left: page(-.5p,+0) \n\
- :<Key>KP_Left: page(-.5p,+0) \n\
- <Key>Right: page(+.5p,+0) \n\
- :<Key>KP_Right: page(+.5p,+0) \n\
- <Key>Up: page(+0,-.5p) \n\
- :<Key>KP_Up: page(+0,-.5p) \n\
- <Key>Down: page(+0,+.5p) \n\
- :<Key>KP_Down: page(+0,+.5p) \n\
- <Key>Home: page(0,0) \n\
- :<Key>KP_Home: page(0,0)";
-
-
-static void ActionStart(), ActionStop(), ActionAbort(), ActionMove();
-static void ActionPage(), ActionNotify(), ActionSet();
-
-static XtActionsRec actions[] = {
- { "start", ActionStart }, /* start tmp graphics */
- { "stop", ActionStop }, /* stop tmp graphics */
- { "abort", ActionAbort }, /* punt */
- { "move", ActionMove }, /* move tmp graphics on Motion event */
- { "page", ActionPage }, /* page around usually from keyboard */
- { "notify", ActionNotify }, /* callback new position */
- { "set", ActionSet }, /* set various parameters */
-};
+/*
+ * Class Methods
+ */
+static void XawPannerDestroy(Widget);
+static void XawPannerInitialize(Widget, Widget, ArgList, Cardinal*);
+static XtGeometryResult XawPannerQueryGeometry(Widget, XtWidgetGeometry*,
+ XtWidgetGeometry*);
+static void XawPannerRealize(Widget, XtValueMask*, XSetWindowAttributes*);
+static void XawPannerRedisplay(Widget, XEvent*, Region);
+static void XawPannerResize(Widget);
+static Boolean XawPannerSetValues(Widget, Widget, Widget, ArgList, Cardinal*);
+static void XawPannerSetValuesAlmost(Widget, Widget, XtWidgetGeometry*,
+ XtWidgetGeometry*);
+/*
+ * Prototypes
+ */
+static void check_knob(PannerWidget, Bool);
+static void get_default_size(PannerWidget, Dimension*, Dimension*);
+static Bool get_event_xy(PannerWidget, XEvent*, int*, int*);
+static void move_shadow(PannerWidget);
+static int parse_page_string(char*, int, int, Bool*);
+static void rescale(PannerWidget);
+static void reset_shadow_gc(PannerWidget);
+static void reset_slider_gc(PannerWidget);
+static void reset_xor_gc(PannerWidget);
+static void scale_knob(PannerWidget, Bool, Bool);
/*
- * resources for the panner
+ * Actions
*/
-static XtResource resources[] = {
-#define poff(field) XtOffsetOf(PannerRec, panner.field)
- { XtNallowOff, XtCAllowOff, XtRBoolean, sizeof(Boolean),
- poff(allow_off), XtRImmediate, (XtPointer) FALSE },
- { XtNresize, XtCResize, XtRBoolean, sizeof(Boolean),
- poff(resize_to_pref), XtRImmediate, (XtPointer) TRUE },
- { XtNreportCallback, XtCReportCallback, XtRCallback, sizeof(XtPointer),
- poff(report_callbacks), XtRCallback, (XtPointer) NULL },
- { XtNdefaultScale, XtCDefaultScale, XtRDimension, sizeof(Dimension),
- poff(default_scale), XtRImmediate, (XtPointer) PANNER_DEFAULT_SCALE },
- { XtNrubberBand, XtCRubberBand, XtRBoolean, sizeof(Boolean),
- poff(rubber_band), XtRImmediate, (XtPointer) FALSE },
- { XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
- poff(foreground), XtRString, (XtPointer) XtDefaultBackground },
- { XtNinternalSpace, XtCInternalSpace, XtRDimension, sizeof(Dimension),
- poff(internal_border), XtRImmediate, (XtPointer) 4 },
- { XtNlineWidth, XtCLineWidth, XtRDimension, sizeof(Dimension),
- poff(line_width), XtRImmediate, (XtPointer) 0 },
- { XtNcanvasWidth, XtCCanvasWidth, XtRDimension, sizeof(Dimension),
- poff(canvas_width), XtRImmediate, (XtPointer) 0 },
- { XtNcanvasHeight, XtCCanvasHeight, XtRDimension, sizeof(Dimension),
- poff(canvas_height), XtRImmediate, (XtPointer) 0 },
- { XtNsliderX, XtCSliderX, XtRPosition, sizeof(Position),
- poff(slider_x), XtRImmediate, (XtPointer) 0 },
- { XtNsliderY, XtCSliderY, XtRPosition, sizeof(Position),
- poff(slider_y), XtRImmediate, (XtPointer) 0 },
- { XtNsliderWidth, XtCSliderWidth, XtRDimension, sizeof(Dimension),
- poff(slider_width), XtRImmediate, (XtPointer) 0 },
- { XtNsliderHeight, XtCSliderHeight, XtRDimension, sizeof(Dimension),
- poff(slider_height), XtRImmediate, (XtPointer) 0 },
- { XtNshadowColor, XtCShadowColor, XtRPixel, sizeof(Pixel),
- poff(shadow_color), XtRString, (XtPointer) XtDefaultForeground },
- { XtNshadowThickness, XtCShadowThickness, XtRDimension, sizeof(Dimension),
- poff(shadow_thickness), XtRImmediate, (XtPointer) 2 },
- { XtNbackgroundStipple, XtCBackgroundStipple, XtRString, sizeof(String),
- poff(stipple_name), XtRImmediate, (XtPointer) NULL },
-#undef poff
-};
+static void ActionAbort(Widget, XEvent*, String*, Cardinal*);
+static void ActionMove(Widget, XEvent*, String*, Cardinal*);
+static void ActionNotify(Widget, XEvent*, String*, Cardinal*);
+static void ActionPage(Widget, XEvent*, String*, Cardinal*);
+static void ActionSet(Widget, XEvent*, String*, Cardinal*);
+static void ActionStart(Widget, XEvent*, String*, Cardinal*);
+static void ActionStop(Widget, XEvent*, String*, Cardinal*);
+/*
+ * From Xmu/Distinct.c
+ */
+Bool XmuDistinguishablePixels(Display*, Colormap, unsigned long*, int);
/*
- * widget class methods used below
+ * Initialization
*/
-static void Initialize(); /* create gc's */
-static void Realize(); /* create window */
-static void Destroy(); /* clean up widget */
-static void Resize(); /* need to rescale ourselves */
-static void Redisplay(); /* draw ourselves */
-static Boolean SetValues(); /* set all of the resources */
-static void SetValuesAlmost(); /* deal with failed setval geom req */
-static XtGeometryResult QueryGeometry(); /* say how big we would like to be */
+static char defaultTranslations[] =
+"<Btn1Down>:" "start()\n"
+"<Btn1Motion>:" "move()\n"
+"<Btn1Up>:" "notify() stop()\n"
+"<Btn2Down>:" "abort()\n"
+":<Key>KP_Enter:" "set(rubberband,toggle)\n"
+"<Key>space:" "page(+1p,+1p)\n"
+"<Key>Delete:" "page(-1p,-1p)\n"
+":<Key>KP_Delete:" "page(-1p,-1p)\n"
+"<Key>BackSpace:" "page(-1p,-1p)\n"
+"<Key>Left:" "page(-.5p,+0)\n"
+":<Key>KP_Left:" "page(-.5p,+0)\n"
+"<Key>Right:" "page(+.5p,+0)\n"
+":<Key>KP_Right:" "page(+.5p,+0)\n"
+"<Key>Up:" "page(+0,-.5p)\n"
+":<Key>KP_Up:" "page(+0,-.5p)\n"
+"<Key>Down:" "page(+0,+.5p)\n"
+":<Key>KP_Down:" "page(+0,+.5p)\n"
+"<Key>Home:" "page(0,0)\n"
+":<Key>KP_Home:" "page(0,0)\n"
+;
+
+static XtActionsRec actions[] = {
+ {"start", ActionStart}, /* start tmp graphics */
+ {"stop", ActionStop}, /* stop tmp graphics */
+ {"abort", ActionAbort}, /* punt */
+ {"move", ActionMove}, /* move tmp graphics on Motion event */
+ {"page", ActionPage}, /* page around usually from keyboard */
+ {"notify", ActionNotify}, /* callback new position */
+ {"set", ActionSet}, /* set various parameters */
+};
+
+#define offset(field) XtOffsetOf(PannerRec, panner.field)
+static XtResource resources[] = {
+ {
+ XtNallowOff,
+ XtCAllowOff,
+ XtRBoolean,
+ sizeof(Boolean),
+ offset(allow_off),
+ XtRImmediate,
+ (XtPointer)False
+ },
+ {
+ XtNresize,
+ XtCResize,
+ XtRBoolean,
+ sizeof(Boolean),
+ offset(resize_to_pref),
+ XtRImmediate,
+ (XtPointer)True
+ },
+ {
+ XtNreportCallback,
+ XtCReportCallback,
+ XtRCallback,
+ sizeof(XtPointer),
+ offset(report_callbacks),
+ XtRCallback,
+ NULL
+ },
+ {
+ XtNdefaultScale,
+ XtCDefaultScale,
+ XtRDimension,
+ sizeof(Dimension),
+ offset(default_scale),
+ XtRImmediate,
+ (XtPointer)PANNER_DEFAULT_SCALE
+ },
+ {
+ XtNrubberBand,
+ XtCRubberBand,
+ XtRBoolean,
+ sizeof(Boolean),
+ offset(rubber_band),
+ XtRImmediate,
+ (XtPointer)False
+ },
+ {
+ XtNforeground,
+ XtCForeground,
+ XtRPixel,
+ sizeof(Pixel),
+ offset(foreground),
+ XtRString,
+ (XtPointer)XtDefaultBackground
+ },
+ {
+ XtNinternalSpace,
+ XtCInternalSpace,
+ XtRDimension,
+ sizeof(Dimension),
+ offset(internal_border),
+ XtRImmediate,
+ (XtPointer)4
+ },
+ {
+ XtNlineWidth,
+ XtCLineWidth,
+ XtRDimension,
+ sizeof(Dimension),
+ offset(line_width),
+ XtRImmediate,
+ (XtPointer)0
+ },
+ {
+ XtNcanvasWidth,
+ XtCCanvasWidth,
+ XtRDimension,
+ sizeof(Dimension),
+ offset(canvas_width),
+ XtRImmediate,
+ (XtPointer)0
+ },
+ {
+ XtNcanvasHeight,
+ XtCCanvasHeight,
+ XtRDimension,
+ sizeof(Dimension),
+ offset(canvas_height),
+ XtRImmediate,
+ (XtPointer)0
+ },
+ {
+ XtNsliderX,
+ XtCSliderX,
+ XtRPosition,
+ sizeof(Position),
+ offset(slider_x),
+ XtRImmediate,
+ (XtPointer)0
+ },
+ {
+ XtNsliderY,
+ XtCSliderY,
+ XtRPosition,
+ sizeof(Position),
+ offset(slider_y),
+ XtRImmediate,
+ (XtPointer)0
+ },
+ {
+ XtNsliderWidth,
+ XtCSliderWidth,
+ XtRDimension,
+ sizeof(Dimension),
+ offset(slider_width),
+ XtRImmediate,
+ (XtPointer)0
+ },
+ {
+ XtNsliderHeight,
+ XtCSliderHeight,
+ XtRDimension,
+ sizeof(Dimension),
+ offset(slider_height),
+ XtRImmediate,
+ (XtPointer)0
+ },
+ {
+ XtNshadowColor,
+ XtCShadowColor,
+ XtRPixel,
+ sizeof(Pixel),
+ offset(shadow_color),
+ XtRString,
+ (XtPointer)XtDefaultForeground
+ },
+ {
+ XtNshadowThickness,
+ XtCShadowThickness,
+ XtRDimension,
+ sizeof(Dimension),
+ offset(shadow_thickness),
+ XtRImmediate,
+ (XtPointer)2
+ },
+ {
+ XtNbackgroundStipple,
+ XtCBackgroundStipple,
+ XtRString,
+ sizeof(String),
+ offset(stipple_name),
+ XtRImmediate,
+ NULL
+ },
+};
+#undef offset
+#define Superclass (&simpleClassRec)
PannerClassRec pannerClassRec = {
- { /* core fields */
- /* superclass */ (WidgetClass) &simpleClassRec,
- /* class_name */ "Panner",
- /* widget_size */ sizeof(PannerRec),
- /* class_initialize */ XawInitializeWidgetSet,
- /* class_part_initialize */ NULL,
- /* class_inited */ FALSE,
- /* initialize */ Initialize,
- /* initialize_hook */ NULL,
- /* realize */ Realize,
- /* actions */ actions,
- /* num_actions */ XtNumber(actions),
- /* resources */ resources,
- /* num_resources */ XtNumber(resources),
- /* xrm_class */ NULLQUARK,
- /* compress_motion */ TRUE,
- /* compress_exposure */ TRUE,
- /* compress_enterleave */ TRUE,
- /* visible_interest */ FALSE,
- /* destroy */ Destroy,
- /* resize */ Resize,
- /* expose */ Redisplay,
- /* set_values */ SetValues,
- /* set_values_hook */ NULL,
- /* set_values_almost */ SetValuesAlmost,
- /* get_values_hook */ NULL,
- /* accept_focus */ NULL,
- /* version */ XtVersion,
- /* callback_private */ NULL,
- /* tm_table */ defaultTranslations,
- /* query_geometry */ QueryGeometry,
- /* display_accelerator */ XtInheritDisplayAccelerator,
- /* extension */ NULL
+ /* core */
+ {
+ (WidgetClass)Superclass, /* superclass */
+ "Panner", /* class_name */
+ sizeof(PannerRec), /* widget_size */
+ XawInitializeWidgetSet, /* class_initialize */
+ NULL, /* class_part_initialize */
+ False, /* class_inited */
+ XawPannerInitialize, /* initialize */
+ NULL, /* initialize_hook */
+ XawPannerRealize, /* 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 */
+ XawPannerDestroy, /* destroy */
+ XawPannerResize, /* resize */
+ XawPannerRedisplay, /* expose */
+ XawPannerSetValues, /* set_values */
+ NULL, /* set_values_hook */
+ XawPannerSetValuesAlmost, /* set_values_almost */
+ NULL, /* get_values_hook */
+ NULL, /* accept_focus */
+ XtVersion, /* version */
+ NULL, /* callback_private */
+ defaultTranslations, /* tm_table */
+ XawPannerQueryGeometry, /* query_geometry */
+ XtInheritDisplayAccelerator, /* display_accelerator */
+ NULL, /* extension */
},
- { /* simple fields */
- /* change_sensitive */ XtInheritChangeSensitive
+ /* simple */
+ {
+ XtInheritChangeSensitive, /* change_sensitive */
},
- { /* panner fields */
- /* ignore */ 0
+ /* panner */
+ {
+ NULL, /* extension */
}
};
WidgetClass pannerWidgetClass = (WidgetClass) &pannerClassRec;
-/*****************************************************************************
- * *
- * panner utility routines *
- * *
- *****************************************************************************/
-
-static void reset_shadow_gc (pw) /* used when resources change */
- PannerWidget pw;
+/*
+ * Implementation
+ */
+static void
+reset_shadow_gc(PannerWidget pw)
{
XtGCMask valuemask = GCForeground;
XGCValues values;
unsigned long pixels[3];
- if (pw->panner.shadow_gc) XtReleaseGC ((Widget) pw, pw->panner.shadow_gc);
+ if (pw->panner.shadow_gc)
+ XtReleaseGC((Widget)pw, pw->panner.shadow_gc);
pixels[0] = pw->panner.foreground;
pixels[1] = pw->core.background_pixel;
pixels[2] = pw->panner.shadow_color;
+
if (!pw->panner.stipple_name &&
- !XmuDistinguishablePixels (XtDisplay (pw), pw->core.colormap,
- pixels, 3) &&
- XmuDistinguishablePixels (XtDisplay (pw), pw->core.colormap,
- pixels, 2))
- {
+ !XmuDistinguishablePixels(XtDisplay(pw), pw->core.colormap,
+ pixels, 3) &&
+ XmuDistinguishablePixels(XtDisplay(pw), pw->core.colormap,
+ pixels, 2)) {
valuemask = GCTile | GCFillStyle;
values.fill_style = FillTiled;
values.tile = XmuCreateStippledPixmap(XtScreen((Widget)pw),
@@ -211,11 +362,10 @@ static void reset_shadow_gc (pw) /* used when resources change */
pw->core.background_pixel,
pw->core.depth);
}
- else
- {
+ else {
if (!pw->panner.line_width &&
- !XmuDistinguishablePixels (XtDisplay (pw), pw->core.colormap,
- pixels, 2))
+ !XmuDistinguishablePixels(XtDisplay(pw), pw->core.colormap,
+ pixels, 2))
pw->panner.line_width = 1;
valuemask = GCForeground;
values.foreground = pw->panner.shadow_color;
@@ -225,33 +375,35 @@ static void reset_shadow_gc (pw) /* used when resources change */
valuemask |= GCLineWidth;
}
- pw->panner.shadow_gc = XtGetGC ((Widget) pw, valuemask, &values);
+ pw->panner.shadow_gc = XtGetGC((Widget)pw, valuemask, &values);
}
-static void reset_slider_gc (pw) /* used when resources change */
- PannerWidget pw;
+static void
+reset_slider_gc(PannerWidget pw)
{
XtGCMask valuemask = GCForeground;
XGCValues values;
- if (pw->panner.slider_gc) XtReleaseGC ((Widget) pw, pw->panner.slider_gc);
+ if (pw->panner.slider_gc)
+ XtReleaseGC((Widget)pw, pw->panner.slider_gc);
values.foreground = pw->panner.foreground;
- pw->panner.slider_gc = XtGetGC ((Widget) pw, valuemask, &values);
+ pw->panner.slider_gc = XtGetGC((Widget)pw, valuemask, &values);
}
-static void reset_xor_gc (pw) /* used when resources change */
- PannerWidget pw;
+static void
+reset_xor_gc(PannerWidget pw)
{
- if (pw->panner.xor_gc) XtReleaseGC ((Widget) pw, pw->panner.xor_gc);
+ if (pw->panner.xor_gc)
+ XtReleaseGC((Widget)pw, pw->panner.xor_gc);
if (pw->panner.rubber_band) {
XtGCMask valuemask = (GCForeground | GCFunction);
XGCValues values;
Pixel tmp;
- tmp = ((pw->panner.foreground == pw->core.background_pixel) ?
+ tmp = (pw->panner.foreground == pw->core.background_pixel ?
pw->panner.shadow_color : pw->panner.foreground);
values.foreground = tmp ^ pw->core.background_pixel;
values.function = GXxor;
@@ -259,698 +411,669 @@ static void reset_xor_gc (pw) /* used when resources change */
valuemask |= GCLineWidth;
values.line_width = pw->panner.line_width;
}
- pw->panner.xor_gc = XtGetGC ((Widget) pw, valuemask, &values);
- } else {
- pw->panner.xor_gc = NULL;
+ pw->panner.xor_gc = XtGetGC((Widget)pw, valuemask, &values);
}
+ else
+ pw->panner.xor_gc = NULL;
}
-
-static void check_knob (pw, knob)
- PannerWidget pw;
- Boolean knob;
+static void
+check_knob(PannerWidget pw, Bool knob)
{
- Position pad = pw->panner.internal_border * 2;
- Position maxx = (((Position) pw->core.width) - pad -
- ((Position) pw->panner.knob_width));
- Position maxy = (((Position) pw->core.height) - pad -
- ((Position) pw->panner.knob_height));
- Position *x = (knob ? &pw->panner.knob_x : &pw->panner.tmp.x);
- Position *y = (knob ? &pw->panner.knob_y : &pw->panner.tmp.y);
+ Position pad = pw->panner.internal_border << 1;
+ Position maxx = (Position)XtWidth(pw) - pad -
+ (Position)pw->panner.knob_width;
+ Position maxy = (Position)XtHeight(pw) - pad -
+ (Position)pw->panner.knob_height;
+ Position *x = knob ? &pw->panner.knob_x : &pw->panner.tmp.x;
+ Position *y = knob ? &pw->panner.knob_y : &pw->panner.tmp.y;
/*
* note that positions are already normalized (i.e. internal_border
* has been subtracted out)
*/
- if (*x < 0) *x = 0;
- if (*x > maxx) *x = maxx;
+ if (*x < 0)
+ *x = 0;
+ if (*x > maxx)
+ *x = maxx;
- if (*y < 0) *y = 0;
- if (*y > maxy) *y = maxy;
+ if (*y < 0)
+ *y = 0;
+ if (*y > maxy)
+ *y = maxy;
if (knob) {
- pw->panner.slider_x = (Position) (((double) pw->panner.knob_x) /
- pw->panner.haspect + 0.5);
- pw->panner.slider_y = (Position) (((double) pw->panner.knob_y) /
- pw->panner.vaspect + 0.5);
+ pw->panner.slider_x = (Position)((double)pw->panner.knob_x
+ / pw->panner.haspect + 0.5);
+ pw->panner.slider_y = (Position)((double)pw->panner.knob_y
+ / pw->panner.vaspect + 0.5);
pw->panner.last_x = pw->panner.last_y = PANNER_OUTOFRANGE;
}
}
-
-static void move_shadow (pw)
- PannerWidget pw;
+static void
+move_shadow(PannerWidget pw)
{
if (pw->panner.shadow_thickness > 0) {
- int lw = pw->panner.shadow_thickness + pw->panner.line_width * 2;
+ int lw = pw->panner.shadow_thickness + (pw->panner.line_width << 1);
int pad = pw->panner.internal_border;
- if ((int)pw->panner.knob_height > lw && (int)pw->panner.knob_width > lw) {
+ if (pw->panner.knob_height > lw && pw->panner.knob_width > lw) {
XRectangle *r = pw->panner.shadow_rects;
- r->x = (short) (pw->panner.knob_x + pad + pw->panner.knob_width);
- r->y = (short) (pw->panner.knob_y + pad + lw);
+
+ r->x = pw->panner.knob_x + pad + pw->panner.knob_width;
+ r->y = pw->panner.knob_y + pad + lw;
r->width = pw->panner.shadow_thickness;
- r->height = (unsigned short) (pw->panner.knob_height - lw);
+ r->height = pw->panner.knob_height - lw;
r++;
- r->x = (short) (pw->panner.knob_x + pad + lw);
- r->y = (short) (pw->panner.knob_y + pad + pw->panner.knob_height);
- r->width = (unsigned short) (pw->panner.knob_width - lw +
- pw->panner.shadow_thickness);
+ r->x = pw->panner.knob_x + pad + lw;
+ r->y = pw->panner.knob_y + pad + pw->panner.knob_height;
+ r->width = pw->panner.knob_width - lw + pw->panner.shadow_thickness;
r->height = pw->panner.shadow_thickness;
- pw->panner.shadow_valid = TRUE;
+ pw->panner.shadow_valid = True;
return;
}
}
- pw->panner.shadow_valid = FALSE;
+ pw->panner.shadow_valid = False;
}
-static void scale_knob (pw, location, size) /* set knob size and/or loc */
- PannerWidget pw;
- Boolean location, size;
+static void
+scale_knob(PannerWidget pw, Bool location, Bool size)
{
if (location) {
- pw->panner.knob_x = (Position) PANNER_HSCALE (pw, pw->panner.slider_x);
- pw->panner.knob_y = (Position) PANNER_VSCALE (pw, pw->panner.slider_y);
+ pw->panner.knob_x = (Position)PANNER_HSCALE(pw, pw->panner.slider_x);
+ pw->panner.knob_y = (Position)PANNER_VSCALE(pw, pw->panner.slider_y);
}
if (size) {
Dimension width, height;
- if (pw->panner.slider_width < 1) {
+ if (pw->panner.slider_width < 1)
pw->panner.slider_width = pw->panner.canvas_width;
- }
- if (pw->panner.slider_height < 1) {
+ if (pw->panner.slider_height < 1)
pw->panner.slider_height = pw->panner.canvas_height;
- }
- width = Min (pw->panner.slider_width, pw->panner.canvas_width);
- height = Min (pw->panner.slider_height, pw->panner.canvas_height);
+ width = Min(pw->panner.slider_width, pw->panner.canvas_width);
+ height = Min(pw->panner.slider_height, pw->panner.canvas_height);
- pw->panner.knob_width = (Dimension) PANNER_HSCALE (pw, width);
- pw->panner.knob_height = (Dimension) PANNER_VSCALE (pw, height);
+ pw->panner.knob_width = (Dimension)PANNER_HSCALE(pw, width);
+ pw->panner.knob_height = (Dimension)PANNER_VSCALE(pw, height);
}
- if (!pw->panner.allow_off) check_knob (pw, TRUE);
- move_shadow (pw);
+ if (!pw->panner.allow_off)
+ check_knob(pw, True);
+ move_shadow(pw);
}
-static void rescale (pw)
- PannerWidget pw;
+static void
+rescale(PannerWidget pw)
{
- int hpad = pw->panner.internal_border * 2;
+ int hpad = pw->panner.internal_border << 1;
int vpad = hpad;
if (pw->panner.canvas_width < 1)
- pw->panner.canvas_width = pw->core.width;
+ pw->panner.canvas_width = XtWidth(pw);
if (pw->panner.canvas_height < 1)
- pw->panner.canvas_height = pw->core.height;
-
- if ((int)pw->core.width <= hpad) hpad = 0;
- if ((int)pw->core.height <= vpad) vpad = 0;
-
- pw->panner.haspect = ((double) pw->core.width - hpad) /
- (double) pw->panner.canvas_width;
- pw->panner.vaspect = ((double) pw->core.height - vpad) /
- (double) pw->panner.canvas_height;
- scale_knob (pw, TRUE, TRUE);
+ pw->panner.canvas_height = XtHeight(pw);
+
+ if (XtWidth(pw) <= hpad)
+ hpad = 0;
+ if (XtHeight(pw) <= vpad)
+ vpad = 0;
+
+ pw->panner.haspect = ((double)XtWidth(pw) - hpad + .5)
+ / (double)pw->panner.canvas_width;
+ pw->panner.vaspect = ((double)XtHeight(pw) - vpad + .5)
+ / (double)pw->panner.canvas_height;
+ scale_knob(pw, True, True);
}
-
-static void get_default_size (pw, wp, hp)
- PannerWidget pw;
- Dimension *wp, *hp;
+static void
+get_default_size(PannerWidget pw, Dimension *wp, Dimension *hp)
{
- Dimension pad = pw->panner.internal_border * 2;
- *wp = PANNER_DSCALE (pw, pw->panner.canvas_width) + pad;
- *hp = PANNER_DSCALE (pw, pw->panner.canvas_height) + pad;
+ Dimension pad = pw->panner.internal_border << 1;
+
+ *wp = PANNER_DSCALE(pw, pw->panner.canvas_width) + pad;
+ *hp = PANNER_DSCALE(pw, pw->panner.canvas_height) + pad;
}
-static Boolean get_event_xy (pw, event, x, y)
- PannerWidget pw;
- XEvent *event;
- int *x, *y;
+static Bool
+get_event_xy(PannerWidget pw, XEvent *event, int *x, int *y)
{
int pad = pw->panner.internal_border;
switch (event->type) {
- case ButtonPress:
- case ButtonRelease:
- *x = event->xbutton.x - pad;
- *y = event->xbutton.y - pad;
- return TRUE;
-
- case KeyPress:
- case KeyRelease:
- *x = event->xkey.x - pad;
- *y = event->xkey.y - pad;
- return TRUE;
-
- case EnterNotify:
- case LeaveNotify:
- *x = event->xcrossing.x - pad;
- *y = event->xcrossing.y - pad;
- return TRUE;
-
- case MotionNotify:
- *x = event->xmotion.x - pad;
- *y = event->xmotion.y - pad;
- return TRUE;
- }
-
- return FALSE;
+ case ButtonPress:
+ case ButtonRelease:
+ *x = event->xbutton.x - pad;
+ *y = event->xbutton.y - pad;
+ return (True);
+ case KeyPress:
+ case KeyRelease:
+ *x = event->xkey.x - pad;
+ *y = event->xkey.y - pad;
+ return (True);
+ case EnterNotify:
+ case LeaveNotify:
+ *x = event->xcrossing.x - pad;
+ *y = event->xcrossing.y - pad;
+ return (True);
+ case MotionNotify:
+ *x = event->xmotion.x - pad;
+ *y = event->xmotion.y - pad;
+ return (True);
+ }
+
+ return (False);
}
-static int parse_page_string (s, pagesize, canvassize, relative)
- char *s;
- int pagesize, canvassize;
- Boolean *relative;
+static int
+parse_page_string(char *s, int pagesize, int canvassize, Bool *relative)
{
char *cp;
double val = 1.0;
- Boolean rel = FALSE;
+ Bool rel = False;
/*
* syntax: spaces [+-] number spaces [pc\0] spaces
*/
+ for (; isascii(*s) && isspace(*s); s++) /* skip white space */
+ ;
- for (; isascii(*s) && isspace(*s); s++) ; /* skip white space */
-
- if (*s == '+' || *s == '-') { /* deal with signs */
- rel = TRUE;
- if (*s == '-') val = -1.0;
+ if (*s == '+' || *s == '-') { /* deal with signs */
+ rel = True;
+ if (*s == '-')
+ val = -1.0;
s++;
}
if (!*s) { /* if null then return nothing */
- *relative = TRUE;
- return 0;
+ *relative = True;
+ return (0);
}
/* skip over numbers */
- for (cp = s; isascii(*s) && (isdigit(*s) || *s == '.'); s++) ;
- val *= atof (cp);
+ for (cp = s; isascii(*s) && (isdigit(*s) || *s == '.'); s++)
+ ;
+ val *= atof(cp);
/* skip blanks */
- for (; isascii(*s) && isspace(*s); s++) ;
+ for (; isascii(*s) && isspace(*s); s++)
+ ;
if (*s) { /* if units */
switch (s[0]) {
- case 'p': case 'P':
- val *= (double) pagesize;
- break;
-
- case 'c': case 'C':
- val *= (double) canvassize;
- break;
+ case 'p':
+ case 'P':
+ val *= (double)pagesize;
+ break;
+ case 'c':
+ case 'C':
+ val *= (double)canvassize;
+ break;
}
}
*relative = rel;
- return ((int) val);
-}
+ return ((int)val);
+}
#define DRAW_TMP(pw) \
{ \
- XDrawRectangle (XtDisplay(pw), XtWindow(pw), \
- pw->panner.xor_gc, \
- (int) (pw->panner.tmp.x + pw->panner.internal_border), \
- (int) (pw->panner.tmp.y + pw->panner.internal_border), \
- (unsigned int) (pw->panner.knob_width - 1), \
- (unsigned int) (pw->panner.knob_height - 1)); \
- pw->panner.tmp.showing = !pw->panner.tmp.showing; \
+ XDrawRectangle(XtDisplay(pw), XtWindow(pw), \
+ pw->panner.xor_gc, \
+ pw->panner.tmp.x + pw->panner.internal_border, \
+ pw->panner.tmp.y + pw->panner.internal_border, \
+ pw->panner.knob_width - 1, \
+ pw->panner.knob_height - 1); \
+ pw->panner.tmp.showing = !pw->panner.tmp.showing; \
}
#define UNDRAW_TMP(pw) \
{ \
- if (pw->panner.tmp.showing) DRAW_TMP(pw); \
+ if (pw->panner.tmp.showing) \
+ DRAW_TMP(pw); \
}
#define BACKGROUND_STIPPLE(pw) \
- XmuLocatePixmapFile (pw->core.screen, pw->panner.stipple_name, \
- pw->panner.shadow_color, pw->core.background_pixel, \
- pw->core.depth, NULL, 0, NULL, NULL, NULL, NULL)
+XmuLocatePixmapFile(pw->core.screen, pw->panner.stipple_name, \
+ pw->panner.shadow_color, pw->core.background_pixel, \
+ pw->core.depth, NULL, 0, NULL, NULL, NULL, NULL)
#define PIXMAP_OKAY(pm) ((pm) != None && (pm) != XtUnspecifiedPixmap)
-
-/*****************************************************************************
- * *
- * panner class methods *
- * *
- *****************************************************************************/
-
-
/*ARGSUSED*/
-static void Initialize (greq, gnew, args, num_args)
- Widget greq, gnew;
- ArgList args;
- Cardinal *num_args;
+static void
+XawPannerInitialize(Widget greq, Widget gnew, ArgList args, Cardinal *num_args)
{
- PannerWidget req = (PannerWidget) greq, new = (PannerWidget) gnew;
+ PannerWidget req = (PannerWidget)greq, cnew = (PannerWidget)gnew;
Dimension defwidth, defheight;
- if (req->panner.canvas_width < 1) new->panner.canvas_width = 1;
- if (req->panner.canvas_height < 1) new->panner.canvas_height = 1;
+ if (req->panner.canvas_width < 1)
+ cnew->panner.canvas_width = 1;
+ if (req->panner.canvas_height < 1)
+ cnew->panner.canvas_height = 1;
if (req->panner.default_scale < 1)
- new->panner.default_scale = PANNER_DEFAULT_SCALE;
-
- get_default_size (req, &defwidth, &defheight);
- if (req->core.width < 1) new->core.width = defwidth;
- if (req->core.height < 1) new->core.height = defheight;
-
- new->panner.shadow_gc = NULL;
- reset_shadow_gc (new); /* shadowColor */
- new->panner.slider_gc = NULL;
- reset_slider_gc (new); /* foreground */
- new->panner.xor_gc = NULL;
- reset_xor_gc (new); /* foreground ^ background */
-
- rescale (new); /* does a position check */
- new->panner.shadow_valid = FALSE;
- new->panner.tmp.doing = FALSE;
- new->panner.tmp.showing = FALSE;
-}
-
+ cnew->panner.default_scale = PANNER_DEFAULT_SCALE;
+
+ get_default_size(req, &defwidth, &defheight);
+ if (XtWidth(req) < 1)
+ XtWidth(cnew) = defwidth;
+ if (XtHeight(req) < 1)
+ XtHeight(cnew) = defheight;
+
+ cnew->panner.shadow_gc = NULL;
+ reset_shadow_gc(cnew); /* shadowColor */
+ cnew->panner.slider_gc = NULL;
+ reset_slider_gc(cnew); /* foreground */
+ cnew->panner.xor_gc = NULL;
+ reset_xor_gc(cnew); /* foreground ^ background */
+
+ rescale(cnew); /* does a position check */
+ cnew->panner.shadow_valid = False;
+ cnew->panner.tmp.doing = False;
+ cnew->panner.tmp.showing = False;
+ }
-static void Realize (gw, valuemaskp, attr)
- Widget gw;
- XtValueMask *valuemaskp;
- XSetWindowAttributes *attr;
+static void
+XawPannerRealize(Widget gw, XtValueMask *valuemaskp,
+ XSetWindowAttributes *attr)
{
- PannerWidget pw = (PannerWidget) gw;
+ PannerWidget pw = (PannerWidget)gw;
Pixmap pm = XtUnspecifiedPixmap;
- Boolean gotpm = FALSE;
+ Bool gotpm = False;
if (pw->core.background_pixmap == XtUnspecifiedPixmap) {
- if (pw->panner.stipple_name) pm = BACKGROUND_STIPPLE (pw);
+ if (pw->panner.stipple_name)
+ pm = BACKGROUND_STIPPLE(pw);
if (PIXMAP_OKAY(pm)) {
attr->background_pixmap = pm;
*valuemaskp |= CWBackPixmap;
*valuemaskp &= ~CWBackPixel;
- gotpm = TRUE;
+ gotpm = True;
}
}
(*pannerWidgetClass->core_class.superclass->core_class.realize)
- (gw, valuemaskp, attr);
+ (gw, valuemaskp, attr);
- if (gotpm) XFreePixmap (XtDisplay(gw), pm);
+ if (gotpm)
+ XFreePixmap(XtDisplay(gw), pm);
}
-
-static void Destroy (gw)
- Widget gw;
+static void
+XawPannerDestroy(Widget gw)
{
- PannerWidget pw = (PannerWidget) gw;
+ PannerWidget pw = (PannerWidget)gw;
- XtReleaseGC (gw, pw->panner.shadow_gc);
- XtReleaseGC (gw, pw->panner.slider_gc);
- XtReleaseGC (gw, pw->panner.xor_gc);
+ XtReleaseGC(gw, pw->panner.shadow_gc);
+ XtReleaseGC(gw, pw->panner.slider_gc);
+ XtReleaseGC(gw, pw->panner.xor_gc);
}
-
-static void Resize (gw)
- Widget gw;
+static void
+XawPannerResize(Widget gw)
{
- rescale ((PannerWidget) gw);
+ rescale((PannerWidget)gw);
}
-
-/* ARGSUSED */
-static void Redisplay (gw, event, region)
- Widget gw;
- XEvent *event;
- Region region;
+static void
+XawPannerRedisplay(Widget gw, XEvent *event, Region region)
{
- PannerWidget pw = (PannerWidget) gw;
+ PannerWidget pw = (PannerWidget)gw;
Display *dpy = XtDisplay(gw);
Window w = XtWindow(gw);
int pad = pw->panner.internal_border;
Dimension lw = pw->panner.line_width;
- Dimension extra = pw->panner.shadow_thickness + lw * 2;
+ Dimension extra = pw->panner.shadow_thickness + (lw << 1);
int kx = pw->panner.knob_x + pad, ky = pw->panner.knob_y + pad;
- pw->panner.tmp.showing = FALSE;
- XClearArea (XtDisplay(pw), XtWindow(pw),
- (int) pw->panner.last_x - ((int) lw) + pad,
- (int) pw->panner.last_y - ((int) lw) + pad,
- (unsigned int) (pw->panner.knob_width + extra),
- (unsigned int) (pw->panner.knob_height + extra),
- False);
+ if (Superclass->core_class.expose)
+ (Superclass->core_class.expose)(gw, event, region);
+
+ pw->panner.tmp.showing = False;
+ XClearArea(XtDisplay(pw), XtWindow(pw),
+ (int)pw->panner.last_x - ((int)lw) + pad,
+ (int)pw->panner.last_y - ((int)lw) + pad,
+ pw->panner.knob_width + extra,
+ pw->panner.knob_height + extra,
+ False);
pw->panner.last_x = pw->panner.knob_x;
pw->panner.last_y = pw->panner.knob_y;
- XFillRectangle (dpy, w, pw->panner.slider_gc, kx, ky,
- pw->panner.knob_width - 1, pw->panner.knob_height - 1);
+ XFillRectangle(dpy, w, pw->panner.slider_gc, kx, ky,
+ pw->panner.knob_width - 1, pw->panner.knob_height - 1);
if (lw)
- {
- XDrawRectangle (dpy, w, pw->panner.shadow_gc, kx, ky,
- (unsigned int) (pw->panner.knob_width - 1),
- (unsigned int) (pw->panner.knob_height - 1));
- }
+ XDrawRectangle(dpy, w, pw->panner.shadow_gc, kx, ky,
+ pw->panner.knob_width - 1, pw->panner.knob_height - 1);
- if (pw->panner.shadow_valid) {
- XFillRectangles (dpy, w, pw->panner.shadow_gc,
- pw->panner.shadow_rects, 2);
- }
- if (pw->panner.tmp.doing && pw->panner.rubber_band) DRAW_TMP (pw);
-}
+ if (pw->panner.shadow_valid)
+ XFillRectangles(dpy, w, pw->panner.shadow_gc, pw->panner.shadow_rects, 2);
+ if (pw->panner.tmp.doing && pw->panner.rubber_band)
+ DRAW_TMP(pw);
+}
-/* ARGSUSED */
-static Boolean SetValues (gcur, greq, gnew, args, num_args)
- Widget gcur, greq, gnew;
- ArgList args;
- Cardinal *num_args;
+/*ARGSUSED*/
+static Boolean
+XawPannerSetValues(Widget gcur, Widget greq, Widget gnew,
+ ArgList args, Cardinal *num_args)
{
- PannerWidget cur = (PannerWidget) gcur;
- PannerWidget new = (PannerWidget) gnew;
- Boolean redisplay = FALSE;
+ PannerWidget cur = (PannerWidget)gcur;
+ PannerWidget cnew = (PannerWidget)gnew;
+ Bool redisplay = False;
- if (cur->panner.foreground != new->panner.foreground) {
- reset_slider_gc (new);
+ if (cur->panner.foreground != cnew->panner.foreground) {
+ reset_slider_gc(cnew);
if (cur->panner.foreground != cur->core.background_pixel)
- reset_xor_gc (new);
- redisplay = TRUE;
- } else if (cur->panner.line_width != new->panner.line_width ||
- cur->core.background_pixel != new->core.background_pixel) {
- reset_xor_gc (new);
- redisplay = TRUE;
- }
- if (cur->panner.shadow_color != new->panner.shadow_color) {
- reset_shadow_gc (new);
+ reset_xor_gc(cnew);
+ redisplay = True;
+ }
+ else if (cur->panner.line_width != cnew->panner.line_width ||
+ cur->core.background_pixel != cnew->core.background_pixel) {
+ reset_xor_gc(cnew);
+ redisplay = True;
+ }
+ if (cur->panner.shadow_color != cnew->panner.shadow_color) {
+ reset_shadow_gc(cnew);
if (cur->panner.foreground == cur->core.background_pixel)
- reset_xor_gc (new);
- redisplay = TRUE;
+ reset_xor_gc(cnew);
+ redisplay = True;
}
- if (cur->panner.shadow_thickness != new->panner.shadow_thickness) {
- move_shadow (new);
- redisplay = TRUE;
+ if (cur->panner.shadow_thickness != cnew->panner.shadow_thickness) {
+ move_shadow(cnew);
+ redisplay = True;
}
- if (cur->panner.rubber_band != new->panner.rubber_band) {
- reset_xor_gc (new);
- if (new->panner.tmp.doing) redisplay = TRUE;
+ if (cur->panner.rubber_band != cnew->panner.rubber_band) {
+ reset_xor_gc(cnew);
+ if (cnew->panner.tmp.doing)
+ redisplay = True;
}
- if ((cur->panner.stipple_name != new->panner.stipple_name ||
- cur->panner.shadow_color != new->panner.shadow_color ||
- cur->core.background_pixel != new->core.background_pixel) &&
- XtIsRealized(gnew)) {
- Pixmap pm = (new->panner.stipple_name ? BACKGROUND_STIPPLE (new)
- : XtUnspecifiedPixmap);
+ if ((cur->panner.stipple_name != cnew->panner.stipple_name
+ || cur->panner.shadow_color != cnew->panner.shadow_color
+ || cur->core.background_pixel != cnew->core.background_pixel)
+ && XtIsRealized(gnew)) {
+ Pixmap pm = cnew->panner.stipple_name ?
+ BACKGROUND_STIPPLE(cnew) : XtUnspecifiedPixmap;
if (PIXMAP_OKAY(pm)) {
- XSetWindowBackgroundPixmap (XtDisplay (new), XtWindow(new), pm);
- XFreePixmap (XtDisplay (new), pm);
- } else {
- XSetWindowBackground (XtDisplay (new), XtWindow(new),
- new->core.background_pixel);
+ XSetWindowBackgroundPixmap(XtDisplay(cnew), XtWindow(cnew), pm);
+ XFreePixmap(XtDisplay(cnew), pm);
}
- redisplay = TRUE;
- }
-
- if (new->panner.resize_to_pref &&
- (cur->panner.canvas_width != new->panner.canvas_width ||
- cur->panner.canvas_height != new->panner.canvas_height ||
- cur->panner.resize_to_pref != new->panner.resize_to_pref)) {
- get_default_size (new, &new->core.width, &new->core.height);
- redisplay = TRUE;
- } else if (cur->panner.canvas_width != new->panner.canvas_width ||
- cur->panner.canvas_height != new->panner.canvas_height ||
- cur->panner.internal_border != new->panner.internal_border) {
- rescale (new); /* does a scale_knob as well */
- redisplay = TRUE;
- } else {
- Boolean loc = (cur->panner.slider_x != new->panner.slider_x ||
- cur->panner.slider_y != new->panner.slider_y);
- Boolean siz = (cur->panner.slider_width != new->panner.slider_width ||
- cur->panner.slider_height != new->panner.slider_height);
- if (loc || siz ||
- (cur->panner.allow_off != new->panner.allow_off &&
- new->panner.allow_off)) {
- scale_knob (new, loc, siz);
- redisplay = TRUE;
+ else
+ XSetWindowBackground(XtDisplay(cnew), XtWindow(cnew),
+ cnew->core.background_pixel);
+
+ redisplay = True;
+ }
+
+ if (cnew->panner.resize_to_pref &&
+ (cur->panner.canvas_width != cnew->panner.canvas_width
+ || cur->panner.canvas_height != cnew->panner.canvas_height
+ || cur->panner.resize_to_pref != cnew->panner.resize_to_pref)) {
+ get_default_size(cnew, &cnew->core.width, &cnew->core.height);
+ redisplay = True;
+ }
+ else if (cur->panner.canvas_width != cnew->panner.canvas_width
+ || cur->panner.canvas_height != cnew->panner.canvas_height
+ || cur->panner.internal_border != cnew->panner.internal_border) {
+ rescale(cnew); /* does a scale_knob as well */
+ redisplay = True;
+ }
+ else {
+ Bool loc = cur->panner.slider_x != cnew->panner.slider_x ||
+ cur->panner.slider_y != cnew->panner.slider_y;
+ Bool siz = cur->panner.slider_width != cnew->panner.slider_width ||
+ cur->panner.slider_height != cnew->panner.slider_height;
+ if (loc || siz || (cur->panner.allow_off != cnew->panner.allow_off
+ && cnew->panner.allow_off)) {
+ scale_knob(cnew, loc, siz);
+ redisplay = True;
}
}
- return redisplay;
+ return (redisplay);
}
-static void SetValuesAlmost (gold, gnew, req, reply)
- Widget gold, gnew;
- XtWidgetGeometry *req, *reply;
+static void
+XawPannerSetValuesAlmost(Widget gold, Widget gnew, XtWidgetGeometry *req,
+ XtWidgetGeometry *reply)
{
- if (reply->request_mode == 0) { /* got turned down, so cope */
- Resize (gnew);
- }
+ if (reply->request_mode == 0) /* got turned down, so cope */
+ XawPannerResize(gnew);
+
(*pannerWidgetClass->core_class.superclass->core_class.set_values_almost)
(gold, gnew, req, reply);
}
-static XtGeometryResult QueryGeometry (gw, intended, pref)
- Widget gw;
- XtWidgetGeometry *intended, *pref;
+static XtGeometryResult
+XawPannerQueryGeometry(Widget gw, XtWidgetGeometry *intended,
+ XtWidgetGeometry *pref)
{
- PannerWidget pw = (PannerWidget) gw;
+ PannerWidget pw = (PannerWidget)gw;
pref->request_mode = (CWWidth | CWHeight);
- get_default_size (pw, &pref->width, &pref->height);
-
- if (((intended->request_mode & (CWWidth | CWHeight)) ==
- (CWWidth | CWHeight)) &&
- intended->width == pref->width &&
- intended->height == pref->height)
- return XtGeometryYes;
- else if (pref->width == pw->core.width && pref->height == pw->core.height)
- return XtGeometryNo;
- else
- return XtGeometryAlmost;
-}
+ get_default_size(pw, &pref->width, &pref->height);
+ if (((intended->request_mode & (CWWidth | CWHeight)) == (CWWidth | CWHeight))
+ && intended->width == pref->width && intended->height == pref->height)
+ return (XtGeometryYes);
+ else if (pref->width == XtWidth(pw) && pref->height == XtHeight(pw))
+ return (XtGeometryNo);
+
+ return (XtGeometryAlmost);
+}
-/*****************************************************************************
- * *
- * panner action procs *
- * *
- *****************************************************************************/
-/* ARGSUSED */
-static void ActionStart (gw, event, params, num_params)
- Widget gw;
- XEvent *event;
- String *params; /* unused */
- Cardinal *num_params; /* unused */
+/*ARGSUSED*/
+static void
+ActionStart(Widget gw, XEvent *event, String *params, Cardinal *num_params)
{
- PannerWidget pw = (PannerWidget) gw;
+ PannerWidget pw = (PannerWidget)gw;
int x, y;
- if (!get_event_xy (pw, event, &x, &y)) {
- XBell (XtDisplay(gw), 0); /* should do error message */
+ if (!get_event_xy(pw, event, &x, &y)) {
+ XBell(XtDisplay(gw), 0);
return;
}
- pw->panner.tmp.doing = TRUE;
+ pw->panner.tmp.doing = True;
pw->panner.tmp.startx = pw->panner.knob_x;
pw->panner.tmp.starty = pw->panner.knob_y;
- pw->panner.tmp.dx = (((Position) x) - pw->panner.knob_x);
- pw->panner.tmp.dy = (((Position) y) - pw->panner.knob_y);
+ pw->panner.tmp.dx = x - pw->panner.knob_x;
+ pw->panner.tmp.dy = y - pw->panner.knob_y;
pw->panner.tmp.x = pw->panner.knob_x;
pw->panner.tmp.y = pw->panner.knob_y;
- if (pw->panner.rubber_band) DRAW_TMP (pw);
+ if (pw->panner.rubber_band)
+ DRAW_TMP(pw);
}
-/* ARGSUSED */
-static void ActionStop (gw, event, params, num_params)
- Widget gw;
- XEvent *event;
- String *params; /* unused */
- Cardinal *num_params; /* unused */
+/*ARGSUSED*/
+static void
+ActionStop(Widget gw, XEvent *event, String *params, Cardinal *num_params)
{
- PannerWidget pw = (PannerWidget) gw;
+ PannerWidget pw = (PannerWidget)gw;
int x, y;
- if (get_event_xy (pw, event, &x, &y)) {
- pw->panner.tmp.x = ((Position) x) - pw->panner.tmp.dx;
- pw->panner.tmp.y = ((Position) y) - pw->panner.tmp.dy;
- if (!pw->panner.allow_off) check_knob (pw, FALSE);
+ if (get_event_xy(pw, event, &x, &y)) {
+ pw->panner.tmp.x = x - pw->panner.tmp.dx;
+ pw->panner.tmp.y = y - pw->panner.tmp.dy;
+ if (!pw->panner.allow_off)
+ check_knob(pw, False);
}
- if (pw->panner.rubber_band) UNDRAW_TMP (pw);
- pw->panner.tmp.doing = FALSE;
+ if (pw->panner.rubber_band)
+ DRAW_TMP(pw);
+ pw->panner.tmp.doing = False;
}
-/* ARGSUSED */
-static void ActionAbort (gw, event, params, num_params)
- Widget gw;
- XEvent *event;
- String *params; /* unused */
- Cardinal *num_params; /* unused */
+static void
+ActionAbort(Widget gw, XEvent *event, String *params, Cardinal *num_params)
{
- PannerWidget pw = (PannerWidget) gw;
+ PannerWidget pw = (PannerWidget)gw;
- if (!pw->panner.tmp.doing) return;
+ if (!pw->panner.tmp.doing)
+ return;
- if (pw->panner.rubber_band) UNDRAW_TMP (pw);
+ if (pw->panner.rubber_band)
+ UNDRAW_TMP(pw);
if (!pw->panner.rubber_band) { /* restore old position */
pw->panner.tmp.x = pw->panner.tmp.startx;
pw->panner.tmp.y = pw->panner.tmp.starty;
- ActionNotify (gw, event, params, num_params);
+ ActionNotify(gw, event, params, num_params);
}
- pw->panner.tmp.doing = FALSE;
+ pw->panner.tmp.doing = False;
}
-
-/* ARGSUSED */
-static void ActionMove (gw, event, params, num_params)
- Widget gw;
- XEvent *event; /* must be a motion event */
- String *params; /* unused */
- Cardinal *num_params; /* unused */
+static void
+ActionMove(Widget gw, XEvent *event, String *params, Cardinal *num_params)
{
- PannerWidget pw = (PannerWidget) gw;
+ PannerWidget pw = (PannerWidget)gw;
int x, y;
- if (!pw->panner.tmp.doing) return;
+ if (!pw->panner.tmp.doing)
+ return;
- if (!get_event_xy (pw, event, &x, &y)) {
- XBell (XtDisplay(gw), 0); /* should do error message */
+ if (!get_event_xy(pw, event, &x, &y)) {
+ XBell(XtDisplay(gw), 0); /* should do error message */
return;
}
- if (pw->panner.rubber_band) UNDRAW_TMP (pw);
- pw->panner.tmp.x = ((Position) x) - pw->panner.tmp.dx;
- pw->panner.tmp.y = ((Position) y) - pw->panner.tmp.dy;
-
- if (!pw->panner.rubber_band) {
- ActionNotify (gw, event, params, num_params); /* does a check */
- } else {
- if (!pw->panner.allow_off) check_knob (pw, FALSE);
- DRAW_TMP (pw);
+ if (pw->panner.rubber_band)
+ UNDRAW_TMP(pw);
+ pw->panner.tmp.x = x - pw->panner.tmp.dx;
+ pw->panner.tmp.y = y - pw->panner.tmp.dy;
+
+ if (!pw->panner.rubber_band)
+ ActionNotify(gw, event, params, num_params);
+ else {
+ if (!pw->panner.allow_off)
+ check_knob(pw, False);
+ DRAW_TMP(pw);
}
}
-/* ARGSUSED */
-static void ActionPage (gw, event, params, num_params)
- Widget gw;
- XEvent *event; /* unused */
- String *params;
- Cardinal *num_params; /* unused */
+static void
+ActionPage(Widget gw, XEvent *event, String *params, Cardinal *num_params)
{
- PannerWidget pw = (PannerWidget) gw;
+ PannerWidget pw = (PannerWidget)gw;
Cardinal zero = 0;
- Boolean isin = pw->panner.tmp.doing;
+ Bool isin = pw->panner.tmp.doing;
int x, y;
- Boolean relx, rely;
- int pad = pw->panner.internal_border * 2;
+ Bool relx, rely;
+ int pad = pw->panner.internal_border << 1;
if (*num_params != 2) {
- XBell (XtDisplay(gw), 0);
+ XBell(XtDisplay(gw), 0);
return;
}
- x = parse_page_string (params[0], (int) pw->panner.knob_width,
- ((int) pw->core.width) - pad, &relx);
- y = parse_page_string (params[1], (int) pw->panner.knob_height,
- ((int) pw->core.height) - pad, &rely);
+ x = parse_page_string(params[0], pw->panner.knob_width,
+ (int)XtWidth(pw) - pad, &relx);
+ y = parse_page_string(params[1], pw->panner.knob_height,
+ (int)XtHeight(pw) - pad, &rely);
- if (relx) x += pw->panner.knob_x;
- if (rely) y += pw->panner.knob_y;
+ if (relx)
+ x += pw->panner.knob_x;
+ if (rely)
+ y += pw->panner.knob_y;
if (isin) { /* if in, then use move */
XEvent ev;
+
ev.xbutton.type = ButtonPress;
ev.xbutton.x = x;
ev.xbutton.y = y;
- ActionMove (gw, &ev, (String *) NULL, &zero);
- } else { /* else just do it */
- pw->panner.tmp.doing = TRUE;
+ ActionMove(gw, &ev, NULL, &zero);
+ }
+ else {
+ pw->panner.tmp.doing = True;
pw->panner.tmp.x = x;
pw->panner.tmp.y = y;
- ActionNotify (gw, event, (String *) NULL, &zero);
- pw->panner.tmp.doing = FALSE;
+ ActionNotify(gw, event, NULL, &zero);
+ pw->panner.tmp.doing = False;
}
}
-
-/* ARGSUSED */
-static void ActionNotify (gw, event, params, num_params)
- Widget gw;
- XEvent *event; /* unused */
- String *params; /* unused */
- Cardinal *num_params; /* unused */
+/*ARGSUSED*/
+static void
+ActionNotify(Widget gw, XEvent *event, String *params, Cardinal *num_params)
{
- PannerWidget pw = (PannerWidget) gw;
+ PannerWidget pw = (PannerWidget)gw;
- if (!pw->panner.tmp.doing) return;
+ if (!pw->panner.tmp.doing)
+ return;
- if (!pw->panner.allow_off) check_knob (pw, FALSE);
+ if (!pw->panner.allow_off)
+ check_knob(pw, False);
pw->panner.knob_x = pw->panner.tmp.x;
pw->panner.knob_y = pw->panner.tmp.y;
- move_shadow (pw);
+ move_shadow(pw);
- pw->panner.slider_x = (Position) (((double) pw->panner.knob_x) /
- pw->panner.haspect + 0.5);
- pw->panner.slider_y = (Position) (((double) pw->panner.knob_y) /
- pw->panner.vaspect + 0.5);
+ pw->panner.slider_x = (Position)((double)pw->panner.knob_x
+ / pw->panner.haspect + 0.5);
+ pw->panner.slider_y = (Position)((double) pw->panner.knob_y
+ / pw->panner.vaspect + 0.5);
if (!pw->panner.allow_off) {
Position tmp;
-
- if (pw->panner.slider_x >
- (tmp = (((Position) pw->panner.canvas_width) -
- ((Position) pw->panner.slider_width))))
- pw->panner.slider_x = tmp;
- if (pw->panner.slider_x < 0) pw->panner.slider_x = 0;
- if (pw->panner.slider_y >
- (tmp = (((Position) pw->panner.canvas_height) -
- ((Position) pw->panner.slider_height))))
- pw->panner.slider_y = tmp;
- if (pw->panner.slider_y < 0) pw->panner.slider_y = 0;
+
+ if (pw->panner.slider_x
+ > (tmp = (Position)pw->panner.canvas_width -
+ (Position)pw->panner.slider_width))
+ pw->panner.slider_x = tmp;
+ if (pw->panner.slider_x < 0)
+ pw->panner.slider_x = 0;
+ if (pw->panner.slider_y
+ > (tmp = (Position)pw->panner.canvas_height -
+ (Position)pw->panner.slider_height))
+ pw->panner.slider_y = tmp;
+ if (pw->panner.slider_y < 0)
+ pw->panner.slider_y = 0;
}
if (pw->panner.last_x != pw->panner.knob_x ||
pw->panner.last_y != pw->panner.knob_y) {
XawPannerReport rep;
- Redisplay (gw, (XEvent*) NULL, (Region) NULL);
- rep.changed = (XawPRSliderX | XawPRSliderY);
+ XawPannerRedisplay(gw, NULL, NULL);
+ rep.changed = XawPRSliderX | XawPRSliderY;
rep.slider_x = pw->panner.slider_x;
rep.slider_y = pw->panner.slider_y;
rep.slider_width = pw->panner.slider_width;
rep.slider_height = pw->panner.slider_height;
rep.canvas_width = pw->panner.canvas_width;
rep.canvas_height = pw->panner.canvas_height;
- XtCallCallbackList (gw, pw->panner.report_callbacks, (XtPointer) &rep);
+ XtCallCallbackList(gw, pw->panner.report_callbacks, (XtPointer)&rep);
}
}
-/* ARGSUSED */
-static void ActionSet (gw, event, params, num_params)
- Widget gw;
- XEvent *event; /* unused */
- String *params;
- Cardinal *num_params;
+/*ARGSUSED*/
+static void
+ActionSet(Widget gw, XEvent *event, String *params, Cardinal *num_params)
{
- PannerWidget pw = (PannerWidget) gw;
- Boolean rb;
+ PannerWidget pw = (PannerWidget)gw;
+ Bool rb;
if (*num_params < 2 ||
- XmuCompareISOLatin1 (params[0], "rubberband") != 0) {
- XBell (XtDisplay(gw), 0);
+ XmuCompareISOLatin1(params[0], "rubberband") != 0) {
+ XBell(XtDisplay(gw), 0);
return;
}
- if (XmuCompareISOLatin1 (params[1], "on") == 0) {
- rb = TRUE;
- } else if (XmuCompareISOLatin1 (params[1], "off") == 0) {
- rb = FALSE;
- } else if (XmuCompareISOLatin1 (params[1], "toggle") == 0) {
+ if (XmuCompareISOLatin1(params[1], "on") == 0)
+ rb = True;
+ else if (XmuCompareISOLatin1(params[1], "off") == 0)
+ rb = False;
+ else if (XmuCompareISOLatin1(params[1], "toggle") == 0)
rb = !pw->panner.rubber_band;
- } else {
- XBell (XtDisplay(gw), 0);
+ else {
+ XBell(XtDisplay(gw), 0);
return;
}
if (rb != pw->panner.rubber_band) {
Arg args[1];
- XtSetArg (args[0], XtNrubberBand, rb);
- XtSetValues (gw, args, (Cardinal) 1);
+
+ XtSetArg(args[0], XtNrubberBand, rb);
+ XtSetValues(gw, args, 1);
}
}