* ./hurricane/src/hurricane:
- Change: In RoutingPad, uses my C++ style. Normalize constructors calls. Allow to select (trough flags) the way the "best component" is choosen. Currently: Biggest Area or Lowest Layer or Highest Layer. * ./hurricane/src/viewer: - New: In DisplayStyle, darkening is now expressed as a ratio over the HSV components of a color. Introduce a new DisplayStyle::HSVr type. Allow a more readable darkening effect. All object modicated accordingly. - Change: In NetlistWidget, the "Net" section now correctly dimension itself on the widest net name. Must suppress all the size Hints in the header & data models.
This commit is contained in:
parent
3d28803fed
commit
f7721dd754
|
@ -215,7 +215,7 @@ void Cell::flattenNets(bool buildRings)
|
|||
}
|
||||
|
||||
forEach ( Occurrence, iplugOccurrence, hyperNet.getLeafPlugOccurrences() ) {
|
||||
currentRP = createRoutingPad ( net, *iplugOccurrence );
|
||||
currentRP = RoutingPad::create ( net, *iplugOccurrence, RoutingPad::BiggestArea );
|
||||
currentRP->materialize ();
|
||||
if ( buildRings ) {
|
||||
if ( previousRP ) {
|
||||
|
@ -233,7 +233,7 @@ void Cell::flattenNets(bool buildRings)
|
|||
forEach ( Component*, icomponent, net->getComponents() ) {
|
||||
Pin* pin = dynamic_cast<Pin*>( *icomponent );
|
||||
if ( pin ) {
|
||||
currentRP = createRoutingPad ( pin );
|
||||
currentRP = RoutingPad::create ( pin );
|
||||
if ( buildRings ) {
|
||||
if ( previousRP ) {
|
||||
currentRP->getBodyHook()->attach ( previousRP->getBodyHook() );
|
||||
|
|
|
@ -145,7 +145,7 @@ size_t DeepNet::_createRoutingPads ( bool buildRings )
|
|||
for_each_occurrence ( plugOccurrence, hyperNet.getLeafPlugOccurrences() ) {
|
||||
nbRoutingPads++;
|
||||
|
||||
currentRP = createRoutingPad ( this, plugOccurrence );
|
||||
currentRP = RoutingPad::create ( this, plugOccurrence, RoutingPad::BiggestArea );
|
||||
if ( buildRings ) {
|
||||
if ( previousRP ) {
|
||||
currentRP->getBodyHook()->attach ( previousRP->getBodyHook() );
|
||||
|
|
|
@ -1,23 +1,43 @@
|
|||
// ****************************************************************************************************
|
||||
// File: ./RoutingPad.cpp
|
||||
// Authors: H.Clement, M.Sroka
|
||||
// Copyright (c) BULL S.A. 2000-2009, All Rights Reserved
|
||||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// Copyright (c) BULL S.A. 2000-2010, All Rights Reserved
|
||||
//
|
||||
// This file is part of Hurricane.
|
||||
//
|
||||
// Hurricane is free software: you can redistribute it and/or modify it under the terms of the GNU
|
||||
// Lesser General Public License as published by the Free Software Foundation, either version 3 of the
|
||||
// Hurricane is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Lesser General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// Hurricane is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
|
||||
// Hurricane is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
|
||||
// TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the Lesser GNU General Public License along with Hurricane. If
|
||||
// not, see <http://www.gnu.org/licenses/>.
|
||||
// ****************************************************************************************************
|
||||
// You should have received a copy of the Lesser GNU General Public
|
||||
// License along with Hurricane. If not, see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Authors : Hugo Clement & Marek Sroka |
|
||||
// | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Header : "./RoutingPad.h" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
|
||||
#include "hurricane/RoutingPad.h"
|
||||
#include "hurricane/Net.h"
|
||||
#include "hurricane/NetExternalComponents.h"
|
||||
#include "hurricane/Layer.h"
|
||||
|
@ -29,36 +49,29 @@
|
|||
#include "hurricane/Cell.h"
|
||||
#include "hurricane/Instance.h"
|
||||
#include "hurricane/Error.h"
|
||||
#include "hurricane/RoutingPad.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
// ****************************************************************************************************
|
||||
// RoutingPad implementation
|
||||
// ****************************************************************************************************
|
||||
|
||||
RoutingPad::RoutingPad(Net* net, const Point& p, Occurrence occurrence )
|
||||
// **********************************************************************************
|
||||
: Inherit(net),
|
||||
_x(p.getX()),
|
||||
_y(p.getY()),
|
||||
_occurrence(occurrence)
|
||||
{
|
||||
}
|
||||
RoutingPad::RoutingPad ( Net* net, const Point& p, Occurrence occurrence )
|
||||
: Inherit (net)
|
||||
, _x (p.getX())
|
||||
, _y (p.getY())
|
||||
, _occurrence(occurrence)
|
||||
{ }
|
||||
|
||||
|
||||
RoutingPad* RoutingPad::create(Net* net, Occurrence occurrence)
|
||||
// ***********************************************************
|
||||
{
|
||||
if (!net)
|
||||
throw Error ("Can't create RoutingPad : NULL net");
|
||||
if (!occurrence.isValid())
|
||||
throw Error ("Can't create RoutingPag : Invalid occurrence");
|
||||
RoutingPad* RoutingPad::create ( Net* net, Occurrence occurrence, unsigned int flags )
|
||||
{
|
||||
if ( not net ) throw Error ("Can't create RoutingPad : NULL net");
|
||||
if ( not occurrence.isValid() ) throw Error ("Can't create RoutingPag : Invalid occurrence");
|
||||
|
||||
//TODO Gerer une contruction avec un composant externe, mais ce n'est pas prioritaire
|
||||
Plug* plug = NULL;
|
||||
Pin* pin = NULL;
|
||||
Contact* contact = NULL;
|
||||
Point position;
|
||||
Point position;
|
||||
|
||||
if ( (plug = dynamic_cast<Plug*>(occurrence.getEntity()) ) ) {
|
||||
position = occurrence.getPath().getTransformation().getPoint( plug->getPosition() );
|
||||
|
@ -68,236 +81,203 @@ RoutingPad* RoutingPad::create(Net* net, Occurrence occurrence)
|
|||
position = occurrence.getPath().getTransformation().getPoint( contact->getPosition() );
|
||||
}
|
||||
|
||||
if ( !plug && !pin && !contact )
|
||||
throw Error ("Can't create RoutingPad : plug or pin occurrence *required*");
|
||||
if ( (not plug) and (not pin) and (not contact) )
|
||||
throw Error ("Can't create RoutingPad : Plug Pin, or Contact Occurrence *required*");
|
||||
|
||||
RoutingPad* routingPad = new RoutingPad(net, position, occurrence);
|
||||
|
||||
routingPad->_postCreate();
|
||||
|
||||
if ( plug and (flags & ComponentSelection) ) routingPad->setOnBestComponent(flags);
|
||||
|
||||
return routingPad;
|
||||
}
|
||||
|
||||
void RoutingPad::_postCreate()
|
||||
// ****************************
|
||||
{
|
||||
Inherit::_postCreate();
|
||||
|
||||
if (!_occurrence.getPath().isEmpty())
|
||||
_occurrence.getMasterCell()->_addSlaveEntity(_occurrence.getEntity(),this);
|
||||
}
|
||||
|
||||
DbU::Unit RoutingPad::getX() const
|
||||
// ***********************
|
||||
{
|
||||
return _x;
|
||||
}
|
||||
|
||||
DbU::Unit RoutingPad::getY() const
|
||||
// ***********************
|
||||
{
|
||||
return _y;
|
||||
}
|
||||
|
||||
Box RoutingPad::getBoundingBox() const
|
||||
// ********************************
|
||||
{
|
||||
Component* component = _getEntityAsComponent();
|
||||
if ( component ) {
|
||||
return _occurrence.getPath().getTransformation().getBox ( component->getBoundingBox() );
|
||||
}
|
||||
|
||||
return Box(getPosition());
|
||||
}
|
||||
|
||||
Box RoutingPad::getBoundingBox(const BasicLayer* basicLayer) const
|
||||
// ******************************************************
|
||||
{
|
||||
Component* component = _getEntityAsComponent();
|
||||
if ( component )
|
||||
return _occurrence.getPath().getTransformation().getBox ( component->getBoundingBox(basicLayer) );
|
||||
void RoutingPad::_postCreate ()
|
||||
{
|
||||
Inherit::_postCreate();
|
||||
|
||||
return Box(getPosition());
|
||||
}
|
||||
|
||||
const Layer* RoutingPad::getLayer() const
|
||||
// ******************************************************
|
||||
{
|
||||
Component* component = _getEntityAsComponent();
|
||||
if ( component ) return component->getLayer ();
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Point RoutingPad::getSourcePosition() const
|
||||
// ****************************************
|
||||
{
|
||||
Segment* segment = _getEntityAsSegment();
|
||||
if ( segment )
|
||||
return _occurrence.getPath().getTransformation().getPoint ( segment->getSourcePosition() );
|
||||
|
||||
return getPosition();
|
||||
}
|
||||
|
||||
Point RoutingPad::getTargetPosition() const
|
||||
// ****************************************
|
||||
{
|
||||
Segment* segment = _getEntityAsSegment();
|
||||
if ( segment )
|
||||
return _occurrence.getPath().getTransformation().getPoint ( segment->getTargetPosition() );
|
||||
|
||||
return getPosition();
|
||||
}
|
||||
|
||||
DbU::Unit RoutingPad::getSourceX() const
|
||||
// ********************************
|
||||
{
|
||||
return getSourcePosition().getX();
|
||||
}
|
||||
|
||||
DbU::Unit RoutingPad::getSourceY() const
|
||||
// ********************************
|
||||
{
|
||||
return getSourcePosition().getY();
|
||||
}
|
||||
|
||||
DbU::Unit RoutingPad::getTargetX() const
|
||||
// ********************************
|
||||
{
|
||||
return getTargetPosition().getX();
|
||||
}
|
||||
|
||||
DbU::Unit RoutingPad::getTargetY() const
|
||||
// ********************************
|
||||
{
|
||||
return getTargetPosition().getY();
|
||||
}
|
||||
|
||||
Point RoutingPad::getCenter() const
|
||||
// ****************************************
|
||||
{
|
||||
Segment* segment = _getEntityAsSegment();
|
||||
if ( segment )
|
||||
return _occurrence.getPath().getTransformation().getPoint ( segment->getCenter() );
|
||||
|
||||
return getPosition();
|
||||
}
|
||||
if ( not _occurrence.getPath().isEmpty() )
|
||||
_occurrence.getMasterCell()->_addSlaveEntity(_occurrence.getEntity(),this);
|
||||
}
|
||||
|
||||
|
||||
void RoutingPad::translate(const DbU::Unit& dx, const DbU::Unit& dy)
|
||||
// ****************************************************
|
||||
{
|
||||
if ((dx != 0) || (dy != 0)) {
|
||||
invalidate(true);
|
||||
_x += dx;
|
||||
_y += dy;
|
||||
RoutingPad* RoutingPad::create ( Pin* pin )
|
||||
{
|
||||
Occurrence pinOccurrence ( pin, Path() );
|
||||
|
||||
#if 0
|
||||
forEach ( RoutingPad*, irp, pin->getNet()->getRoutingPads() ) {
|
||||
if ( (*irp)->getOccurrence() == pinOccurrence )
|
||||
return (*irp);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void RoutingPad::setX(const DbU::Unit& x)
|
||||
// ******************************
|
||||
{
|
||||
setPosition(x, getY());
|
||||
}
|
||||
return RoutingPad::create ( pin->getNet(), pinOccurrence );
|
||||
}
|
||||
|
||||
void RoutingPad::setY(const DbU::Unit& y)
|
||||
// ******************************
|
||||
{
|
||||
setPosition(getX(), y);
|
||||
}
|
||||
|
||||
void RoutingPad::setPosition(const DbU::Unit& x, const DbU::Unit& y)
|
||||
// ****************************************************
|
||||
{
|
||||
setOffset(x, y);
|
||||
}
|
||||
DbU::Unit RoutingPad::getX () const { return _x; }
|
||||
DbU::Unit RoutingPad::getY () const { return _y; }
|
||||
DbU::Unit RoutingPad::getSourceX () const { return getSourcePosition().getX(); }
|
||||
DbU::Unit RoutingPad::getSourceY () const { return getSourcePosition().getY(); }
|
||||
DbU::Unit RoutingPad::getTargetX () const { return getTargetPosition().getX(); }
|
||||
DbU::Unit RoutingPad::getTargetY () const { return getTargetPosition().getY(); }
|
||||
|
||||
void RoutingPad::setPosition(const Point& position)
|
||||
// *********************************************
|
||||
{
|
||||
setPosition(position.getX(), position.getY());
|
||||
}
|
||||
|
||||
void RoutingPad::setOffset(const DbU::Unit& x, const DbU::Unit& y)
|
||||
// ****************************************************
|
||||
{
|
||||
Box RoutingPad::getBoundingBox () const
|
||||
{
|
||||
Component* component = _getEntityAsComponent();
|
||||
if ( component )
|
||||
return _occurrence.getPath().getTransformation().getBox ( component->getBoundingBox() );
|
||||
|
||||
return Box(getPosition());
|
||||
}
|
||||
|
||||
|
||||
Box RoutingPad::getBoundingBox ( const BasicLayer* basicLayer ) const
|
||||
{
|
||||
Component* component = _getEntityAsComponent();
|
||||
if ( component )
|
||||
return _occurrence.getPath().getTransformation().getBox ( component->getBoundingBox(basicLayer) );
|
||||
|
||||
return Box(getPosition());
|
||||
}
|
||||
|
||||
|
||||
const Layer* RoutingPad::getLayer () const
|
||||
{
|
||||
Component* component = _getEntityAsComponent();
|
||||
if ( component ) return component->getLayer ();
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
Point RoutingPad::getSourcePosition () const
|
||||
{
|
||||
Segment* segment = _getEntityAsSegment();
|
||||
if ( segment )
|
||||
return _occurrence.getPath().getTransformation().getPoint ( segment->getSourcePosition() );
|
||||
|
||||
return getPosition();
|
||||
}
|
||||
|
||||
|
||||
Point RoutingPad::getTargetPosition() const
|
||||
{
|
||||
Segment* segment = _getEntityAsSegment();
|
||||
if ( segment )
|
||||
return _occurrence.getPath().getTransformation().getPoint ( segment->getTargetPosition() );
|
||||
|
||||
return getPosition();
|
||||
}
|
||||
|
||||
|
||||
Point RoutingPad::getCenter() const
|
||||
{
|
||||
Segment* segment = _getEntityAsSegment();
|
||||
if ( segment )
|
||||
return _occurrence.getPath().getTransformation().getPoint ( segment->getCenter() );
|
||||
|
||||
return getPosition();
|
||||
}
|
||||
|
||||
|
||||
void RoutingPad::translate(const DbU::Unit& dx, const DbU::Unit& dy)
|
||||
{
|
||||
if ( (dx != 0) or (dy != 0) ) {
|
||||
invalidate(true);
|
||||
_x += dx;
|
||||
_y += dy;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RoutingPad::setX ( const DbU::Unit& x ) { setPosition(x, getY()); }
|
||||
void RoutingPad::setY ( const DbU::Unit& y ) { setPosition(getX(), y); }
|
||||
void RoutingPad::setPosition ( const DbU::Unit& x, const DbU::Unit& y ) { setOffset(x, y); }
|
||||
void RoutingPad::setPosition ( const Point& position) { setPosition(position.getX(), position.getY()); }
|
||||
|
||||
|
||||
void RoutingPad::setOffset ( const DbU::Unit& x, const DbU::Unit& y )
|
||||
{
|
||||
invalidate(true);
|
||||
_x = x;
|
||||
_y = y;
|
||||
}
|
||||
|
||||
void RoutingPad::_preDestroy()
|
||||
// ***********************
|
||||
{
|
||||
// trace << "entering RoutingPad::preDestroy: " << this << endl;
|
||||
// trace_in();
|
||||
}
|
||||
|
||||
|
||||
if (!_occurrence.getPath().isEmpty())
|
||||
_occurrence.getMasterCell()->_removeSlaveEntity(_occurrence.getEntity(),this);
|
||||
Inherit::_preDestroy();
|
||||
void RoutingPad::_preDestroy ()
|
||||
{
|
||||
// trace << "entering RoutingPad::preDestroy: " << this << endl;
|
||||
// trace_in();
|
||||
|
||||
// trace << "exiting RoutingPad::preDestroy:" << endl;
|
||||
// trace_out();
|
||||
}
|
||||
if ( not _occurrence.getPath().isEmpty() )
|
||||
_occurrence.getMasterCell()->_removeSlaveEntity(_occurrence.getEntity(),this);
|
||||
Inherit::_preDestroy();
|
||||
|
||||
string RoutingPad::_getString() const
|
||||
// *******************************
|
||||
{
|
||||
// trace << "exiting RoutingPad::preDestroy:" << endl;
|
||||
// trace_out();
|
||||
}
|
||||
|
||||
|
||||
string RoutingPad::_getString () const
|
||||
{
|
||||
string s = Inherit::_getString();
|
||||
s.insert(s.length() - 1, " [" + DbU::getValueString(getX()));
|
||||
s.insert(s.length() - 1, " " + DbU::getValueString(getY()));
|
||||
s.insert(s.length() - 1, "] ");
|
||||
s.insert(s.length() - 1, getString(_occurrence));
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
Record* RoutingPad::_getRecord() const
|
||||
// **************************
|
||||
{
|
||||
|
||||
Record* RoutingPad::_getRecord () const
|
||||
{
|
||||
Record* record = Inherit::_getRecord();
|
||||
if (record) {
|
||||
record->add(getSlot("X", &_x));
|
||||
record->add(getSlot("Y", &_y));
|
||||
record->add(getSlot("Occurrence",_occurrence));
|
||||
if ( record ) {
|
||||
record->add(getSlot("_x" , &_x ));
|
||||
record->add(getSlot("_y" , &_y ));
|
||||
record->add(getSlot("_occurrence",_occurrence));
|
||||
}
|
||||
return record;
|
||||
}
|
||||
}
|
||||
|
||||
Component* RoutingPad::_getEntityAsComponent () const
|
||||
// ***************************************************
|
||||
{
|
||||
if ( _occurrence.isValid() )
|
||||
return dynamic_cast<Component*>( _occurrence.getEntity() );
|
||||
|
||||
return NULL;
|
||||
}
|
||||
Component* RoutingPad::_getEntityAsComponent () const
|
||||
{
|
||||
if ( _occurrence.isValid() )
|
||||
return dynamic_cast<Component*>( _occurrence.getEntity() );
|
||||
|
||||
Segment* RoutingPad::_getEntityAsSegment () const
|
||||
// ***********************************************
|
||||
{
|
||||
if ( _occurrence.isValid() )
|
||||
return dynamic_cast<Segment*>( _occurrence.getEntity() );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void RoutingPad::setExternalComponent(Component* component)
|
||||
// ********************************************************
|
||||
{
|
||||
if (isMaterialized()) invalidate(false);
|
||||
Segment* RoutingPad::_getEntityAsSegment () const
|
||||
{
|
||||
if ( _occurrence.isValid() )
|
||||
return dynamic_cast<Segment*>( _occurrence.getEntity() );
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
void RoutingPad::setExternalComponent ( Component* component )
|
||||
{
|
||||
if ( isMaterialized() ) invalidate(false);
|
||||
|
||||
Occurrence plugOccurrence = getPlugOccurrence();
|
||||
Plug* plug= static_cast<Plug*>(plugOccurrence.getEntity());
|
||||
if (plug->getMasterNet() != component->getNet())
|
||||
throw Error("Cannot Set External Component to Routing Pad : Inconsistant Net");
|
||||
Plug* plug = static_cast<Plug*>(plugOccurrence.getEntity());
|
||||
if ( plug->getMasterNet() != component->getNet() )
|
||||
throw Error("Cannot Set External Component to Routing Pad : Inconsistant Net");
|
||||
|
||||
_occurrence.getMasterCell()->_removeSlaveEntity(_occurrence.getEntity(),this);
|
||||
_occurrence = Occurrence(component,Path(plugOccurrence.getPath(),plug->getInstance()));
|
||||
|
||||
Point position = _occurrence.getPath().getTransformation().getPoint ( component->getPosition() );
|
||||
|
||||
Point position = _occurrence.getPath().getTransformation().getPoint ( component->getPosition() );
|
||||
Horizontal* horizontal = dynamic_cast<Horizontal*>(component);
|
||||
|
||||
if ( horizontal ) {
|
||||
setX ( 0 );
|
||||
setY ( position.getY() );
|
||||
|
@ -312,85 +292,76 @@ void RoutingPad::setExternalComponent(Component* component)
|
|||
|
||||
_occurrence.getMasterCell()->_addSlaveEntity(_occurrence.getEntity(),this);
|
||||
|
||||
if (!isMaterialized()) {
|
||||
materialize();
|
||||
}
|
||||
}
|
||||
if (!isMaterialized()) materialize();
|
||||
}
|
||||
|
||||
|
||||
Occurrence RoutingPad::getPlugOccurrence()
|
||||
// ***************************************
|
||||
{
|
||||
Occurrence RoutingPad::getPlugOccurrence ()
|
||||
{
|
||||
if (dynamic_cast<Plug*>(_occurrence.getEntity()))
|
||||
return _occurrence;
|
||||
Component* component= static_cast<Component*>(_occurrence.getEntity());
|
||||
Net* net=component->getNet();
|
||||
Path path=_occurrence.getPath();
|
||||
if (path.isEmpty())
|
||||
throw Error("Empty Path => not in an instance");
|
||||
Instance* instance=path.getTailInstance();
|
||||
Plug* plug=instance->getPlug(net);
|
||||
return _occurrence;
|
||||
|
||||
Component* component = static_cast<Component*>(_occurrence.getEntity());
|
||||
Net* net = component->getNet();
|
||||
Path path = _occurrence.getPath();
|
||||
|
||||
if ( path.isEmpty() )
|
||||
throw Error("Empty Path => not in an instance");
|
||||
|
||||
Instance* instance = path.getTailInstance();
|
||||
Plug* plug = instance->getPlug(net);
|
||||
|
||||
return Occurrence(plug,path.getHeadPath());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RoutingPad::restorePlugOccurrence()
|
||||
// *************************************
|
||||
{
|
||||
void RoutingPad::restorePlugOccurrence ()
|
||||
{
|
||||
if (isMaterialized()) unmaterialize();
|
||||
|
||||
_occurrence=getPlugOccurrence();
|
||||
setPosition ( _occurrence.getPath().getTransformation().getPoint
|
||||
( dynamic_cast<Component*>(_occurrence.getEntity())->getPosition() ) );
|
||||
}
|
||||
|
||||
RoutingPad* createRoutingPad ( Net* net, Occurrence plugOccurrence )
|
||||
// *****************************************************************
|
||||
{
|
||||
Component* bestComponent = NULL;
|
||||
Plug* plug = static_cast<Plug*>(plugOccurrence.getEntity());
|
||||
|
||||
for_each_component (component, NetExternalComponents::get(plug->getMasterNet()) ) {
|
||||
if ( !bestComponent ) { bestComponent = component; continue; }
|
||||
if ( /* IsOnTop(component->getLayer(),bestComponent->getLayer())
|
||||
||*/ ( getArea(component) > getArea(bestComponent) ) ) {
|
||||
bestComponent = component;
|
||||
}
|
||||
end_for
|
||||
}
|
||||
|
||||
if ( !bestComponent ) {
|
||||
string message = "CreateRoutingPad(): Cannot find external component of ";
|
||||
message += getString(plug->getMasterNet()) + " in ";
|
||||
message += getString(plug->getInstance()) + ".\n" ;
|
||||
throw Error ( message );
|
||||
}
|
||||
|
||||
RoutingPad* rp = RoutingPad::create ( net, plugOccurrence );
|
||||
rp->setExternalComponent ( bestComponent );
|
||||
|
||||
return rp;
|
||||
}
|
||||
|
||||
RoutingPad* createRoutingPad ( Pin* pin )
|
||||
// **************************************
|
||||
{
|
||||
Occurrence pinOccurrence ( pin, Path() );
|
||||
|
||||
# if 0
|
||||
for_each_routing_pad ( routingPad, pin->getNet()->getRoutingPads() ) {
|
||||
if ( routingPad->getOccurrence() == pinOccurrence )
|
||||
return routingPad;
|
||||
end_for
|
||||
( dynamic_cast<Component*>(_occurrence.getEntity())->getPosition() ) );
|
||||
}
|
||||
# endif
|
||||
|
||||
return RoutingPad::create ( pin->getNet(), pinOccurrence );
|
||||
}
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
||||
Component* RoutingPad::setOnBestComponent ( unsigned int flags )
|
||||
{
|
||||
restorePlugOccurrence ();
|
||||
|
||||
// ****************************************************************************************************
|
||||
// Copyright (c) BULL S.A. 2000-2009, All Rights Reserved
|
||||
// ****************************************************************************************************
|
||||
Component* bestComponent = NULL;
|
||||
Plug* plug = static_cast<Plug*>(_occurrence.getEntity());
|
||||
|
||||
forEach ( Component*, icomponent, NetExternalComponents::get(plug->getMasterNet()) ) {
|
||||
if ( not bestComponent ) { bestComponent = *icomponent; continue; }
|
||||
|
||||
switch ( flags & ComponentSelection ) {
|
||||
case LowestLayer:
|
||||
if ( icomponent->getLayer()->below(bestComponent->getLayer()) )
|
||||
bestComponent = *icomponent;
|
||||
break;
|
||||
case HighestLayer:
|
||||
if ( icomponent->getLayer()->above(bestComponent->getLayer()) )
|
||||
bestComponent = *icomponent;
|
||||
break;
|
||||
case BiggestArea:
|
||||
default:
|
||||
if ( getArea(*icomponent) > getArea(bestComponent) )
|
||||
bestComponent = *icomponent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( not bestComponent )
|
||||
throw Error ( "RoutingPad::_getBestComponent(): No external components for\n"
|
||||
" %s of %s."
|
||||
,getString(plug->getMasterNet()).c_str()
|
||||
,getString(plug->getInstance ()).c_str() );
|
||||
|
||||
setExternalComponent ( bestComponent );
|
||||
|
||||
return bestComponent;
|
||||
}
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
||||
|
|
|
@ -1,113 +1,110 @@
|
|||
// ****************************************************************************************************
|
||||
// File: ./hurricane/RoutingPad.h
|
||||
// Authors: H.Clement, M.Sroka
|
||||
// Copyright (c) BULL S.A. 2000-2009, All Rights Reserved
|
||||
|
||||
// -*- C++ -*-
|
||||
//
|
||||
// Copyright (c) BULL S.A. 2000-2010, All Rights Reserved
|
||||
//
|
||||
// This file is part of Hurricane.
|
||||
//
|
||||
// Hurricane is free software: you can redistribute it and/or modify it under the terms of the GNU
|
||||
// Lesser General Public License as published by the Free Software Foundation, either version 3 of the
|
||||
// Hurricane is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Lesser General Public License as
|
||||
// published by the Free Software Foundation, either version 3 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// Hurricane is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
|
||||
// Hurricane is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-
|
||||
// TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the Lesser GNU General Public License along with Hurricane. If
|
||||
// not, see <http://www.gnu.org/licenses/>.
|
||||
// ****************************************************************************************************
|
||||
// You should have received a copy of the Lesser GNU General Public
|
||||
// License along with Hurricane. If not, see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ===================================================================
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// x-----------------------------------------------------------------x
|
||||
// | |
|
||||
// | H U R R I C A N E |
|
||||
// | V L S I B a c k e n d D a t a - B a s e |
|
||||
// | |
|
||||
// | Authors : Hugo Clement & Marek Sroka |
|
||||
// | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||
// | =============================================================== |
|
||||
// | C++ Header : "./hurricane/RegularLayer.h" |
|
||||
// | *************************************************************** |
|
||||
// | U p d a t e s |
|
||||
// | |
|
||||
// x-----------------------------------------------------------------x
|
||||
|
||||
#ifndef HURRICANE_ROUTINGPAD
|
||||
#define HURRICANE_ROUTINGPAD
|
||||
|
||||
#ifndef __HURRICANE_ROUTINGPAD__
|
||||
#define __HURRICANE_ROUTINGPAD__
|
||||
|
||||
#include "hurricane/Component.h"
|
||||
#include "hurricane/Occurrence.h"
|
||||
#include "hurricane/Pin.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
class Segment;
|
||||
class Segment;
|
||||
|
||||
|
||||
// ****************************************************************************************************
|
||||
// RoutingPad declaration
|
||||
// ****************************************************************************************************
|
||||
|
||||
class RoutingPad : public Component {
|
||||
// *****************************
|
||||
|
||||
// Types
|
||||
// *****
|
||||
|
||||
public: typedef Component Inherit;
|
||||
|
||||
|
||||
// Attributes
|
||||
// **********
|
||||
|
||||
private: DbU::Unit _x;
|
||||
private: DbU::Unit _y;
|
||||
private: Occurrence _occurrence;
|
||||
|
||||
|
||||
|
||||
// Constructors
|
||||
// ************
|
||||
|
||||
protected: RoutingPad(Net* net, const Point& p, Occurrence occurrence = Occurrence());
|
||||
public: static RoutingPad* create(Net* net, Occurrence occurrence);
|
||||
|
||||
// Accessors
|
||||
// *********
|
||||
|
||||
//public: virtual Hooks getHooks() const;
|
||||
public: virtual DbU::Unit getX() const;
|
||||
public: virtual DbU::Unit getY() const;
|
||||
public: virtual Box getBoundingBox() const;
|
||||
public: virtual const Layer* getLayer() const;
|
||||
public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const;
|
||||
public: virtual Point getCenter() const;
|
||||
public: Occurrence getOccurrence() const { return _occurrence; };
|
||||
public: Occurrence getPlugOccurrence();
|
||||
public: Point getSourcePosition() const;
|
||||
public: Point getTargetPosition() const;
|
||||
public: DbU::Unit getSourceX() const;
|
||||
public: DbU::Unit getSourceY() const;
|
||||
public: DbU::Unit getTargetX() const;
|
||||
public: DbU::Unit getTargetY() const;
|
||||
|
||||
// Updators
|
||||
// ********
|
||||
|
||||
public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy);
|
||||
|
||||
public: void setX(const DbU::Unit& x);
|
||||
public: void setY(const DbU::Unit& y);
|
||||
public: void setPosition(const DbU::Unit& x, const DbU::Unit& y);
|
||||
public: void setPosition(const Point& position);
|
||||
public: void setOffset(const DbU::Unit& x, const DbU::Unit& y);
|
||||
public: void setExternalComponent(Component* component);
|
||||
public: void restorePlugOccurrence();
|
||||
|
||||
// Others
|
||||
// ******
|
||||
|
||||
protected: virtual void _postCreate();
|
||||
protected: virtual void _preDestroy();
|
||||
|
||||
public: virtual string _getTypeName() const {return _TName("RoutingPad");};
|
||||
public: virtual string _getString() const;
|
||||
public: virtual Record* _getRecord() const;
|
||||
|
||||
public: Component* _getEntityAsComponent () const;
|
||||
public: Segment* _getEntityAsSegment () const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
RoutingPad* createRoutingPad ( Net* net, Occurrence plugOccurrence );
|
||||
RoutingPad* createRoutingPad ( Pin* pin );
|
||||
class RoutingPad : public Component {
|
||||
public:
|
||||
typedef Component Inherit;
|
||||
enum Flags { BiggestArea =0x1
|
||||
, HighestLayer =0x2
|
||||
, LowestLayer =0x4
|
||||
, ComponentSelection=BiggestArea|HighestLayer|LowestLayer
|
||||
};
|
||||
public:
|
||||
static RoutingPad* create ( Net*, Occurrence, unsigned int flags=0 );
|
||||
static RoutingPad* create ( Pin* );
|
||||
public:
|
||||
// Accessors.
|
||||
virtual DbU::Unit getX () const;
|
||||
virtual DbU::Unit getY () const;
|
||||
virtual Box getBoundingBox () const;
|
||||
virtual const Layer* getLayer () const;
|
||||
virtual Box getBoundingBox ( const BasicLayer* ) const;
|
||||
virtual Point getCenter () const;
|
||||
inline Occurrence getOccurrence () const { return _occurrence; };
|
||||
Occurrence getPlugOccurrence ();
|
||||
Point getSourcePosition () const;
|
||||
Point getTargetPosition () const;
|
||||
DbU::Unit getSourceX () const;
|
||||
DbU::Unit getSourceY () const;
|
||||
DbU::Unit getTargetX () const;
|
||||
DbU::Unit getTargetY () const;
|
||||
// Mutators.
|
||||
virtual void translate ( const DbU::Unit& dx, const DbU::Unit& dy );
|
||||
void setX ( const DbU::Unit& );
|
||||
void setY ( const DbU::Unit& );
|
||||
void setPosition ( const DbU::Unit& x, const DbU::Unit& y );
|
||||
void setPosition ( const Point& position );
|
||||
void setOffset ( const DbU::Unit& dx, const DbU::Unit& dy );
|
||||
void setExternalComponent ( Component* );
|
||||
Component* setOnBestComponent ( unsigned int flags );
|
||||
void restorePlugOccurrence ();
|
||||
// Miscellaeous.
|
||||
Component* _getEntityAsComponent () const;
|
||||
Segment* _getEntityAsSegment () const;
|
||||
virtual std::string _getTypeName () const {return _TName("RoutingPad");};
|
||||
virtual std::string _getString () const;
|
||||
virtual Record* _getRecord () const;
|
||||
protected:
|
||||
virtual void _postCreate ();
|
||||
virtual void _preDestroy ();
|
||||
private:
|
||||
RoutingPad ( Net*, const Point&, Occurrence occurrence=Occurrence() );
|
||||
private:
|
||||
// Attributes.
|
||||
DbU::Unit _x;
|
||||
DbU::Unit _y;
|
||||
Occurrence _occurrence;
|
||||
};
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
||||
|
@ -115,8 +112,4 @@ RoutingPad* createRoutingPad ( Pin* pin );
|
|||
|
||||
INSPECTOR_P_SUPPORT(Hurricane::RoutingPad);
|
||||
|
||||
#endif // HURRICANE_ROUTINGPAD
|
||||
|
||||
// ****************************************************************************************************
|
||||
// Copyright (c) BULL S.A. 2000-2009, All Rights Reserved
|
||||
// ****************************************************************************************************
|
||||
#endif // __HURRICANE_ROUTINGPAD__
|
||||
|
|
|
@ -1160,7 +1160,7 @@ namespace Hurricane {
|
|||
, _drawingPlanes (QSize(_initialSide+2*_stripWidth,_initialSide+2*_stripWidth),this)
|
||||
, _drawingQuery (this)
|
||||
, _textDrawingQuery (this)
|
||||
, _darkening (100)
|
||||
, _darkening (DisplayStyle::HSVr())
|
||||
, _mousePosition (0,0)
|
||||
, _spot (this)
|
||||
, _state (new State(NULL))
|
||||
|
@ -1384,7 +1384,7 @@ namespace Hurricane {
|
|||
_drawingPlanes.painter().setClipRect ( redrawArea );
|
||||
_drawingPlanes.painter().eraseRect ( redrawArea );
|
||||
|
||||
setDarkening ( (_state->showSelection()) ? Graphics::getDarkening() : 100 );
|
||||
setDarkening ( (_state->showSelection()) ? Graphics::getDarkening() : DisplayStyle::HSVr() );
|
||||
|
||||
if ( getCell() ) {
|
||||
|
||||
|
|
|
@ -68,12 +68,12 @@ namespace Hurricane {
|
|||
}
|
||||
|
||||
|
||||
QBrush ColorScale::getBrush ( size_t i, int darkening ) const
|
||||
QBrush ColorScale::getBrush ( size_t i, const DisplayStyle::HSVr& darkening ) const
|
||||
{
|
||||
assert ( _brush[i] != NULL );
|
||||
|
||||
QBrush brush ( *_brush[i] );
|
||||
brush.setColor ( _color[i]->darker(darkening) );
|
||||
brush.setColor ( DisplayStyle::darken(*_color[i],darkening) );
|
||||
return brush;
|
||||
}
|
||||
|
||||
|
|
|
@ -215,7 +215,7 @@ namespace Hurricane {
|
|||
|
||||
void TabNetlist::setSyncNetlist ( bool state )
|
||||
{
|
||||
if ( state && getCellWidget() ) {
|
||||
if ( state and getCellWidget() ) {
|
||||
_netlistBrowser->setCell<SimpleNetInformations> ( getCellWidget()->getCell() );
|
||||
} else {
|
||||
_netlistBrowser->setCell<SimpleNetInformations> ( NULL );
|
||||
|
@ -225,9 +225,9 @@ namespace Hurricane {
|
|||
|
||||
void TabNetlist::setSyncSelection ( bool state )
|
||||
{
|
||||
if ( state && getCellWidget() && _syncNetlist->isChecked() ) {
|
||||
if ( state and getCellWidget() and _syncNetlist->isChecked() ) {
|
||||
_cwCumulativeSelection = getCellWidget()->cumulativeSelection();
|
||||
if ( !_cwCumulativeSelection ) {
|
||||
if ( not _cwCumulativeSelection ) {
|
||||
getCellWidget()->openRefreshSession ();
|
||||
getCellWidget()->unselectAll ();
|
||||
getCellWidget()->closeRefreshSession ();
|
||||
|
|
|
@ -32,16 +32,7 @@
|
|||
|
||||
namespace {
|
||||
|
||||
QColor modifySaturation ( const QColor& color, int darkening )
|
||||
{
|
||||
QColor hsvColor = color.toHsv();
|
||||
if ( darkening != 100 ) {
|
||||
qreal darkSat = color.saturationF();
|
||||
qreal darkValue = color.valueF();
|
||||
hsvColor.setHsvF ( color.hueF(), darkSat/3.0, darkValue/2.5 );
|
||||
}
|
||||
return hsvColor;
|
||||
}
|
||||
using namespace Hurricane;
|
||||
|
||||
|
||||
} // End of anonymous namespace.
|
||||
|
@ -135,34 +126,34 @@ namespace Hurricane {
|
|||
}
|
||||
|
||||
|
||||
QColor DrawingStyle::getColor ( int darkening ) const
|
||||
QColor DrawingStyle::getColor ( const DisplayStyle::HSVr& darkening ) const
|
||||
{
|
||||
assert ( _color != NULL );
|
||||
|
||||
//return _color->darker ( darkening );
|
||||
return modifySaturation(*_color,darkening);
|
||||
return DisplayStyle::darken(*_color,darkening);
|
||||
}
|
||||
|
||||
|
||||
QPen DrawingStyle::getPen ( int darkening ) const
|
||||
QPen DrawingStyle::getPen ( const DisplayStyle::HSVr& darkening ) const
|
||||
{
|
||||
assert ( _pen != NULL );
|
||||
|
||||
QPen pen ( *_pen );
|
||||
//pen.setColor ( _color->darker(darkening) );
|
||||
pen.setColor ( modifySaturation(*_color,darkening) );
|
||||
pen.setColor ( DisplayStyle::darken(*_color,darkening) );
|
||||
|
||||
return pen;
|
||||
}
|
||||
|
||||
|
||||
QBrush DrawingStyle::getBrush ( int darkening ) const
|
||||
QBrush DrawingStyle::getBrush ( const DisplayStyle::HSVr& darkening ) const
|
||||
{
|
||||
assert ( _brush != NULL );
|
||||
|
||||
QBrush brush ( *_brush );
|
||||
//brush.setColor ( _color->darker(darkening) );
|
||||
brush.setColor ( modifySaturation(*_color,darkening) );
|
||||
brush.setColor ( DisplayStyle::darken(*_color,darkening) );
|
||||
return brush;
|
||||
}
|
||||
|
||||
|
@ -273,11 +264,29 @@ namespace Hurricane {
|
|||
}
|
||||
|
||||
|
||||
QColor DisplayStyle::darken ( const QColor& color, const DisplayStyle::HSVr& darkening )
|
||||
{
|
||||
QColor hsvColor = color.toHsv();
|
||||
if ( not darkening.isId() ) {
|
||||
qreal darkHue = color.hueF();
|
||||
qreal darkSat = color.saturationF();
|
||||
qreal darkValue = color.valueF();
|
||||
|
||||
//hsvColor.setHsvF ( darkHue/darkening.getHue(), darkSat/3.0, darkValue/2.5 );
|
||||
hsvColor.setHsvF ( darkHue /darkening.getHue()
|
||||
, darkSat /darkening.getSaturation()
|
||||
, darkValue/darkening.getValue()
|
||||
);
|
||||
}
|
||||
return hsvColor;
|
||||
}
|
||||
|
||||
|
||||
DisplayStyle::DisplayStyle ( const Name& name )
|
||||
: _name(name)
|
||||
, _description("<No Description>")
|
||||
, _groups()
|
||||
, _darkening(200)
|
||||
, _darkening(1.0,3.0,2.5)
|
||||
{
|
||||
addDrawingStyle ( Viewer, Fallback , "FFFFFFFFFFFFFFFF", 0, 0, 0, 1, 1.0 );
|
||||
addDrawingStyle ( Viewer, Background , "FFFFFFFFFFFFFFFF", 50, 50, 50, 1, 1.0 );
|
||||
|
@ -333,19 +342,19 @@ namespace Hurricane {
|
|||
}
|
||||
|
||||
|
||||
QColor DisplayStyle::getColor ( const Name& key, int darkening ) const
|
||||
QColor DisplayStyle::getColor ( const Name& key, const DisplayStyle::HSVr& darkening ) const
|
||||
{
|
||||
return find(key)->getColor(darkening);
|
||||
}
|
||||
|
||||
|
||||
QPen DisplayStyle::getPen ( const Name& key, int darkening ) const
|
||||
QPen DisplayStyle::getPen ( const Name& key, const DisplayStyle::HSVr& darkening ) const
|
||||
{
|
||||
return find(key)->getPen(darkening);
|
||||
}
|
||||
|
||||
|
||||
QBrush DisplayStyle::getBrush ( const Name& key, int darkening ) const
|
||||
QBrush DisplayStyle::getBrush ( const Name& key, const DisplayStyle::HSVr& darkening ) const
|
||||
{
|
||||
return find(key)->getBrush(darkening);
|
||||
}
|
||||
|
@ -403,10 +412,18 @@ namespace Hurricane {
|
|||
}
|
||||
|
||||
|
||||
void DisplayStyle::setDarkening ( int darkening )
|
||||
void DisplayStyle::setDarkening ( const DisplayStyle::HSVr& darkening )
|
||||
{
|
||||
if ( darkening <= 0 ) {
|
||||
cerr << "[ERROR] Invalid darkening factor: " << darkening << "." << endl;
|
||||
if ( darkening.getHue() < 0.1 ) {
|
||||
cerr << "[ERROR] Invalid hue darkening factor: " << darkening.getHue() << "." << endl;
|
||||
return;
|
||||
}
|
||||
if ( darkening.getSaturation() < 0.1 ) {
|
||||
cerr << "[ERROR] Invalid saturation darkening factor: " << darkening.getSaturation() << "." << endl;
|
||||
return;
|
||||
}
|
||||
if ( darkening.getValue() < 0.1 ) {
|
||||
cerr << "[ERROR] Invalid value darkening factor: " << darkening.getValue() << "." << endl;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -255,19 +255,19 @@ namespace Hurricane {
|
|||
}
|
||||
|
||||
|
||||
QColor Graphics::getColor ( const Name& key, int darkening )
|
||||
QColor Graphics::getColor ( const Name& key, const DisplayStyle::HSVr& darkening )
|
||||
{
|
||||
return getGraphics()->_getColor ( key, darkening );
|
||||
}
|
||||
|
||||
|
||||
QPen Graphics::getPen ( const Name& key, int darkening )
|
||||
QPen Graphics::getPen ( const Name& key, const DisplayStyle::HSVr& darkening )
|
||||
{
|
||||
return getGraphics()->_getPen ( key, darkening );
|
||||
}
|
||||
|
||||
|
||||
QBrush Graphics::getBrush ( const Name& key, int darkening )
|
||||
QBrush Graphics::getBrush ( const Name& key, const DisplayStyle::HSVr& darkening )
|
||||
{
|
||||
return getGraphics()->_getBrush ( key, darkening );
|
||||
}
|
||||
|
@ -285,7 +285,7 @@ namespace Hurricane {
|
|||
}
|
||||
|
||||
|
||||
int Graphics::getDarkening ()
|
||||
const DisplayStyle::HSVr& Graphics::getDarkening ()
|
||||
{
|
||||
return getGraphics()->_getDarkening ();
|
||||
}
|
||||
|
@ -297,6 +297,12 @@ namespace Hurricane {
|
|||
}
|
||||
|
||||
|
||||
QColor Graphics::darken ( const QColor& color )
|
||||
{
|
||||
return DisplayStyle::darken ( color, getDarkening() );
|
||||
}
|
||||
|
||||
|
||||
const TextTranslator& Graphics::getHtmlTranslator ()
|
||||
{
|
||||
return getGraphics()->_getHtmlTranslator();
|
||||
|
|
|
@ -55,13 +55,6 @@ namespace Hurricane {
|
|||
static QFont nameFont = Graphics::getFixedFont ( QFont::Bold );
|
||||
static QFont valueFont = Graphics::getFixedFont ( QFont::Normal, true );
|
||||
|
||||
if ( role == Qt::SizeHintRole ) {
|
||||
switch (index.column()) {
|
||||
case 0: return 200;
|
||||
default: return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if ( role == Qt::FontRole ) {
|
||||
if ( index.row() == 0 ) return QVariant();
|
||||
switch (index.column()) {
|
||||
|
@ -71,7 +64,7 @@ namespace Hurricane {
|
|||
return QVariant();
|
||||
}
|
||||
|
||||
if ( !index.isValid() ) return QVariant ();
|
||||
if ( not index.isValid() ) return QVariant ();
|
||||
|
||||
if ( role == Qt::DisplayRole ) {
|
||||
int row = index.row ();
|
||||
|
|
|
@ -80,7 +80,6 @@ namespace Hurricane {
|
|||
|
||||
QHeaderView* horizontalHeader = _view->horizontalHeader ();
|
||||
horizontalHeader->setStretchLastSection ( true );
|
||||
horizontalHeader->setMinimumSectionSize ( 200 );
|
||||
|
||||
QHeaderView* verticalHeader = _view->verticalHeader ();
|
||||
verticalHeader->setVisible ( false );
|
||||
|
|
|
@ -124,197 +124,197 @@ namespace Hurricane {
|
|||
};
|
||||
public:
|
||||
// Constructor & Destructor.
|
||||
CellWidget ( QWidget* parent=NULL );
|
||||
virtual ~CellWidget ();
|
||||
// Accessors.
|
||||
// MapView* getMapView () { return _mapView; };
|
||||
void setCell ( Cell* );
|
||||
inline Cell* getCell () const;
|
||||
inline shared_ptr<State>& getState ();
|
||||
inline PaletteWidget* getPalette ();
|
||||
inline Occurrences getOccurrencesUnder ( const QRect& ) const;
|
||||
Occurrences getOccurrencesUnder ( const Box& ) const;
|
||||
inline SelectorSet& getSelectorSet ();
|
||||
inline RulerSet& getRulerSet ();
|
||||
inline RubberShape getRubberShape () const;
|
||||
inline int getStartLevel () const;
|
||||
inline int getStopLevel () const;
|
||||
inline Query::Mask getQueryFilter () const ;
|
||||
void bindToPalette ( PaletteWidget* );
|
||||
void detachFromPalette ();
|
||||
void bindCommand ( Command* );
|
||||
void unbindCommand ( Command* );
|
||||
inline void setActiveCommand ( Command* );
|
||||
inline Command* getActiveCommand () const;
|
||||
inline void resetActiveCommand ();
|
||||
inline void setCursorStep ( DbU::Unit );
|
||||
inline void setRealSnapGridStep ( DbU::Unit step );
|
||||
inline unsigned int getDbuMode () const;
|
||||
inline bool gridMode () const;
|
||||
inline bool symbolicMode () const;
|
||||
inline bool physicalMode () const;
|
||||
inline DbU::UnitPower getUnitPower () const;
|
||||
inline bool showBoundaries () const;
|
||||
inline bool showSelection () const;
|
||||
inline bool cumulativeSelection () const;
|
||||
inline void setDbuMode ( int );
|
||||
inline void setUnitPower ( DbU::UnitPower );
|
||||
inline void setRubberShape ( RubberShape );
|
||||
inline void setStartLevel ( int );
|
||||
inline void setStopLevel ( int );
|
||||
inline void setQueryFilter ( Query::Mask );
|
||||
inline bool timeout ( const char*, const Timer&, double timeout, bool& timedout ) const;
|
||||
CellWidget ( QWidget* parent=NULL );
|
||||
virtual ~CellWidget ();
|
||||
// Accessors.
|
||||
// MapView* getMapView () { return _mapView; };
|
||||
void setCell ( Cell* );
|
||||
inline Cell* getCell () const;
|
||||
inline shared_ptr<State>& getState ();
|
||||
inline PaletteWidget* getPalette ();
|
||||
inline Occurrences getOccurrencesUnder ( const QRect& ) const;
|
||||
Occurrences getOccurrencesUnder ( const Box& ) const;
|
||||
inline SelectorSet& getSelectorSet ();
|
||||
inline RulerSet& getRulerSet ();
|
||||
inline RubberShape getRubberShape () const;
|
||||
inline int getStartLevel () const;
|
||||
inline int getStopLevel () const;
|
||||
inline Query::Mask getQueryFilter () const ;
|
||||
void bindToPalette ( PaletteWidget* );
|
||||
void detachFromPalette ();
|
||||
void bindCommand ( Command* );
|
||||
void unbindCommand ( Command* );
|
||||
inline void setActiveCommand ( Command* );
|
||||
inline Command* getActiveCommand () const;
|
||||
inline void resetActiveCommand ();
|
||||
inline void setCursorStep ( DbU::Unit );
|
||||
inline void setRealSnapGridStep ( DbU::Unit step );
|
||||
inline unsigned int getDbuMode () const;
|
||||
inline bool gridMode () const;
|
||||
inline bool symbolicMode () const;
|
||||
inline bool physicalMode () const;
|
||||
inline DbU::UnitPower getUnitPower () const;
|
||||
inline bool showBoundaries () const;
|
||||
inline bool showSelection () const;
|
||||
inline bool cumulativeSelection () const;
|
||||
inline void setDbuMode ( int );
|
||||
inline void setUnitPower ( DbU::UnitPower );
|
||||
inline void setRubberShape ( RubberShape );
|
||||
inline void setStartLevel ( int );
|
||||
inline void setStopLevel ( int );
|
||||
inline void setQueryFilter ( Query::Mask );
|
||||
inline bool timeout ( const char*, const Timer&, double timeout, bool& timedout ) const;
|
||||
// Painter control & Hurricane objects drawing primitives.
|
||||
inline void setEnableRedrawInterrupt ( bool );
|
||||
inline void addDrawExtensionGo ( const Name&, InitExtensionGo_t*, DrawExtensionGo_t* );
|
||||
inline QPainter& getPainter ( size_t plane=PlaneId::Working );
|
||||
inline int getDarkening () const;
|
||||
inline void copyToPrinter ( QPrinter*, bool imageOnly = false );
|
||||
inline void copyToImage ( QImage*, bool noScale = false );
|
||||
inline const float& getScale () const;
|
||||
inline const QPoint& getMousePosition () const;
|
||||
inline void updateMousePosition ();
|
||||
void setLayerVisible ( const Name& layer, bool visible );
|
||||
bool isDrawable ( const Name& );
|
||||
bool isDrawableLayer ( const Name& );
|
||||
bool isDrawableExtension ( const Name& );
|
||||
bool isSelectable ( const Name& ) const;
|
||||
bool isSelectable ( const Layer* ) const;
|
||||
inline void setDarkening ( int );
|
||||
inline void setPen ( const QPen& , size_t plane=PlaneId::Working );
|
||||
void drawBox ( DbU::Unit, DbU::Unit, DbU::Unit, DbU::Unit );
|
||||
void drawBox ( const Box& );
|
||||
void drawLine ( DbU::Unit, DbU::Unit, DbU::Unit, DbU::Unit, bool mode=true );
|
||||
void drawLine ( const Point&, const Point&, bool mode=true );
|
||||
void drawText ( const Point&, const char*, unsigned int flags=0, int angle=0 );
|
||||
void drawGrid ( QRect );
|
||||
void drawSpot ();
|
||||
void drawRuler ( shared_ptr<Ruler> );
|
||||
void drawRulers ( QRect );
|
||||
void drawDisplayText ( const QRect& , const char*, unsigned int flags=0 );
|
||||
void drawDisplayText ( const QPoint&, const char*, unsigned int flags=0, int angle=0 );
|
||||
void drawScreenPolygon ( const QPoint*, int count, size_t plane=PlaneId::Working );
|
||||
void drawScreenLine ( const QPoint&, const QPoint&, size_t plane=PlaneId::Working, bool mode=true );
|
||||
void drawScreenRect ( const QPoint&, const QPoint&, size_t plane=PlaneId::Working );
|
||||
void drawScreenRect ( const QRect& , size_t plane=PlaneId::Working );
|
||||
void drawScreenPolyline ( const QPoint*, int, int, size_t plane=PlaneId::Working );
|
||||
// Geometric conversions.
|
||||
inline DbU::Unit toDbu ( float ) const;
|
||||
QRect dbuToDisplayRect ( DbU::Unit x1, DbU::Unit y1, DbU::Unit x2, DbU::Unit y2, bool usePoint=true ) const;
|
||||
QRect dbuToDisplayRect ( const Box& box , bool usePoint=true ) const;
|
||||
QPoint dbuToDisplayPoint ( DbU::Unit x, DbU::Unit y ) const;
|
||||
QPoint dbuToDisplayPoint ( const Point& point ) const;
|
||||
inline int dbuToDisplayX ( DbU::Unit x ) const;
|
||||
inline int dbuToDisplayY ( DbU::Unit y ) const;
|
||||
inline int dbuToDisplayLength ( DbU::Unit length ) const;
|
||||
inline int dbuToScreenX ( DbU::Unit x ) const;
|
||||
inline int dbuToScreenY ( DbU::Unit y ) const;
|
||||
QPoint dbuToScreenPoint ( DbU::Unit x, DbU::Unit y ) const;
|
||||
inline QPoint dbuToScreenPoint ( const Point& point ) const;
|
||||
inline DbU::Unit displayToDbuX ( int x ) const;
|
||||
inline DbU::Unit displayToDbuY ( int y ) const;
|
||||
inline DbU::Unit displayToDbuLength ( int length ) const;
|
||||
inline Box displayToDbuBox ( const QRect& rect ) const;
|
||||
inline DbU::Unit screenToDbuX ( int x ) const;
|
||||
inline DbU::Unit screenToDbuY ( int y ) const;
|
||||
inline Point screenToDbuPoint ( const QPoint& point ) const;
|
||||
inline Box screenToDbuBox ( const QRect& rect ) const;
|
||||
inline Box& pixelInflate ( Box&, int pixels ) const;
|
||||
inline Point getTopLeft () const;
|
||||
inline Box getVisibleArea () const;
|
||||
Box computeVisibleArea ( float scale ) const;
|
||||
Box computeVisibleArea ( float scale, const Point& topLeft ) const;
|
||||
Box computeVisibleArea ( const Box&, float& scale ) const;
|
||||
inline DbU::Unit cursorStep () const;
|
||||
inline bool _underDetailedGridThreshold() const;
|
||||
inline DbU::Unit _snapGridStep () const;
|
||||
inline DbU::Unit _onSnapGrid ( DbU::Unit ) const;
|
||||
inline Point _onSnapGrid ( const Point& ) const;
|
||||
inline DbU::Unit _onCursorGrid ( DbU::Unit ) const;
|
||||
inline Point _onCursorGrid ( const Point& ) const;
|
||||
// Qt QWidget Functions Overloads.
|
||||
void pushCursor ( Qt::CursorShape cursor );
|
||||
void popCursor ();
|
||||
virtual QSize minimumSizeHint () const;
|
||||
virtual void showEvent ( QShowEvent* );
|
||||
virtual void paintEvent ( QPaintEvent* );
|
||||
virtual void resizeEvent ( QResizeEvent* );
|
||||
virtual void wheelEvent ( QWheelEvent* );
|
||||
virtual void keyPressEvent ( QKeyEvent* );
|
||||
virtual void keyReleaseEvent ( QKeyEvent* );
|
||||
virtual void mouseMoveEvent ( QMouseEvent* );
|
||||
virtual void mousePressEvent ( QMouseEvent* );
|
||||
virtual void mouseReleaseEvent ( QMouseEvent* );
|
||||
signals:
|
||||
void cellChanged ( Cell* );
|
||||
void cellPreModificated ();
|
||||
void cellPostModificated ();
|
||||
void stateChanged ( shared_ptr<CellWidget::State>& );
|
||||
void styleChanged ();
|
||||
void queryFilterChanged ();
|
||||
void dbuModeChanged ( unsigned int mode, DbU::UnitPower );
|
||||
void updatePalette ( Cell* );
|
||||
void mousePositionChanged ( const Point& position );
|
||||
void selectionModeChanged ();
|
||||
void selectionChanged ( const SelectorSet& );
|
||||
void selectionToggled ( Occurrence );
|
||||
void showBoundariesToggled ( bool );
|
||||
inline void setEnableRedrawInterrupt ( bool );
|
||||
inline void addDrawExtensionGo ( const Name&, InitExtensionGo_t*, DrawExtensionGo_t* );
|
||||
inline QPainter& getPainter ( size_t plane=PlaneId::Working );
|
||||
inline const DisplayStyle::HSVr& getDarkening () const;
|
||||
inline void copyToPrinter ( QPrinter*, bool imageOnly = false );
|
||||
inline void copyToImage ( QImage*, bool noScale = false );
|
||||
inline const float& getScale () const;
|
||||
inline const QPoint& getMousePosition () const;
|
||||
inline void updateMousePosition ();
|
||||
void setLayerVisible ( const Name& layer, bool visible );
|
||||
bool isDrawable ( const Name& );
|
||||
bool isDrawableLayer ( const Name& );
|
||||
bool isDrawableExtension ( const Name& );
|
||||
bool isSelectable ( const Name& ) const;
|
||||
bool isSelectable ( const Layer* ) const;
|
||||
inline void setDarkening ( const DisplayStyle::HSVr& );
|
||||
inline void setPen ( const QPen& , size_t plane=PlaneId::Working );
|
||||
void drawBox ( DbU::Unit, DbU::Unit, DbU::Unit, DbU::Unit );
|
||||
void drawBox ( const Box& );
|
||||
void drawLine ( DbU::Unit, DbU::Unit, DbU::Unit, DbU::Unit, bool mode=true );
|
||||
void drawLine ( const Point&, const Point&, bool mode=true );
|
||||
void drawText ( const Point&, const char*, unsigned int flags=0, int angle=0 );
|
||||
void drawGrid ( QRect );
|
||||
void drawSpot ();
|
||||
void drawRuler ( shared_ptr<Ruler> );
|
||||
void drawRulers ( QRect );
|
||||
void drawDisplayText ( const QRect& , const char*, unsigned int flags=0 );
|
||||
void drawDisplayText ( const QPoint&, const char*, unsigned int flags=0, int angle=0 );
|
||||
void drawScreenPolygon ( const QPoint*, int count, size_t plane=PlaneId::Working );
|
||||
void drawScreenLine ( const QPoint&, const QPoint&, size_t plane=PlaneId::Working, bool mode=true );
|
||||
void drawScreenRect ( const QPoint&, const QPoint&, size_t plane=PlaneId::Working );
|
||||
void drawScreenRect ( const QRect& , size_t plane=PlaneId::Working );
|
||||
void drawScreenPolyline ( const QPoint*, int, int, size_t plane=PlaneId::Working );
|
||||
// Geometric conversions.
|
||||
inline DbU::Unit toDbu ( float ) const;
|
||||
QRect dbuToDisplayRect ( DbU::Unit x1, DbU::Unit y1, DbU::Unit x2, DbU::Unit y2, bool usePoint=true ) const;
|
||||
QRect dbuToDisplayRect ( const Box& box , bool usePoint=true ) const;
|
||||
QPoint dbuToDisplayPoint ( DbU::Unit x, DbU::Unit y ) const;
|
||||
QPoint dbuToDisplayPoint ( const Point& point ) const;
|
||||
inline int dbuToDisplayX ( DbU::Unit x ) const;
|
||||
inline int dbuToDisplayY ( DbU::Unit y ) const;
|
||||
inline int dbuToDisplayLength ( DbU::Unit length ) const;
|
||||
inline int dbuToScreenX ( DbU::Unit x ) const;
|
||||
inline int dbuToScreenY ( DbU::Unit y ) const;
|
||||
QPoint dbuToScreenPoint ( DbU::Unit x, DbU::Unit y ) const;
|
||||
inline QPoint dbuToScreenPoint ( const Point& point ) const;
|
||||
inline DbU::Unit displayToDbuX ( int x ) const;
|
||||
inline DbU::Unit displayToDbuY ( int y ) const;
|
||||
inline DbU::Unit displayToDbuLength ( int length ) const;
|
||||
inline Box displayToDbuBox ( const QRect& rect ) const;
|
||||
inline DbU::Unit screenToDbuX ( int x ) const;
|
||||
inline DbU::Unit screenToDbuY ( int y ) const;
|
||||
inline Point screenToDbuPoint ( const QPoint& point ) const;
|
||||
inline Box screenToDbuBox ( const QRect& rect ) const;
|
||||
inline Box& pixelInflate ( Box&, int pixels ) const;
|
||||
inline Point getTopLeft () const;
|
||||
inline Box getVisibleArea () const;
|
||||
Box computeVisibleArea ( float scale ) const;
|
||||
Box computeVisibleArea ( float scale, const Point& topLeft ) const;
|
||||
Box computeVisibleArea ( const Box&, float& scale ) const;
|
||||
inline DbU::Unit cursorStep () const;
|
||||
inline bool _underDetailedGridThreshold() const;
|
||||
inline DbU::Unit _snapGridStep () const;
|
||||
inline DbU::Unit _onSnapGrid ( DbU::Unit ) const;
|
||||
inline Point _onSnapGrid ( const Point& ) const;
|
||||
inline DbU::Unit _onCursorGrid ( DbU::Unit ) const;
|
||||
inline Point _onCursorGrid ( const Point& ) const;
|
||||
// Qt QWidget Functions Overloads.
|
||||
void pushCursor ( Qt::CursorShape cursor );
|
||||
void popCursor ();
|
||||
virtual QSize minimumSizeHint () const;
|
||||
virtual void showEvent ( QShowEvent* );
|
||||
virtual void paintEvent ( QPaintEvent* );
|
||||
virtual void resizeEvent ( QResizeEvent* );
|
||||
virtual void wheelEvent ( QWheelEvent* );
|
||||
virtual void keyPressEvent ( QKeyEvent* );
|
||||
virtual void keyReleaseEvent ( QKeyEvent* );
|
||||
virtual void mouseMoveEvent ( QMouseEvent* );
|
||||
virtual void mousePressEvent ( QMouseEvent* );
|
||||
virtual void mouseReleaseEvent ( QMouseEvent* );
|
||||
signals:
|
||||
void cellChanged ( Cell* );
|
||||
void cellPreModificated ();
|
||||
void cellPostModificated ();
|
||||
void stateChanged ( shared_ptr<CellWidget::State>& );
|
||||
void styleChanged ();
|
||||
void queryFilterChanged ();
|
||||
void dbuModeChanged ( unsigned int mode, DbU::UnitPower );
|
||||
void updatePalette ( Cell* );
|
||||
void mousePositionChanged ( const Point& position );
|
||||
void selectionModeChanged ();
|
||||
void selectionChanged ( const SelectorSet& );
|
||||
void selectionToggled ( Occurrence );
|
||||
void showBoundariesToggled ( bool );
|
||||
public slots:
|
||||
// Qt QWidget Slots Overload & CellWidget Specifics.
|
||||
void setState ( shared_ptr<CellWidget::State>& );
|
||||
inline void openRefreshSession ();
|
||||
inline void closeRefreshSession ();
|
||||
inline DrawingPlanes& getDrawingPlanes ();
|
||||
inline QPoint& getOffsetVA ();
|
||||
// void select ( const Net* );
|
||||
void select ( Occurrence );
|
||||
bool isSelected ( Occurrence );
|
||||
void selectOccurrencesUnder ( Box selectArea );
|
||||
// void unselect ( const Net* );
|
||||
void unselect ( Occurrence );
|
||||
void unselectAll ();
|
||||
void toggleSelection ( Occurrence );
|
||||
void setShowSelection ( bool state );
|
||||
void setCumulativeSelection ( bool state );
|
||||
// void _select ( const Net* );
|
||||
// void _unselect ( const Net* );
|
||||
// void _selectOccurrencesUnder ( Box selectArea );
|
||||
void _unselectAll ();
|
||||
inline void addRuler ( const Point&, const Point& );
|
||||
inline void addRuler ( shared_ptr<Ruler> );
|
||||
inline void clearRulers ();
|
||||
void changeQueryFilter ();
|
||||
void rubberChange ();
|
||||
void changeDbuMode ( unsigned int mode, DbU::UnitPower );
|
||||
void setStyle ( int id );
|
||||
void updatePalette ();
|
||||
void cellPreModificate ();
|
||||
void cellPostModificate ();
|
||||
inline void refresh ();
|
||||
void _redraw ( QRect redrawArea );
|
||||
inline void redrawSelection ();
|
||||
void redrawSelection ( QRect redrawArea );
|
||||
void goLeft ( int dx = 0 );
|
||||
void goRight ( int dx = 0 );
|
||||
void goUp ( int dy = 0 );
|
||||
void goDown ( int dy = 0 );
|
||||
void fitToContents ( bool historyEnable=true );
|
||||
void fitToNet ( const Net*, bool historyEnable=true );
|
||||
void setScale ( float );
|
||||
void scaleHistoryUp ();
|
||||
void scaleHistoryDown ();
|
||||
// void setGridMode ();
|
||||
// void setSymbolicMode ();
|
||||
// void setPhysicalMode ( DbU::UnitPower );
|
||||
void setShowBoundaries ( bool state );
|
||||
void reframe ();
|
||||
void reframe ( const Box& box, bool historyEnable=true );
|
||||
void displayReframe ();
|
||||
void _goLeft ( int dx );
|
||||
void _goRight ( int dx );
|
||||
void _goUp ( int dy );
|
||||
void _goDown ( int dy );
|
||||
void _refresh ();
|
||||
void setState ( shared_ptr<CellWidget::State>& );
|
||||
inline void openRefreshSession ();
|
||||
inline void closeRefreshSession ();
|
||||
inline DrawingPlanes& getDrawingPlanes ();
|
||||
inline QPoint& getOffsetVA ();
|
||||
// void select ( const Net* );
|
||||
void select ( Occurrence );
|
||||
bool isSelected ( Occurrence );
|
||||
void selectOccurrencesUnder ( Box selectArea );
|
||||
// void unselect ( const Net* );
|
||||
void unselect ( Occurrence );
|
||||
void unselectAll ();
|
||||
void toggleSelection ( Occurrence );
|
||||
void setShowSelection ( bool state );
|
||||
void setCumulativeSelection ( bool state );
|
||||
// void _select ( const Net* );
|
||||
// void _unselect ( const Net* );
|
||||
// void _selectOccurrencesUnder ( Box selectArea );
|
||||
void _unselectAll ();
|
||||
inline void addRuler ( const Point&, const Point& );
|
||||
inline void addRuler ( shared_ptr<Ruler> );
|
||||
inline void clearRulers ();
|
||||
void changeQueryFilter ();
|
||||
void rubberChange ();
|
||||
void changeDbuMode ( unsigned int mode, DbU::UnitPower );
|
||||
void setStyle ( int id );
|
||||
void updatePalette ();
|
||||
void cellPreModificate ();
|
||||
void cellPostModificate ();
|
||||
inline void refresh ();
|
||||
void _redraw ( QRect redrawArea );
|
||||
inline void redrawSelection ();
|
||||
void redrawSelection ( QRect redrawArea );
|
||||
void goLeft ( int dx = 0 );
|
||||
void goRight ( int dx = 0 );
|
||||
void goUp ( int dy = 0 );
|
||||
void goDown ( int dy = 0 );
|
||||
void fitToContents ( bool historyEnable=true );
|
||||
void fitToNet ( const Net*, bool historyEnable=true );
|
||||
void setScale ( float );
|
||||
void scaleHistoryUp ();
|
||||
void scaleHistoryDown ();
|
||||
// void setGridMode ();
|
||||
// void setSymbolicMode ();
|
||||
// void setPhysicalMode ( DbU::UnitPower );
|
||||
void setShowBoundaries ( bool state );
|
||||
void reframe ();
|
||||
void reframe ( const Box& box, bool historyEnable=true );
|
||||
void displayReframe ();
|
||||
void _goLeft ( int dx );
|
||||
void _goRight ( int dx );
|
||||
void _goUp ( int dy );
|
||||
void _goDown ( int dy );
|
||||
void _refresh ();
|
||||
|
||||
private:
|
||||
class Spot {
|
||||
|
@ -650,7 +650,7 @@ namespace Hurricane {
|
|||
DrawingPlanes _drawingPlanes;
|
||||
DrawingQuery _drawingQuery;
|
||||
TextDrawingQuery _textDrawingQuery;
|
||||
int _darkening;
|
||||
DisplayStyle::HSVr _darkening;
|
||||
QPoint _mousePosition;
|
||||
Spot _spot;
|
||||
shared_ptr<State> _state;
|
||||
|
@ -1335,7 +1335,7 @@ namespace Hurricane {
|
|||
{ return _drawingPlanes.painter(plane); }
|
||||
|
||||
|
||||
inline int CellWidget::getDarkening () const
|
||||
inline const DisplayStyle::HSVr& CellWidget::getDarkening () const
|
||||
{ return _darkening; }
|
||||
|
||||
|
||||
|
@ -1389,7 +1389,7 @@ namespace Hurricane {
|
|||
{ _drawingPlanes.painter(plane).setPen(pen); }
|
||||
|
||||
|
||||
inline void CellWidget::setDarkening ( int darkening )
|
||||
inline void CellWidget::setDarkening ( const DisplayStyle::HSVr& darkening )
|
||||
{ _darkening = darkening; }
|
||||
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include <QColor>
|
||||
#include <QBrush>
|
||||
#include "hurricane/Name.h"
|
||||
#include "hurricane/viewer/DisplayStyle.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
@ -53,7 +54,7 @@ namespace Hurricane {
|
|||
// Accessors.
|
||||
void qtAllocate ();
|
||||
inline const Name& getName () const;
|
||||
QBrush getBrush ( size_t , int darkening ) const;
|
||||
QBrush getBrush ( size_t, const DisplayStyle::HSVr& darkening ) const;
|
||||
|
||||
protected:
|
||||
// Internal - Attributes.
|
||||
|
|
|
@ -29,78 +29,17 @@
|
|||
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
#include <QColor>
|
||||
#include <QPen>
|
||||
#include <QBrush>
|
||||
|
||||
#include "hurricane/Commons.h"
|
||||
#include "hurricane/Name.h"
|
||||
|
||||
#include "hurricane/viewer/ScreenUtilities.h"
|
||||
|
||||
|
||||
namespace Hurricane {
|
||||
|
||||
|
||||
class DrawingStyle {
|
||||
|
||||
public:
|
||||
// Constructors & Destructors.
|
||||
static DrawingStyle* create ( const Name& name
|
||||
, const string& pattern ="FFFFFFFFFFFFFFFF"
|
||||
, int red =0
|
||||
, int green =0
|
||||
, int blue =0
|
||||
, int borderWidth=0
|
||||
, float threshold =1.0
|
||||
, bool goMatched =true
|
||||
);
|
||||
DrawingStyle* link ();
|
||||
size_t unlink ();
|
||||
|
||||
// Accessors.
|
||||
void qtAllocate ();
|
||||
inline bool isGoMatched () const;
|
||||
inline const Name& getName () const;
|
||||
inline const string& getPattern () const;
|
||||
QColor getColor ( int darkening ) const;
|
||||
QPen getPen ( int darkening ) const;
|
||||
QBrush getBrush ( int darkening ) const;
|
||||
inline float getThreshold () const;
|
||||
|
||||
protected:
|
||||
// Internal - Attributes.
|
||||
const Name _name;
|
||||
int _red;
|
||||
int _green;
|
||||
int _blue;
|
||||
int _borderWidth;
|
||||
string _pattern;
|
||||
QColor *_color;
|
||||
QPen *_pen;
|
||||
QBrush *_brush;
|
||||
float _threshold;
|
||||
bool _goMatched;
|
||||
size_t _refcount;
|
||||
|
||||
// Internal - Constructors & Destructors.
|
||||
DrawingStyle ( const Name& name
|
||||
, const string& pattern
|
||||
, int red
|
||||
, int green
|
||||
, int blue
|
||||
, int borderWidth
|
||||
, float threshold
|
||||
, bool goMatched
|
||||
);
|
||||
DrawingStyle ( const DrawingStyle& );
|
||||
~DrawingStyle ();
|
||||
DrawingStyle& operator= ( const DrawingStyle& );
|
||||
|
||||
};
|
||||
|
||||
|
||||
class DrawingStyle;
|
||||
|
||||
|
||||
class DrawingGroup {
|
||||
|
@ -142,6 +81,22 @@ namespace Hurricane {
|
|||
|
||||
|
||||
class DisplayStyle {
|
||||
public:
|
||||
class HSVr {
|
||||
public:
|
||||
inline HSVr ( float hue=1.0, float saturation=1.0, float value=1.0 );
|
||||
inline bool isId () const;
|
||||
inline float getHue () const;
|
||||
inline float getSaturation () const;
|
||||
inline float getValue () const;
|
||||
inline void setHue ( float );
|
||||
inline void setSaturation ( float );
|
||||
inline void setValue ( float );
|
||||
private:
|
||||
float _hue;
|
||||
float _saturation;
|
||||
float _value;
|
||||
};
|
||||
|
||||
public:
|
||||
// Static Members.
|
||||
|
@ -166,6 +121,7 @@ namespace Hurricane {
|
|||
static const Name Undef;
|
||||
static const Name UnmatchedGroup;
|
||||
|
||||
static QColor darken ( const QColor& color, const DisplayStyle::HSVr& darkening );
|
||||
// Constructor & Destructor.
|
||||
DisplayStyle ( const Name& name );
|
||||
~DisplayStyle ();
|
||||
|
@ -173,12 +129,12 @@ namespace Hurricane {
|
|||
// Accessors.
|
||||
const Name& getName () const;
|
||||
inline const string& getDescription () const;
|
||||
inline int getDarkening () const;
|
||||
inline const HSVr& getDarkening () const;
|
||||
const Name& getGroup ( const Name& key ) const;
|
||||
const string& getPattern ( const Name& key ) const;
|
||||
QColor getColor ( const Name& key, int darkening ) const;
|
||||
QPen getPen ( const Name& key, int darkening ) const;
|
||||
QBrush getBrush ( const Name& key, int darkening ) const;
|
||||
QColor getColor ( const Name& key, const HSVr& ) const;
|
||||
QPen getPen ( const Name& key, const HSVr& ) const;
|
||||
QBrush getBrush ( const Name& key, const HSVr& ) const;
|
||||
float getThreshold ( const Name& key ) const;
|
||||
inline const vector<DrawingGroup*>& getDrawingGroups () const;
|
||||
DrawingStyle* find ( const Name& key ) const;
|
||||
|
@ -188,7 +144,7 @@ namespace Hurricane {
|
|||
inline void setDescription ( const string& description );
|
||||
inline void setDescription ( const char* description );
|
||||
void inheritFrom ( const DisplayStyle* base );
|
||||
void setDarkening ( int darkening );
|
||||
void setDarkening ( const HSVr& );
|
||||
void addDrawingStyle ( const Name& groupKey
|
||||
, const Name& key
|
||||
, const string& pattern
|
||||
|
@ -205,7 +161,7 @@ namespace Hurricane {
|
|||
const Name _name;
|
||||
string _description;
|
||||
vector<DrawingGroup*> _groups;
|
||||
int _darkening;
|
||||
HSVr _darkening;
|
||||
|
||||
// Internals - Methods.
|
||||
void findOrCreate ( const Name& groupKey
|
||||
|
@ -218,6 +174,63 @@ namespace Hurricane {
|
|||
};
|
||||
|
||||
|
||||
class DrawingStyle {
|
||||
public:
|
||||
// Constructors & Destructors.
|
||||
static DrawingStyle* create ( const Name& name
|
||||
, const string& pattern ="FFFFFFFFFFFFFFFF"
|
||||
, int red =0
|
||||
, int green =0
|
||||
, int blue =0
|
||||
, int borderWidth=0
|
||||
, float threshold =1.0
|
||||
, bool goMatched =true
|
||||
);
|
||||
DrawingStyle* link ();
|
||||
size_t unlink ();
|
||||
public:
|
||||
// Accessors.
|
||||
void qtAllocate ();
|
||||
inline bool isGoMatched () const;
|
||||
inline const Name& getName () const;
|
||||
inline const string& getPattern () const;
|
||||
QColor getColor ( const DisplayStyle::HSVr& ) const;
|
||||
QPen getPen ( const DisplayStyle::HSVr& ) const;
|
||||
QBrush getBrush ( const DisplayStyle::HSVr& ) const;
|
||||
inline float getThreshold () const;
|
||||
private:
|
||||
// Internal - Attributes.
|
||||
const Name _name;
|
||||
int _red;
|
||||
int _green;
|
||||
int _blue;
|
||||
int _borderWidth;
|
||||
string _pattern;
|
||||
QColor *_color;
|
||||
QPen *_pen;
|
||||
QBrush *_brush;
|
||||
float _threshold;
|
||||
bool _goMatched;
|
||||
size_t _refcount;
|
||||
private:
|
||||
// Internal - Constructors & Destructors.
|
||||
DrawingStyle ( const Name& name
|
||||
, const string& pattern
|
||||
, int red
|
||||
, int green
|
||||
, int blue
|
||||
, int borderWidth
|
||||
, float threshold
|
||||
, bool goMatched
|
||||
);
|
||||
DrawingStyle ( const DrawingStyle& );
|
||||
~DrawingStyle ();
|
||||
DrawingStyle& operator= ( const DrawingStyle& );
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Functions.
|
||||
|
@ -231,11 +244,22 @@ namespace Hurricane {
|
|||
|
||||
inline const Name& DisplayStyle::getName () const { return _name; }
|
||||
inline const vector<DrawingGroup*>& DisplayStyle::getDrawingGroups () const { return _groups; }
|
||||
inline int DisplayStyle::getDarkening () const { return _darkening; }
|
||||
inline const DisplayStyle::HSVr& DisplayStyle::getDarkening () const { return _darkening; }
|
||||
inline const string& DisplayStyle::getDescription () const { return _description; }
|
||||
inline void DisplayStyle::setDescription ( const string& description ) { _description = description; }
|
||||
inline void DisplayStyle::setDescription ( const char* description ) { _description = description; }
|
||||
|
||||
inline DisplayStyle::HSVr::HSVr ( float hue, float saturation, float value )
|
||||
: _hue(hue), _saturation(saturation), _value(value) { }
|
||||
|
||||
inline bool DisplayStyle::HSVr::isId () const { return (_hue==1.0) and (_saturation==1.0) and (_value==1.0); }
|
||||
inline float DisplayStyle::HSVr::getHue () const { return _hue; }
|
||||
inline float DisplayStyle::HSVr::getSaturation () const { return _saturation; }
|
||||
inline float DisplayStyle::HSVr::getValue () const { return _value; }
|
||||
inline void DisplayStyle::HSVr::setHue ( float hue ) { _hue=hue; }
|
||||
inline void DisplayStyle::HSVr::setSaturation ( float saturation ) { _saturation=saturation; }
|
||||
inline void DisplayStyle::HSVr::setValue ( float value ) { _value=value; }
|
||||
|
||||
|
||||
} // End of Hurricane namespace.
|
||||
|
||||
|
|
|
@ -60,13 +60,14 @@ namespace Hurricane {
|
|||
static const QFont getFixedFont ( int weight=QFont::Normal, bool italic=false, bool underline=false, int scale=0 );
|
||||
static const QFont getNormalFont ( bool bold=false, bool italic=false, bool underline=false );
|
||||
static const Name& getGroup ( const Name& key );
|
||||
static QColor getColor ( const Name& key, int darkening=100 );
|
||||
static QPen getPen ( const Name& key, int darkening=100 );
|
||||
static QBrush getBrush ( const Name& key, int darkening=100 );
|
||||
static QColor getColor ( const Name& key, const DisplayStyle::HSVr& darkening=DisplayStyle::HSVr() );
|
||||
static QPen getPen ( const Name& key, const DisplayStyle::HSVr& darkening=DisplayStyle::HSVr() );
|
||||
static QBrush getBrush ( const Name& key, const DisplayStyle::HSVr& darkening=DisplayStyle::HSVr() );
|
||||
static const string& getPattern ( const Name& key );
|
||||
static float getThreshold ( const Name& key );
|
||||
static int getDarkening ();
|
||||
static const DisplayStyle::HSVr& getDarkening ();
|
||||
static const ColorScale& getColorScale ( ColorScale::ScaleType );
|
||||
static QColor darken ( const QColor& );
|
||||
static const TextTranslator& getHtmlTranslator();
|
||||
static string toHtml ( const string& );
|
||||
static bool breakpointStopCb ( const string& message );
|
||||
|
@ -106,12 +107,12 @@ namespace Hurricane {
|
|||
DisplayStyle* _getStyle () const;
|
||||
inline const vector<DisplayStyle*>& _getStyles () const;
|
||||
inline const Name& _getGroup ( const Name& key ) const;
|
||||
inline QColor _getColor ( const Name& key, int darkening ) const;
|
||||
inline QPen _getPen ( const Name& key, int darkening ) const;
|
||||
inline QBrush _getBrush ( const Name& key, int darkening ) const;
|
||||
inline QColor _getColor ( const Name& key, const DisplayStyle::HSVr& darkening ) const;
|
||||
inline QPen _getPen ( const Name& key, const DisplayStyle::HSVr& darkening ) const;
|
||||
inline QBrush _getBrush ( const Name& key, const DisplayStyle::HSVr& darkening ) const;
|
||||
inline const string& _getPattern ( const Name& key ) const;
|
||||
inline float _getThreshold ( const Name& key ) const;
|
||||
inline int _getDarkening () const;
|
||||
inline const DisplayStyle::HSVr& _getDarkening () const;
|
||||
inline const ColorScale& _getColorScale ( ColorScale::ScaleType ) const;
|
||||
inline void _enable ();
|
||||
inline const TextTranslator& _getHtmlTranslator () const;
|
||||
|
@ -122,13 +123,13 @@ namespace Hurricane {
|
|||
inline const Name& Graphics::_getGroup ( const Name& name ) const
|
||||
{ return _active->getGroup(name); }
|
||||
|
||||
inline QColor Graphics::_getColor ( const Name& name, int darkening ) const
|
||||
inline QColor Graphics::_getColor ( const Name& name, const DisplayStyle::HSVr& darkening ) const
|
||||
{ return _active->getColor(name,darkening); }
|
||||
|
||||
inline QPen Graphics::_getPen ( const Name& name, int darkening ) const
|
||||
inline QPen Graphics::_getPen ( const Name& name, const DisplayStyle::HSVr& darkening ) const
|
||||
{ return _active->getPen(name,darkening); }
|
||||
|
||||
inline QBrush Graphics::_getBrush ( const Name& name, int darkening ) const
|
||||
inline QBrush Graphics::_getBrush ( const Name& name, const DisplayStyle::HSVr& darkening ) const
|
||||
{ return _active->getBrush(name,darkening); }
|
||||
|
||||
inline const string& Graphics::_getPattern ( const Name& name ) const
|
||||
|
@ -137,7 +138,7 @@ namespace Hurricane {
|
|||
inline float Graphics::_getThreshold ( const Name& name ) const
|
||||
{ return _active->getThreshold(name); }
|
||||
|
||||
inline int Graphics::_getDarkening () const
|
||||
inline const DisplayStyle::HSVr& Graphics::_getDarkening () const
|
||||
{ return _active->getDarkening(); }
|
||||
|
||||
inline const ColorScale& Graphics::_getColorScale ( ColorScale::ScaleType id ) const
|
||||
|
|
Loading…
Reference in New Issue