2 static char Xrcsid
[] = "$XConsortium: Logo.c,v 1.11 89/10/09 16:20:39 jim Exp $";
6 Copyright 1988 by the Massachusetts Institute of Technology
8 Permission to use, copy, modify, and distribute this
9 software and its documentation for any purpose and without
10 fee is hereby granted, provided that the above copyright
11 notice appear in all copies and that both that copyright
12 notice and this permission notice appear in supporting
13 documentation, and that the name of M.I.T. not be used in
14 advertising or publicity pertaining to distribution of the
15 software without specific, written prior permission.
16 M.I.T. makes no representations about the suitability of
17 this software for any purpose. It is provided "as is"
18 without express or implied warranty.
21 #include <X11/StringDefs.h>
22 #include <X11/IntrinsicP.h>
23 #include <./Xaw3_1XawInit.h>
24 #include <./Xaw3_1LogoP.h>
26 static Dimension defDim
= 100;
28 static XtResource resources
[] = {
29 {XtNwidth
, XtCWidth
, XtRDimension
, sizeof(Dimension
),
30 XtOffset(Widget
,core
.width
), XtRDimension
, (caddr_t
)&defDim
},
31 {XtNheight
, XtCHeight
, XtRDimension
, sizeof(Dimension
),
32 XtOffset(Widget
,core
.height
), XtRDimension
, (caddr_t
)&defDim
},
33 {XtNbackground
, XtCBackground
, XtRPixel
, sizeof(Pixel
),
34 XtOffset(Widget
,core
.background_pixel
), XtRString
, "White"},
35 {XtNforeground
, XtCForeground
, XtRPixel
, sizeof(Pixel
),
36 XtOffset(LogoWidget
,logo
.fgpixel
), XtRString
, "Black"},
37 {XtNreverseVideo
, XtCReverseVideo
, XtRBoolean
, sizeof (Boolean
),
38 XtOffset(LogoWidget
,logo
.reverse_video
), XtRString
, "FALSE"},
41 static void Initialize(), Realize(), Destroy(), Redisplay();
42 static Boolean
SetValues();
44 LogoClassRec logoClassRec
= {
46 /* superclass */ &widgetClassRec
,
47 /* class_name */ "Logo",
48 /* widget_size */ sizeof(LogoRec
),
49 /* class_initialize */ XawInitializeWidgetSet
,
50 /* class_part_initialize */ NULL
,
51 /* class_inited */ FALSE
,
52 /* initialize */ Initialize
,
53 /* initialize_hook */ NULL
,
54 /* realize */ Realize
,
57 /* resources */ resources
,
58 /* resource_count */ XtNumber(resources
),
60 /* compress_motion */ TRUE
,
61 /* compress_exposure */ TRUE
,
62 /* compress_enterleave */ TRUE
,
63 /* visible_interest */ FALSE
,
64 /* destroy */ Destroy
,
66 /* expose */ Redisplay
,
67 /* set_values */ SetValues
,
68 /* set_values_hook */ NULL
,
69 /* set_values_almost */ XtInheritSetValuesAlmost
,
70 /* get_values_hook */ NULL
,
71 /* accept_focus */ NULL
,
72 /* version */ XtVersion
,
73 /* callback_private */ NULL
,
75 /* query_geometry */ XtInheritQueryGeometry
,
76 /* display_accelerator */ XtInheritDisplayAccelerator
,
81 WidgetClass logoWidgetClass
= (WidgetClass
) &logoClassRec
;
84 static void Initialize (request
, new)
87 LogoWidget w
= (LogoWidget
)new;
90 if (w
->logo
.reverse_video
) {
91 Pixel fg
= w
->logo
.fgpixel
;
92 Pixel bg
= w
->core
.background_pixel
;
94 if (w
->core
.border_pixel
== fg
)
95 w
->core
.border_pixel
= bg
;
97 w
->core
.background_pixel
= fg
;
100 gcv
.foreground
= w
->logo
.fgpixel
;
101 w
->logo
.foreGC
= XtGetGC((Widget
)w
, GCForeground
, &gcv
);
102 gcv
.foreground
= w
->core
.background_pixel
;
103 w
->logo
.backGC
= XtGetGC((Widget
)w
, GCForeground
, &gcv
);
106 static void Realize (gw
, valueMask
, attrs
)
108 XtValueMask
*valueMask
;
109 XSetWindowAttributes
*attrs
;
111 XtCreateWindow( gw
, InputOutput
, (Visual
*)CopyFromParent
,
115 static void Destroy (gw
)
118 LogoWidget w
= (LogoWidget
) gw
;
119 XtDestroyGC (w
->logo
.foreGC
);
120 XtDestroyGC (w
->logo
.backGC
);
124 static void Redisplay (gw
, event
, region
)
126 XEvent
*event
; /* unused */
127 Region region
; /* unused */
129 LogoWidget w
= (LogoWidget
) gw
;
131 XmuDrawLogo(XtDisplay(w
), XtWindow(w
), w
->logo
.foreGC
, w
->logo
.backGC
,
132 0, 0, (unsigned int) w
->core
.width
,
133 (unsigned int) w
->core
.height
);
137 static Boolean
SetValues (gcurrent
, grequest
, gnew
)
138 Widget gcurrent
, grequest
, gnew
;
140 LogoWidget current
= (LogoWidget
) gcurrent
;
141 LogoWidget
new = (LogoWidget
) gnew
;
142 Boolean redisplay
= FALSE
;
145 if ((new->logo
.fgpixel
!= current
->logo
.fgpixel
) ||
146 (new->core
.background_pixel
!= current
->core
.background_pixel
)) {
147 XtDestroyGC (current
->logo
.foreGC
);
148 XtDestroyGC (current
->logo
.backGC
);
149 gcv
.foreground
= new->logo
.fgpixel
;
150 new->logo
.foreGC
= XtGetGC(gnew
, GCForeground
, &gcv
);
151 gcv
.foreground
= new->core
.background_pixel
;
152 new->logo
.backGC
= XtGetGC(gnew
, GCForeground
, &gcv
);