##// END OF EJS Templates
Fix category axis label positioning....
Miikka Heikkinen -
r2446:e5bdddebc98a
parent child
Show More
@@ -136,14 +136,23 void HorizontalAxis::updateGeometry()
136 tickItem->setLine(layout[i], axisRect.top(), layout[i], axisRect.top() + labelPadding());
136 tickItem->setLine(layout[i], axisRect.top(), layout[i], axisRect.top() + labelPadding());
137 }
137 }
138
138
139 //label in beetwen
139 //label in between
140 if(intervalAxis()&& i+1!=layout.size()) {
140 bool forceHide = false;
141 const qreal delta = (layout[i+1] - layout[i])/2;
141 if (intervalAxis() && (i + 1) != layout.size()) {
142 labelItem->setPos(layout[i] + delta - center.x(), labelItem->pos().y());
142 qreal leftBound = qMax(layout[i], gridRect.left());
143 qreal rightBound = qMin(layout[i + 1], gridRect.right());
144 const qreal delta = rightBound - leftBound;
145 // Hide label in case visible part of the category at the grid edge is too narrow
146 if (delta < boundingRect.width()
147 && (leftBound == gridRect.left() || rightBound == gridRect.right())) {
148 forceHide = true;
149 } else {
150 labelItem->setPos(leftBound + (delta / 2.0) - center.x(), labelItem->pos().y());
151 }
143 }
152 }
144
153
145 //label overlap detection - compensate one pixel for rounding errors
154 //label overlap detection - compensate one pixel for rounding errors
146 if(labelItem->pos().x() < width ||
155 if (labelItem->pos().x() < width || forceHide ||
147 labelItem->pos().x() < (axisRect.left() - 1.0) ||
156 labelItem->pos().x() < (axisRect.left() - 1.0) ||
148 (labelItem->pos().x() + boundingRect.width() - 1.0) > axisRect.right()){
157 (labelItem->pos().x() + boundingRect.width() - 1.0) > axisRect.right()){
149 labelItem->setVisible(false);
158 labelItem->setVisible(false);
@@ -146,14 +146,23 void VerticalAxis::updateGeometry()
146 tickItem->setLine(axisRect.left(), layout[i], axisRect.left() + labelPadding(), layout[i]);
146 tickItem->setLine(axisRect.left(), layout[i], axisRect.left() + labelPadding(), layout[i]);
147 }
147 }
148
148
149 //label in beetwen
149 //label in between
150 if(intervalAxis()&& i+1!=layout.size()) {
150 bool forceHide = false;
151 const qreal delta = (layout[i+1] - layout[i])/2;
151 if (intervalAxis() && (i + 1) != layout.size()) {
152 labelItem->setPos(labelItem->pos().x() , layout[i] + delta - center.y());
152 qreal lowerBound = qMin(layout[i], gridRect.bottom());
153 qreal upperBound = qMax(layout[i + 1], gridRect.top());
154 const qreal delta = lowerBound - upperBound;
155 // Hide label in case visible part of the category at the grid edge is too narrow
156 if (delta < boundingRect.height()
157 && (lowerBound == gridRect.bottom() || upperBound == gridRect.top())) {
158 forceHide = true;
159 } else {
160 labelItem->setPos(labelItem->pos().x() , lowerBound - (delta / 2.0) - center.y());
161 }
153 }
162 }
154
163
155 //label overlap detection - compensate one pixel for rounding errors
164 //label overlap detection - compensate one pixel for rounding errors
156 if (labelItem->pos().y() + boundingRect.height() > height ||
165 if (labelItem->pos().y() + boundingRect.height() > height || forceHide ||
157 (labelItem->pos().y() + (boundingRect.height() / 2.0) - 1.0) > axisRect.bottom() ||
166 (labelItem->pos().y() + (boundingRect.height() / 2.0) - 1.0) > axisRect.bottom() ||
158 labelItem->pos().y() + (boundingRect.height() / 2.0) < (axisRect.top() - 1.0)) {
167 labelItem->pos().y() + (boundingRect.height() / 2.0) < (axisRect.top() - 1.0)) {
159 labelItem->setVisible(false);
168 labelItem->setVisible(false);
General Comments 0
You need to be logged in to leave comments. Login now