17 #ifndef HURRICANE_CELL_WIDGET_H 18 #define HURRICANE_CELL_WIDGET_H 24 #include <boost/function.hpp> 39 #include "hurricane/Timer.h" 40 #include "hurricane/Commons.h" 41 #include "hurricane/Warning.h" 42 #include "hurricane/Point.h" 43 #include "hurricane/Box.h" 44 #include "hurricane/Transformation.h" 45 #include "hurricane/Query.h" 46 #include "hurricane/viewer/DisplayStyle.h" 47 #include "hurricane/viewer/CellWidgets.h" 48 #include "hurricane/viewer/Selector.h" 49 #include "hurricane/viewer/SelectorCriterion.h" 50 #include "hurricane/viewer/Ruler.h" 56 using std::unary_function;
57 using std::shared_ptr;
74 enum UpdateState { ExternalEmit = 0
91 typedef void ( DrawExtensionGo_t )(
CellWidget*
97 typedef void ( InitExtensionGo_t )(
CellWidget* );
98 typedef boost::function< void(QPainter&) > PainterCb_t;
99 enum RubberShape { Centric=1, Barycentric, Steiner };
100 enum TextFlag { Bold =0x0001
110 enum Flag { NoFlags =0x0000
111 , NoResetCommands=0x0001
121 void setCell (
Cell*,
Path topPath=
Path(),
unsigned int flags=NoFlags );
122 inline Cell* getCell ()
const;
123 inline Cell* getTopCell ()
const;
124 inline Path getTopPath ()
const;
125 inline shared_ptr<State>& getState ();
126 inline shared_ptr<State> getStateClone ();
127 inline PaletteWidget* getPalette ();
128 inline Occurrences getOccurrencesUnder (
const QRect& )
const;
130 inline SelectorSet& getSelectorSet ();
131 inline RulerSet& getRulerSet ();
132 inline RubberShape getRubberShape ()
const;
133 inline int getStartLevel ()
const;
134 inline int getStopLevel ()
const;
135 inline Query::Mask getQueryFilter ()
const ;
136 void bindToPalette ( PaletteWidget* );
137 void detachFromPalette ();
138 void bindCommand ( Command* );
139 void unbindCommand ( Command* );
140 void resetCommands ();
141 inline void setActiveCommand ( Command* );
142 inline Command* getActiveCommand ()
const;
143 Command* getCommand (
const std::string& )
const;
144 inline void resetActiveCommand ();
147 inline unsigned int getDbuMode ()
const;
148 inline bool gridMode ()
const;
149 inline bool symbolicMode ()
const;
150 inline bool physicalMode ()
const;
152 inline bool showBoundaries ()
const;
153 inline bool showSelection ()
const;
154 inline bool cumulativeSelection ()
const;
155 inline void setDbuMode (
int );
157 inline void setRubberShape ( RubberShape );
158 inline void setStartLevel (
int );
159 inline void setStopLevel (
int );
160 inline void setQueryFilter ( Query::Mask );
161 inline bool timeout (
const char*,
const Timer&,
double timeout,
bool& timedout )
const;
163 inline void setEnableRedrawInterrupt (
bool );
164 inline void addDrawExtensionGo (
const Name&, InitExtensionGo_t*, DrawExtensionGo_t* );
165 inline void copyDrawExtensionGos (
const CellWidget* );
166 inline QPainter& getPainter (
size_t plane=PlaneId::Working );
167 inline const DisplayStyle::HSVr& getDarkening ()
const;
168 inline void copyToPrinter (
int xpaper,
int ypaper, QPrinter*, PainterCb_t& );
169 inline void copyToImage ( QImage*, PainterCb_t& );
170 inline const float& getScale ()
const;
171 inline const QPoint& getMousePosition ()
const;
172 inline void updateMousePosition ();
173 void setLayerVisible (
const Name& layer,
bool visible );
174 bool isLayerVisible (
const Name& );
175 bool isDrawable (
const Name& );
176 bool isDrawableLayer (
const Name& );
177 bool isDrawableExtension (
const Name& );
178 bool isSelectable (
const Name& )
const;
179 bool isSelectable (
const Layer* )
const;
180 bool isPrinter ()
const;
181 void setPrinter (
bool );
182 inline void setDarkening (
const DisplayStyle::HSVr& );
183 inline void setPen (
const QPen& ,
size_t plane=PlaneId::Working );
185 void drawBox (
const Box& );
187 void drawLine (
const Point&,
const Point&,
bool mode=
true );
188 void drawText (
const Point&,
const char*,
unsigned int flags=0,
int angle=0 );
189 void drawGrid ( QRect );
191 void drawRuler ( shared_ptr<Ruler> );
192 void drawRulers ( QRect );
193 void drawDisplayText (
const QRect& ,
const char*,
unsigned int flags=0 );
194 void drawDisplayText (
const QPoint&,
const char*,
unsigned int flags=0,
int angle=0 );
195 void drawScreenPolygon (
const QPoint*,
int count,
size_t plane=PlaneId::Working );
196 void drawScreenPolygon (
const QPolygon&,
size_t plane=PlaneId::Working );
197 void drawScreenLine (
const QPoint&,
const QPoint&,
size_t plane=PlaneId::Working,
bool mode=
true );
198 void drawScreenRect (
const QPoint&,
const QPoint&,
size_t plane=PlaneId::Working );
199 void drawScreenRect (
const QRect& ,
size_t plane=PlaneId::Working );
200 void drawScreenPolyline (
const QPoint*,
int,
int,
size_t plane=PlaneId::Working );
204 QRect dbuToScreenRect (
const Box& box ,
bool usePoint=
true )
const;
205 inline int dbuToScreenX (
DbU::Unit x )
const;
206 inline int dbuToScreenY (
DbU::Unit y )
const;
207 inline int dbuToScreenLength (
DbU::Unit length )
const;
209 inline QPoint dbuToScreenPoint (
const Point& point )
const;
210 inline DbU::Unit screenToDbuLength (
int length )
const;
211 inline DbU::Unit screenToDbuX (
int x )
const;
212 inline DbU::Unit screenToDbuY (
int y )
const;
213 inline Point screenToDbuPoint (
const QPoint& point )
const;
214 inline Box screenToDbuBox (
const QRect& rect )
const;
215 inline Box& pixelInflate (
Box&,
int pixels )
const;
216 inline Point getTopLeft ()
const;
217 inline Box getVisibleArea ()
const;
218 Box computeVisibleArea (
float scale )
const;
219 Box computeVisibleArea (
float scale,
const Point& topLeft )
const;
220 Box computeVisibleArea (
const Box&,
float& scale )
const;
222 inline bool _underDetailedGridThreshold()
const;
225 inline Point _onSnapGrid (
const Point& )
const;
227 inline Point _onCursorGrid (
const Point& )
const;
229 void pushCursor ( Qt::CursorShape cursor );
231 virtual QSize minimumSizeHint ()
const;
232 virtual void showEvent ( QShowEvent* );
233 virtual void resizeEvent ( QResizeEvent* );
234 virtual void wheelEvent ( QWheelEvent* );
235 virtual void keyPressEvent ( QKeyEvent* );
236 virtual void keyReleaseEvent ( QKeyEvent* );
237 virtual void mouseMoveEvent ( QMouseEvent* );
238 virtual void mousePressEvent ( QMouseEvent* );
239 virtual void mouseReleaseEvent ( QMouseEvent* );
241 void cellChanged (
Cell* );
242 void cellPreModificated ();
243 void cellPostModificated ();
244 void stateChanged ( shared_ptr<CellWidget::State>& );
245 void styleChanged ();
246 void queryFilterChanged ();
248 void updatePalette (
Cell* );
249 void mousePositionChanged (
const Point& position );
250 void selectionModeChanged ();
251 void selectionChanged (
const SelectorSet& );
253 void showBoundariesToggled (
bool );
255 virtual void paintEvent ( QPaintEvent* );
258 void setState ( shared_ptr<CellWidget::State>&
259 ,
unsigned int flags=NoFlags );
260 inline void openRefreshSession ();
261 inline void closeRefreshSession ();
262 inline DrawingPlanes& getDrawingPlanes ();
266 void selectOccurrencesUnder (
Box selectArea );
271 void setShowSelection (
bool state );
272 void setCumulativeSelection (
bool state );
276 void _unselectAll ();
277 inline void addRuler (
const Point&,
const Point& );
278 inline void addRuler ( shared_ptr<Ruler> );
279 inline void clearRulers ();
280 void changeQueryFilter ();
281 void rubberChange ();
283 void setStyle (
int id );
284 void updatePalette ();
285 void cellPreModificate ();
286 void cellPostModificate ();
287 inline void refresh ();
288 void _redraw ( QRect redrawArea );
289 inline void redrawSelection ();
290 void redrawSelection ( QRect redrawArea );
291 void goLeft (
int dx = 0 );
292 void goRight (
int dx = 0 );
293 void goUp (
int dy = 0 );
294 void goDown (
int dy = 0 );
295 void fitToContents (
bool historyEnable=
true );
296 void fitToNet (
const Net*,
bool historyEnable=
true );
297 void setScale (
float );
298 void scaleHistoryUp ();
299 void scaleHistoryDown ();
303 void setShowBoundaries (
bool state );
305 void reframe (
const Box& box,
bool historyEnable=
true );
306 void displayReframe ();
307 void _goLeft (
int dx );
308 void _goRight (
int dx );
309 void _goUp (
int dy );
310 void _goDown (
int dy );
312 std::string _getString ()
const;
318 void setRestore (
bool );
319 inline void setShowSpot (
bool );
320 inline const QPoint& getSpotPoint ()
const;
322 QPoint computeSpotPoint (
const QPoint& );
323 void moveTo (
const QPoint& );
334 enum EventType { GoLeft = 1
341 RedrawEvent ( EventType,
int shift, CellWidget* );
342 inline EventType getType ()
const;
343 inline int getShift ()
const;
350 class RedrawManager {
352 inline RedrawManager ( CellWidget* );
355 void goRight (
int );
360 inline void stopProcessing ();
361 inline bool isProcessing ()
const;
362 inline bool interrupted ()
const;
363 inline size_t getPendings ()
const;
364 inline void openRefreshSession ();
365 inline void closeRefreshSession ();
368 list<RedrawEvent*> _events;
377 enum Ids { Normal = 0
388 class DrawingPlanes {
390 DrawingPlanes (
const QSize& size, CellWidget* cw );
392 inline bool getLineMode ()
const;
393 inline size_t getWorkingPlane ()
const;
394 inline void pushWorkingPlane ();
395 inline void popWorkingPlane ();
396 inline int width ()
const;
397 inline int height ()
const;
398 inline QSize size ()
const;
399 inline void select (
size_t i );
400 inline QPainter& painter (
size_t i=PlaneId::Working );
401 inline void begin (
size_t i=PlaneId::Working );
402 inline void end (
size_t i=PlaneId::Working );
403 inline void buffersBegin ();
404 inline void buffersEnd ();
405 void setLineMode (
bool mode );
406 void setPen (
const QPen& pen );
407 void setBrush (
const QBrush& brush );
408 void setBackground (
const QBrush& brush );
409 void setBackgroundMode ( Qt::BGMode mode );
410 void resize (
const QSize& size );
411 void shiftLeft (
int dx );
412 void shiftRight (
int dx );
413 void shiftUp (
int dy );
414 void shiftDown (
int dy );
415 inline void copyToSelect ();
416 inline void copyToSelect (
const QRect& );
417 void copyToSelect (
int sx,
int sy,
int h,
int w );
418 inline void copyToScreen ();
419 void copyToScreen (
int sx,
int sy,
int h,
int w );
420 inline void copyToPrinter (
int xpaper,
int ypaper, QPrinter*, CellWidget::PainterCb_t& );
421 void copyToPrinter (
int xpaper,
int ypaper,
int sx,
int sy,
int h,
int w, QPrinter*, CellWidget::PainterCb_t& );
422 inline void copyToImage ( QImage*, CellWidget::PainterCb_t& );
423 void copyToImage (
int sx,
int sy,
int h,
int w, QImage*, CellWidget::PainterCb_t& );
425 static const int _cartoucheWidth;
426 static const int _cartoucheHeight;
427 static const int _titleHeight;
428 CellWidget* _cellWidget;
432 QPainter _painters[PlaneId::Working];
436 size_t _workingPlane;
437 size_t _pushWorkingPlane;
440 DrawingPlanes (
const DrawingPlanes& );
441 DrawingPlanes& operator= (
const DrawingPlanes& );
445 class DrawingQuery :
public Query {
447 DrawingQuery ( CellWidget* widget );
448 inline void setQuery (
const Box& area
449 ,
const Transformation& transformation
450 ,
const BasicLayer* basicLayer
451 , ExtensionSlice::Mask extensionMask
452 ,
unsigned int filter
454 inline void addDrawExtensionGo (
const Name&
458 inline void copyDrawExtensionGos (
const DrawingQuery& );
459 void setDrawExtensionGo (
const Name& );
460 virtual bool hasMasterCellCallback ()
const;
461 virtual bool hasGoCallback ()
const;
462 virtual bool hasMarkerCallback ()
const;
463 virtual bool hasRubberCallback ()
const;
464 virtual bool hasExtensionGoCallback ()
const;
465 virtual void masterCellCallback ();
466 virtual void goCallback ( Go* );
467 virtual void rubberCallback ( Rubber* );
468 virtual void markerCallback ( Marker* );
469 virtual void extensionGoCallback ( Go* );
470 void drawMasterCell (
const Cell* cell
471 ,
const Transformation& transformation
473 void drawGo (
const Go* go
474 ,
const BasicLayer* basicLayer
476 ,
const Transformation& transformation
478 void drawRubber (
const Rubber* rubber
480 ,
const Transformation& transformation
482 void drawMarker (
const Marker* marker
484 ,
const Transformation& transformation
486 void drawExtensionGo ( CellWidget* widget
488 ,
const BasicLayer* basicLayer
490 ,
const Transformation& transformation
492 inline unsigned int getGoCount ()
const;
493 inline unsigned int getExtensionGoCount ()
const;
494 inline unsigned int getInstanceCount ()
const;
495 inline void resetGoCount ();
496 inline void resetExtensionGoCount ();
497 inline void resetInstanceCount ();
500 CellWidget* _cellWidget;
501 DrawExtensionGo_t* _drawExtensionGo;
502 map<Name,pair<InitExtensionGo_t*,DrawExtensionGo_t*> >
504 unsigned int _goCount;
505 unsigned int _extensionGoCount;
506 unsigned int _instanceCount;
510 class TextDrawingQuery :
public Query {
512 TextDrawingQuery ( CellWidget* widget );
513 inline void setQuery (
const Box& area
514 ,
const Transformation& transformation
516 virtual bool hasMasterCellCallback ()
const;
517 virtual bool hasGoCallback ()
const;
518 virtual bool hasRubberCallback ()
const;
519 virtual bool hasExtensionGoCallback ()
const;
520 virtual void masterCellCallback ();
521 virtual void goCallback ( Go* go );
522 virtual void extensionGoCallback ( Go* go );
523 virtual void rubberCallback ( Rubber* );
526 CellWidget* _cellWidget;
530 class SelectorCriterions {
532 SelectorCriterions ();
533 ~SelectorCriterions ();
534 inline void setCellWidget ( CellWidget* );
535 inline const vector<SelectorCriterion*>& getCriterions ()
const;
536 SelectorCriterion* add (
const Net* net );
537 SelectorCriterion* add ( Box area );
538 inline SelectorCriterion* add ( SelectorCriterion* );
539 bool remove (
const Net* net );
543 inline size_t size ()
const;
545 CellWidget* _cellWidget;
546 vector<SelectorCriterion*> _criterions;
552 inline State ( Cell* cell=NULL, Path topPath=Path() );
553 State* clone ()
const;
554 inline void setCell ( Cell* );
555 inline void setTopPath ( Path );
556 inline void setCellWidget ( CellWidget* );
560 inline void setDbuMode (
int );
562 inline void setShowBoundaries (
bool );
563 inline void setShowSelection (
bool );
564 inline void setCumulativeSelection (
bool );
565 void setScale (
float );
567 inline void setTopLeft (
const Point& );
568 inline void setQueryFilter ( Query::Mask );
569 inline void setStartLevel (
int );
570 inline void setStopLevel (
int );
571 inline void setRubberShape ( RubberShape );
572 inline void setHistoryEnable (
bool );
573 bool scaleHistoryUp ();
574 bool scaleHistoryDown ();
575 inline Cell* getCell ()
const;
576 inline Cell* getTopCell ()
const;
577 inline Path getTopPath ()
const;
578 const Name& getName ()
const;
579 inline SelectorCriterions& getSelection ();
580 inline RulerSet& getRulers ();
582 inline unsigned int getDbuMode ()
const;
583 inline bool gridMode ()
const;
584 inline bool symbolicMode ()
const;
585 inline bool physicalMode ()
const;
586 inline bool nanoMode ()
const;
587 inline bool microMode ()
const;
588 inline bool showBoundaries ()
const;
589 inline bool showSelection ()
const;
590 inline bool cumulativeSelection ()
const;
591 inline bool getHistoryEnable ()
const;
592 inline size_t getHistorySize ()
const;
593 inline const float& getScale ()
const;
594 inline const Point& getTopLeft ()
const;
595 inline Query::Mask getQueryFilter ()
const;
596 inline int getStartLevel ()
const;
597 inline int getStopLevel ()
const;
598 inline RubberShape getRubberShape ()
const;
603 inline ScaleEntry (
float,
const Point& );
612 Name _hierarchicalName;
613 CellWidget* _cellWidget;
614 SelectorCriterions _selection;
617 unsigned int _dbuMode;
619 bool _showBoundaries;
621 Query::Mask _queryFilter;
624 RubberShape _rubberShape;
625 bool _cumulativeSelection;
626 vector<ScaleEntry> _scaleHistory;
631 class FindStateName :
public unary_function< const shared_ptr<State>&, bool > {
633 inline FindStateName (
const Name& );
634 inline bool operator() (
const shared_ptr<State>& );
636 const Name _cellHierName;
641 static int _initialSide;
642 vector<Qt::CursorShape> _cursors;
644 Technology* _technology;
645 PaletteWidget* _palette;
647 RedrawManager _redrawManager;
648 DrawingPlanes _drawingPlanes;
649 DrawingQuery _drawingQuery;
650 TextDrawingQuery _textDrawingQuery;
651 DisplayStyle::HSVr _darkening;
652 QPoint _mousePosition;
654 shared_ptr<State> _state;
657 bool _selectionHasChanged;
658 int _delaySelectionChanged;
659 bool _cellModificated;
660 bool _enableRedrawInterrupt;
661 SelectorSet _selectors;
662 Command* _activeCommand;
663 vector<Command*> _commands;
664 size_t _redrawRectCount;
667 friend class RedrawManager;
671 inline void CellWidget::Spot::setShowSpot (
bool show )
672 { _showSpot = show; }
675 inline const QPoint& CellWidget::Spot::getSpotPoint ()
const 676 {
return _spotPoint; }
679 inline void CellWidget::DrawingQuery::setQuery (
const Box& area
680 ,
const Transformation& transformation
681 ,
const BasicLayer* basicLayer
682 , ExtensionSlice::Mask extensionMask
683 ,
unsigned int filter
696 inline void CellWidget::setEnableRedrawInterrupt (
bool state )
697 { _enableRedrawInterrupt = state; }
700 inline void CellWidget::openRefreshSession ()
701 { _redrawManager.openRefreshSession (); }
704 inline void CellWidget::closeRefreshSession ()
705 { _redrawManager.closeRefreshSession (); }
708 inline void CellWidget::DrawingQuery::addDrawExtensionGo (
const Name& name
709 , InitExtensionGo_t* initExtensionGo
710 , DrawExtensionGo_t* drawExtensionGo
712 { _drawExtensionGos[name] = make_pair(initExtensionGo,drawExtensionGo); }
715 inline void CellWidget::DrawingQuery::copyDrawExtensionGos (
const CellWidget::DrawingQuery& other )
716 { _drawExtensionGos = other._drawExtensionGos; }
719 inline void CellWidget::DrawingQuery::resetGoCount ()
723 inline void CellWidget::DrawingQuery::resetExtensionGoCount ()
724 { _extensionGoCount = 0; }
727 inline void CellWidget::DrawingQuery::resetInstanceCount ()
728 { _instanceCount = 0; }
731 inline unsigned int CellWidget::DrawingQuery::getGoCount ()
const 735 inline unsigned int CellWidget::DrawingQuery::getExtensionGoCount ()
const 736 {
return _extensionGoCount; }
739 inline unsigned int CellWidget::DrawingQuery::getInstanceCount ()
const 740 {
return _instanceCount; }
743 inline CellWidget::RedrawEvent::EventType CellWidget::RedrawEvent::getType ()
const 747 inline int CellWidget::RedrawEvent::getShift ()
const 751 inline bool CellWidget::RedrawManager::isProcessing ()
const 752 {
return _processing; }
755 inline void CellWidget::RedrawManager::stopProcessing ()
756 { _processing =
false; }
759 inline size_t CellWidget::RedrawManager::getPendings ()
const 760 {
return _events.size(); }
763 inline void CellWidget::RedrawManager::openRefreshSession ()
764 { _refreshSession++; }
767 inline void CellWidget::RedrawManager::closeRefreshSession ()
770 if ( !_processing && (_refreshSession == 0) ) process ();
774 inline bool CellWidget::RedrawManager::interrupted ()
const 776 #ifdef ALLOW_REQUEST_INTERRUPT 777 return ( _events.size() > 5 ) || _interrupted;
784 inline bool CellWidget::DrawingPlanes::getLineMode ()
const 785 {
return _lineMode; }
788 inline size_t CellWidget::DrawingPlanes::getWorkingPlane ()
const 789 {
return _workingPlane; }
792 inline void CellWidget::DrawingPlanes::pushWorkingPlane ()
793 { _pushWorkingPlane = _workingPlane; }
796 inline void CellWidget::DrawingPlanes::popWorkingPlane ()
797 { _workingPlane = _pushWorkingPlane; }
800 inline int CellWidget::DrawingPlanes::width ()
const 801 {
return _planes[PlaneId::Normal]->width(); }
804 inline int CellWidget::DrawingPlanes::height ()
const 805 {
return _planes[PlaneId::Normal]->height(); }
808 inline QSize CellWidget::DrawingPlanes::size ()
const 809 {
return _planes[PlaneId::Normal]->size(); }
812 inline void CellWidget::DrawingPlanes::select (
size_t i )
813 { _workingPlane = i; }
816 inline QPainter& CellWidget::DrawingPlanes::painter (
size_t i )
817 {
return _painters[ (i>=PlaneId::Working) ? _workingPlane : i ]; }
820 inline void CellWidget::DrawingPlanes::begin (
size_t i )
822 size_t wp = (i>=PlaneId::Working) ? _workingPlane : i;
824 case PlaneId::Normal:
825 case PlaneId::Selection:
826 case PlaneId::AutoCopy: _painters[wp ].begin( _planes[wp] );
break;
827 case PlaneId::Widget: _painters[PlaneId::Widget ].begin( _cellWidget );
break;
828 case PlaneId::Printer: _painters[PlaneId::Printer].begin( _printer );
break;
829 case PlaneId::Image: _painters[PlaneId::Image ].begin( _image );
break;
831 std::cerr <<
"[BUG] Bad plane selection." << std::endl;
836 inline void CellWidget::DrawingPlanes::end (
size_t i )
837 { _painters[(i>=PlaneId::Working)?_workingPlane:i].end (); }
840 inline void CellWidget::DrawingPlanes::buffersBegin ()
842 begin( PlaneId::Normal );
843 begin( PlaneId::Selection );
844 begin( PlaneId::AutoCopy );
848 inline void CellWidget::DrawingPlanes::buffersEnd ()
850 end( PlaneId::Normal );
851 end( PlaneId::Selection );
852 end( PlaneId::AutoCopy );
856 inline void CellWidget::DrawingPlanes::copyToSelect ()
857 { copyToSelect ( 0, 0, width(), height() ); }
860 inline void CellWidget::DrawingPlanes::copyToSelect (
const QRect& r )
861 { copyToSelect ( r.x(), r.y(), r.width(), r.height() ); }
864 inline void CellWidget::DrawingPlanes::copyToScreen ()
865 { copyToScreen ( 0, 0, width(), height() ); }
868 inline void CellWidget::DrawingPlanes::copyToPrinter (
int xpaper,
int ypaper, QPrinter* printer, CellWidget::PainterCb_t& cb )
870 copyToPrinter ( xpaper
874 , _cellWidget->geometry().width()
875 , _cellWidget->geometry().height()
882 inline void CellWidget::DrawingPlanes::copyToImage ( QImage* image, CellWidget::PainterCb_t& cb )
886 , _cellWidget->geometry().width()
887 , _cellWidget->geometry().height()
894 inline void CellWidget::SelectorCriterions::setCellWidget ( CellWidget* cw )
895 { _cellWidget = cw; }
898 inline size_t CellWidget::SelectorCriterions::size ()
const 899 {
return _criterions.size(); }
902 inline const vector<SelectorCriterion*>& CellWidget::SelectorCriterions::getCriterions ()
const 903 {
return _criterions; }
906 inline SelectorCriterion* CellWidget::SelectorCriterions::add ( SelectorCriterion* criterion )
908 _criterions.push_back( criterion );
909 return _criterions.back();
913 inline CellWidget::State::ScaleEntry::ScaleEntry (
float scale,
const Point& topLeft )
914 : _scale(scale), _topLeft(topLeft)
918 inline CellWidget::State::State ( Cell* cell, Path topPath )
921 , _hierarchicalName ()
925 , _cursorStep (DbU::
lambda(0.5))
927 , _unitPower (DbU::
Nano)
928 , _showBoundaries (true)
929 , _showSelection (false)
930 , _queryFilter (~Query::DoTerminalCells)
933 , _rubberShape (CellWidget::Barycentric)
934 , _cumulativeSelection(false)
937 , _historyEnable (false)
939 _scaleHistory.push_back ( ScaleEntry(1.0,Point(0,0)) );
940 if (_cell) _hierarchicalName = Name( _cell->getHierarchicalName() );
944 inline unsigned int CellWidget::State::getDbuMode ()
const 948 inline bool CellWidget::State::symbolicMode ()
const 952 inline bool CellWidget::State::gridMode ()
const 956 inline bool CellWidget::State::physicalMode ()
const 957 {
return (_dbuMode == DbU::Physical); }
960 inline void CellWidget::State::setCell ( Cell* cell )
963 if (_cell) _hierarchicalName = Name( _cell->getHierarchicalName() );
967 inline void CellWidget::State::setTopPath ( Path topPath )
968 { _topPath = topPath; }
971 inline void CellWidget::State::setCellWidget ( CellWidget* cw )
974 _selection.setCellWidget ( cw );
978 inline void CellWidget::State::setCursorStep (
DbU::Unit step )
979 { _cursorStep = step; }
981 inline DbU::Unit CellWidget::State::getCursorStep ()
const 982 {
return _cursorStep; }
986 {
return _unitPower; }
989 inline void CellWidget::State::setDbuMode (
int mode )
992 switch ( _dbuMode ) {
995 case DbU::Physical: _cursorStep =
DbU::grid (1.0);
break;
1004 inline void CellWidget::State::setShowBoundaries (
bool state )
1005 { _showBoundaries = state; }
1008 inline void CellWidget::State::setShowSelection (
bool state )
1009 { _showSelection = state; }
1012 inline void CellWidget::State::setCumulativeSelection (
bool state )
1013 { _cumulativeSelection = state; }
1018 _scaleHistory[_ihistory]._topLeft.setX(x);
1019 _scaleHistory[_ihistory]._topLeft.setY(y);
1023 inline void CellWidget::State::setTopLeft (
const Point& topLeft )
1024 { _scaleHistory[_ihistory]._topLeft = topLeft; }
1027 inline void CellWidget::State::setQueryFilter ( Query::Mask mask )
1028 { _queryFilter = mask; }
1031 inline void CellWidget::State::setStartLevel (
int level )
1032 { _startLevel = level; }
1035 inline void CellWidget::State::setStopLevel (
int level )
1036 { _stopLevel = level; }
1039 inline void CellWidget::State::setRubberShape ( RubberShape shape )
1040 { _rubberShape = shape; }
1043 inline void CellWidget::State::setHistoryEnable (
bool enable )
1044 { _historyEnable = enable; }
1047 inline Cell* CellWidget::State::getCell ()
const 1051 inline Path CellWidget::State::getTopPath ()
const 1052 {
return _topPath; }
1055 inline Cell* CellWidget::State::getTopCell ()
const 1056 {
return (_topPath.isEmpty()) ? _cell : _topPath.getOwnerCell(); }
1059 inline DbU::Unit CellWidget::State::cursorStep ()
const 1060 {
return _cursorStep; }
1063 inline CellWidget::SelectorCriterions& CellWidget::State::getSelection ()
1064 {
return _selection; }
1067 inline RulerSet& CellWidget::State::getRulers ()
1071 inline bool CellWidget::State::showBoundaries ()
const 1072 {
return _showBoundaries; }
1075 inline bool CellWidget::State::showSelection ()
const 1076 {
return _showSelection; }
1079 inline bool CellWidget::State::cumulativeSelection ()
const 1080 {
return _cumulativeSelection; }
1083 inline bool CellWidget::State::getHistoryEnable ()
const 1084 {
return _historyEnable; }
1087 inline size_t CellWidget::State::getHistorySize ()
const 1088 {
return _scaleHistory.size(); }
1091 inline const Point& CellWidget::State::getTopLeft ()
const 1092 {
return _scaleHistory[_ihistory]._topLeft; }
1095 inline Query::Mask CellWidget::State::getQueryFilter ()
const 1096 {
return _queryFilter; }
1099 inline int CellWidget::State::getStartLevel ()
const 1100 {
return _startLevel; }
1103 inline int CellWidget::State::getStopLevel ()
const 1104 {
return _stopLevel; }
1107 inline CellWidget::RubberShape CellWidget::State::getRubberShape ()
const 1108 {
return _rubberShape; }
1111 inline const float& CellWidget::State::getScale ()
const 1112 {
return _scaleHistory[_ihistory]._scale; }
1115 inline CellWidget::FindStateName::FindStateName (
const Name& cellHierName )
1116 : unary_function< const shared_ptr<State>&, bool >()
1117 , _cellHierName(cellHierName)
1121 inline bool CellWidget::FindStateName::operator () (
const shared_ptr<State>& state )
1122 {
return state->getName() == _cellHierName; }
1125 inline void CellWidget::setActiveCommand ( Command* command )
1126 { _activeCommand = command; }
1129 inline Command* CellWidget::getActiveCommand ()
const 1130 {
return _activeCommand; }
1133 inline void CellWidget::resetActiveCommand ()
1134 { _activeCommand = NULL; }
1137 inline void CellWidget::setCursorStep (
DbU::Unit step )
1138 { _state->setCursorStep(step); }
1145 inline shared_ptr<CellWidget::State>& CellWidget::getState ()
1147 _state->setTopLeft ( getTopLeft() );
1152 inline shared_ptr<CellWidget::State> CellWidget::getStateClone ()
1154 _state->setTopLeft ( getTopLeft() );
1155 return shared_ptr<State>( _state->clone() );
1159 inline void CellWidget::addDrawExtensionGo (
const Name& name
1160 , InitExtensionGo_t* initExtensionGo
1161 , DrawExtensionGo_t* drawExtensionGo
1163 { _drawingQuery.addDrawExtensionGo( name, initExtensionGo, drawExtensionGo ); }
1166 inline void CellWidget::copyDrawExtensionGos (
const CellWidget* other )
1167 { _drawingQuery.copyDrawExtensionGos( other->_drawingQuery ); }
1170 inline void CellWidget::setStartLevel (
int level )
1172 _drawingQuery.setStartLevel ( level );
1173 _state->setStartLevel ( level );
1174 emit queryFilterChanged ();
1178 inline void CellWidget::setStopLevel (
int level )
1180 _drawingQuery.setStopLevel ( level );
1181 _state->setStopLevel ( level );
1182 emit queryFilterChanged ();
1186 inline int CellWidget::getStartLevel ()
const 1187 {
return _drawingQuery.getStartLevel (); }
1190 inline int CellWidget::getStopLevel ()
const 1191 {
return _drawingQuery.getStopLevel (); }
1194 inline CellWidget::DrawingPlanes& CellWidget::getDrawingPlanes ()
1195 {
return _drawingPlanes; }
1198 inline SelectorSet& CellWidget::getSelectorSet ()
1199 {
return _selectors; }
1202 Occurrences CellWidget::getOccurrencesUnder (
const QRect& area )
const 1203 {
return getOccurrencesUnder(screenToDbuBox(area)); }
1206 inline void CellWidget::addRuler (
const Point& origin,
const Point& extremity )
1208 _state->getRulers().insert ( shared_ptr<Ruler>(
new Ruler(origin,extremity) ) );
1213 inline void CellWidget::addRuler ( shared_ptr<Ruler> ruler )
1215 _state->getRulers().insert ( ruler );
1220 inline void CellWidget::clearRulers ()
1221 { _state->getRulers().clear (); refresh(); }
1224 inline void CellWidget::refresh ()
1225 { _redrawManager.refresh(); }
1228 inline void CellWidget::redrawSelection ()
1229 { redrawSelection ( QRect(QPoint(0,0),_drawingPlanes.size()) ); }
1232 inline void CellWidget::copyToPrinter (
int xpaper,
int ypaper, QPrinter* printer, CellWidget::PainterCb_t& cb )
1233 { _drawingPlanes.copyToPrinter( xpaper, ypaper, printer, cb ); }
1236 inline void CellWidget::copyToImage ( QImage* image, PainterCb_t& cb )
1237 { _drawingPlanes.copyToImage ( image, cb ); }
1240 inline DbU::Unit CellWidget::toDbu (
float d )
const 1243 switch ( getDbuMode() ) {
1254 inline int CellWidget::dbuToScreenX (
DbU::Unit x )
const 1255 {
return (
int)rint ( (
float)( x - _screenArea.
getXMin() ) * getScale() ); }
1258 inline int CellWidget::dbuToScreenY (
DbU::Unit y )
const 1259 {
return (
int)rint ( (
float)( _screenArea.
getYMax() - y ) * getScale() ); }
1262 inline int CellWidget::dbuToScreenLength (
DbU::Unit length )
const 1263 {
return (
int)rint ( (
float)length * getScale() ); }
1267 {
return QPoint ( dbuToScreenX(x), dbuToScreenY(y) ); }
1270 inline QPoint CellWidget::dbuToScreenPoint (
const Point& point )
const 1271 {
return QPoint ( dbuToScreenX(point.getX()), dbuToScreenY(point.getY()) ); }
1274 inline DbU::Unit CellWidget::screenToDbuX (
int x )
const 1278 inline DbU::Unit CellWidget::screenToDbuY (
int y )
const 1282 inline DbU::Unit CellWidget::screenToDbuLength (
int length )
const 1283 {
return (
int)( (float)length / getScale() ); }
1286 inline Point CellWidget::screenToDbuPoint (
const QPoint& point )
const 1287 {
return Point ( screenToDbuX(point.x()), screenToDbuY(point.y()) ); }
1290 inline Box CellWidget::screenToDbuBox (
const QRect& rect )
const 1292 return Box ( screenToDbuX(rect.x())
1293 , screenToDbuY(rect.y())
1294 , screenToDbuX(rect.x()+rect.width ())
1295 , screenToDbuY(rect.y()+rect.height())
1300 inline Box& CellWidget::pixelInflate ( Box& box,
int pixels )
const 1301 {
return box.inflate(screenToDbuLength(pixels)); }
1304 inline Point CellWidget::getTopLeft ()
const 1308 inline Box CellWidget::getVisibleArea ()
const 1309 {
return computeVisibleArea(getScale()); }
1312 inline Cell* CellWidget::getCell ()
const 1313 {
return _state->getCell(); }
1316 inline Cell* CellWidget::getTopCell ()
const 1317 {
return _state->getTopCell(); }
1320 inline Path CellWidget::getTopPath ()
const 1321 {
return _state->getTopPath(); }
1324 inline PaletteWidget* CellWidget::getPalette ()
1325 {
return _palette; }
1328 inline DbU::Unit CellWidget::cursorStep ()
const 1329 {
return _state->cursorStep(); }
1332 inline unsigned int CellWidget::getDbuMode ()
const 1333 {
return _state->getDbuMode(); }
1336 inline bool CellWidget::gridMode ()
const 1337 {
return _state->gridMode(); }
1340 inline bool CellWidget::symbolicMode ()
const 1341 {
return _state->symbolicMode(); }
1344 inline bool CellWidget::physicalMode ()
const 1345 {
return _state->physicalMode(); }
1349 {
return _state->getUnitPower(); }
1352 inline bool CellWidget::showBoundaries ()
const 1353 {
return _state->showBoundaries(); }
1356 inline bool CellWidget::showSelection ()
const 1357 {
return _state->showSelection(); }
1360 inline bool CellWidget::cumulativeSelection ()
const 1361 {
return _state->cumulativeSelection(); }
1364 inline QPainter& CellWidget::getPainter (
size_t plane )
1365 {
return _drawingPlanes.painter(plane); }
1368 inline const DisplayStyle::HSVr& CellWidget::getDarkening ()
const 1369 {
return _darkening; }
1372 inline const float& CellWidget::getScale ()
const 1373 {
return _state->getScale(); }
1376 inline const QPoint& CellWidget::getMousePosition ()
const 1377 {
return _mousePosition; }
1380 inline void CellWidget::updateMousePosition ()
1382 Point mousePoint = screenToDbuPoint ( _mousePosition );
1383 emit mousePositionChanged ( _onCursorGrid(mousePoint) );
1387 inline void CellWidget::setQueryFilter ( Query::Mask filter )
1389 _state->setQueryFilter ( filter );
1390 emit queryFilterChanged ();
1394 inline Query::Mask CellWidget::getQueryFilter ()
const 1395 {
return _state->getQueryFilter(); }
1398 inline void CellWidget::setDbuMode (
int mode )
1399 { _state->setDbuMode(mode); }
1403 { _state->setUnitPower(p); }
1406 inline void CellWidget::setRubberShape ( RubberShape shape )
1408 _state->setRubberShape ( shape );
1409 _redrawManager.refresh ();
1410 emit queryFilterChanged ();
1414 inline CellWidget::RubberShape CellWidget::getRubberShape ()
const 1415 {
return _state->getRubberShape(); }
1418 inline void CellWidget::setPen (
const QPen& pen,
size_t plane )
1419 { _drawingPlanes.painter(plane).setPen(pen); }
1422 inline void CellWidget::setDarkening (
const DisplayStyle::HSVr& darkening )
1423 { _darkening = darkening; }
1426 inline bool CellWidget::isPrinter ()
const 1427 {
return _isPrinter; }
1430 inline void CellWidget::setPrinter (
bool state )
1431 { _isPrinter = state; }
1434 inline bool CellWidget::timeout (
const char* fname,
const Timer& timer,
double timeout,
bool& timedout )
const 1436 if ( timedout )
return true;
1437 if ( timer.getCombTimeOnTheFly() < timeout )
return false;
1440 cerr << Warning(
"CellWidget::%s(): timeout %.3f (limit:%.1f)." 1441 ,fname,timer.getCombTimeOnTheFly(),timeout) << endl;
1446 inline DbU::Unit CellWidget::_snapGridStep ()
const 1454 inline Point CellWidget::_onSnapGrid (
const Point& p )
const 1455 {
return Point(_onSnapGrid(p.getX()),_onSnapGrid(p.getY())); }
1462 inline Point CellWidget::_onCursorGrid (
const Point& p )
const 1463 {
return Point(_onCursorGrid(p.getX()),_onCursorGrid(p.getY())); }
1473 #endif // HURRICANE_CELL_WIDGET static DbU::Unit getOnCustomGrid(DbU::Unit u, DbU::Unit step, SnapMode mode=Nearest)
@@ -86,7 +86,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/DisplayStyle_8h_source.html b/hurricane/doc/viewer/html/DisplayStyle_8h_source.html
index b33288c6..9a66655c 100644
--- a/hurricane/doc/viewer/html/DisplayStyle_8h_source.html
+++ b/hurricane/doc/viewer/html/DisplayStyle_8h_source.html
@@ -74,7 +74,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/Graphics_8h_source.html b/hurricane/doc/viewer/html/Graphics_8h_source.html
index 055a5d66..11d17649 100644
--- a/hurricane/doc/viewer/html/Graphics_8h_source.html
+++ b/hurricane/doc/viewer/html/Graphics_8h_source.html
@@ -78,7 +78,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/InspectorWidget_8h_source.html b/hurricane/doc/viewer/html/InspectorWidget_8h_source.html
index 39201c40..65661979 100644
--- a/hurricane/doc/viewer/html/InspectorWidget_8h_source.html
+++ b/hurricane/doc/viewer/html/InspectorWidget_8h_source.html
@@ -55,7 +55,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/annotated.html b/hurricane/doc/viewer/html/annotated.html
index f6a9a1bd..b9ac246d 100644
--- a/hurricane/doc/viewer/html/annotated.html
+++ b/hurricane/doc/viewer/html/annotated.html
@@ -57,7 +57,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellImage-members.html b/hurricane/doc/viewer/html/classHurricane_1_1CellImage-members.html
index d4431a02..794337f5 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1CellImage-members.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1CellImage-members.html
@@ -59,7 +59,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellImage.html b/hurricane/doc/viewer/html/classHurricane_1_1CellImage.html
index 38c88e5c..5477b56e 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1CellImage.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1CellImage.html
@@ -261,7 +261,7 @@ ShowScale: display a false color scale at the bottom of the image. Useful if you
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter-members.html b/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter-members.html
index 6bb888f6..31a65e58 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter-members.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter-members.html
@@ -57,7 +57,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter.html b/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter.html
index 34101ef4..9ab57538 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1CellPrinter.html
@@ -239,7 +239,7 @@ Implementation details
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellViewer-members.html b/hurricane/doc/viewer/html/classHurricane_1_1CellViewer-members.html
index 454ac7f6..5c1275f5 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1CellViewer-members.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1CellViewer-members.html
@@ -69,7 +69,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellViewer.html b/hurricane/doc/viewer/html/classHurricane_1_1CellViewer.html
index 65588c3e..a671404c 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1CellViewer.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1CellViewer.html
@@ -511,7 +511,7 @@ Public Member Functions
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellWidget-members.html b/hurricane/doc/viewer/html/classHurricane_1_1CellWidget-members.html
index 8589e342..f7e27ce1 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1CellWidget-members.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1CellWidget-members.html
@@ -55,7 +55,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1CellWidget.html b/hurricane/doc/viewer/html/classHurricane_1_1CellWidget.html
index 22726eab..8130934f 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1CellWidget.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1CellWidget.html
@@ -97,7 +97,7 @@ Public Types
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle-members.html b/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle-members.html
index eb6085a6..6d45a984 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle-members.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle-members.html
@@ -71,7 +71,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle.html b/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle.html
index 335c96d3..3e17b1c5 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1DisplayStyle.html
@@ -620,7 +620,7 @@ Static Public Member Functions
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1Graphics-members.html b/hurricane/doc/viewer/html/classHurricane_1_1Graphics-members.html
index 582da63d..d810504b 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1Graphics-members.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1Graphics-members.html
@@ -71,7 +71,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1Graphics.html b/hurricane/doc/viewer/html/classHurricane_1_1Graphics.html
index e54bcf06..3bb8ed22 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1Graphics.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1Graphics.html
@@ -673,7 +673,7 @@ Static Public Member Functions
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget-members.html b/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget-members.html
index 1c278f0e..9d2da6d6 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget-members.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget-members.html
@@ -55,7 +55,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget.html b/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget.html
index d0070930..6e889c08 100644
--- a/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget.html
+++ b/hurricane/doc/viewer/html/classHurricane_1_1InspectorWidget.html
@@ -140,7 +140,7 @@ Inspector Memory Management
diff --git a/hurricane/doc/viewer/html/classes.html b/hurricane/doc/viewer/html/classes.html
index 5a73e047..b3e3c636 100644
--- a/hurricane/doc/viewer/html/classes.html
+++ b/hurricane/doc/viewer/html/classes.html
@@ -63,7 +63,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/dir_0afc25342c548a63e1813d8fbde8101d.html b/hurricane/doc/viewer/html/dir_0afc25342c548a63e1813d8fbde8101d.html
index 315308d5..a394f32a 100644
--- a/hurricane/doc/viewer/html/dir_0afc25342c548a63e1813d8fbde8101d.html
+++ b/hurricane/doc/viewer/html/dir_0afc25342c548a63e1813d8fbde8101d.html
@@ -49,7 +49,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/dir_22af1943967c75aa4d199e6ffd8de9d2.html b/hurricane/doc/viewer/html/dir_22af1943967c75aa4d199e6ffd8de9d2.html
index f7fd6f1b..4c2533c9 100644
--- a/hurricane/doc/viewer/html/dir_22af1943967c75aa4d199e6ffd8de9d2.html
+++ b/hurricane/doc/viewer/html/dir_22af1943967c75aa4d199e6ffd8de9d2.html
@@ -49,7 +49,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/dir_53ec41d7bc61ef1f85d867f95df84d28.html b/hurricane/doc/viewer/html/dir_53ec41d7bc61ef1f85d867f95df84d28.html
index 8412dfe0..746cfd57 100644
--- a/hurricane/doc/viewer/html/dir_53ec41d7bc61ef1f85d867f95df84d28.html
+++ b/hurricane/doc/viewer/html/dir_53ec41d7bc61ef1f85d867f95df84d28.html
@@ -53,7 +53,7 @@ Directories
diff --git a/hurricane/doc/viewer/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/hurricane/doc/viewer/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
index 3fb19a73..cf3b70a0 100644
--- a/hurricane/doc/viewer/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
+++ b/hurricane/doc/viewer/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
@@ -49,7 +49,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/files.html b/hurricane/doc/viewer/html/files.html
index 748c3fe9..1f03c52a 100644
--- a/hurricane/doc/viewer/html/files.html
+++ b/hurricane/doc/viewer/html/files.html
@@ -56,7 +56,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/functions.html b/hurricane/doc/viewer/html/functions.html
index c94641ea..276daf53 100644
--- a/hurricane/doc/viewer/html/functions.html
+++ b/hurricane/doc/viewer/html/functions.html
@@ -286,7 +286,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/functions_enum.html b/hurricane/doc/viewer/html/functions_enum.html
index b5834020..c59f4137 100644
--- a/hurricane/doc/viewer/html/functions_enum.html
+++ b/hurricane/doc/viewer/html/functions_enum.html
@@ -49,7 +49,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/functions_eval.html b/hurricane/doc/viewer/html/functions_eval.html
index 0cab38aa..b386c0e9 100644
--- a/hurricane/doc/viewer/html/functions_eval.html
+++ b/hurricane/doc/viewer/html/functions_eval.html
@@ -52,7 +52,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/functions_func.html b/hurricane/doc/viewer/html/functions_func.html
index 551e3c4d..29201c13 100644
--- a/hurricane/doc/viewer/html/functions_func.html
+++ b/hurricane/doc/viewer/html/functions_func.html
@@ -271,7 +271,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/graph_legend.html b/hurricane/doc/viewer/html/graph_legend.html
index 0da041bb..783bd1d8 100644
--- a/hurricane/doc/viewer/html/graph_legend.html
+++ b/hurricane/doc/viewer/html/graph_legend.html
@@ -74,7 +74,7 @@ A yellow dashed arrow denotes a relation between a template instance and the tem
diff --git a/hurricane/doc/viewer/html/group__graphicsGroup.html b/hurricane/doc/viewer/html/group__graphicsGroup.html
index 34546bff..7193417d 100644
--- a/hurricane/doc/viewer/html/group__graphicsGroup.html
+++ b/hurricane/doc/viewer/html/group__graphicsGroup.html
@@ -96,7 +96,7 @@ General Structure of the Graphics Object
diff --git a/hurricane/doc/viewer/html/index.html b/hurricane/doc/viewer/html/index.html
index 06c82b76..c97a7a40 100644
--- a/hurricane/doc/viewer/html/index.html
+++ b/hurricane/doc/viewer/html/index.html
@@ -45,7 +45,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/html/modules.html b/hurricane/doc/viewer/html/modules.html
index ee30d5d7..95c8f420 100644
--- a/hurricane/doc/viewer/html/modules.html
+++ b/hurricane/doc/viewer/html/modules.html
@@ -54,7 +54,7 @@ $(function() {
diff --git a/hurricane/doc/viewer/latex/refman.tex b/hurricane/doc/viewer/latex/refman.tex
index 8d486c75..29009864 100644
--- a/hurricane/doc/viewer/latex/refman.tex
+++ b/hurricane/doc/viewer/latex/refman.tex
@@ -34,7 +34,7 @@
\vspace*{1cm}
{\large Generated by Doxygen 1.8.14}\\
\vspace*{0.5cm}
- {\small Fri Oct 19 2018 09:33:20}\\
+ {\small Sun May 26 2019 17:26:52}\\
\end{center}
\end{titlepage}
diff --git a/katabatic/doc/html/AutoContactHTee_8h_source.html b/katabatic/doc/html/AutoContactHTee_8h_source.html
index af665d05..b2e30d1a 100644
--- a/katabatic/doc/html/AutoContactHTee_8h_source.html
+++ b/katabatic/doc/html/AutoContactHTee_8h_source.html
@@ -65,7 +65,7 @@ $(function() {
diff --git a/katabatic/doc/html/AutoContactTerminal_8h_source.html b/katabatic/doc/html/AutoContactTerminal_8h_source.html
index 7be9c425..89ac1a50 100644
--- a/katabatic/doc/html/AutoContactTerminal_8h_source.html
+++ b/katabatic/doc/html/AutoContactTerminal_8h_source.html
@@ -66,7 +66,7 @@ $(function() {
diff --git a/katabatic/doc/html/AutoContactTurn_8h_source.html b/katabatic/doc/html/AutoContactTurn_8h_source.html
index 82857e42..d251fd83 100644
--- a/katabatic/doc/html/AutoContactTurn_8h_source.html
+++ b/katabatic/doc/html/AutoContactTurn_8h_source.html
@@ -66,7 +66,7 @@ $(function() {
diff --git a/katabatic/doc/html/AutoContactVTee_8h_source.html b/katabatic/doc/html/AutoContactVTee_8h_source.html
index d4fb53f8..ba6b2452 100644
--- a/katabatic/doc/html/AutoContactVTee_8h_source.html
+++ b/katabatic/doc/html/AutoContactVTee_8h_source.html
@@ -65,7 +65,7 @@ $(function() {
diff --git a/katabatic/doc/html/AutoContact_8h_source.html b/katabatic/doc/html/AutoContact_8h_source.html
index 6930b94c..587c76db 100644
--- a/katabatic/doc/html/AutoContact_8h_source.html
+++ b/katabatic/doc/html/AutoContact_8h_source.html
@@ -191,7 +191,7 @@ $(function() {
diff --git a/katabatic/doc/html/AutoHorizontal_8h_source.html b/katabatic/doc/html/AutoHorizontal_8h_source.html
index 603b5a76..a7e87b3a 100644
--- a/katabatic/doc/html/AutoHorizontal_8h_source.html
+++ b/katabatic/doc/html/AutoHorizontal_8h_source.html
@@ -84,7 +84,7 @@ $(function() {
diff --git a/katabatic/doc/html/AutoSegment_8h_source.html b/katabatic/doc/html/AutoSegment_8h_source.html
index 958769d9..bc081366 100644
--- a/katabatic/doc/html/AutoSegment_8h_source.html
+++ b/katabatic/doc/html/AutoSegment_8h_source.html
@@ -257,7 +257,7 @@ $(function() {
diff --git a/katabatic/doc/html/AutoSegments_8h_source.html b/katabatic/doc/html/AutoSegments_8h_source.html
index d747e452..07b97825 100644
--- a/katabatic/doc/html/AutoSegments_8h_source.html
+++ b/katabatic/doc/html/AutoSegments_8h_source.html
@@ -101,7 +101,7 @@ $(function() {
diff --git a/katabatic/doc/html/AutoVertical_8h_source.html b/katabatic/doc/html/AutoVertical_8h_source.html
index a0c4f758..fb6e3054 100644
--- a/katabatic/doc/html/AutoVertical_8h_source.html
+++ b/katabatic/doc/html/AutoVertical_8h_source.html
@@ -84,7 +84,7 @@ $(function() {
diff --git a/katabatic/doc/html/ChipTools_8h_source.html b/katabatic/doc/html/ChipTools_8h_source.html
index 70310d8f..144275f1 100644
--- a/katabatic/doc/html/ChipTools_8h_source.html
+++ b/katabatic/doc/html/ChipTools_8h_source.html
@@ -71,7 +71,7 @@ $(function() {
diff --git a/katabatic/doc/html/Constants_8h_source.html b/katabatic/doc/html/Constants_8h_source.html
index 352a9fb1..1356205f 100644
--- a/katabatic/doc/html/Constants_8h_source.html
+++ b/katabatic/doc/html/Constants_8h_source.html
@@ -74,7 +74,7 @@ $(function() {
diff --git a/katabatic/doc/html/GCellGrid_8h_source.html b/katabatic/doc/html/GCellGrid_8h_source.html
index 964bccec..6a587ead 100644
--- a/katabatic/doc/html/GCellGrid_8h_source.html
+++ b/katabatic/doc/html/GCellGrid_8h_source.html
@@ -78,7 +78,7 @@ $(function() {
diff --git a/katabatic/doc/html/GCell_8h_source.html b/katabatic/doc/html/GCell_8h_source.html
index 2b0346a7..a73e2d2c 100644
--- a/katabatic/doc/html/GCell_8h_source.html
+++ b/katabatic/doc/html/GCell_8h_source.html
@@ -144,7 +144,7 @@ $(function() {
diff --git a/katabatic/doc/html/GCells_8h_source.html b/katabatic/doc/html/GCells_8h_source.html
index 279f6e73..1f17e476 100644
--- a/katabatic/doc/html/GCells_8h_source.html
+++ b/katabatic/doc/html/GCells_8h_source.html
@@ -59,7 +59,7 @@ $(function() {
diff --git a/katabatic/doc/html/Grid_8h_source.html b/katabatic/doc/html/Grid_8h_source.html
index 4a16fbe0..802e3d05 100644
--- a/katabatic/doc/html/Grid_8h_source.html
+++ b/katabatic/doc/html/Grid_8h_source.html
@@ -77,7 +77,7 @@ $(function() {
diff --git a/katabatic/doc/html/KatabaticEngine_8h_source.html b/katabatic/doc/html/KatabaticEngine_8h_source.html
index b2a46efc..089de870 100644
--- a/katabatic/doc/html/KatabaticEngine_8h_source.html
+++ b/katabatic/doc/html/KatabaticEngine_8h_source.html
@@ -122,7 +122,7 @@ $(function() {
diff --git a/katabatic/doc/html/Observer_8h_source.html b/katabatic/doc/html/Observer_8h_source.html
index f1764b6f..83124bf2 100644
--- a/katabatic/doc/html/Observer_8h_source.html
+++ b/katabatic/doc/html/Observer_8h_source.html
@@ -62,7 +62,7 @@ $(function() {
diff --git a/katabatic/doc/html/Session_8h_source.html b/katabatic/doc/html/Session_8h_source.html
index edc6efb4..3f8019c7 100644
--- a/katabatic/doc/html/Session_8h_source.html
+++ b/katabatic/doc/html/Session_8h_source.html
@@ -100,7 +100,7 @@ $(function() {
diff --git a/katabatic/doc/html/annotated.html b/katabatic/doc/html/annotated.html
index 9e7693e7..437aa8bd 100644
--- a/katabatic/doc/html/annotated.html
+++ b/katabatic/doc/html/annotated.html
@@ -82,7 +82,7 @@ $(function() {
diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContact-members.html b/katabatic/doc/html/classKatabatic_1_1AutoContact-members.html
index d3cb12b6..826be194 100644
--- a/katabatic/doc/html/classKatabatic_1_1AutoContact-members.html
+++ b/katabatic/doc/html/classKatabatic_1_1AutoContact-members.html
@@ -126,7 +126,7 @@ $(function() {
diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContact.html b/katabatic/doc/html/classKatabatic_1_1AutoContact.html
index 43c85484..56e53a93 100644
--- a/katabatic/doc/html/classKatabatic_1_1AutoContact.html
+++ b/katabatic/doc/html/classKatabatic_1_1AutoContact.html
@@ -2433,7 +2433,7 @@ Notes - Differences from Katabatic 2
diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee-members.html b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee-members.html
index f88deb86..ec60ba04 100644
--- a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee-members.html
+++ b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee-members.html
@@ -127,7 +127,7 @@ $(function() {
diff --git a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html
index f3423920..d59c7385 100644
--- a/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html
+++ b/katabatic/doc/html/classKatabatic_1_1AutoContactHTee.html
@@ -454,7 +454,7 @@ Update H-Tee Topology