Groupwise commands can be displayed.
This commit is contained in:
@@ -63,23 +63,32 @@ void Phase::draw(QPainter *painter, const QwtScaleMap &xMap,
|
||||
painter->setPen(pen);
|
||||
}
|
||||
|
||||
if (!isBankwise()) {
|
||||
if (getGranularity() == Granularity::Rankwise)
|
||||
{
|
||||
for (int i = getYVal(drawingProperties); i < (int)(getYVal(drawingProperties) + drawingProperties.banksPerRank); i++)
|
||||
drawPhaseSymbol(span.Begin(), span.End(), i, drawingProperties.drawText,
|
||||
getPhaseSymbol(), painter, xMap, yMap);
|
||||
} else
|
||||
}
|
||||
else if (getGranularity() == Granularity::Groupwise)
|
||||
{
|
||||
for (int i = getYVal(drawingProperties); i < (int)(getYVal(drawingProperties) + drawingProperties.banksPerRank); i += drawingProperties.banksPerGroup)
|
||||
drawPhaseSymbol(span.Begin(), span.End(), i, drawingProperties.drawText,
|
||||
getPhaseSymbol(), painter, xMap, yMap);
|
||||
}
|
||||
else // if (getGranularity() == Granularity::Bankwise)
|
||||
drawPhaseSymbol(span.Begin(), span.End(), getYVal(drawingProperties),
|
||||
drawingProperties.drawText, getPhaseSymbol(), painter, xMap, yMap);
|
||||
|
||||
for (Timespan span : spansOnCommandBus) {
|
||||
for (Timespan span : spansOnCommandBus)
|
||||
{
|
||||
drawPhaseSymbol(span.Begin(), span.End(), drawingProperties.yValCommandBus,
|
||||
false, PhaseSymbol::Hexagon, painter, xMap, yMap);
|
||||
}
|
||||
|
||||
if (spanOnDataBus) {
|
||||
drawPhaseSymbol(spanOnDataBus->Begin(), spanOnDataBus->End(),
|
||||
drawingProperties.yValDataBus, false, PhaseSymbol::Hexagon, painter, xMap,
|
||||
yMap);
|
||||
if (spanOnDataBus)
|
||||
{
|
||||
drawPhaseSymbol(spanOnDataBus->Begin(), spanOnDataBus->End(), drawingProperties.yValDataBus,
|
||||
false, PhaseSymbol::Hexagon, painter, xMap, yMap);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +97,7 @@ void Phase::drawPhaseSymbol(traceTime begin, traceTime end, double y,
|
||||
const QwtScaleMap &yMap) const
|
||||
{
|
||||
double yVal = yMap.transform(y);
|
||||
double symbolHeight = yMap.transform(0) - yMap.transform(hexagonHeigth);
|
||||
double symbolHeight = yMap.transform(0) - yMap.transform(hexagonHeight);
|
||||
|
||||
if (symbol == PhaseSymbol::Hexagon) {
|
||||
QPoint hexFrom(xMap.transform(begin), yVal);
|
||||
@@ -123,9 +132,12 @@ QColor Phase::getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
|
||||
int Phase::getYVal(const TraceDrawingProperties &drawingProperties) const
|
||||
{
|
||||
if (isBankwise())
|
||||
if (getGranularity() == Granularity::Bankwise)
|
||||
return transaction->bank;
|
||||
else
|
||||
else if (getGranularity() == Granularity::Groupwise)
|
||||
return transaction->rank * drawingProperties.banksPerRank
|
||||
+ transaction->bank % drawingProperties.banksPerGroup;
|
||||
else // if (getGranularity() == Granularity::Rankwise)
|
||||
return transaction->rank * drawingProperties.banksPerRank;
|
||||
}
|
||||
|
||||
@@ -135,18 +147,39 @@ Qt::BrushStyle Phase::getBrushStyle() const
|
||||
}
|
||||
|
||||
bool Phase::isSelected(traceTime time, double yVal,
|
||||
const TraceDrawingProperties &drawingproperties) const
|
||||
const TraceDrawingProperties &drawingProperties) const
|
||||
{
|
||||
if (span.contains(time) && (!this->isBankwise()
|
||||
|| fabs(yVal - getYVal(drawingproperties)) <= hexagonHeigth))
|
||||
return true;
|
||||
if (spanOnDataBus && spanOnDataBus->contains(time)
|
||||
&& fabs(yVal - drawingproperties.yValDataBus) <= hexagonHeigth)
|
||||
if (span.contains(time))
|
||||
{
|
||||
if (getGranularity() == Granularity::Bankwise)
|
||||
{
|
||||
if (fabs(yVal - getYVal(drawingProperties)) <= hexagonHeight)
|
||||
return true;
|
||||
}
|
||||
else if (getGranularity() == Granularity::Groupwise)
|
||||
{
|
||||
for (int offset = 0; offset < drawingProperties.banksPerRank; offset += drawingProperties.banksPerGroup)
|
||||
{
|
||||
if (fabs(yVal - (getYVal(drawingProperties) + offset)) <= hexagonHeight)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else // if (getGranularity() == Granularity::Rankwise)
|
||||
{
|
||||
for (int offset = 0; offset < drawingProperties.banksPerRank; offset++)
|
||||
{
|
||||
if (fabs(yVal - (getYVal(drawingProperties) + offset)) <= hexagonHeight)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (spanOnDataBus && spanOnDataBus->contains(time) && fabs(yVal - drawingProperties.yValDataBus) <= hexagonHeight)
|
||||
return true;
|
||||
|
||||
for (Timespan span : spansOnCommandBus) {
|
||||
if (span.contains(time)
|
||||
&& fabs(yVal - drawingproperties.yValCommandBus) <= hexagonHeigth)
|
||||
&& fabs(yVal - drawingProperties.yValCommandBus) <= hexagonHeight)
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ public:
|
||||
std::shared_ptr<Timespan> spanOnDataBus):
|
||||
id(id), span(span), transaction(transaction),
|
||||
spansOnCommandBus(spansOnCommandBus), spanOnDataBus(spanOnDataBus),
|
||||
hexagonHeigth(0.6), captionPosition(TextPositioning::bottomRight) {}
|
||||
hexagonHeight(0.6), captionPosition(TextPositioning::bottomRight) {}
|
||||
|
||||
void draw(QPainter *painter, const QwtScaleMap &xMap, const QwtScaleMap &yMap,
|
||||
const QRectF &canvasRect, bool highlight,
|
||||
@@ -74,10 +74,6 @@ public:
|
||||
return id;
|
||||
}
|
||||
virtual QString Name() const = 0;
|
||||
virtual bool isBankwise() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected:
|
||||
ID id;
|
||||
@@ -85,7 +81,7 @@ protected:
|
||||
std::shared_ptr<Transaction> transaction;
|
||||
std::vector<Timespan> spansOnCommandBus;
|
||||
std::shared_ptr<Timespan> spanOnDataBus;
|
||||
double hexagonHeigth;
|
||||
double hexagonHeight;
|
||||
TextPositioning captionPosition;
|
||||
|
||||
enum PhaseSymbol {Hexagon, Rect};
|
||||
@@ -98,6 +94,12 @@ protected:
|
||||
bool drawtext, PhaseSymbol symbol, QPainter *painter, const QwtScaleMap &xMap,
|
||||
const QwtScaleMap &yMap) const;
|
||||
|
||||
enum class Granularity {Bankwise, Groupwise, Rankwise};
|
||||
|
||||
virtual Granularity getGranularity() const
|
||||
{
|
||||
return Granularity::Bankwise;
|
||||
}
|
||||
};
|
||||
|
||||
class REQ : public Phase
|
||||
@@ -297,9 +299,9 @@ protected:
|
||||
{
|
||||
return "REFA";
|
||||
}
|
||||
virtual bool isBankwise() const override
|
||||
virtual Granularity getGranularity() const override
|
||||
{
|
||||
return false;
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -323,9 +325,9 @@ protected:
|
||||
{
|
||||
return "REFSB";
|
||||
}
|
||||
virtual bool isBankwise() const override
|
||||
virtual Granularity getGranularity() const override
|
||||
{
|
||||
return false;
|
||||
return Granularity::Groupwise;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -351,9 +353,9 @@ protected:
|
||||
{
|
||||
return ColorGenerator::getColor(10);
|
||||
}
|
||||
virtual bool isBankwise() const override
|
||||
virtual Granularity getGranularity() const override
|
||||
{
|
||||
return false;
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -394,9 +396,9 @@ protected:
|
||||
{
|
||||
return "PDNA";
|
||||
}
|
||||
virtual bool isBankwise() const override
|
||||
virtual Granularity getGranularity() const override
|
||||
{
|
||||
return false;
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -437,9 +439,9 @@ protected:
|
||||
{
|
||||
return "PDNP";
|
||||
}
|
||||
virtual bool isBankwise() const override
|
||||
virtual Granularity getGranularity() const override
|
||||
{
|
||||
return false;
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -480,9 +482,9 @@ protected:
|
||||
{
|
||||
return "SREF";
|
||||
}
|
||||
virtual bool isBankwise() const override
|
||||
virtual Granularity getGranularity() const override
|
||||
{
|
||||
return false;
|
||||
return Granularity::Rankwise;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user