next up previous contents
Next: Datei: simulation.c Up: Funktionen der einzelnen Module Previous: Datei: xpendel.c

Datei: xwidget.c

Kennung für das Versionskontroll-System:
char *rcs = ''$Id: xwidget.c,v 1.113 1996/07/10 11:26:25 heuler$'';

Lokale Definitionen:
Struktur für die Pendel Fensterklasse:

PendulumClassRec pendulumClassRec = {
        {
        /* core_class fields */
        /* superclass            */ (WidgetClass) &widgetClassRec,
        /* class_name            */ "Pendulum",
        /* widget_size           */ sizeof(PendulumRec),
        /* class_initialize      */ NULL,
        /* class_part_initialize */ NULL,
        /* class_inited          */ FALSE,
        /* initialize            */ Initialize,
        /* initialize_hook       */ NULL,
        /* realize               */ XtInheritRealize,
        /* actions               */ NULL,
        /* num_actions           */ 0,
        /* resources             */ NULL,
        /* num_resources         */ 0,
        /* xrm_class             */ NULLQUARK,
        /* compress_motion       */ TRUE,
        /* compress_exposure     */ TRUE,
        /* compress_enterleave   */ TRUE,
        /* visible_interest      */ FALSE,
        /* destroy               */ Destroy,
        /* resize                */ Resize,
        /* expose                */ Redisplay,
        /* set_values            */ NULL,
        /* set_values_hook       */ NULL,
        /* set_values_almost     */ XtInheritSetValuesAlmost,
        /* get_values_hook       */ NULL,
        /* accept_focus          */ NULL,
        /* version               */ XtVersion,
        /* callback_private      */ NULL,
        /* tm_table              */ NULL,
        /* query_geometry        */ NULL,
};

Lokale Variablen:
WidgetClass pendulumWidgetClass = (WidgetClass) & pendulumClassRec;

static GC gc, xgc;              /* display gcs */
static Pixmap penpixmap;        /* pendulum pixmap */
static Display *display;        /* display variable */
static int screen;              /* screen number of display */
static int cdepth;              /* color depth of display */
static Colormap cmap;           /* default colormap */

static int pixel_pen;           /* pixel color of pendulum */
static int pixel_mot;           /* pixel color of motor */
static int pixel_mech;          /* pixel color of mechanic */
static int pixel_back;          /* pixel color of background */
static int pixel_nail;          /* pixel color of nail in circle */

static double oxmotorw;         /* old angle of motor */
static double oxpendelw;        /* old angle of pendulum */

static int cwidth;              /* width of circle */
static int motlen;              /* length of motor */
static int penlen;              /* length of pendulum */
static int rwidth;              /* width of rectangle */
static int xpos;                /* xpos of pendulum */
static int ypos;                /* ypos of pendulum */

Funktionen:
Zeichnet ein gefülltes, gedrehtes Rechteck ähnlich wie XFillRectangle():
XPoint XFillRectangleAngle(Display *display, Window window, GC gc, int xp, int yp, int width, int height, double sina, double cosa);

Berechnet die Größe der einzelnen Parameter des Pendels abhängig von der Fenstergröße:
void CalculatePenParam(PendulumWidget w);

Zeichnet den Motorteil des Pendelsystems:
XPoint DrawMotor(Window window, Boolean draw);

Zeichnet den Pendelteil des Pendelsystems:
void DrawPendulum(Window window, int xpos, int ypos, Boolean draw);

Löscht das Pendelsystem an der alten Position und zeichnet es an der neuen:
void DisplayPendulum(PendulumWidget w, Window window);

Callback - Wird bei der Initialisierung der Fensterklasse aufgerufen:
void Initialize(Widget treq, Widget xw, ArgList args, Cardinal *num_args);

Callback - Wird bei einer Größenänderung des Pendelfensters aufgerufen:
void Resize(Widget xw);

Callback - Wird beim Schließen des Pendelfensters aufgerufen:
void Destroy(Widget w);

Callback - Wird aufgerufen, wenn das Pendelfenster neu gezeichnet werden muß:
void Redisplay(Widget xw, XExposeEvent *event);



Marius Heuler
Tue Jan 7 12:11:50 MET 1997