summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjoye <joye>2014-05-12 17:33:44 (GMT)
committerjoye <joye>2014-05-12 17:33:44 (GMT)
commit1721696040be998f3b2d05af9a00ef9c4b385c56 (patch)
treed9185d972e2249546e1d5c875c2b7ffdea916864
parent16c8493afa265cb31361bbe55649b08b849cb784 (diff)
downloadblt-1721696040be998f3b2d05af9a00ef9c4b385c56.zip
blt-1721696040be998f3b2d05af9a00ef9c4b385c56.tar.gz
blt-1721696040be998f3b2d05af9a00ef9c4b385c56.tar.bz2
*** empty log message ***
-rw-r--r--src/bltGrElemBar.C23
-rw-r--r--src/bltGraphBar.C78
2 files changed, 55 insertions, 46 deletions
diff --git a/src/bltGrElemBar.C b/src/bltGrElemBar.C
index 66ee436..7c86a54 100644
--- a/src/bltGrElemBar.C
+++ b/src/bltGrElemBar.C
@@ -274,7 +274,7 @@ void BarElement::map()
int count = 0;
int ii;
- XRectangle *rp;
+ XRectangle* rp;
for (rp=bars, ii=0; ii<nPoints; ii++) {
// Two opposite corners of the rectangle in graph coordinates
Point2d c1, c2;
@@ -299,16 +299,15 @@ void BarElement::map()
key.value =float(x[ii]);
key.xAxis =ops->xAxis;
key.yAxis =NULL;
- Tcl_HashEntry *hPtr =
- Tcl_FindHashEntry(&barGraphPtr_->setTable_, (char *)&key);
+ Tcl_HashEntry *hPtr = Tcl_FindHashEntry(&barGraphPtr_->setTable_, &key);
if (hPtr) {
cerr << " found " << ii << endl;
Tcl_HashTable *tablePtr = (Tcl_HashTable*)Tcl_GetHashValue(hPtr);
const char *name = (ops->groupName) ? ops->groupName:ops->yAxis->name_;
- hPtr = Tcl_FindHashEntry(tablePtr, name);
- if (hPtr) {
- BarGroup* groupPtr = (BarGroup*)Tcl_GetHashValue(hPtr);
+ Tcl_HashEntry* hPtr2 = Tcl_FindHashEntry(tablePtr, name);
+ if (hPtr2) {
+ BarGroup* groupPtr = (BarGroup*)Tcl_GetHashValue(hPtr2);
double slice = barWidth / (double)barGraphPtr_->maxBarSetSize_;
double offset = (slice * groupPtr->index);
if (barGraphPtr_->maxBarSetSize_ > 1) {
@@ -614,11 +613,11 @@ void BarElement::closest()
double minDist = searchPtr->dist;
int imin = 0;
- int i;
- XRectangle *bp;
- for (bp = bars_, i = 0; i < nBars_; i++, bp++) {
+ int ii;
+ XRectangle* bp;
+ for (bp=bars_, ii=0; ii<nBars_; ii++, bp++) {
if (PointInRectangle(bp, searchPtr->x, searchPtr->y)) {
- imin = barToData_[i];
+ imin = barToData_[ii];
minDist = 0.0;
break;
}
@@ -634,7 +633,7 @@ void BarElement::closest()
outline[3].y = outline[2].y = bottom;
Point2d *pp, *pend;
- for (pp = outline, pend = outline + 4; pp < pend; pp++) {
+ for (pp=outline, pend=outline+4; pp<pend; pp++) {
Point2d t = Blt_GetProjection(searchPtr->x, searchPtr->y, pp, pp + 1);
if (t.x > right)
t.x = right;
@@ -649,7 +648,7 @@ void BarElement::closest()
double dist = hypot((t.x - searchPtr->x), (t.y - searchPtr->y));
if (dist < minDist) {
minDist = dist;
- imin = barToData_[i];
+ imin = barToData_[ii];
}
}
}
diff --git a/src/bltGraphBar.C b/src/bltGraphBar.C
index 30f8e0a..bb7a2f9 100644
--- a/src/bltGraphBar.C
+++ b/src/bltGraphBar.C
@@ -211,7 +211,12 @@ BarGraph::BarGraph(ClientData clientData, Tcl_Interp* interp,
barGroups_ =NULL;
nBarGroups_ =0;
maxBarSetSize_ =0;
- Tcl_InitHashTable(&setTable_, (sizeof(float)+2*sizeof(Axis*)) / sizeof(int));
+ int ss = (sizeof(float)+2*sizeof(Axis*))/sizeof(int);
+ cerr << sizeof(BarSetKey) << '/' << sizeof(int) << '='
+ << sizeof(BarSetKey)/sizeof(int) << '#'
+ << (sizeof(float)+2*sizeof(Axis*)) << '/' << sizeof(int) << '='
+ << ss << endl;
+ Tcl_InitHashTable(&setTable_, ss);
ops->bottomMargin.site = MARGIN_BOTTOM;
ops->leftMargin.site = MARGIN_LEFT;
@@ -358,9 +363,10 @@ void BarGraph::initBarSets()
// of the frequency of each x-coordinate and how many abscissas have
// duplicate mappings.
Tcl_HashTable setTable;
- cerr << (sizeof(float)+2*sizeof(Axis*)) << '#' << sizeof(BarSetKey) << " " << sizeof(int) << '=' << (sizeof(float)+2*sizeof(Axis*)) / sizeof(int) << endl;
- Tcl_InitHashTable(&setTable, (sizeof(float)+2*sizeof(Axis*)) / sizeof(int));
+ int ss = (sizeof(float)+2*sizeof(Axis*))/sizeof(int);
+ Tcl_InitHashTable(&setTable, ss);
int nSegs =0;
+
for (Blt_ChainLink link = Blt_Chain_FirstLink(elements_.displayList);
link; link = Blt_Chain_NextLink(link)) {
BarElement* bePtr = (BarElement*)Blt_Chain_GetValue(link);
@@ -377,62 +383,64 @@ void BarGraph::initBarSets()
key.value =*x;
key.xAxis =ops->xAxis;
key.yAxis =NULL;
+
int isNew;
- Tcl_HashEntry* hPtr =
- Tcl_CreateHashEntry(&setTable, (char*)&key, &isNew);
-
+
+ Tcl_HashEntry* hhPtr =Tcl_CreateHashEntry(&setTable, &key, &isNew);
Tcl_HashTable* tablePtr;
if (isNew) {
tablePtr = (Tcl_HashTable*)malloc(sizeof(Tcl_HashTable));
Tcl_InitHashTable(tablePtr, TCL_STRING_KEYS);
- Tcl_SetHashValue(hPtr, tablePtr);
+ Tcl_SetHashValue(hhPtr, tablePtr);
}
else
- tablePtr = (Tcl_HashTable*)Tcl_GetHashValue(hPtr);
-
- const char* name =
- (ops->groupName) ? ops->groupName : ops->yAxis->name_;
- hPtr = Tcl_CreateHashEntry(tablePtr, name, &isNew);
- size_t count;
- if (isNew)
- count = 1;
- else {
- count = (size_t)Tcl_GetHashValue(hPtr);
+ tablePtr = (Tcl_HashTable*)Tcl_GetHashValue(hhPtr);
+
+ const char* name = (ops->groupName) ?
+ ops->groupName : ops->yAxis->name_;
+ Tcl_HashEntry* hhPtr2 = Tcl_CreateHashEntry(tablePtr, name, &isNew);
+ size_t count =1;
+ if (!isNew) {
+ count = (size_t)Tcl_GetHashValue(hhPtr2);
count++;
}
- Tcl_SetHashValue(hPtr, (ClientData)count);
+ Tcl_SetHashValue(hhPtr2, count);
}
}
}
- if (setTable.numEntries == 0)
- return;
+ // no bar elements to be displayed
+ if (setTable.numEntries == 0)
+ return;
int sum =0;
int max =0;
Tcl_HashSearch iter;
- for (Tcl_HashEntry *hPtr = Tcl_FirstHashEntry(&setTable, &iter); hPtr;
- hPtr = Tcl_NextHashEntry(&iter)) {
- BarSetKey* keyPtr = (BarSetKey*)Tcl_GetHashKey(&setTable, hPtr);
+ for (Tcl_HashEntry *hhPtr = Tcl_FirstHashEntry(&setTable, &iter); hhPtr;
+ hhPtr = Tcl_NextHashEntry(&iter)) {
+ BarSetKey* keyPtr = (BarSetKey*)Tcl_GetHashKey(&setTable, hhPtr);
+ Tcl_HashTable* tablePtr = (Tcl_HashTable*)Tcl_GetHashValue(hhPtr);
+
int isNew;
- Tcl_HashEntry* hPtr2 =
- Tcl_CreateHashEntry(&setTable_, (char*)keyPtr, &isNew);
- Tcl_HashTable* tablePtr = (Tcl_HashTable*)Tcl_GetHashValue(hPtr);
- Tcl_SetHashValue(hPtr2, tablePtr);
+ Tcl_HashEntry* hPtr = Tcl_CreateHashEntry(&setTable_, keyPtr, &isNew);
+ Tcl_SetHashValue(hPtr, tablePtr);
+
if (max < tablePtr->numEntries)
max = tablePtr->numEntries; // # of stacks in group
sum += tablePtr->numEntries;
}
Tcl_DeleteHashTable(&setTable);
+
if (sum > 0) {
barGroups_ = new BarGroup[sum];
BarGroup* groupPtr = barGroups_;
Tcl_HashSearch iter;
- for (Tcl_HashEntry *hPtr = Tcl_FirstHashEntry(&setTable_, &iter);
+ for (Tcl_HashEntry* hPtr = Tcl_FirstHashEntry(&setTable_, &iter);
hPtr; hPtr = Tcl_NextHashEntry(&iter)) {
- Tcl_HashTable *tablePtr = (Tcl_HashTable*)Tcl_GetHashValue(hPtr);
- BarSetKey* keyPtr = (BarSetKey*)Tcl_GetHashKey(&setTable, hPtr);
+ BarSetKey* keyPtr = (BarSetKey*)Tcl_GetHashKey(&setTable_, hPtr);
+ Tcl_HashTable* tablePtr = (Tcl_HashTable*)Tcl_GetHashValue(hPtr);
+
size_t xcount = 0;
Tcl_HashSearch iter2;
for (Tcl_HashEntry *hPtr2 = Tcl_FirstHashEntry(tablePtr, &iter2);
@@ -441,8 +449,9 @@ void BarGraph::initBarSets()
groupPtr->nSegments = count;
groupPtr->xAxis = keyPtr->xAxis;
groupPtr->yAxis = keyPtr->yAxis;
- Tcl_SetHashValue(hPtr2, groupPtr);
groupPtr->index = xcount++;
+ Tcl_SetHashValue(hPtr2, groupPtr);
+
groupPtr++;
}
}
@@ -463,15 +472,16 @@ void BarGraph::destroyBarSets()
nBarGroups_ = 0;
Tcl_HashSearch iter;
- for (Tcl_HashEntry* hPtr = Tcl_FirstHashEntry(&setTable_, &iter);
- hPtr; hPtr = Tcl_NextHashEntry(&iter)) {
+ for (Tcl_HashEntry* hPtr=Tcl_FirstHashEntry(&setTable_, &iter); hPtr;
+ hPtr=Tcl_NextHashEntry(&iter)) {
Tcl_HashTable* tablePtr = (Tcl_HashTable*)Tcl_GetHashValue(hPtr);
Tcl_DeleteHashTable(tablePtr);
free(tablePtr);
}
Tcl_DeleteHashTable(&setTable_);
- Tcl_InitHashTable(&setTable_, (sizeof(float)+2*sizeof(Axis*)) / sizeof(int));
+ int ss = (sizeof(float)+2*sizeof(Axis*))/sizeof(int);
+ Tcl_InitHashTable(&setTable_, ss);
}
void BarGraph::resetBarSets()