1 /*-- defines.h --*/ 2 /* 3 * ggobi 4 * Copyright (C) AT&T, Duncan Temple Lang, Dianne Cook 1999-2005 5 * 6 * ggobi is free software; you may use, redistribute, and/or modify it 7 * under the terms of the Eclipse Public License, which is distributed 8 * with the source code and displayed on the ggobi web site, 9 * www.ggobi.org. For more information, contact the authors: 10 * 11 * Deborah F. Swayne dfs@research.att.com 12 * Di Cook dicook@iastate.edu 13 * Duncan Temple Lang duncan@wald.ucdavis.edu 14 * Andreas Buja andreas.buja@wharton.upenn.edu 15 */ 16 17 18 #ifndef GGOBI_DEFINES_H 19 #define GGOBI_DEFINES_H 20 21 #include <gtk/gtk.h> /* Needed for ViewTypes. Can be moved. */ 22 23 /* defines.h */ 24 25 /* External/public routines in the API should use this 26 to generate a suitable prefix for their name to avoid 27 name-space pollution and symbol conflicts. 28 (e.g. GGOBI(setData) 29 */ 30 #define GGOBI(a) GGobi_##a 31 32 #define false 0 33 #define true 1 34 35 #define off 0 36 #define on 1 37 38 #define HORIZONTAL 0 39 #define VERTICAL 1 40 41 #define MSGBUFLEN 512 42 43 #define NDISPLAYTYPES 3 44 45 extern const gchar* const ViewTypes[NDISPLAYTYPES]; 46 extern const gint ViewTypeIndices[NDISPLAYTYPES]; 47 48 /*-- used in movepts --*/ 49 enum directiond {both, vertical, horizontal}; 50 51 enum idtargetd {identify_points, identify_edges}; 52 53 /* display options */ 54 /* When these change, update display.c and RSggobi/RSGGobi.c accordingly */ 55 #define DOPT_POINTS 0 56 #define DOPT_AXES 1 57 #define DOPT_AXESLAB 2 58 #define DOPT_AXESVALS 3 59 #define DOPT_EDGES_U 4 60 #define DOPT_EDGES_A 5 61 #define DOPT_EDGES_D 6 62 #define DOPT_EDGES_H 7 63 #define DOPT_WHISKERS 8 64 /* unused 65 #define DOPT_GRIDLINES 5 66 #define DOPT_MISSINGS 5 67 #define DOPT_AXES_C 9 68 #define DOPT_BUFFER 10 69 #define DOPT_LINK 11 70 */ 71 72 /* modes */ 73 /* Former viewmodes: 74 typedef enum {NULLMODE = -1 75 P1PLOT, XYPLOT, TOUR1D, 76 TOUR2D3, TOUR2D, COTOUR, 77 SCALE, BRUSH, IDENT, EDGEED, MOVEPTS, 78 SCATMAT, PCPLOT, 79 EXTENDED_DISPLAY_MODE, 80 NMODES} PipelineMode; 81 */ 82 83 typedef enum {NULL_PMODE = -1, DEFAULT_PMODE, 84 P1PLOT, /* d, D */ 85 XYPLOT, /* x, X */ 86 TOUR1D, /* t, T */ 87 TOUR2D3, /* r, R */ 88 TOUR2D, /* g, G */ 89 COTOUR, /* c, C */ 90 EXTENDED_DISPLAY_PMODE, N_PMODES} ProjectionMode; 91 typedef enum {NULL_IMODE = -1, DEFAULT_IMODE, 92 SCALE, /* s, S */ 93 BRUSH, /* b, B */ 94 IDENT, /* i, I */ 95 EDGEED, /* e, E */ 96 MOVEPTS, /* m, M */ 97 EXTENDED_DISPLAY_IMODE, N_IMODES} InteractionMode; 98 /* */ 99 100 #define TEXTURE 0 101 #define ASH 1 102 #define DOTPLOT 2 103 104 #define FORWARD 1 105 #define BACKWARD -1 106 107 /* 108 * cycling 109 */ 110 #define NOFIXED 0 111 #define XFIXED 1 112 #define YFIXED 2 113 114 115 #define MAXNCOLS 500 116 117 #define COLLABLEN 25 118 #define ROWLABLEN 50 119 120 /* 121 * EXP1: Raw data are scaled to -2^EXP1, +2^EXP1 122 * EXP2: Trigonometric coefficients are scaled up by 2^EXP2 to do 123 * integer math. 124 * PRECISION: 2^EXP2 125 */ 126 #define EXP1 14 127 #define EXP2 13 128 #define PRECISION1 16384 129 #define PRECISION2 8192 130 131 /*-- spacing for the control panels --*/ 132 #define VBOX_SPACING 5 133 134 /*-- touring --*/ 135 #define VAR_CIRCLE_DIAM 36 136 137 #define MIN_NVARS_FOR_COTOUR 3 /* require: 3 in subset, 2 active */ 138 /* at least 1 vert, at least 1 horiz */ 139 #define MIN_NVARS_FOR_TOUR2D 3 /* require: 3 in subset, 2 active */ 140 #define MIN_NVARS_FOR_TOUR1D 2 /* require: 2 in subset, 1 active */ 141 #define MIN_NVARS_FOR_TOUR2D3 3 /* exactly 3 in subset, 3 active */ 142 143 /*#define TOURSTEP0 0.003*/ 144 #define TOURSTEP0 0.102 /* corresponds to slidepos=50 */ 145 #define TOUR_LS_IN 0 146 #define TOUR_LS_OUT 1 147 148 #ifndef M_PI_2 149 #define M_PI_2 1.57079632679489661923 150 #endif 151 152 #define MANIP_OFF 0 153 #define MANIP_OBLIQUE 1 154 #define MANIP_VERT 2 155 #define MANIP_HOR 3 156 #define MANIP_RADIAL 4 157 #define MANIP_ANGULAR 5 158 159 #define CMANIP_OFF 0 160 #define CMANIP_COMB 1 161 #define CMANIP_VERT 2 162 #define CMANIP_HOR 3 163 #define CMANIP_EQUAL 4 164 165 #define TOUR_RANDOM 0 166 #define TOUR_PP 1 167 168 /*-- projection pursuit indices --*/ 169 /*#define NATURAL_HERMITE 0 170 #define HERMITE 1 171 #define CENTRAL_MASS 2 172 #define HOLES 3 173 #define SKEWNESS 4 174 #define LEGENDRE 5 175 #define FTS 6 176 #define ENTROPY 7 177 #define BIN_FTS 8 178 #define BIN_ENTROPY 9 179 #define SUBD 10 180 #define LDA 11 181 #define CART_GINI 12 182 #define CART_ENTROPY 13 183 #define CART_VAR 14 184 #define PCA 15*/ 185 186 /* Used in parallel coordinates displays */ 187 typedef enum {ARRANGE_ROW, ARRANGE_COL} ParCoordsArrangeMode; 188 189 #define DEFINES_H 190 191 /*-- transformation --*/ 192 193 #define N0TFORMS 4 194 #define NO_TFORM0 0 195 #define RAISE_MIN_TO_0 1 196 #define RAISE_MIN_TO_1 2 197 #define NEGATE 3 198 199 #define N1TFORMS 5 200 #define NO_TFORM1 0 201 #define BOXCOX 1 202 #define LOG10 2 203 #define INVERSE 3 204 #define ABSVALUE 4 205 #define SCALE_AB 5 206 207 #define N2TFORMS 8 208 #define NO_TFORM2 0 209 #define STANDARDIZE 1 210 #define SORT 2 211 #define RANK 3 212 #define NORMSCORE 4 213 #define ZSCORE 5 214 #define DISCRETE2 6 215 216 /* 217 * identification 218 */ 219 #define STICKY_TOGGLE 0 220 #define STICKY_ADD 1 221 #define STICKY_REMOVE 2 222 223 enum {ID_RECORD_ID = 1 << 3, ID_RECORD_LABEL = 1 << 2, ID_RECORD_NO = 1 << 1, ID_VAR_LABELS = 1 << 0}; 224 225 /* 226 * jittering 227 */ 228 #define JITFAC .2 229 #define UNIFORM 0 230 #define NORMAL 1 231 232 /* 233 * scaling 234 */ 235 #define SCALE_DEFAULT 0.7 236 #define TOUR_SCALE_DEFAULT 0.6 237 #define SCALE_MIN 0.02 238 #define SCALE_SCROLL_INC 0.1 239 240 #define DRAG 0 241 #define CLICK 1 242 243 #define PAN 0 244 #define ZOOM 1 245 246 #define ZOOM_IN 0 247 #define ZOOM_OUT 1 248 249 #define P_HORIZ 0 250 #define P_VERT 1 251 #define P_OBLIQUE 2 252 253 #define Z_ASPECT 0 254 #define Z_HORIZ 1 255 #define Z_VERT 2 256 #define Z_OBLIQUE 3 257 258 /*-- color by variable --*/ 259 #define WVIS_EQUAL_WIDTH_BINS 0 260 #define WVIS_EQUAL_COUNT_BINS 1 261 262 #define WVIS_UPDATE_ON_MOUSE_UP 0 263 #define WVIS_UPDATE_CONTINUOUSLY 1 264 /*-- --*/ 265 266 /*-- variable notebook columns --*/ 267 enum { VARLIST_NAME, VARLIST_INDEX, VARLIST_NCOLS }; 268 269 /*-- macros --*/ 270 271 #define EVENT_METHOD(i,x) GTK_OBJECT_GET_CLASS(GTK_OBJECT(i))->x 272 273 #define BETWEEN(a,b,x) ( ((a)<=(x) && (x)<=(b)) || ((a)>=(x) && (x)>=(b)) ) 274 275 typedef enum { 276 C, 277 R, 278 SPLUS, 279 PERL, 280 PYTHON 281 } ProgrammingLanguage; 282 283 #if GTK_CHECK_VERSION(2,8,0) && defined CAIRO_HAS_GLITZ_SURFACE 284 //#define ENABLE_CAIRO 1 285 #endif 286 287 #endif /* End of conditional definition. */ 288