[175] | 1 | diff -cr blt2.4z/src/bltGrAxis.c blt2.4z-new/src/bltGrAxis.c
|
---|
| 2 | *** blt2.4z/src/bltGrAxis.c 2002-09-18 17:30:51.000000000 -0500
|
---|
| 3 | --- blt2.4z-new/src/bltGrAxis.c 2002-12-02 22:39:26.000000000 -0600
|
---|
| 4 | ***************
|
---|
| 5 | *** 1424,1482 ****
|
---|
| 6 | double majorStep, minorStep;
|
---|
| 7 | int nMajor, nMinor;
|
---|
| 8 |
|
---|
| 9 | ! min = (min != 0.0) ? log10(FABS(min)) : 0.0;
|
---|
| 10 | ! max = (max != 0.0) ? log10(FABS(max)) : 1.0;
|
---|
| 11 | !
|
---|
| 12 | ! tickMin = floor(min);
|
---|
| 13 | ! tickMax = ceil(max);
|
---|
| 14 | ! range = tickMax - tickMin;
|
---|
| 15 | !
|
---|
| 16 | ! if (range > 10) {
|
---|
| 17 | ! /* There are too many decades to display a major tick at every
|
---|
| 18 | ! * decade. Instead, treat the axis as a linear scale. */
|
---|
| 19 | ! range = NiceNum(range, 0);
|
---|
| 20 | ! majorStep = NiceNum(range / DEF_NUM_TICKS, 1);
|
---|
| 21 | ! tickMin = UFLOOR(tickMin, majorStep);
|
---|
| 22 | ! tickMax = UCEIL(tickMax, majorStep);
|
---|
| 23 | ! nMajor = (int)((tickMax - tickMin) / majorStep) + 1;
|
---|
| 24 | ! minorStep = EXP10(floor(log10(majorStep)));
|
---|
| 25 | ! if (minorStep == majorStep) {
|
---|
| 26 | ! nMinor = 4, minorStep = 0.2;
|
---|
| 27 | } else {
|
---|
| 28 | ! nMinor = Round(majorStep / minorStep) - 1;
|
---|
| 29 | ! }
|
---|
| 30 | ! } else {
|
---|
| 31 | ! if (tickMin == tickMax) {
|
---|
| 32 | ! tickMax++;
|
---|
| 33 | ! }
|
---|
| 34 | ! majorStep = 1.0;
|
---|
| 35 | ! nMajor = (int)(tickMax - tickMin + 1); /* FIXME: Check this. */
|
---|
| 36 | !
|
---|
| 37 | ! minorStep = 0.0; /* This is a special hack to pass
|
---|
| 38 | * information to the GenerateTicks
|
---|
| 39 | * routine. An interval of 0.0 tells
|
---|
| 40 | * 1) this is a minor sweep and
|
---|
| 41 | * 2) the axis is log scale.
|
---|
| 42 | */
|
---|
| 43 | ! nMinor = 10;
|
---|
| 44 | ! }
|
---|
| 45 | ! if ((axisPtr->looseMin == TICK_RANGE_TIGHT) ||
|
---|
| 46 | ! ((axisPtr->looseMin == TICK_RANGE_LOOSE) &&
|
---|
| 47 | ! (DEFINED(axisPtr->reqMin)))) {
|
---|
| 48 | ! tickMin = min;
|
---|
| 49 | ! nMajor++;
|
---|
| 50 | ! }
|
---|
| 51 | ! if ((axisPtr->looseMax == TICK_RANGE_TIGHT) ||
|
---|
| 52 | ! ((axisPtr->looseMax == TICK_RANGE_LOOSE) &&
|
---|
| 53 | ! (DEFINED(axisPtr->reqMax)))) {
|
---|
| 54 | ! tickMax = max;
|
---|
| 55 | }
|
---|
| 56 | axisPtr->majorSweep.step = majorStep;
|
---|
| 57 | axisPtr->majorSweep.initial = floor(tickMin);
|
---|
| 58 | axisPtr->majorSweep.nSteps = nMajor;
|
---|
| 59 | axisPtr->minorSweep.initial = axisPtr->minorSweep.step = minorStep;
|
---|
| 60 | axisPtr->minorSweep.nSteps = nMinor;
|
---|
| 61 | -
|
---|
| 62 | SetAxisRange(&axisPtr->axisRange, tickMin, tickMax);
|
---|
| 63 | }
|
---|
| 64 |
|
---|
| 65 | --- 1424,1485 ----
|
---|
| 66 | double majorStep, minorStep;
|
---|
| 67 | int nMajor, nMinor;
|
---|
| 68 |
|
---|
| 69 | ! nMajor = nMinor = 0;
|
---|
| 70 | ! majorStep = minorStep = 0.0;
|
---|
| 71 | ! if (min < max) {
|
---|
| 72 | ! min = (min != 0.0) ? log10(FABS(min)) : 0.0;
|
---|
| 73 | ! max = (max != 0.0) ? log10(FABS(max)) : 1.0;
|
---|
| 74 | !
|
---|
| 75 | ! tickMin = floor(min);
|
---|
| 76 | ! tickMax = ceil(max);
|
---|
| 77 | ! range = tickMax - tickMin;
|
---|
| 78 | !
|
---|
| 79 | ! if (range > 10) {
|
---|
| 80 | ! /* There are too many decades to display a major tick at every
|
---|
| 81 | ! * decade. Instead, treat the axis as a linear scale. */
|
---|
| 82 | ! range = NiceNum(range, 0);
|
---|
| 83 | ! majorStep = NiceNum(range / DEF_NUM_TICKS, 1);
|
---|
| 84 | ! tickMin = UFLOOR(tickMin, majorStep);
|
---|
| 85 | ! tickMax = UCEIL(tickMax, majorStep);
|
---|
| 86 | ! nMajor = (int)((tickMax - tickMin) / majorStep) + 1;
|
---|
| 87 | ! minorStep = EXP10(floor(log10(majorStep)));
|
---|
| 88 | ! if (minorStep == majorStep) {
|
---|
| 89 | ! nMinor = 4, minorStep = 0.2;
|
---|
| 90 | ! } else {
|
---|
| 91 | ! nMinor = Round(majorStep / minorStep) - 1;
|
---|
| 92 | ! }
|
---|
| 93 | } else {
|
---|
| 94 | ! if (tickMin == tickMax) {
|
---|
| 95 | ! tickMax++;
|
---|
| 96 | ! }
|
---|
| 97 | ! majorStep = 1.0;
|
---|
| 98 | ! nMajor = (int)(tickMax - tickMin + 1); /* FIXME: Check this. */
|
---|
| 99 | !
|
---|
| 100 | ! minorStep = 0.0; /* This is a special hack to pass
|
---|
| 101 | * information to the GenerateTicks
|
---|
| 102 | * routine. An interval of 0.0 tells
|
---|
| 103 | * 1) this is a minor sweep and
|
---|
| 104 | * 2) the axis is log scale.
|
---|
| 105 | */
|
---|
| 106 | ! nMinor = 10;
|
---|
| 107 | ! }
|
---|
| 108 | ! if ((axisPtr->looseMin == TICK_RANGE_TIGHT) ||
|
---|
| 109 | ! ((axisPtr->looseMin == TICK_RANGE_LOOSE) &&
|
---|
| 110 | ! (DEFINED(axisPtr->reqMin)))) {
|
---|
| 111 | ! tickMin = min;
|
---|
| 112 | ! nMajor++;
|
---|
| 113 | ! }
|
---|
| 114 | ! if ((axisPtr->looseMax == TICK_RANGE_TIGHT) ||
|
---|
| 115 | ! ((axisPtr->looseMax == TICK_RANGE_LOOSE) &&
|
---|
| 116 | ! (DEFINED(axisPtr->reqMax)))) {
|
---|
| 117 | ! tickMax = max;
|
---|
| 118 | ! }
|
---|
| 119 | }
|
---|
| 120 | axisPtr->majorSweep.step = majorStep;
|
---|
| 121 | axisPtr->majorSweep.initial = floor(tickMin);
|
---|
| 122 | axisPtr->majorSweep.nSteps = nMajor;
|
---|
| 123 | axisPtr->minorSweep.initial = axisPtr->minorSweep.step = minorStep;
|
---|
| 124 | axisPtr->minorSweep.nSteps = nMinor;
|
---|
| 125 | SetAxisRange(&axisPtr->axisRange, tickMin, tickMax);
|
---|
| 126 | }
|
---|
| 127 |
|
---|
| 128 | ***************
|
---|
| 129 | *** 1551,1581 ****
|
---|
| 130 | double axisMin, axisMax;
|
---|
| 131 | int nTicks;
|
---|
| 132 |
|
---|
| 133 | ! range = max - min;
|
---|
| 134 | !
|
---|
| 135 | ! /* Calculate the major tick stepping. */
|
---|
| 136 | ! if (axisPtr->reqStep > 0.0) {
|
---|
| 137 | ! /* An interval was designated by the user. Keep scaling it
|
---|
| 138 | ! * until it fits comfortably within the current range of the
|
---|
| 139 | ! * axis. */
|
---|
| 140 | ! step = axisPtr->reqStep;
|
---|
| 141 | ! while ((2 * step) >= range) {
|
---|
| 142 | ! step *= 0.5;
|
---|
| 143 | }
|
---|
| 144 | ! } else {
|
---|
| 145 | ! range = NiceNum(range, 0);
|
---|
| 146 | ! step = NiceNum(range / DEF_NUM_TICKS, 1);
|
---|
| 147 | }
|
---|
| 148 | -
|
---|
| 149 | - /* Find the outer tick values. Add 0.0 to prevent getting -0.0. */
|
---|
| 150 | - axisMin = tickMin = floor(min / step) * step + 0.0;
|
---|
| 151 | - axisMax = tickMax = ceil(max / step) * step + 0.0;
|
---|
| 152 | -
|
---|
| 153 | - nTicks = Round((tickMax - tickMin) / step) + 1;
|
---|
| 154 | axisPtr->majorSweep.step = step;
|
---|
| 155 | axisPtr->majorSweep.initial = tickMin;
|
---|
| 156 | axisPtr->majorSweep.nSteps = nTicks;
|
---|
| 157 | !
|
---|
| 158 | /*
|
---|
| 159 | * The limits of the axis are either the range of the data
|
---|
| 160 | * ("tight") or at the next outer tick interval ("loose"). The
|
---|
| 161 | --- 1554,1588 ----
|
---|
| 162 | double axisMin, axisMax;
|
---|
| 163 | int nTicks;
|
---|
| 164 |
|
---|
| 165 | ! nTicks = 0;
|
---|
| 166 | ! tickMin = tickMax = 0.0;
|
---|
| 167 | ! if (min < max) {
|
---|
| 168 | ! range = max - min;
|
---|
| 169 | !
|
---|
| 170 | ! /* Calculate the major tick stepping. */
|
---|
| 171 | ! if (axisPtr->reqStep > 0.0) {
|
---|
| 172 | ! /* An interval was designated by the user. Keep scaling it
|
---|
| 173 | ! * until it fits comfortably within the current range of the
|
---|
| 174 | ! * axis. */
|
---|
| 175 | ! step = axisPtr->reqStep;
|
---|
| 176 | ! while ((2 * step) >= range) {
|
---|
| 177 | ! step *= 0.5;
|
---|
| 178 | ! }
|
---|
| 179 | ! } else {
|
---|
| 180 | ! range = NiceNum(range, 0);
|
---|
| 181 | ! step = NiceNum(range / DEF_NUM_TICKS, 1);
|
---|
| 182 | }
|
---|
| 183 | !
|
---|
| 184 | ! /* Find the outer tick values. Add 0.0 to prevent getting -0.0. */
|
---|
| 185 | ! axisMin = tickMin = floor(min / step) * step + 0.0;
|
---|
| 186 | ! axisMax = tickMax = ceil(max / step) * step + 0.0;
|
---|
| 187 | !
|
---|
| 188 | ! nTicks = Round((tickMax - tickMin) / step) + 1;
|
---|
| 189 | }
|
---|
| 190 | axisPtr->majorSweep.step = step;
|
---|
| 191 | axisPtr->majorSweep.initial = tickMin;
|
---|
| 192 | axisPtr->majorSweep.nSteps = nTicks;
|
---|
| 193 | !
|
---|
| 194 | /*
|
---|
| 195 | * The limits of the axis are either the range of the data
|
---|
| 196 | * ("tight") or at the next outer tick interval ("loose"). The
|
---|
| 197 | ***************
|
---|
| 198 | *** 1596,1604 ****
|
---|
| 199 | axisMax = max;
|
---|
| 200 | }
|
---|
| 201 | SetAxisRange(&axisPtr->axisRange, axisMin, axisMax);
|
---|
| 202 | !
|
---|
| 203 | /* Now calculate the minor tick step and number. */
|
---|
| 204 | !
|
---|
| 205 | if ((axisPtr->reqNumMinorTicks > 0) &&
|
---|
| 206 | ((axisPtr->flags & AXIS_CONFIG_MAJOR) == 0)) {
|
---|
| 207 | nTicks = axisPtr->reqNumMinorTicks - 1;
|
---|
| 208 | --- 1603,1611 ----
|
---|
| 209 | axisMax = max;
|
---|
| 210 | }
|
---|
| 211 | SetAxisRange(&axisPtr->axisRange, axisMin, axisMax);
|
---|
| 212 | !
|
---|
| 213 | /* Now calculate the minor tick step and number. */
|
---|
| 214 | !
|
---|
| 215 | if ((axisPtr->reqNumMinorTicks > 0) &&
|
---|
| 216 | ((axisPtr->flags & AXIS_CONFIG_MAJOR) == 0)) {
|
---|
| 217 | nTicks = axisPtr->reqNumMinorTicks - 1;
|
---|
| 218 | ***************
|
---|
| 219 | *** 1614,1620 ****
|
---|
| 220 | axisPtr->minorSweep.nSteps = nTicks;
|
---|
| 221 | }
|
---|
| 222 |
|
---|
| 223 | -
|
---|
| 224 | static void
|
---|
| 225 | SweepTicks(axisPtr)
|
---|
| 226 | Axis *axisPtr;
|
---|
| 227 | --- 1621,1626 ----
|
---|
| 228 | ***************
|
---|
| 229 | *** 1684,1692 ****
|
---|
| 230 | for (linkPtr = Blt_ChainFirstLink(graphPtr->elements.displayList);
|
---|
| 231 | linkPtr != NULL; linkPtr = Blt_ChainNextLink(linkPtr)) {
|
---|
| 232 | elemPtr = Blt_ChainGetValue(linkPtr);
|
---|
| 233 | ! (*elemPtr->procsPtr->extentsProc) (elemPtr, &exts);
|
---|
| 234 | ! GetDataLimits(elemPtr->axes.x, exts.left, exts.right);
|
---|
| 235 | ! GetDataLimits(elemPtr->axes.y, exts.top, exts.bottom);
|
---|
| 236 | }
|
---|
| 237 | /*
|
---|
| 238 | * Step 3: Now that we know the range of data values for each axis,
|
---|
| 239 | --- 1690,1700 ----
|
---|
| 240 | for (linkPtr = Blt_ChainFirstLink(graphPtr->elements.displayList);
|
---|
| 241 | linkPtr != NULL; linkPtr = Blt_ChainNextLink(linkPtr)) {
|
---|
| 242 | elemPtr = Blt_ChainGetValue(linkPtr);
|
---|
| 243 | ! if (!elemPtr->hidden) {
|
---|
| 244 | ! (*elemPtr->procsPtr->extentsProc) (elemPtr, &exts);
|
---|
| 245 | ! GetDataLimits(elemPtr->axes.x, exts.left, exts.right);
|
---|
| 246 | ! GetDataLimits(elemPtr->axes.y, exts.top, exts.bottom);
|
---|
| 247 | ! }
|
---|
| 248 | }
|
---|
| 249 | /*
|
---|
| 250 | * Step 3: Now that we know the range of data values for each axis,
|
---|
| 251 | diff -cr blt2.4z/src/bltGrElem.c blt2.4z-new/src/bltGrElem.c
|
---|
| 252 | *** blt2.4z/src/bltGrElem.c 2002-09-18 17:30:51.000000000 -0500
|
---|
| 253 | --- blt2.4z-new/src/bltGrElem.c 2002-12-02 22:42:31.000000000 -0600
|
---|
| 254 | ***************
|
---|
| 255 | *** 1215,1223 ****
|
---|
| 256 | {
|
---|
| 257 | int nNames; /* Number of names found in Tcl name list */
|
---|
| 258 | char **nameArr; /* Broken out array of element names */
|
---|
| 259 | - Blt_HashSearch cursor;
|
---|
| 260 | register int i;
|
---|
| 261 | - register Blt_HashEntry *hPtr;
|
---|
| 262 | Element *elemPtr; /* Element information record */
|
---|
| 263 |
|
---|
| 264 | if (Tcl_SplitList(graphPtr->interp, newList, &nNames, &nameArr) != TCL_OK) {
|
---|
| 265 | --- 1215,1221 ----
|
---|
| 266 | ***************
|
---|
| 267 | *** 1227,1243 ****
|
---|
| 268 | }
|
---|
| 269 | /* Clear the display list and mark all elements as hidden. */
|
---|
| 270 | Blt_ChainReset(graphPtr->elements.displayList);
|
---|
| 271 | - for (hPtr = Blt_FirstHashEntry(&graphPtr->elements.table, &cursor);
|
---|
| 272 | - hPtr != NULL; hPtr = Blt_NextHashEntry(&cursor)) {
|
---|
| 273 | - elemPtr = (Element *)Blt_GetHashValue(hPtr);
|
---|
| 274 | - elemPtr->hidden = TRUE;
|
---|
| 275 | - }
|
---|
| 276 |
|
---|
| 277 | /* Rebuild the display list, checking that each name it exists
|
---|
| 278 | * (currently ignoring invalid element names). */
|
---|
| 279 | for (i = 0; i < nNames; i++) {
|
---|
| 280 | if (NameToElement(graphPtr, nameArr[i], &elemPtr) == TCL_OK) {
|
---|
| 281 | - elemPtr->hidden = FALSE;
|
---|
| 282 | Blt_ChainAppend(graphPtr->elements.displayList, elemPtr);
|
---|
| 283 | }
|
---|
| 284 | }
|
---|
| 285 | --- 1225,1235 ----
|
---|
| 286 | ***************
|
---|
| 287 | *** 1399,1406 ****
|
---|
| 288 | /* Comment the PostScript to indicate the start of the element */
|
---|
| 289 | Blt_FormatToPostScript(psToken, "\n%% Element \"%s\"\n\n",
|
---|
| 290 | elemPtr->name);
|
---|
| 291 | ! (*elemPtr->procsPtr->printNormalProc) (graphPtr, psToken,
|
---|
| 292 | ! elemPtr);
|
---|
| 293 | }
|
---|
| 294 | }
|
---|
| 295 | }
|
---|
| 296 | --- 1391,1397 ----
|
---|
| 297 | /* Comment the PostScript to indicate the start of the element */
|
---|
| 298 | Blt_FormatToPostScript(psToken, "\n%% Element \"%s\"\n\n",
|
---|
| 299 | elemPtr->name);
|
---|
| 300 | ! (*elemPtr->procsPtr->printNormalProc) (graphPtr, psToken, elemPtr);
|
---|
| 301 | }
|
---|
| 302 | }
|
---|
| 303 | }
|
---|
| 304 | ***************
|
---|
| 305 | *** 1426,1433 ****
|
---|
| 306 | if ((!elemPtr->hidden) && (elemPtr->flags & ELEM_ACTIVE)) {
|
---|
| 307 | Blt_FormatToPostScript(psToken, "\n%% Active Element \"%s\"\n\n",
|
---|
| 308 | elemPtr->name);
|
---|
| 309 | ! (*elemPtr->procsPtr->printActiveProc) (graphPtr, psToken,
|
---|
| 310 | ! elemPtr);
|
---|
| 311 | }
|
---|
| 312 | }
|
---|
| 313 | }
|
---|
| 314 | --- 1417,1423 ----
|
---|
| 315 | if ((!elemPtr->hidden) && (elemPtr->flags & ELEM_ACTIVE)) {
|
---|
| 316 | Blt_FormatToPostScript(psToken, "\n%% Active Element \"%s\"\n\n",
|
---|
| 317 | elemPtr->name);
|
---|
| 318 | ! (*elemPtr->procsPtr->printActiveProc) (graphPtr, psToken, elemPtr);
|
---|
| 319 | }
|
---|
| 320 | }
|
---|
| 321 | }
|
---|
| 322 | ***************
|
---|
| 323 | *** 1671,1676 ****
|
---|
| 324 | --- 1661,1667 ----
|
---|
| 325 | ClosestSearch search;
|
---|
| 326 | int i, x, y;
|
---|
| 327 | int flags = TCL_LEAVE_ERR_MSG;
|
---|
| 328 | + int found;
|
---|
| 329 |
|
---|
| 330 | if (graphPtr->flags & RESET_AXES) {
|
---|
| 331 | Blt_ResetAxes(graphPtr);
|
---|
| 332 | ***************
|
---|
| 333 | *** 1715,1727 ****
|
---|
| 334 | search.dist = (double)(search.halo + 1);
|
---|
| 335 |
|
---|
| 336 | if (i < argc) {
|
---|
| 337 | for ( /* empty */ ; i < argc; i++) {
|
---|
| 338 | if (NameToElement(graphPtr, argv[i], &elemPtr) != TCL_OK) {
|
---|
| 339 | return TCL_ERROR; /* Can't find named element */
|
---|
| 340 | }
|
---|
| 341 | ! if (elemPtr->hidden) {
|
---|
| 342 | Tcl_AppendResult(interp, "element \"", argv[i], "\" is hidden",
|
---|
| 343 | ! (char *)NULL);
|
---|
| 344 | return TCL_ERROR; /* Element isn't visible */
|
---|
| 345 | }
|
---|
| 346 | /* Check if the X or Y vectors have notifications pending */
|
---|
| 347 | --- 1706,1728 ----
|
---|
| 348 | search.dist = (double)(search.halo + 1);
|
---|
| 349 |
|
---|
| 350 | if (i < argc) {
|
---|
| 351 | + Blt_ChainLink *linkPtr;
|
---|
| 352 | +
|
---|
| 353 | for ( /* empty */ ; i < argc; i++) {
|
---|
| 354 | if (NameToElement(graphPtr, argv[i], &elemPtr) != TCL_OK) {
|
---|
| 355 | return TCL_ERROR; /* Can't find named element */
|
---|
| 356 | }
|
---|
| 357 | ! found = FALSE;
|
---|
| 358 | ! for (linkPtr = Blt_ChainFirstLink(graphPtr->elements.displayList);
|
---|
| 359 | ! linkPtr == NULL; linkPtr = Blt_ChainNextLink(linkPtr)) {
|
---|
| 360 | ! if (elemPtr == Blt_ChainGetValue(linkPtr)) {
|
---|
| 361 | ! found = TRUE;
|
---|
| 362 | ! break;
|
---|
| 363 | ! }
|
---|
| 364 | ! }
|
---|
| 365 | ! if ((!found) || (elemPtr->hidden)) {
|
---|
| 366 | Tcl_AppendResult(interp, "element \"", argv[i], "\" is hidden",
|
---|
| 367 | ! (char *)NULL);
|
---|
| 368 | return TCL_ERROR; /* Element isn't visible */
|
---|
| 369 | }
|
---|
| 370 | /* Check if the X or Y vectors have notifications pending */
|
---|
| 371 | ***************
|
---|
| 372 | *** 1744,1759 ****
|
---|
| 373 | for (linkPtr = Blt_ChainLastLink(graphPtr->elements.displayList);
|
---|
| 374 | linkPtr != NULL; linkPtr = Blt_ChainPrevLink(linkPtr)) {
|
---|
| 375 | elemPtr = Blt_ChainGetValue(linkPtr);
|
---|
| 376 | -
|
---|
| 377 | /* Check if the X or Y vectors have notifications pending */
|
---|
| 378 | ! if ((elemPtr->flags & MAP_ITEM) ||
|
---|
| 379 | (Blt_VectorNotifyPending(elemPtr->x.clientId)) ||
|
---|
| 380 | (Blt_VectorNotifyPending(elemPtr->y.clientId))) {
|
---|
| 381 | continue;
|
---|
| 382 | }
|
---|
| 383 | ! if (!elemPtr->hidden) {
|
---|
| 384 | ! (*elemPtr->procsPtr->closestProc) (graphPtr, elemPtr, &search);
|
---|
| 385 | ! }
|
---|
| 386 | }
|
---|
| 387 |
|
---|
| 388 | }
|
---|
| 389 | --- 1745,1758 ----
|
---|
| 390 | for (linkPtr = Blt_ChainLastLink(graphPtr->elements.displayList);
|
---|
| 391 | linkPtr != NULL; linkPtr = Blt_ChainPrevLink(linkPtr)) {
|
---|
| 392 | elemPtr = Blt_ChainGetValue(linkPtr);
|
---|
| 393 | /* Check if the X or Y vectors have notifications pending */
|
---|
| 394 | ! if ((elemPtr->hidden) ||
|
---|
| 395 | ! (elemPtr->flags & MAP_ITEM) ||
|
---|
| 396 | (Blt_VectorNotifyPending(elemPtr->x.clientId)) ||
|
---|
| 397 | (Blt_VectorNotifyPending(elemPtr->y.clientId))) {
|
---|
| 398 | continue;
|
---|
| 399 | }
|
---|
| 400 | ! (*elemPtr->procsPtr->closestProc)(graphPtr, elemPtr, &search);
|
---|
| 401 | }
|
---|
| 402 |
|
---|
| 403 | }
|
---|
| 404 | ***************
|
---|
| 405 | *** 1859,1888 ****
|
---|
| 406 | return TCL_ERROR; /* Failed to configure element */
|
---|
| 407 | }
|
---|
| 408 | if (Blt_ConfigModified(elemPtr->specsPtr, "-hide", (char *)NULL)) {
|
---|
| 409 | - Blt_ChainLink *linkPtr;
|
---|
| 410 | -
|
---|
| 411 | - for (linkPtr = Blt_ChainFirstLink(graphPtr->elements.displayList);
|
---|
| 412 | - linkPtr != NULL; linkPtr = Blt_ChainNextLink(linkPtr)) {
|
---|
| 413 | - if (elemPtr == Blt_ChainGetValue(linkPtr)) {
|
---|
| 414 | - break;
|
---|
| 415 | - }
|
---|
| 416 | - }
|
---|
| 417 | - if ((elemPtr->hidden) != (linkPtr == NULL)) {
|
---|
| 418 | -
|
---|
| 419 | - /* The element's "hidden" variable is out of sync with
|
---|
| 420 | - * the display list. [That's what you get for having
|
---|
| 421 | - * two ways to do the same thing.] This affects what
|
---|
| 422 | - * elements are considered for axis ranges and
|
---|
| 423 | - * displayed in the legend. Update the display list by
|
---|
| 424 | - * either by adding or removing the element. */
|
---|
| 425 | -
|
---|
| 426 | - if (linkPtr == NULL) {
|
---|
| 427 | - Blt_ChainPrepend(graphPtr->elements.displayList, elemPtr);
|
---|
| 428 | - } else {
|
---|
| 429 | - Blt_ChainDeleteLink(graphPtr->elements.displayList,
|
---|
| 430 | - linkPtr);
|
---|
| 431 | - }
|
---|
| 432 | - }
|
---|
| 433 | graphPtr->flags |= RESET_AXES;
|
---|
| 434 | elemPtr->flags |= MAP_ITEM;
|
---|
| 435 | }
|
---|
| 436 | --- 1858,1863 ----
|
---|
| 437 | diff -cr blt2.4z/src/bltGrMarker.c blt2.4z-new/src/bltGrMarker.c
|
---|
| 438 | *** blt2.4z/src/bltGrMarker.c 2002-09-18 17:30:51.000000000 -0500
|
---|
| 439 | --- blt2.4z-new/src/bltGrMarker.c 2002-12-11 01:55:27.000000000 -0600
|
---|
| 440 | ***************
|
---|
| 441 | *** 29,34 ****
|
---|
| 442 | --- 29,37 ----
|
---|
| 443 | #include "bltChain.h"
|
---|
| 444 | #include "bltGrElem.h"
|
---|
| 445 |
|
---|
| 446 | + #define GETBITMAP(b) \
|
---|
| 447 | + (((b)->destBitmap == None) ? (b)->srcBitmap : (b)->destBitmap)
|
---|
| 448 | +
|
---|
| 449 | #define MAX_OUTLINE_POINTS 12
|
---|
| 450 |
|
---|
| 451 | /* Map graph coordinates to normalized coordinates [0..1] */
|
---|
| 452 | ***************
|
---|
| 453 | *** 812,818 ****
|
---|
| 454 |
|
---|
| 455 | /* Polygon specific attributes and fields */
|
---|
| 456 |
|
---|
| 457 | ! Point2D *screenPts;
|
---|
| 458 |
|
---|
| 459 | ColorPair outline;
|
---|
| 460 | ColorPair fill;
|
---|
| 461 | --- 815,827 ----
|
---|
| 462 |
|
---|
| 463 | /* Polygon specific attributes and fields */
|
---|
| 464 |
|
---|
| 465 | ! Point2D *screenPts; /* Array of points representing the
|
---|
| 466 | ! * polygon in screen coordinates. It's
|
---|
| 467 | ! * not used for drawing, but to
|
---|
| 468 | ! * generate the outlinePts and fillPts
|
---|
| 469 | ! * arrays that are the coordinates of
|
---|
| 470 | ! * the possibly clipped outline and
|
---|
| 471 | ! * filled polygon. */
|
---|
| 472 |
|
---|
| 473 | ColorPair outline;
|
---|
| 474 | ColorPair fill;
|
---|
| 475 | ***************
|
---|
| 476 | *** 1563,1571 ****
|
---|
| 477 | if (bmPtr->srcBitmap == None) {
|
---|
| 478 | return TCL_OK;
|
---|
| 479 | }
|
---|
| 480 | - if (bmPtr->destBitmap == None) {
|
---|
| 481 | - bmPtr->destBitmap = bmPtr->srcBitmap;
|
---|
| 482 | - }
|
---|
| 483 | bmPtr->theta = FMOD(bmPtr->rotate, 360.0);
|
---|
| 484 | if (bmPtr->theta < 0.0) {
|
---|
| 485 | bmPtr->theta += 360.0;
|
---|
| 486 | --- 1572,1577 ----
|
---|
| 487 | ***************
|
---|
| 488 | *** 1650,1658 ****
|
---|
| 489 | if (bmPtr->srcBitmap == None) {
|
---|
| 490 | return;
|
---|
| 491 | }
|
---|
| 492 | ! if (bmPtr->destBitmap != bmPtr->srcBitmap) {
|
---|
| 493 | Tk_FreePixmap(graphPtr->display, bmPtr->destBitmap);
|
---|
| 494 | ! bmPtr->destBitmap = bmPtr->srcBitmap;
|
---|
| 495 | }
|
---|
| 496 | /*
|
---|
| 497 | * Collect the coordinates. The number of coordinates will determine
|
---|
| 498 | --- 1656,1664 ----
|
---|
| 499 | if (bmPtr->srcBitmap == None) {
|
---|
| 500 | return;
|
---|
| 501 | }
|
---|
| 502 | ! if (bmPtr->destBitmap != None) {
|
---|
| 503 | Tk_FreePixmap(graphPtr->display, bmPtr->destBitmap);
|
---|
| 504 | ! bmPtr->destBitmap = None;
|
---|
| 505 | }
|
---|
| 506 | /*
|
---|
| 507 | * Collect the coordinates. The number of coordinates will determine
|
---|
| 508 | ***************
|
---|
| 509 | *** 1752,1758 ****
|
---|
| 510 | } else {
|
---|
| 511 | bmPtr->destWidth = srcWidth;
|
---|
| 512 | bmPtr->destHeight = srcHeight;
|
---|
| 513 | ! bmPtr->destBitmap = bmPtr->srcBitmap;
|
---|
| 514 | }
|
---|
| 515 | bmPtr->anchorPos = anchorPos;
|
---|
| 516 | {
|
---|
| 517 | --- 1758,1764 ----
|
---|
| 518 | } else {
|
---|
| 519 | bmPtr->destWidth = srcWidth;
|
---|
| 520 | bmPtr->destHeight = srcHeight;
|
---|
| 521 | ! bmPtr->destBitmap = None;
|
---|
| 522 | }
|
---|
| 523 | bmPtr->anchorPos = anchorPos;
|
---|
| 524 | {
|
---|
| 525 | ***************
|
---|
| 526 | *** 1909,1917 ****
|
---|
| 527 | Graph *graphPtr = markerPtr->graphPtr;
|
---|
| 528 | BitmapMarker *bmPtr = (BitmapMarker *)markerPtr;
|
---|
| 529 | double theta;
|
---|
| 530 |
|
---|
| 531 | ! if ((bmPtr->destBitmap == None) || (bmPtr->destWidth < 1) ||
|
---|
| 532 | ! (bmPtr->destHeight < 1)) {
|
---|
| 533 | return;
|
---|
| 534 | }
|
---|
| 535 | theta = FMOD(bmPtr->theta, (double)90.0);
|
---|
| 536 | --- 1915,1924 ----
|
---|
| 537 | Graph *graphPtr = markerPtr->graphPtr;
|
---|
| 538 | BitmapMarker *bmPtr = (BitmapMarker *)markerPtr;
|
---|
| 539 | double theta;
|
---|
| 540 | + Pixmap bitmap;
|
---|
| 541 |
|
---|
| 542 | ! bitmap = GETBITMAP(bmPtr);
|
---|
| 543 | ! if ((bitmap == None) || (bmPtr->destWidth < 1) || (bmPtr->destHeight < 1)) {
|
---|
| 544 | return;
|
---|
| 545 | }
|
---|
| 546 | theta = FMOD(bmPtr->theta, (double)90.0);
|
---|
| 547 | ***************
|
---|
| 548 | *** 1934,1947 ****
|
---|
| 549 | XFillPolygon(graphPtr->display, drawable, bmPtr->fillGC,
|
---|
| 550 | polygon, bmPtr->nOutlinePts, Convex, CoordModeOrigin);
|
---|
| 551 | }
|
---|
| 552 | ! XSetClipMask(graphPtr->display, bmPtr->gc, bmPtr->destBitmap);
|
---|
| 553 | XSetClipOrigin(graphPtr->display, bmPtr->gc, (int)bmPtr->anchorPos.x,
|
---|
| 554 | (int)bmPtr->anchorPos.y);
|
---|
| 555 | } else {
|
---|
| 556 | XSetClipMask(graphPtr->display, bmPtr->gc, None);
|
---|
| 557 | XSetClipOrigin(graphPtr->display, bmPtr->gc, 0, 0);
|
---|
| 558 | }
|
---|
| 559 | ! XCopyPlane(graphPtr->display, bmPtr->destBitmap, drawable, bmPtr->gc, 0, 0,
|
---|
| 560 | bmPtr->destWidth, bmPtr->destHeight, (int)bmPtr->anchorPos.x,
|
---|
| 561 | (int)bmPtr->anchorPos.y, 1);
|
---|
| 562 | }
|
---|
| 563 | --- 1941,1954 ----
|
---|
| 564 | XFillPolygon(graphPtr->display, drawable, bmPtr->fillGC,
|
---|
| 565 | polygon, bmPtr->nOutlinePts, Convex, CoordModeOrigin);
|
---|
| 566 | }
|
---|
| 567 | ! XSetClipMask(graphPtr->display, bmPtr->gc, bitmap);
|
---|
| 568 | XSetClipOrigin(graphPtr->display, bmPtr->gc, (int)bmPtr->anchorPos.x,
|
---|
| 569 | (int)bmPtr->anchorPos.y);
|
---|
| 570 | } else {
|
---|
| 571 | XSetClipMask(graphPtr->display, bmPtr->gc, None);
|
---|
| 572 | XSetClipOrigin(graphPtr->display, bmPtr->gc, 0, 0);
|
---|
| 573 | }
|
---|
| 574 | ! XCopyPlane(graphPtr->display, bitmap, drawable, bmPtr->gc, 0, 0,
|
---|
| 575 | bmPtr->destWidth, bmPtr->destHeight, (int)bmPtr->anchorPos.x,
|
---|
| 576 | (int)bmPtr->anchorPos.y, 1);
|
---|
| 577 | }
|
---|
| 578 | ***************
|
---|
| 579 | *** 1965,1972 ****
|
---|
| 580 | {
|
---|
| 581 | Graph *graphPtr = markerPtr->graphPtr;
|
---|
| 582 | BitmapMarker *bmPtr = (BitmapMarker *)markerPtr;
|
---|
| 583 |
|
---|
| 584 | ! if (bmPtr->destBitmap == None) {
|
---|
| 585 | return;
|
---|
| 586 | }
|
---|
| 587 | if (bmPtr->fillColor != NULL) {
|
---|
| 588 | --- 1972,1981 ----
|
---|
| 589 | {
|
---|
| 590 | Graph *graphPtr = markerPtr->graphPtr;
|
---|
| 591 | BitmapMarker *bmPtr = (BitmapMarker *)markerPtr;
|
---|
| 592 | + Pixmap bitmap;
|
---|
| 593 |
|
---|
| 594 | ! bitmap = GETBITMAP(bmPtr);
|
---|
| 595 | ! if (bitmap == None) {
|
---|
| 596 | return;
|
---|
| 597 | }
|
---|
| 598 | if (bmPtr->fillColor != NULL) {
|
---|
| 599 | ***************
|
---|
| 600 | *** 1982,1988 ****
|
---|
| 601 | Blt_FormatToPostScript(psToken, " %d %d true [%d 0 0 %d 0 %d] {",
|
---|
| 602 | bmPtr->destWidth, bmPtr->destHeight, bmPtr->destWidth,
|
---|
| 603 | -bmPtr->destHeight, bmPtr->destHeight);
|
---|
| 604 | ! Blt_BitmapDataToPostScript(psToken, graphPtr->display, bmPtr->destBitmap,
|
---|
| 605 | bmPtr->destWidth, bmPtr->destHeight);
|
---|
| 606 | Blt_AppendToPostScript(psToken, " } imagemask\n",
|
---|
| 607 | "grestore\n", (char *)NULL);
|
---|
| 608 | --- 1991,1997 ----
|
---|
| 609 | Blt_FormatToPostScript(psToken, " %d %d true [%d 0 0 %d 0 %d] {",
|
---|
| 610 | bmPtr->destWidth, bmPtr->destHeight, bmPtr->destWidth,
|
---|
| 611 | -bmPtr->destHeight, bmPtr->destHeight);
|
---|
| 612 | ! Blt_BitmapDataToPostScript(psToken, graphPtr->display, bitmap,
|
---|
| 613 | bmPtr->destWidth, bmPtr->destHeight);
|
---|
| 614 | Blt_AppendToPostScript(psToken, " } imagemask\n",
|
---|
| 615 | "grestore\n", (char *)NULL);
|
---|
| 616 | ***************
|
---|
| 617 | *** 2018,2024 ****
|
---|
| 618 | if (bmPtr->fillGC != NULL) {
|
---|
| 619 | Tk_FreeGC(graphPtr->display, bmPtr->fillGC);
|
---|
| 620 | }
|
---|
| 621 | ! if (bmPtr->destBitmap != bmPtr->srcBitmap) {
|
---|
| 622 | Tk_FreePixmap(graphPtr->display, bmPtr->destBitmap);
|
---|
| 623 | }
|
---|
| 624 | }
|
---|
| 625 | --- 2027,2033 ----
|
---|
| 626 | if (bmPtr->fillGC != NULL) {
|
---|
| 627 | Tk_FreeGC(graphPtr->display, bmPtr->fillGC);
|
---|
| 628 | }
|
---|
| 629 | ! if (bmPtr->destBitmap != None) {
|
---|
| 630 | Tk_FreePixmap(graphPtr->display, bmPtr->destBitmap);
|
---|
| 631 | }
|
---|
| 632 | }
|
---|
| 633 | ***************
|
---|
| 634 | *** 2127,2134 ****
|
---|
| 635 | imPtr->tkImage = Tk_GetImage(interp, graphPtr->tkwin,
|
---|
| 636 | imPtr->imageName, ImageChangedProc, imPtr);
|
---|
| 637 | if (imPtr->tkImage == NULL) {
|
---|
| 638 | - Tcl_AppendResult(interp, "can't find an image \"",
|
---|
| 639 | - imPtr->imageName, "\"", (char *)NULL);
|
---|
| 640 | Blt_Free(imPtr->imageName);
|
---|
| 641 | imPtr->imageName = NULL;
|
---|
| 642 | return TCL_ERROR;
|
---|
| 643 | --- 2136,2141 ----
|
---|
| 644 | ***************
|
---|
| 645 | *** 2494,2499 ****
|
---|
| 646 | --- 2501,2509 ----
|
---|
| 647 | if (imPtr->srcImage != NULL) {
|
---|
| 648 | Blt_FreeColorImage(imPtr->srcImage);
|
---|
| 649 | }
|
---|
| 650 | + if (imPtr->gc != NULL) {
|
---|
| 651 | + Tk_FreeGC(graphPtr->display, imPtr->gc);
|
---|
| 652 | + }
|
---|
| 653 | }
|
---|
| 654 |
|
---|
| 655 | /*
|
---|
| 656 | ***************
|
---|
| 657 | *** 3747,3757 ****
|
---|
| 658 | {
|
---|
| 659 | PolygonMarker *pmPtr = (PolygonMarker *)markerPtr;
|
---|
| 660 |
|
---|
| 661 | ! if (pmPtr->nWorldPts < 2) {
|
---|
| 662 | ! return FALSE;
|
---|
| 663 | }
|
---|
| 664 | ! return Blt_PointInPolygon(samplePtr, pmPtr->screenPts,
|
---|
| 665 | ! pmPtr->nWorldPts + 1);
|
---|
| 666 | }
|
---|
| 667 |
|
---|
| 668 | /*
|
---|
| 669 | --- 3757,3767 ----
|
---|
| 670 | {
|
---|
| 671 | PolygonMarker *pmPtr = (PolygonMarker *)markerPtr;
|
---|
| 672 |
|
---|
| 673 | ! if ((pmPtr->nWorldPts >= 3) && (pmPtr->screenPts != NULL)) {
|
---|
| 674 | ! return Blt_PointInPolygon(samplePtr, pmPtr->screenPts,
|
---|
| 675 | ! pmPtr->nWorldPts + 1);
|
---|
| 676 | }
|
---|
| 677 | ! return FALSE;
|
---|
| 678 | }
|
---|
| 679 |
|
---|
| 680 | /*
|
---|
| 681 | ***************
|
---|
| 682 | *** 3769,3775 ****
|
---|
| 683 | {
|
---|
| 684 | PolygonMarker *pmPtr = (PolygonMarker *)markerPtr;
|
---|
| 685 |
|
---|
| 686 | ! if (pmPtr->nWorldPts >= 3) {
|
---|
| 687 | return Blt_RegionInPolygon(extsPtr, pmPtr->screenPts, pmPtr->nWorldPts,
|
---|
| 688 | enclosed);
|
---|
| 689 | }
|
---|
| 690 | --- 3779,3785 ----
|
---|
| 691 | {
|
---|
| 692 | PolygonMarker *pmPtr = (PolygonMarker *)markerPtr;
|
---|
| 693 |
|
---|
| 694 | ! if ((pmPtr->nWorldPts >= 3) && (pmPtr->screenPts != NULL)) {
|
---|
| 695 | return Blt_RegionInPolygon(extsPtr, pmPtr->screenPts, pmPtr->nWorldPts,
|
---|
| 696 | enclosed);
|
---|
| 697 | }
|
---|
| 698 | ***************
|
---|
| 699 | *** 4036,4041 ****
|
---|
| 700 | --- 4046,4054 ----
|
---|
| 701 | if (pmPtr->outlinePts != NULL) {
|
---|
| 702 | Blt_Free(pmPtr->outlinePts);
|
---|
| 703 | }
|
---|
| 704 | + if (pmPtr->screenPts != NULL) {
|
---|
| 705 | + Blt_Free(pmPtr->screenPts);
|
---|
| 706 | + }
|
---|
| 707 | Blt_FreeColorPair(&pmPtr->outline);
|
---|
| 708 | Blt_FreeColorPair(&pmPtr->fill);
|
---|
| 709 | }
|
---|
| 710 | ***************
|
---|
| 711 | *** 4260,4265 ****
|
---|
| 712 | --- 4273,4279 ----
|
---|
| 713 | int nNames, nOpts;
|
---|
| 714 | char **options;
|
---|
| 715 | register int i;
|
---|
| 716 | + int under;
|
---|
| 717 |
|
---|
| 718 | /* Figure out where the option value pairs begin */
|
---|
| 719 | argc -= 3;
|
---|
| 720 | ***************
|
---|
| 721 | *** 4289,4294 ****
|
---|
| 722 | --- 4303,4309 ----
|
---|
| 723 | }
|
---|
| 724 | /* Save the old marker. */
|
---|
| 725 | oldName = markerPtr->name;
|
---|
| 726 | + under = markerPtr->drawUnder;
|
---|
| 727 | if (Tk_ConfigureWidget(interp, graphPtr->tkwin,
|
---|
| 728 | markerPtr->classPtr->configSpecs, nOpts, options,
|
---|
| 729 | (char *)markerPtr, flags) != TCL_OK) {
|
---|
| 730 | ***************
|
---|
| 731 | *** 4304,4309 ****
|
---|
| 732 | --- 4319,4327 ----
|
---|
| 733 | if ((*markerPtr->classPtr->configProc) (markerPtr) != TCL_OK) {
|
---|
| 734 | return TCL_ERROR;
|
---|
| 735 | }
|
---|
| 736 | + if (markerPtr->drawUnder != under) {
|
---|
| 737 | + graphPtr->flags |= REDRAW_BACKING_STORE;
|
---|
| 738 | + }
|
---|
| 739 | }
|
---|
| 740 | return TCL_OK;
|
---|
| 741 | }
|
---|
| 742 | ***************
|
---|
| 743 | *** 4942,4948 ****
|
---|
| 744 | --- 4960,4973 ----
|
---|
| 745 | for (linkPtr = Blt_ChainLastLink(graphPtr->markers.displayList);
|
---|
| 746 | linkPtr != NULL; linkPtr = Blt_ChainPrevLink(linkPtr)) {
|
---|
| 747 | markerPtr = Blt_ChainGetValue(linkPtr);
|
---|
| 748 | + /*
|
---|
| 749 | + * Don't consider markers that are pending to be mapped. Even
|
---|
| 750 | + * if the marker has already been mapped, the coordinates
|
---|
| 751 | + * could be invalid now. Better to pick no marker than the
|
---|
| 752 | + * wrong marker.
|
---|
| 753 | + */
|
---|
| 754 | if ((markerPtr->drawUnder == under) && (markerPtr->nWorldPts > 0) &&
|
---|
| 755 | + ((markerPtr->flags & MAP_ITEM) == 0) &&
|
---|
| 756 | (!markerPtr->hidden) && (markerPtr->state == STATE_NORMAL)) {
|
---|
| 757 | if ((*markerPtr->classPtr->pointProc) (markerPtr, &point)) {
|
---|
| 758 | return markerPtr;
|
---|
| 759 | Only in blt2.4z-new/src: bltHash.h
|
---|
| 760 | diff -cr blt2.4z/src/bltInit.c blt2.4z-new/src/bltInit.c
|
---|
| 761 | *** blt2.4z/src/bltInit.c 2002-09-10 00:12:33.000000000 -0500
|
---|
| 762 | --- blt2.4z-new/src/bltInit.c 2002-12-02 22:25:33.000000000 -0600
|
---|
| 763 | ***************
|
---|
| 764 | *** 38,54 ****
|
---|
| 765 | #endif
|
---|
| 766 | #endif
|
---|
| 767 |
|
---|
| 768 | double bltNaN;
|
---|
| 769 | #if (TCL_MAJOR_VERSION > 7)
|
---|
| 770 | Tcl_Obj *bltEmptyStringObjPtr;
|
---|
| 771 | #endif
|
---|
| 772 |
|
---|
| 773 | static Tcl_MathProc MinMathProc, MaxMathProc;
|
---|
| 774 | - static int tclLoaded = FALSE;
|
---|
| 775 | - #ifndef TCL_ONLY
|
---|
| 776 | - static int tkLoaded = FALSE;
|
---|
| 777 | - #endif
|
---|
| 778 | -
|
---|
| 779 | static char libPath[1024] =
|
---|
| 780 | {
|
---|
| 781 | BLT_LIBRARY
|
---|
| 782 | --- 38,53 ----
|
---|
| 783 | #endif
|
---|
| 784 | #endif
|
---|
| 785 |
|
---|
| 786 | + #define BLT_THREAD_KEY "BLT Initialized"
|
---|
| 787 | + #define BLT_TCL_CMDS (1<<0)
|
---|
| 788 | + #define BLT_TK_CMDS (1<<1)
|
---|
| 789 | +
|
---|
| 790 | double bltNaN;
|
---|
| 791 | #if (TCL_MAJOR_VERSION > 7)
|
---|
| 792 | Tcl_Obj *bltEmptyStringObjPtr;
|
---|
| 793 | #endif
|
---|
| 794 |
|
---|
| 795 | static Tcl_MathProc MinMathProc, MaxMathProc;
|
---|
| 796 | static char libPath[1024] =
|
---|
| 797 | {
|
---|
| 798 | BLT_LIBRARY
|
---|
| 799 | ***************
|
---|
| 800 | *** 404,410 ****
|
---|
| 801 | Blt_Init(interp)
|
---|
| 802 | Tcl_Interp *interp; /* Interpreter to add extra commands */
|
---|
| 803 | {
|
---|
| 804 | ! if (!tclLoaded) {
|
---|
| 805 | register Tcl_AppInitProc **p;
|
---|
| 806 | Tcl_Namespace *nsPtr;
|
---|
| 807 | Tcl_ValueType args[2];
|
---|
| 808 | --- 403,412 ----
|
---|
| 809 | Blt_Init(interp)
|
---|
| 810 | Tcl_Interp *interp; /* Interpreter to add extra commands */
|
---|
| 811 | {
|
---|
| 812 | ! int flags;
|
---|
| 813 | !
|
---|
| 814 | ! flags = (int)Tcl_GetAssocData(interp, BLT_THREAD_KEY, NULL);
|
---|
| 815 | ! if ((flags & BLT_TCL_CMDS) == 0) {
|
---|
| 816 | register Tcl_AppInitProc **p;
|
---|
| 817 | Tcl_Namespace *nsPtr;
|
---|
| 818 | Tcl_ValueType args[2];
|
---|
| 819 | ***************
|
---|
| 820 | *** 451,460 ****
|
---|
| 821 | if (Tcl_PkgProvide(interp, "BLT", BLT_VERSION) != TCL_OK) {
|
---|
| 822 | return TCL_ERROR;
|
---|
| 823 | }
|
---|
| 824 | ! tclLoaded = TRUE;
|
---|
| 825 | }
|
---|
| 826 | #ifndef TCL_ONLY
|
---|
| 827 | ! if (!tkLoaded) {
|
---|
| 828 | register Tcl_AppInitProc **p;
|
---|
| 829 | Tcl_Namespace *nsPtr;
|
---|
| 830 |
|
---|
| 831 | --- 453,463 ----
|
---|
| 832 | if (Tcl_PkgProvide(interp, "BLT", BLT_VERSION) != TCL_OK) {
|
---|
| 833 | return TCL_ERROR;
|
---|
| 834 | }
|
---|
| 835 | ! Tcl_SetAssocData(interp, BLT_THREAD_KEY, NULL,
|
---|
| 836 | ! (ClientData)(flags | BLT_TCL_CMDS));
|
---|
| 837 | }
|
---|
| 838 | #ifndef TCL_ONLY
|
---|
| 839 | ! if ((flags & BLT_TK_CMDS) == 0) {
|
---|
| 840 | register Tcl_AppInitProc **p;
|
---|
| 841 | Tcl_Namespace *nsPtr;
|
---|
| 842 |
|
---|
| 843 | ***************
|
---|
| 844 | *** 486,492 ****
|
---|
| 845 | }
|
---|
| 846 | }
|
---|
| 847 | Blt_InitEpsCanvasItem(interp);
|
---|
| 848 | ! tkLoaded = TRUE;
|
---|
| 849 | }
|
---|
| 850 | #endif
|
---|
| 851 | return TCL_OK;
|
---|
| 852 | --- 489,496 ----
|
---|
| 853 | }
|
---|
| 854 | }
|
---|
| 855 | Blt_InitEpsCanvasItem(interp);
|
---|
| 856 | ! Tcl_SetAssocData(interp, BLT_THREAD_KEY, NULL,
|
---|
| 857 | ! (ClientData)(flags | BLT_TK_CMDS));
|
---|
| 858 | }
|
---|
| 859 | #endif
|
---|
| 860 | return TCL_OK;
|
---|
| 861 | ***************
|
---|
| 862 | *** 499,505 ****
|
---|
| 863 | Blt_Init(interp)
|
---|
| 864 | Tcl_Interp *interp; /* Interpreter to add extra commands */
|
---|
| 865 | {
|
---|
| 866 | ! if (!tclLoaded) {
|
---|
| 867 | register Tcl_AppInitProc **p;
|
---|
| 868 | Tcl_ValueType args[2];
|
---|
| 869 |
|
---|
| 870 | --- 503,512 ----
|
---|
| 871 | Blt_Init(interp)
|
---|
| 872 | Tcl_Interp *interp; /* Interpreter to add extra commands */
|
---|
| 873 | {
|
---|
| 874 | ! int flags;
|
---|
| 875 | !
|
---|
| 876 | ! flags = (int)Tcl_GetAssocData(interp, BLT_THREAD_KEY, NULL);
|
---|
| 877 | ! if ((flags & BLT_TCL_CMDS) == 0) {
|
---|
| 878 | register Tcl_AppInitProc **p;
|
---|
| 879 | Tcl_ValueType args[2];
|
---|
| 880 |
|
---|
| 881 | ***************
|
---|
| 882 | *** 537,546 ****
|
---|
| 883 | if (Tcl_PkgProvide(interp, "BLT", BLT_VERSION) != TCL_OK) {
|
---|
| 884 | return TCL_ERROR;
|
---|
| 885 | }
|
---|
| 886 | ! tclLoaded = TRUE;
|
---|
| 887 | }
|
---|
| 888 | #ifndef TCL_ONLY
|
---|
| 889 | ! if (!tkLoaded) {
|
---|
| 890 | register Tcl_AppInitProc **p;
|
---|
| 891 |
|
---|
| 892 | #if (TCL_VERSION_NUMBER >= _VERSION(8,1,0))
|
---|
| 893 | --- 544,554 ----
|
---|
| 894 | if (Tcl_PkgProvide(interp, "BLT", BLT_VERSION) != TCL_OK) {
|
---|
| 895 | return TCL_ERROR;
|
---|
| 896 | }
|
---|
| 897 | ! Tcl_SetAssocData(interp, BLT_THREAD_KEY, NULL,
|
---|
| 898 | ! (ClientData)(flags | BLT_TCL_CMDS));
|
---|
| 899 | }
|
---|
| 900 | #ifndef TCL_ONLY
|
---|
| 901 | ! if ((flags & BLT_TK_CMDS) == 0) {
|
---|
| 902 | register Tcl_AppInitProc **p;
|
---|
| 903 |
|
---|
| 904 | #if (TCL_VERSION_NUMBER >= _VERSION(8,1,0))
|
---|
| 905 | ***************
|
---|
| 906 | *** 560,566 ****
|
---|
| 907 | }
|
---|
| 908 | }
|
---|
| 909 | Blt_InitEpsCanvasItem(interp);
|
---|
| 910 | ! tkLoaded = TRUE;
|
---|
| 911 | }
|
---|
| 912 | #endif
|
---|
| 913 | return TCL_OK;
|
---|
| 914 | --- 568,575 ----
|
---|
| 915 | }
|
---|
| 916 | }
|
---|
| 917 | Blt_InitEpsCanvasItem(interp);
|
---|
| 918 | ! Tcl_SetAssocData(interp, BLT_THREAD_KEY, NULL,
|
---|
| 919 | ! (ClientData)(flags | BLT_TK_CMDS));
|
---|
| 920 | }
|
---|
| 921 | #endif
|
---|
| 922 | return TCL_OK;
|
---|
| 923 | diff -cr blt2.4z/src/bltTreeView.c blt2.4z-new/src/bltTreeView.c
|
---|
| 924 | *** blt2.4z/src/bltTreeView.c 2002-08-15 23:15:04.000000000 -0500
|
---|
| 925 | --- blt2.4z-new/src/bltTreeView.c 2003-03-04 11:15:34.000000000 -0600
|
---|
| 926 | ***************
|
---|
| 927 | *** 3866,3871 ****
|
---|
| 928 | --- 3866,3872 ----
|
---|
| 929 | assert(tvPtr->visibleArr);
|
---|
| 930 | }
|
---|
| 931 | tvPtr->nVisible = 0;
|
---|
| 932 | + tvPtr->visibleArr[0] = NULL;
|
---|
| 933 |
|
---|
| 934 | if (tvPtr->rootPtr->flags & ENTRY_HIDDEN) {
|
---|
| 935 | return TCL_OK; /* Root node is hidden. */
|
---|
| 936 | ***************
|
---|
| 937 | *** 4631,4636 ****
|
---|
| 938 | --- 4632,4640 ----
|
---|
| 939 | int width;
|
---|
| 940 | int x0, cx, xOffset;
|
---|
| 941 |
|
---|
| 942 | + if (tvPtr->titleHeight < 1) {
|
---|
| 943 | + return;
|
---|
| 944 | + }
|
---|
| 945 | columnWidth = columnPtr->width;
|
---|
| 946 | cx = x;
|
---|
| 947 | if (columnPtr->position == Blt_ChainGetLength(tvPtr->colChainPtr)) {
|
---|
| 948 | Only in blt2.4z/src: pure_api.c
|
---|