Increase selectable area of phases with zero span.
This commit is contained in:
@@ -99,19 +99,22 @@ void Phase::drawPhaseSymbol(traceTime begin, traceTime end, double y,
|
||||
double yVal = yMap.transform(y);
|
||||
double symbolHeight = yMap.transform(0) - yMap.transform(hexagonHeight);
|
||||
|
||||
// Increase display size of phases with zero span
|
||||
traceTime offset = (begin == end) ? static_cast<traceTime>(0.05 * clk) : 0;
|
||||
|
||||
if (symbol == PhaseSymbol::Hexagon) {
|
||||
QPoint hexFrom(xMap.transform(begin), yVal);
|
||||
QPoint hexTo(xMap.transform(end), yVal);
|
||||
QPoint hexFrom(static_cast<int>(xMap.transform(begin)), static_cast<int>(yVal));
|
||||
QPoint hexTo(static_cast<int>(xMap.transform(end + offset)), static_cast<int>(yVal));
|
||||
drawHexagon(painter, hexFrom, hexTo, symbolHeight);
|
||||
} else {
|
||||
QPoint upperLeft(xMap.transform(begin), yVal - symbolHeight / 2);
|
||||
QPoint bottomRight(xMap.transform(end), yVal + symbolHeight / 2);
|
||||
QPoint upperLeft(static_cast<int>(xMap.transform(begin)), static_cast<int>(yVal - symbolHeight / 2));
|
||||
QPoint bottomRight(static_cast<int>(xMap.transform(end)), static_cast<int>(yVal + symbolHeight / 2));
|
||||
painter->drawRect(QRect(upperLeft, bottomRight));
|
||||
}
|
||||
|
||||
if (drawtext)
|
||||
drawText(painter, Name(), QPoint(xMap.transform(begin),
|
||||
yVal + symbolHeight / 2), TextPositioning::bottomRight);
|
||||
drawText(painter, Name(), QPoint(static_cast<int>(xMap.transform(begin)),
|
||||
static_cast<int>(yVal + symbolHeight / 2)), TextPositioning::bottomRight);
|
||||
}
|
||||
|
||||
QColor Phase::getColor(const TraceDrawingProperties &drawingProperties) const
|
||||
@@ -149,7 +152,10 @@ Qt::BrushStyle Phase::getBrushStyle() const
|
||||
bool Phase::isSelected(traceTime time, double yVal,
|
||||
const TraceDrawingProperties &drawingProperties) const
|
||||
{
|
||||
if (span.contains(time))
|
||||
// Increase selectable area of phases with zero span
|
||||
traceTime offset = (span.Begin() == span.End()) ? static_cast<traceTime>(0.05 * clk) : 0;
|
||||
|
||||
if (span.Begin() <= time && time <= (span.End() + offset))
|
||||
{
|
||||
if (getGranularity() == Granularity::Bankwise)
|
||||
{
|
||||
|
||||
@@ -53,10 +53,10 @@ class Transaction;
|
||||
class Phase
|
||||
{
|
||||
public:
|
||||
Phase(ID id, Timespan span, const std::shared_ptr<Transaction> &transaction,
|
||||
Phase(ID id, Timespan span, traceTime clk, const std::shared_ptr<Transaction> &transaction,
|
||||
std::vector<Timespan> spansOnCommandBus,
|
||||
std::shared_ptr<Timespan> spanOnDataBus):
|
||||
id(id), span(span), transaction(transaction),
|
||||
id(id), span(span), clk(clk), transaction(transaction),
|
||||
spansOnCommandBus(spansOnCommandBus), spanOnDataBus(spanOnDataBus),
|
||||
hexagonHeight(0.6), captionPosition(TextPositioning::bottomRight) {}
|
||||
|
||||
@@ -78,6 +78,7 @@ public:
|
||||
protected:
|
||||
ID id;
|
||||
Timespan span;
|
||||
traceTime clk;
|
||||
std::shared_ptr<Transaction> transaction;
|
||||
std::vector<Timespan> spansOnCommandBus;
|
||||
std::shared_ptr<Timespan> spanOnDataBus;
|
||||
|
||||
@@ -51,66 +51,66 @@ shared_ptr<Phase> PhaseFactory::CreatePhase(ID id, const QString &dbPhaseName,
|
||||
const CommandLengths &cl = database.getCommandLengths();
|
||||
|
||||
if (dbPhaseName == "REQ")
|
||||
return shared_ptr<Phase>(new REQ(id, span, trans, {}, std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new REQ(id, span, clk, trans, {}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "RESP")
|
||||
return shared_ptr<Phase>(new RESP(id, span, trans, {}, std::shared_ptr<Timespan>()));
|
||||
return shared_ptr<Phase>(new RESP(id, span, clk, trans, {}, std::shared_ptr<Timespan>()));
|
||||
|
||||
else if (dbPhaseName == "PREB")
|
||||
return shared_ptr<Phase>(new PREB(id, span, trans,
|
||||
return shared_ptr<Phase>(new PREB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PRE")
|
||||
return shared_ptr<Phase>(new PRE(id, span, trans,
|
||||
return shared_ptr<Phase>(new PRE(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.PRE)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "ACTB")
|
||||
return shared_ptr<Phase>(new ACTB(id, span, trans,
|
||||
return shared_ptr<Phase>(new ACTB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "ACT")
|
||||
return shared_ptr<Phase>(new ACT(id, span, trans,
|
||||
return shared_ptr<Phase>(new ACT(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.ACT)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PREA")
|
||||
return shared_ptr<Phase>(new PREA(id, span, trans,
|
||||
return shared_ptr<Phase>(new PREA(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.PREA)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFA")
|
||||
return shared_ptr<Phase>(new REFA(id, span, trans,
|
||||
return shared_ptr<Phase>(new REFA(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFA)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFB")
|
||||
return shared_ptr<Phase>(new REFB(id, span, trans,
|
||||
return shared_ptr<Phase>(new REFB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PRESB")
|
||||
return shared_ptr<Phase>(new PRESB(id, span, trans,
|
||||
return shared_ptr<Phase>(new PRESB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.PRESB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "REFSB")
|
||||
return shared_ptr<Phase>(new REFSB(id, span, trans,
|
||||
return shared_ptr<Phase>(new REFSB(id, span, clk, trans,
|
||||
{Timespan(span.Begin(), span.Begin() + clk * cl.REFSB)}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "RD")
|
||||
return shared_ptr<Phase>(new RD(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RD)},
|
||||
return shared_ptr<Phase>(new RD(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RD)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->spanOnDataStrobe))));
|
||||
else if (dbPhaseName == "RDA")
|
||||
return shared_ptr<Phase>(new RDA(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RDA)},
|
||||
return shared_ptr<Phase>(new RDA(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.RDA)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->spanOnDataStrobe))));
|
||||
else if (dbPhaseName == "WR")
|
||||
return shared_ptr<Phase>(new WR(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WR)},
|
||||
return shared_ptr<Phase>(new WR(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WR)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->spanOnDataStrobe))));
|
||||
else if (dbPhaseName == "WRA")
|
||||
return shared_ptr<Phase>(new WRA(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WRA)},
|
||||
return shared_ptr<Phase>(new WRA(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.WRA)},
|
||||
std::shared_ptr<Timespan>(new Timespan(trans->spanOnDataStrobe))));
|
||||
else if (dbPhaseName == "PDNA")
|
||||
return shared_ptr<Phase>(new PDNA(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEA),
|
||||
return shared_ptr<Phase>(new PDNA(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEA),
|
||||
Timespan(span.End() - clk * cl.PDXA, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PDNAB")
|
||||
return shared_ptr<Phase>(new PDNAB(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
return shared_ptr<Phase>(new PDNAB(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
Timespan(span.End() - clk, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PDNP")
|
||||
return shared_ptr<Phase>(new PDNP(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEP),
|
||||
return shared_ptr<Phase>(new PDNP(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.PDEP),
|
||||
Timespan(span.End() - clk * cl.PDXP, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "PDNPB")
|
||||
return shared_ptr<Phase>(new PDNPB(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
return shared_ptr<Phase>(new PDNPB(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
Timespan(span.End() - clk, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "SREF")
|
||||
return shared_ptr<Phase>(new SREF(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.SREFEN),
|
||||
return shared_ptr<Phase>(new SREF(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk * cl.SREFEN),
|
||||
Timespan(span.End() - clk * cl.SREFEX, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else if (dbPhaseName == "SREFB")
|
||||
return shared_ptr<Phase>(new SREFB(id, span, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
return shared_ptr<Phase>(new SREFB(id, span, clk, trans, {Timespan(span.Begin(), span.Begin() + clk),
|
||||
Timespan(span.End() - clk, span.End())}, std::shared_ptr<Timespan>()));
|
||||
else
|
||||
throw std::runtime_error("DB phasename " + dbPhaseName.toStdString() + " unkown to phasefactory");
|
||||
|
||||
Reference in New Issue
Block a user