Fixed strcmp for .dynamic section
[dyninst.git] / common / h / Histogram.h
1 /*
2  * Copyright (c) 1996 Barton P. Miller
3  * 
4  * We provide the Paradyn Parallel Performance Tools (below
5  * described as Paradyn") on an AS IS basis, and do not warrant its
6  * validity or performance.  We reserve the right to update, modify,
7  * or discontinue this software at any time.  We shall have no
8  * obligation to supply such updates or modifications or any other
9  * form of support to you.
10  * 
11  * This license is for research uses.  For such uses, there is no
12  * charge. We define "research use" to mean you may freely use it
13  * inside your organization for whatever purposes you see fit. But you
14  * may not re-distribute Paradyn or parts of Paradyn, in any form
15  * source or binary (including derivatives), electronic or otherwise,
16  * to any other organization or entity without our permission.
17  * 
18  * (for other uses, please contact us at paradyn@cs.wisc.edu)
19  * 
20  * All warranties, including without limitation, any warranty of
21  * merchantability or fitness for a particular purpose, are hereby
22  * excluded.
23  * 
24  * By your use of Paradyn, you understand and agree that we (or any
25  * other person or entity with proprietary rights in Paradyn) are
26  * under no obligation to provide either maintenance services,
27  * update services, notices of latent defects, or correction of
28  * defects for Paradyn.
29  * 
30  * Even if advised of the possibility of such damages, under no
31  * circumstances shall we (or any other person or entity with
32  * proprietary rights in the software licensed hereunder) be liable
33  * to you or any third party for direct, indirect, or consequential
34  * damages of any character regardless of type of action, including,
35  * without limitation, loss of profits, loss of use, loss of good
36  * will, or computer failure or malfunction.  You agree to indemnify
37  * us (and any other person or entity with proprietary rights in the
38  * software licensed hereunder) for any and all liability it may
39  * incur to third parties resulting from your use of Paradyn.
40  */
41
42 /*
43  * $Log: Histogram.h,v $
44  * Revision 1.2  1996/08/16 21:30:00  tamches
45  * updated copyright for release 1.1
46  *
47  * Revision 1.1  1993/08/26 18:23:09  hollings
48  * Initial revision
49  *
50  * Revision 1.2  1993/01/26  21:10:30  hollings
51  * Changed to use IPS style selection of ymax and increments.
52  *
53  * Revision 1.1  1993/01/08  21:20:23  hollings
54  * Initial revision
55  *
56  */
57
58 /*****************************************************************
59                 Histogram Widget 
60 ******************************************************************/
61
62 #ifndef _Histogram_h
63 #define _Histogram_h
64
65 #include <X11/Xaw/Form.h>
66
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70
71 #define DEBUG   1
72
73 /******************************************************************/
74
75 /* Parameters:
76
77 Name                 Class              RepType         Default Value
78 ----                 -----              -------         -------------
79 background           Background         Pixel           XtDefaultBackground
80 border               BorderColor        Pixel           XtDefaultForeground
81 borderWidth          BorderWidth        Dimension       1
82 foreground           Foreground         Pixel           XtDefaultForeground
83 graphHeight          GraphHeight        Dimension       200
84 graphWidth           GraphWidth         Dimension       600
85 font                 Font               Font            "6x13"
86 maxCurve             MaxCurve           Int             10
87 maxGroup             MaxGroup           Int             10
88 colorLineStyle       ColorLineStyle     String          
89 bwLineStyle          BwLineStyle        String          
90 numXMarks            NumXMarks          Int             10
91 yInc                 YInc               Float           0.2
92 yMin                 YMin               Float           5.0
93 smoothNpts           SmoothNpts         Int             8
94 compact              Compact            Blloean         Flase
95 */
96
97 #define XtCGraphForeground "GraphForeground"
98 #define XtCGraphBackground "GraphBackground"
99 #define XtCGraphWidth "GraphWidth"
100 #define XtCGraphHeight "GraphHeight"
101 #define XtCMaxCurve "MaxCurve"
102 #define XtCMaxGroup  "MaxGroup"
103 #define XtCNumXMarks    "NumXMarks"
104 #define XtCColorLineStyles  "ColorLineStyles"
105 #define XtCBwLineStyles  "BwLineStyles"
106 #define XtCYInc "YInc"
107 #define XtCYMin "YMin"
108 #define XtCSmoothNpts  "SmoothNpts"
109 #define XtCCompact "Compact"
110
111 #define XtNgraphForeground "graphForeground"
112 #define XtNgraphBackground "graphBackground"
113 #define XtNgraphWidth "graphWidth"
114 #define XtNgraphHeight "graphHeight"
115 #define XtNmaxCurve "maxCurve"
116 #define XtNmaxGroup  "maxGroup"
117 #define XtNnumXMarks    "numXMarks"
118 #define XtNcolorLineStyles  "colorLineStyles"
119 #define XtNbwLineStyles  "bwLineStyles"
120 #define XtNyInc "yInc"
121 #define XtNyMin "yMin"
122 #define XtNsmoothNpts  "smoothNpts"
123 #define XtNcompact "compact"
124
125
126 /* define mask for each bit in a mask */
127 #define MASK_1  01
128 #define MASK_2  02
129 #define MASK_3  04
130 #define MASK_4  010
131 #define MASK_5  020
132 #define MASK_6  040
133 #define MASK_7  0100
134 #define MASK_8  0200
135 #define MASK_9  0400
136 #define MASK_10 01000
137
138
139 /* used to indicate what fields in CurveInfo are specified, 
140    can be OR'ed */
141 enum CurveInfoMask {
142         /* LINEPROPERTY to mask the property of a line : linestyle,
143          * foreground and width. 
144          * once used, all three properties have to be supplied
145          */
146         LINEPROPERTY = MASK_3,
147         YTITLE = MASK_6,
148         YINC = MASK_7,
149 };
150
151 /* property of a curve, use CurveInfoMASK to indicate what are defined*/
152 typedef struct _CurveInfo {
153         Pixel   foreground;     /* foreground color */
154         int     lineWidth;              /* width of line */
155         int     lineStyle;      
156         int     yInterval;      /* interval in y-axis */
157         int     yInc;           /* yInc more when out of yMax limit*/
158         int     yMax;           /* max value of y-axis */
159         char    *yTitle;        /* title for y-axis */
160 } CurveInfo;
161
162
163 /* each curve */
164 typedef struct _CurveRec {
165         int     curveID;        /* filled after return, will be used  
166                                    as a reference thereafter */
167         int     groupID;        /* used to find its group */
168         char    *name;  /* curve label shown at the bottom */
169         CurveInfo curveInfo;
170 } CurveRec;
171
172
173 /**************************************************************/
174
175 typedef struct _HistogramClassRec       *HistogramWidgetClass;
176 typedef struct _HistogramRec            *HistogramWidget;
177
178 extern WidgetClass histogramWidgetClass;
179
180 /******************************************************/
181
182 extern void HistAddNewCurve(Widget, unsigned long, CurveRec *,Boolean);
183 extern void HistSampleInfo(Widget, double, int, double, Boolean);
184 extern void HistSetCurveData(Widget, int, int, int, float*);
185 extern void HistDeleteCurve(Widget, int **, int *);
186 extern void HistRestoreCurve(Widget, int *, int);
187 extern void HistClose(Widget);
188 extern void HistSmoothCurve(Widget, int **, int *);
189 extern void HistUnsmoothCurve(Widget, int **, int *);
190
191 #ifdef __cplusplus
192 }
193 #endif
194
195 #endif /* _Histogram_h */