* ./hurricane/src/hurricane:
- New: In Query, add support for Markers, although they are Go's, are stored in a separate QuadTree directly at Cell level. In a very similar fashion to the ExtensionGos. Sometimes should look if thoses mecanism could be unified. * ./hurricane/src/viewer: - New: In CellWidget, add support for displaying References. Uses the Marker Query. For now labels are displayed centered on the reference point, making that point hard to see. That behavior may be changed later if needs to be. - Bug: In InspectorWidget, the History::push() wasn't updating the ComboBox index. The line was strangely commented out (?).
This commit is contained in:
parent
3a25248804
commit
d1d2a2ea01
|
@ -114,7 +114,7 @@ namespace Hurricane {
|
||||||
|
|
||||||
void Query::doQuery ()
|
void Query::doQuery ()
|
||||||
{
|
{
|
||||||
if ( _stack.getTopArea().isEmpty() || !_stack.getTopCell() ) return;
|
if ( _stack.getTopArea().isEmpty() or not _stack.getTopCell() ) return;
|
||||||
|
|
||||||
//cerr << "Query::doQuery() - " << _stack.getTopCell() << " " << _stack.getTopArea() << " " << _basicLayer << endl;
|
//cerr << "Query::doQuery() - " << _stack.getTopCell() << " " << _stack.getTopArea() << " " << _basicLayer << endl;
|
||||||
|
|
||||||
|
@ -122,16 +122,16 @@ namespace Hurricane {
|
||||||
|
|
||||||
while ( !_stack.empty() ) {
|
while ( !_stack.empty() ) {
|
||||||
// Process the Components of the current instance.
|
// Process the Components of the current instance.
|
||||||
if ( hasGoCallback() && _basicLayer && (_filter.isSet(DoComponents)) ) {
|
if ( hasGoCallback() and _basicLayer and (_filter.isSet(DoComponents)) ) {
|
||||||
//if ( getInstance() )
|
//if ( getInstance() )
|
||||||
// cerr << getTab() << getInstance() << " " << getTransformation() << endl;
|
// cerr << getTab() << getInstance() << " " << getTransformation() << endl;
|
||||||
//else
|
//else
|
||||||
// cerr << " TopCell: " << getMasterCell() << " " << getTransformation() << endl;
|
// cerr << " TopCell: " << getMasterCell() << " " << getTransformation() << endl;
|
||||||
|
|
||||||
if ( !getMasterCell()->isTerminal() || (_filter.isSet(DoTerminalCells)) ) {
|
if ( not getMasterCell()->isTerminal() or (_filter.isSet(DoTerminalCells)) ) {
|
||||||
forEach ( Slice*, islice, getMasterCell()->getSlices() ) {
|
forEach ( Slice*, islice, getMasterCell()->getSlices() ) {
|
||||||
if ( !(*islice)->getLayer()->contains(getBasicLayer()) ) continue;
|
if ( not (*islice)->getLayer()->contains(getBasicLayer()) ) continue;
|
||||||
if ( !(*islice)->getBoundingBox().intersect(getArea()) ) continue;
|
if ( not (*islice)->getBoundingBox().intersect(getArea()) ) continue;
|
||||||
|
|
||||||
forEach ( Go*, igo, (*islice)->getGosUnder(_stack.getArea()) )
|
forEach ( Go*, igo, (*islice)->getGosUnder(_stack.getArea()) )
|
||||||
goCallback ( *igo );
|
goCallback ( *igo );
|
||||||
|
@ -139,16 +139,22 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !getMasterCell()->isTerminal() && (_filter.isSet(DoRubbers)) ) {
|
if ( (not getMasterCell()->isTerminal() or (_filter.isSet(DoTerminalCells)))
|
||||||
|
and _filter.isSet(DoMarkers) ) {
|
||||||
|
forEach ( Marker*, marker, getMasterCell()->getMarkersUnder(_stack.getArea()) )
|
||||||
|
markerCallback ( *marker );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( not getMasterCell()->isTerminal() and (_filter.isSet(DoRubbers)) ) {
|
||||||
forEach ( Rubber*, rubber, getMasterCell()->getRubbersUnder(_stack.getArea()) )
|
forEach ( Rubber*, rubber, getMasterCell()->getRubbersUnder(_stack.getArea()) )
|
||||||
rubberCallback ( *rubber );
|
rubberCallback ( *rubber );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( hasExtensionGoCallback() && (_filter.isSet(DoExtensionGos)) ) {
|
if ( hasExtensionGoCallback() and (_filter.isSet(DoExtensionGos)) ) {
|
||||||
if ( !getMasterCell()->isTerminal() || (_filter.isSet(DoTerminalCells)) ) {
|
if ( not getMasterCell()->isTerminal() or (_filter.isSet(DoTerminalCells)) ) {
|
||||||
forEach ( ExtensionSlice*, islice, getMasterCell()->getExtensionSlices() ) {
|
forEach ( ExtensionSlice*, islice, getMasterCell()->getExtensionSlices() ) {
|
||||||
if ( !( (*islice)->getMask() & _extensionMask ) ) continue;
|
if ( not ( (*islice)->getMask() & _extensionMask ) ) continue;
|
||||||
if ( !(*islice)->getBoundingBox().intersect(getArea()) ) continue;
|
if ( not (*islice)->getBoundingBox().intersect(getArea()) ) continue;
|
||||||
|
|
||||||
forEach ( Go*, igo, (*islice)->getGosUnder(_stack.getArea()) )
|
forEach ( Go*, igo, (*islice)->getGosUnder(_stack.getArea()) )
|
||||||
extensionGoCallback ( *igo );
|
extensionGoCallback ( *igo );
|
||||||
|
@ -156,7 +162,7 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (_filter.isSet(DoMasterCells)) && hasMasterCellCallback() )
|
if ( (_filter.isSet(DoMasterCells)) and hasMasterCellCallback() )
|
||||||
masterCellCallback ();
|
masterCellCallback ();
|
||||||
|
|
||||||
_stack.progress ();
|
_stack.progress ();
|
||||||
|
@ -165,27 +171,27 @@ namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
bool Query::hasGoCallback () const
|
bool Query::hasGoCallback () const
|
||||||
{
|
{ return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
bool Query::hasMarkerCallback () const
|
||||||
|
{ return false; }
|
||||||
|
|
||||||
|
|
||||||
bool Query::hasRubberCallback () const
|
bool Query::hasRubberCallback () const
|
||||||
{
|
{ return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool Query::hasExtensionGoCallback () const
|
bool Query::hasExtensionGoCallback () const
|
||||||
{
|
{ return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool Query::hasMasterCellCallback () const
|
bool Query::hasMasterCellCallback () const
|
||||||
{
|
{ return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
void Query::markerCallback ( Marker* )
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
void Query::rubberCallback ( Rubber* )
|
void Query::rubberCallback ( Rubber* )
|
||||||
|
|
|
@ -298,11 +298,13 @@ namespace Hurricane {
|
||||||
enum QueryFilter { DoMasterCells = 1
|
enum QueryFilter { DoMasterCells = 1
|
||||||
, DoTerminalCells = 2
|
, DoTerminalCells = 2
|
||||||
, DoComponents = 4
|
, DoComponents = 4
|
||||||
, DoRubbers = 8
|
, DoMarkers = 8
|
||||||
, DoExtensionGos = 16
|
, DoRubbers = 16
|
||||||
|
, DoExtensionGos = 32
|
||||||
, DoAll = DoMasterCells
|
, DoAll = DoMasterCells
|
||||||
| DoTerminalCells
|
| DoTerminalCells
|
||||||
| DoComponents
|
| DoComponents
|
||||||
|
| DoMarkers
|
||||||
| DoRubbers
|
| DoRubbers
|
||||||
| DoExtensionGos
|
| DoExtensionGos
|
||||||
};
|
};
|
||||||
|
@ -321,10 +323,12 @@ namespace Hurricane {
|
||||||
inline Instance* getInstance ();
|
inline Instance* getInstance ();
|
||||||
//inline const Tabulation& getTab () const;
|
//inline const Tabulation& getTab () const;
|
||||||
virtual bool hasGoCallback () const;
|
virtual bool hasGoCallback () const;
|
||||||
|
virtual bool hasMarkerCallback () const;
|
||||||
virtual bool hasRubberCallback () const;
|
virtual bool hasRubberCallback () const;
|
||||||
virtual bool hasExtensionGoCallback () const;
|
virtual bool hasExtensionGoCallback () const;
|
||||||
virtual bool hasMasterCellCallback () const;
|
virtual bool hasMasterCellCallback () const;
|
||||||
virtual void goCallback ( Go* ) = 0;
|
virtual void goCallback ( Go* ) = 0;
|
||||||
|
virtual void markerCallback ( Marker* );
|
||||||
virtual void rubberCallback ( Rubber* );
|
virtual void rubberCallback ( Rubber* );
|
||||||
virtual void extensionGoCallback ( Go* ) = 0;
|
virtual void extensionGoCallback ( Go* ) = 0;
|
||||||
virtual void masterCellCallback () = 0;
|
virtual void masterCellCallback () = 0;
|
||||||
|
|
|
@ -844,16 +844,41 @@ namespace Hurricane {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool CellWidget::DrawingQuery::hasRubberCallback () const
|
bool CellWidget::DrawingQuery::hasMarkerCallback () const
|
||||||
|
{ return true; }
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::DrawingQuery::markerCallback ( Marker* marker )
|
||||||
|
{ drawMarker ( marker, getArea(), getTransformation() ); }
|
||||||
|
|
||||||
|
|
||||||
|
void CellWidget::DrawingQuery::drawMarker ( const Marker* marker
|
||||||
|
, const Box& area
|
||||||
|
, const Transformation& transformation
|
||||||
|
)
|
||||||
{
|
{
|
||||||
return true;
|
static QRect rectangle;
|
||||||
|
|
||||||
|
const Reference* reference = dynamic_cast<const Reference*>(marker);
|
||||||
|
if ( reference ) {
|
||||||
|
_goCount++;
|
||||||
|
Box bb = transformation.getBox(reference->getBoundingBox()).inflate(DbU::lambda(5.0));
|
||||||
|
rectangle = _cellWidget->dbuToDisplayRect ( bb );
|
||||||
|
|
||||||
|
if ( _cellWidget->isDrawable("text.reference") and (getDepth() < 2) ) {
|
||||||
|
const char* refName = reference->getName()._getSharedName()->_getSString().c_str();
|
||||||
|
_cellWidget->drawDisplayText ( rectangle, refName, BigFont|Bold|Center|Frame );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool CellWidget::DrawingQuery::hasRubberCallback () const
|
||||||
|
{ return true; }
|
||||||
|
|
||||||
|
|
||||||
void CellWidget::DrawingQuery::rubberCallback ( Rubber* rubber )
|
void CellWidget::DrawingQuery::rubberCallback ( Rubber* rubber )
|
||||||
{
|
{ drawRubber ( rubber, getArea(), getTransformation() ); }
|
||||||
drawRubber ( rubber, getArea(), getTransformation() );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CellWidget::DrawingQuery::drawRubber ( const Rubber* rubber
|
void CellWidget::DrawingQuery::drawRubber ( const Rubber* rubber
|
||||||
|
@ -1381,7 +1406,7 @@ namespace Hurricane {
|
||||||
|
|
||||||
if ( isDrawable((*iLayer)->getName()) ) {
|
if ( isDrawable((*iLayer)->getName()) ) {
|
||||||
_drawingQuery.setBasicLayer ( *iLayer );
|
_drawingQuery.setBasicLayer ( *iLayer );
|
||||||
_drawingQuery.setFilter ( getQueryFilter().unset(Query::DoMasterCells|Query::DoRubbers) );
|
_drawingQuery.setFilter ( getQueryFilter().unset(Query::DoMasterCells|Query::DoRubbers|Query::DoMarkers) );
|
||||||
_drawingQuery.doQuery ();
|
_drawingQuery.doQuery ();
|
||||||
}
|
}
|
||||||
if ( _enableRedrawInterrupt ) QApplication::processEvents();
|
if ( _enableRedrawInterrupt ) QApplication::processEvents();
|
||||||
|
@ -1398,7 +1423,18 @@ namespace Hurricane {
|
||||||
_drawingPlanes.setBrush ( Graphics::getBrush("boundaries",getDarkening()) );
|
_drawingPlanes.setBrush ( Graphics::getBrush("boundaries",getDarkening()) );
|
||||||
|
|
||||||
_drawingQuery.setBasicLayer ( NULL );
|
_drawingQuery.setBasicLayer ( NULL );
|
||||||
_drawingQuery.setFilter ( getQueryFilter().unset(Query::DoComponents|Query::DoRubbers) );
|
_drawingQuery.setFilter ( getQueryFilter().unset(Query::DoComponents|Query::DoRubbers|Query::DoMarkers) );
|
||||||
|
_drawingQuery.doQuery ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( /*!timeout("redraw [markers]",timer,10.0,timedout) &&*/ (!_redrawManager.interrupted()) ) {
|
||||||
|
if ( isDrawable("text.reference") ) {
|
||||||
|
_drawingPlanes.setPen ( Graphics::getPen ("text.reference",getDarkening()) );
|
||||||
|
_drawingPlanes.setBrush ( Graphics::getBrush("text.reference",getDarkening()) );
|
||||||
|
|
||||||
|
_drawingQuery.setBasicLayer ( NULL );
|
||||||
|
_drawingQuery.setFilter ( getQueryFilter().unset(Query::DoComponents|Query::DoMasterCells) );
|
||||||
_drawingQuery.doQuery ();
|
_drawingQuery.doQuery ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1409,7 +1445,7 @@ namespace Hurricane {
|
||||||
_drawingPlanes.setBrush ( Graphics::getBrush("rubber",getDarkening()) );
|
_drawingPlanes.setBrush ( Graphics::getBrush("rubber",getDarkening()) );
|
||||||
|
|
||||||
_drawingQuery.setBasicLayer ( NULL );
|
_drawingQuery.setBasicLayer ( NULL );
|
||||||
_drawingQuery.setFilter ( getQueryFilter().unset(Query::DoComponents|Query::DoMasterCells) );
|
_drawingQuery.setFilter ( getQueryFilter().unset(Query::DoComponents|Query::DoMasterCells|Query::DoMarkers) );
|
||||||
_drawingQuery.doQuery ();
|
_drawingQuery.doQuery ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,7 @@ namespace Hurricane {
|
||||||
const Name DisplayStyle::TextCell = "text.cell";
|
const Name DisplayStyle::TextCell = "text.cell";
|
||||||
const Name DisplayStyle::TextInstance = "text.instance";
|
const Name DisplayStyle::TextInstance = "text.instance";
|
||||||
const Name DisplayStyle::TextComponent = "text.component";
|
const Name DisplayStyle::TextComponent = "text.component";
|
||||||
|
const Name DisplayStyle::TextReference = "text.reference";
|
||||||
const Name DisplayStyle::Undef = "undef";
|
const Name DisplayStyle::Undef = "undef";
|
||||||
|
|
||||||
|
|
||||||
|
@ -270,6 +271,7 @@ namespace Hurricane {
|
||||||
addDrawingStyle ( Viewer, TextCell , "8822441188224411", 255, 255, 255, 0, 1.0 );
|
addDrawingStyle ( Viewer, TextCell , "8822441188224411", 255, 255, 255, 0, 1.0 );
|
||||||
addDrawingStyle ( Viewer, TextInstance , "8822441188224411", 255, 255, 255, 0, 1.0 );
|
addDrawingStyle ( Viewer, TextInstance , "8822441188224411", 255, 255, 255, 0, 1.0 );
|
||||||
addDrawingStyle ( Viewer, TextComponent, "FFFFFFFFFFFFFFFF", 255, 255, 255, 0, 1.0 );
|
addDrawingStyle ( Viewer, TextComponent, "FFFFFFFFFFFFFFFF", 255, 255, 255, 0, 1.0 );
|
||||||
|
addDrawingStyle ( Viewer, TextReference, "FFFFFFFFFFFFFFFF", 255, 255, 255, 0, 1.0 );
|
||||||
addDrawingStyle ( Viewer, Undef , "2244118822441188", 238, 130, 238, 0, 1.0 );
|
addDrawingStyle ( Viewer, Undef , "2244118822441188", 238, 130, 238, 0, 1.0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ namespace Hurricane {
|
||||||
_depth++;
|
_depth++;
|
||||||
_slots.push_back ( slot->getClone() );
|
_slots.push_back ( slot->getClone() );
|
||||||
_comboBox->addItem ( QString("%1: %2").arg(_depth).arg(_slots[_slots.size()-1]->getDataString().c_str()));
|
_comboBox->addItem ( QString("%1: %2").arg(_depth).arg(_slots[_slots.size()-1]->getDataString().c_str()));
|
||||||
//_comboBox->setCurrentIndex ( _depth );
|
_comboBox->setCurrentIndex ( _depth );
|
||||||
|
|
||||||
//cerr << "After History::push()" << endl;
|
//cerr << "After History::push()" << endl;
|
||||||
}
|
}
|
||||||
|
@ -161,14 +161,14 @@ namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
InspectorWidget::InspectorWidget ( QWidget* parent )
|
InspectorWidget::InspectorWidget ( QWidget* parent )
|
||||||
: QWidget(parent)
|
: QWidget (parent)
|
||||||
, _baseModel(NULL)
|
, _baseModel (NULL)
|
||||||
, _sortModel(NULL)
|
, _sortModel (NULL)
|
||||||
, _historyComboBox(NULL)
|
, _historyComboBox(NULL)
|
||||||
, _view(NULL)
|
, _view (NULL)
|
||||||
, _rowHeight(20)
|
, _rowHeight (20)
|
||||||
, _history()
|
, _history ()
|
||||||
, _rootOccurrence()
|
, _rootOccurrence ()
|
||||||
{
|
{
|
||||||
setAttribute ( Qt::WA_DeleteOnClose );
|
setAttribute ( Qt::WA_DeleteOnClose );
|
||||||
setAttribute ( Qt::WA_QuitOnClose, false );
|
setAttribute ( Qt::WA_QuitOnClose, false );
|
||||||
|
|
|
@ -457,11 +457,13 @@ namespace Hurricane {
|
||||||
void setDrawExtensionGo ( const Name& );
|
void setDrawExtensionGo ( const Name& );
|
||||||
virtual bool hasMasterCellCallback () const;
|
virtual bool hasMasterCellCallback () const;
|
||||||
virtual bool hasGoCallback () const;
|
virtual bool hasGoCallback () const;
|
||||||
|
virtual bool hasMarkerCallback () const;
|
||||||
virtual bool hasRubberCallback () const;
|
virtual bool hasRubberCallback () const;
|
||||||
virtual bool hasExtensionGoCallback () const;
|
virtual bool hasExtensionGoCallback () const;
|
||||||
virtual void masterCellCallback ();
|
virtual void masterCellCallback ();
|
||||||
virtual void goCallback ( Go* );
|
virtual void goCallback ( Go* );
|
||||||
virtual void rubberCallback ( Rubber* );
|
virtual void rubberCallback ( Rubber* );
|
||||||
|
virtual void markerCallback ( Marker* );
|
||||||
virtual void extensionGoCallback ( Go* );
|
virtual void extensionGoCallback ( Go* );
|
||||||
void drawMasterCell ( const Cell* cell
|
void drawMasterCell ( const Cell* cell
|
||||||
, const Transformation& transformation
|
, const Transformation& transformation
|
||||||
|
@ -475,6 +477,10 @@ namespace Hurricane {
|
||||||
, const Box& area
|
, const Box& area
|
||||||
, const Transformation& transformation
|
, const Transformation& transformation
|
||||||
);
|
);
|
||||||
|
void drawMarker ( const Marker* marker
|
||||||
|
, const Box& area
|
||||||
|
, const Transformation& transformation
|
||||||
|
);
|
||||||
void drawExtensionGo ( CellWidget* widget
|
void drawExtensionGo ( CellWidget* widget
|
||||||
, const Go* go
|
, const Go* go
|
||||||
, const BasicLayer* basicLayer
|
, const BasicLayer* basicLayer
|
||||||
|
|
|
@ -157,6 +157,7 @@ namespace Hurricane {
|
||||||
static const Name TextCell;
|
static const Name TextCell;
|
||||||
static const Name TextInstance;
|
static const Name TextInstance;
|
||||||
static const Name TextComponent;
|
static const Name TextComponent;
|
||||||
|
static const Name TextReference;
|
||||||
static const Name Undef;
|
static const Name Undef;
|
||||||
static const Name UnmatchedGroup;
|
static const Name UnmatchedGroup;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue