Groupwise commands can be displayed.

This commit is contained in:
Lukas Steiner
2020-08-27 14:31:18 +02:00
parent d9fc7ac496
commit 8ba0180d57
2 changed files with 70 additions and 35 deletions

View File

@@ -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;
}

View File

@@ -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;
}
};