* ./hurricane :

- Unit evolution to allow Symbolic (lamda) and Real (grid founder) mixing.
       All functions related to Unit translations are now grouped under
       the "DbU" class (another tribute to OpenAccess). "DbU" contains
       only static attributes (constants) and methods. Unit itself becomes
       a typedef inside this class, hence the file renaming from Unit.{h,cpp}
       to DbU.{h.cpp}. Have to replace all instances of "Unit" by "DbU::Unit".
   - Doc will be updated shortly.
This commit is contained in:
Jean-Paul Chaput 2008-06-09 16:41:46 +00:00
parent 1e0622a450
commit 5a7ddb8188
80 changed files with 1346 additions and 1183 deletions

View File

@ -13,7 +13,7 @@
*/ */
// \{ // \{
/*! \function BasicLayer* BasicLayer::create(Technology* technology,const Name& name,const BasicLayer::Material& material,unsigned extractNumber,const Unit& minimalSize = 0,const Unit& minimalSpacing = 0); /*! \function BasicLayer* BasicLayer::create(Technology* technology,const Name& name,const BasicLayer::Material& material,unsigned extractNumber,const DbU::Unit& minimalSize = 0,const DbU::Unit& minimalSpacing = 0);
* creates and returns a new basic layer named \c \<name\>, of * creates and returns a new basic layer named \c \<name\>, of
* type \c \<material\> for the given technology (some geometrical * type \c \<material\> for the given technology (some geometrical
* characteristics can also be specified). * characteristics can also be specified).

View File

@ -42,7 +42,7 @@ if (box1.inflate(3).merge(box2.translate(10, 10).inflate(-1, 1)).contains(20, 20
* Default constructor : the returned box is empty. * Default constructor : the returned box is empty.
*/ */
/*! \function Box::Box(const Unit& x, const Unit& y); /*! \function Box::Box(const DbU::Unit& x, const DbU::Unit& y);
* Builds a box of null size centered on the point defined by * Builds a box of null size centered on the point defined by
* \c \<x\> and \c \<y\>. * \c \<x\> and \c \<y\>.
*/ */
@ -51,7 +51,7 @@ if (box1.inflate(3).merge(box2.translate(10, 10).inflate(-1, 1)).contains(20, 20
* Builds a box of null size centered on the point. * Builds a box of null size centered on the point.
*/ */
/*! \function Box::Box(const Unit& x1, const Unit& y1, const Unit& x2, const Unit& y2); /*! \function Box::Box(const DbU::Unit& x1, const DbU::Unit& y1, const DbU::Unit& x2, const DbU::Unit& y2);
* Builds the minimal box enclosing the two points defined by * Builds the minimal box enclosing the two points defined by
* the coordinates \c \<x1\>, \c \<y1\> and \c \<x2\>, * the coordinates \c \<x1\>, \c \<y1\> and \c \<x2\>,
* \c \<y2\>. * \c \<y2\>.
@ -93,28 +93,28 @@ if (box1.inflate(3).merge(box2.translate(10, 10).inflate(-1, 1)).contains(20, 20
*/ */
// \{ // \{
/*! \function const Unit& Box::getXMin() const; /*! \function const DbU::Unit& Box::getXMin() const;
* \Return the XMin value : meaningful only for a non empty box. * \Return the XMin value : meaningful only for a non empty box.
*/ */
/*! \function const Unit& Box::getYMin() const; /*! \function const DbU::Unit& Box::getYMin() const;
* \Return the YMin value : meaningful only for a non empty box. * \Return the YMin value : meaningful only for a non empty box.
*/ */
/*! \function const Unit& Box::getXMax() const; /*! \function const DbU::Unit& Box::getXMax() const;
* \Return the XMax value : meaningful only for a non empty box. * \Return the XMax value : meaningful only for a non empty box.
*/ */
/*! \function const Unit& Box::getYMax() const; /*! \function const DbU::Unit& Box::getYMax() const;
* \Return the YMax value : meaningful only for a non empty box. * \Return the YMax value : meaningful only for a non empty box.
*/ */
/*! \function Unit Box::getXCenter() const; /*! \function DbU::Unit Box::getXCenter() const;
* \Return the abscissa of the box center : meaningful only for a non * \Return the abscissa of the box center : meaningful only for a non
* empty box. * empty box.
*/ */
/*! \function Unit Box::getYCenter() const; /*! \function DbU::Unit Box::getYCenter() const;
* \Return the ordinate of the box center : meaningful only for a non * \Return the ordinate of the box center : meaningful only for a non
* empty box. * empty box.
*/ */
@ -123,19 +123,19 @@ if (box1.inflate(3).merge(box2.translate(10, 10).inflate(-1, 1)).contains(20, 20
* \Return the box center point : meaningful only for a non empty box. * \Return the box center point : meaningful only for a non empty box.
*/ */
/*! \function Unit Box::getWidth() const; /*! \function DbU::Unit Box::getWidth() const;
* \Return the box width : meaningful only for a non empty box. * \Return the box width : meaningful only for a non empty box.
*/ */
/*! \function Unit Box::getHalfWidth() const; /*! \function DbU::Unit Box::getHalfWidth() const;
* \Return the half box width : meaningful only for a non empty box. * \Return the half box width : meaningful only for a non empty box.
*/ */
/*! \function Unit Box::getHeight() const; /*! \function DbU::Unit Box::getHeight() const;
* \Return the box height : meaningful only for a non empty box. * \Return the box height : meaningful only for a non empty box.
*/ */
/*! \function Unit Box::getHalfHeight() const; /*! \function DbU::Unit Box::getHalfHeight() const;
* \Return the half box height : meaningful only for a non empty box. * \Return the half box height : meaningful only for a non empty box.
*/ */
@ -170,7 +170,7 @@ if (box1.inflate(3).merge(box2.translate(10, 10).inflate(-1, 1)).contains(20, 20
* \Return \true if the box is reduced to a point, else \false. * \Return \true if the box is reduced to a point, else \false.
*/ */
/*! \function bool Box::contains(const Unit& x, const Unit& y) const; /*! \function bool Box::contains(const DbU::Unit& x, const DbU::Unit& y) const;
* \Return \true if the box is non empty and contains the point defined * \Return \true if the box is non empty and contains the point defined
* by the coordinates \c \<x\>, \c \<y\> else \false. * by the coordinates \c \<x\>, \c \<y\> else \false.
*/ */
@ -207,20 +207,20 @@ if (box1.inflate(3).merge(box2.translate(10, 10).inflate(-1, 1)).contains(20, 20
* Transforms the box into an empty one. * Transforms the box into an empty one.
*/ */
/*! \function Box& Box::inflate(const Unit& d); /*! \function Box& Box::inflate(const DbU::Unit& d);
* Expands (or contracts) the box, if not empty, in each * Expands (or contracts) the box, if not empty, in each
* direction of the quantity \c \<d\>. This quantity might be * direction of the quantity \c \<d\>. This quantity might be
* negative enough to transform it into an empty box. * negative enough to transform it into an empty box.
*/ */
/*! \function Box& Box::inflate(const Unit& dx, const Unit& dy); /*! \function Box& Box::inflate(const DbU::Unit& dx, const DbU::Unit& dy);
* Expands (or contracts) the box, if not empty, horizontaly of * Expands (or contracts) the box, if not empty, horizontaly of
* the quantity \c \<dx\> and vertically of the quatity * the quantity \c \<dx\> and vertically of the quatity
* \c \<dy\>. Those quantities might be negative enough to * \c \<dy\>. Those quantities might be negative enough to
* transform it into an empty box. * transform it into an empty box.
*/ */
/*! \function Box& Box::inflate(const Unit& dxMin, const Unit& dyMin, const Unit& dxMax, const Unit& dyMax); /*! \function Box& Box::inflate(const DbU::Unit& dxMin, const DbU::Unit& dyMin, const DbU::Unit& dxMax, const DbU::Unit& dyMax);
* Expands (or contracts) the box, if not empty, on the left of * Expands (or contracts) the box, if not empty, on the left of
* the quantity \c \<dxMin\>, on the bottom of the quantity * the quantity \c \<dxMin\>, on the bottom of the quantity
* \c \<dyMin\>, on the right of the quantity \c \<dxMax\> and * \c \<dyMin\>, on the right of the quantity \c \<dxMax\> and
@ -228,7 +228,7 @@ if (box1.inflate(3).merge(box2.translate(10, 10).inflate(-1, 1)).contains(20, 20
* might be negative enough to transform it into an empty box. * might be negative enough to transform it into an empty box.
*/ */
/*! \function Box& Box::merge(const Unit& x, const Unit& y); /*! \function Box& Box::merge(const DbU::Unit& x, const DbU::Unit& y);
* Expands the box in order that it encloses the point defined * Expands the box in order that it encloses the point defined
* by coordinates \c \<x\> and \c \<y\>. If the box was * by coordinates \c \<x\> and \c \<y\>. If the box was
* initially empty it becomes reduced to the enclosed point. * initially empty it becomes reduced to the enclosed point.
@ -240,7 +240,7 @@ if (box1.inflate(3).merge(box2.translate(10, 10).inflate(-1, 1)).contains(20, 20
* reduced to the enclosed point. * reduced to the enclosed point.
*/ */
/*! \function Box& Box::merge(const Unit& x1, const Unit& y1, const Unit& x2, const Unit& y2); /*! \function Box& Box::merge(const DbU::Unit& x1, const DbU::Unit& y1, const DbU::Unit& x2, const DbU::Unit& y2);
* Expands the box in order that it encloses the points defined * Expands the box in order that it encloses the points defined
* by coordinates \c \<x1\>, \c \<y1\> and \c \<x2\>, \c \<y2\>. * by coordinates \c \<x1\>, \c \<y1\> and \c \<x2\>, \c \<y2\>.
*/ */
@ -251,7 +251,7 @@ if (box1.inflate(3).merge(box2.translate(10, 10).inflate(-1, 1)).contains(20, 20
* becomes reduced to the enclosed box. * becomes reduced to the enclosed box.
*/ */
/*! \function Box& Box::translate(const Unit& dx, const Unit& dy); /*! \function Box& Box::translate(const DbU::Unit& dx, const DbU::Unit& dy);
* translates the box, if not empty, of the quantities \c \<dx\> * translates the box, if not empty, of the quantities \c \<dx\>
* and \c \<dy\>. * and \c \<dy\>.
*/ */

View File

@ -42,7 +42,7 @@
*/ */
// \{ // \{
/*! \function Contact* Contact::create(Net* net, Layer* layer, const Unit& x, const Unit& y,const Unit& width = 0, const Unit& height = 0); /*! \function Contact* Contact::create(Net* net, const Layer* layer, const DbU::Unit& x, const DbU::Unit& y,const DbU::Unit& width = 0, const DbU::Unit& height = 0);
* creates and returns a new contact belonging to the net * creates and returns a new contact belonging to the net
* \c \<net\>, on the layer \c \<layer\>, of size \c \<width\> * \c \<net\>, on the layer \c \<layer\>, of size \c \<width\>
* and \c \<height\> and located at the absolute coordinates * and \c \<height\> and located at the absolute coordinates
@ -51,7 +51,7 @@
* \caution Throws an exception if the layer or the net is null. * \caution Throws an exception if the layer or the net is null.
*/ */
/*! \function Contact* Contact::create(Component* anchor, Layer* layer, const Unit& dx, const Unit& dy,const Unit& width = 0, const Unit& height = 0); /*! \function Contact* Contact::create(Component* anchor, const Layer* layer, const DbU::Unit& dx, const DbU::Unit& dy,const DbU::Unit& width = 0, const DbU::Unit& height = 0);
* creates and returns a new contact on the layer \c \<layer\>, * creates and returns a new contact on the layer \c \<layer\>,
* of size \c \<width\> and \c \<height\> attached upon the * of size \c \<width\> and \c \<height\> attached upon the
* component \c \<anchor\> through an offset defined by * component \c \<anchor\> through an offset defined by
@ -85,33 +85,33 @@
* transitory)). * transitory)).
*/ */
/*! \function const Unit& Contact::getDx() const; /*! \function const DbU::Unit& Contact::getDx() const;
* \Return the relative abscissa of the contact. * \Return the relative abscissa of the contact.
* *
* \remark If you want to get the absolute one use the member function * \remark If you want to get the absolute one use the member function
* getX() defined at the Component level. * getX() defined at the Component level.
*/ */
/*! \function const Unit& Contact::getDy() const; /*! \function const DbU::Unit& Contact::getDy() const;
* \Return the relative ordinate of the contact. * \Return the relative ordinate of the contact.
* *
* \remark If you want to get the absolute one use the member function * \remark If you want to get the absolute one use the member function
* getY() defined at the Component level. * getY() defined at the Component level.
*/ */
/*! \function const Unit& Contact::getWidth() const; /*! \function const DbU::Unit& Contact::getWidth() const;
* \Return the contact width. * \Return the contact width.
*/ */
/*! \function Unit Contact::getHalfWidth() const; /*! \function DbU::Unit Contact::getHalfWidth() const;
* \Return the contact half width. * \Return the contact half width.
*/ */
/*! \function const Unit& Contact::getHeight() const; /*! \function const DbU::Unit& Contact::getHeight() const;
* \Return the contact height. * \Return the contact height.
*/ */
/*! \function Unit Contact::getHalfHeight() const; /*! \function DbU::Unit Contact::getHalfHeight() const;
* \Return the contact half height. * \Return the contact half height.
*/ */
@ -122,35 +122,35 @@
*/ */
// \{ // \{
/*! \function void Contact::setLayer(Layer* layer); /*! \function void Contact::setLayer(const Layer* layer);
* sets the contact layer. * sets the contact layer.
*/ */
/*! \function void Contact::setWidth(const Unit& width); /*! \function void Contact::setWidth(const DbU::Unit& width);
* sets the contact width. * sets the contact width.
*/ */
/*! \function void Contact::setHeight(const Unit& height); /*! \function void Contact::setHeight(const DbU::Unit& height);
* sets the contact height. * sets the contact height.
*/ */
/*! \function void Contact::setSizes(const Unit& width, const Unit& height); /*! \function void Contact::setSizes(const DbU::Unit& width, const DbU::Unit& height);
* sets both contact width and height. * sets both contact width and height.
*/ */
/*! \function void Contact::setX(const Unit& x); /*! \function void Contact::setX(const DbU::Unit& x);
* Allows to change the absolute abscissa of the contact (if it * Allows to change the absolute abscissa of the contact (if it
* has a location relative to an other component, only relative * has a location relative to an other component, only relative
* position to this last is accordingly changed). * position to this last is accordingly changed).
*/ */
/*! \function void Contact::setY(const Unit& y); /*! \function void Contact::setY(const DbU::Unit& y);
* Allows to change the absolute ordinate of the contact (if it * Allows to change the absolute ordinate of the contact (if it
* has a location relative to an other component, only relative * has a location relative to an other component, only relative
* position to this last is accordingly changed). * position to this last is accordingly changed).
*/ */
/*! \function void Contact::setPosition(const Unit& x, const Unit& y); /*! \function void Contact::setPosition(const DbU::Unit& x, const DbU::Unit& y);
* No description. * No description.
*/ */
@ -160,21 +160,21 @@
* position to this last is accordingly changed). * position to this last is accordingly changed).
*/ */
/*! \function void Contact::setDx(const Unit& dx); /*! \function void Contact::setDx(const DbU::Unit& dx);
* Allows to change the horizontal offset of the contact. * Allows to change the horizontal offset of the contact.
* *
* \remark If the contact is absolute, this amounts to change its * \remark If the contact is absolute, this amounts to change its
* absolute abscissa. * absolute abscissa.
*/ */
/*! \function void Contact::setDy(const Unit& dy); /*! \function void Contact::setDy(const DbU::Unit& dy);
* Allows to change the vertical offset of the contact. * Allows to change the vertical offset of the contact.
* *
* \remark If the contact is absolute, this amounts to change its * \remark If the contact is absolute, this amounts to change its
* absolute ordinate. * absolute ordinate.
*/ */
/*! \function void Contact::setOffset(const Unit& dx, const Unit& dy); /*! \function void Contact::setOffset(const DbU::Unit& dx, const DbU::Unit& dy);
* Allows to change the offset of the contact. * Allows to change the offset of the contact.
* *
* \remark If the contact is absolute, this amounts to change its * \remark If the contact is absolute, this amounts to change its

View File

@ -4,9 +4,9 @@
namespace Hurricane { namespace Hurricane {
/*! \defgroup Unit Unit description /*! \defgroup DbU DbU/Unit description
* *
* \section secUnitIntro Introduction * \section secDbUIntro Introduction
* *
* Those objects are used to model a geometric lengths, that is * Those objects are used to model a geometric lengths, that is
* abscissas, ordinates, widths, offsets ... * abscissas, ordinates, widths, offsets ...
@ -16,7 +16,7 @@
* order to avoid floating point round errors. * order to avoid floating point round errors.
* *
* *
* \section secUnitPrecision Precision * \section secDbUPrecision Precision
* *
* It is possible to choose (once for all) the precision with * It is possible to choose (once for all) the precision with
* which unit values are stored. * which unit values are stored.
@ -28,47 +28,47 @@
* unit equal to 23540. * unit equal to 23540.
* *
* <ul> * <ul>
* <li><b>Unit::getPrecision</b> * <li><b>DbU::getPrecision</b>
* <li><b>Unit::getMaximalPrecisionAllowed</b> * <li><b>DbU::getMaximalPrecisionAllowed</b>
* <li><b>Unit::setPrecision</b> * <li><b>DbU::setPrecision</b>
* </ul> * </ul>
* *
* *
* \section secUnitResolution Resolution * \section secDbUResolution Resolution
* *
* The resolution is associated to the precision. Indeed it * The resolution is associated to the precision. Indeed it
* represents the external value associated to the smallest * represents the external value associated to the smallest
* unit, that is the value returned by getValue(getUnit(1)). * unit, that is the value returned by getValue(getUnit(1)).
* *
* <b>Unit::getResolution</b> * <b>DbU::getResolution</b>
* *
* *
* \section secUnitGrid Grid * \section secDbUGrid Grid
* *
* <ul> * <ul>
* <li><b>Unit::getGridStep</b> * <li><b>DbU::getGridStep</b>
* <li><b>Unit::setGridStep</b> * <li><b>DbU::setGridStep</b>
* <li><b>Unit::isOnGrid</b> * <li><b>DbU::isOnGrid</b>
* <li><b>Unit::getOnGridUnit</b> * <li><b>DbU::getOnGridUnit</b>
* </ul> * </ul>
* *
* *
* \section secUnitTranslators Translators * \section secDbUTranslators Translators
* *
* <ul> * <ul>
* <li><b>Unit::getUnit</b> * <li><b>DbU::getUnit</b>
* <li><b>Unit::getValue</b> * <li><b>DbU::getValue</b>
* <li><b>Unit::getValueString</b> * <li><b>DbU::getValueString</b>
* </ul> * </ul>
*/ */
/*! \ingroup Unit /*! \ingroup DbU
*/ */
// \{ // \{
/*! \function bool Unit::isOnGrid(const Unit& unit, int n = 1); /* \function bool DbU::isOnGrid(const Unit& unit, int n = 1);
* \Return \true if the unit is on grid, else \false. The argument * \Return \true if the unit is on grid, else \false. The argument
* \c \<n\> allows to consider on grid only multiples of * \c \<n\> allows to consider on grid only multiples of
* \c \<n\> grid steps. So if n=1 all grid steps are considered, * \c \<n\> grid steps. So if n=1 all grid steps are considered,
@ -76,23 +76,23 @@
*/ */
/*! \function unsigned Unit::getPrecision(); /* \function unsigned DbU::getPrecision();
* \Return the current precision (whose default is fixed to 0). * \Return the current precision (whose default is fixed to 0).
*/ */
/*! \function unsigned Unit::getMaximalPrecisionAllowed(); /* \function unsigned DbU::getMaximalPrecisionAllowed();
* \Return the maximal precision allowed (currently fixed to 3). * \Return the maximal precision allowed (currently fixed to 3).
*/ */
/*! \function double Unit::getResolution(); /* \function double DbU::getResolution();
* \Return the current resolution. * \Return the current resolution.
*/ */
/*! \function const Unit& Unit::getGridStep(); /* \function const DbU::Unit& DbU::getGridStep();
* \Return the grid step. * \Return the grid step.
*/ */
/*! \function Unit Unit::getOnGridUnit(const Unit& unit, int s = 0); /* \function DbU::Unit DbU::getOnGridUnit(const Unit& unit, int s = 0);
* \Return the closest location on grid if the argument \c \<s\> equals * \Return the closest location on grid if the argument \c \<s\> equals
* 0, the closest inferior location on grid if the argument * 0, the closest inferior location on grid if the argument
* \c \<s\> equals -1 and the closest superior location on grid * \c \<s\> equals -1 and the closest superior location on grid
@ -101,17 +101,17 @@
* \remark Throw an exception for any other \c \<s\> argument value. * \remark Throw an exception for any other \c \<s\> argument value.
*/ */
/*! \function Unit getUnit(double value); /* \function DbU::Unit getUnit(double value);
* \Return the unit corresponding to the value \c \<value\> according to * \Return the unit corresponding to the value \c \<value\> according to
* the current precision. * the current precision.
*/ */
/*! \function double getValue(const Unit& unit); /* \function double DbU::getValue(const Unit& unit);
* \Return the external value associated to the unit \c \<unit\> * \Return the external value associated to the unit \c \<unit\>
* according to the current precision. * according to the current precision.
*/ */
/*! \function string getValueString(const Unit& unit); /* \function string DbU::getValueString(const Unit& unit);
* \Return a character string representing the external value of * \Return a character string representing the external value of
* \c \<unit\>. * \c \<unit\>.
* *
@ -121,7 +121,7 @@
*/ */
/*! \function void setPrecision(unsigned precision); /* \function void DbU::setPrecision(unsigned precision);
* Allows to set the precision at a requested value. This must * Allows to set the precision at a requested value. This must
* be done at the begining of the program (before the creation * be done at the begining of the program (before the creation
* of the first unit) and not changed for the following (unless * of the first unit) and not changed for the following (unless
@ -132,7 +132,7 @@
* is greater than the maximal one. * is greater than the maximal one.
*/ */
/*! \function void setGridStep(const Unit& gridStep); /* \function void DbU::setGridStep(const Unit& gridStep);
* Allows to change the grid step. * Allows to change the grid step.
*/ */

View File

@ -38,11 +38,11 @@
*/ */
// \{ // \{
/*! \function Horizontal* Horizontal::create(Component* source, Component* target, Layer* layer,const Unit& y, const Unit& width = 0,const Unit& dxSource = 0, const Unit& dxTarget = 0); /*! \function Horizontal* Horizontal::create(Component* source, Component* target, const Layer* layer,const DbU::Unit& y, const DbU::Unit& width = 0,const DbU::Unit& dxSource = 0, const DbU::Unit& dxTarget = 0);
* No description. * No description.
*/ */
/*! \function Horizontal* Horizontal::create(Net* net, Layer* layer, const Unit& y, const Unit& width = 0,const Unit& dxSource = 0, const Unit& dxTarget = 0); /*! \function Horizontal* Horizontal::create(Net* net, const Layer* layer, const DbU::Unit& y, const DbU::Unit& width = 0,const DbU::Unit& dxSource = 0, const DbU::Unit& dxTarget = 0);
* creates and returns an absolute horizontal segment with layer * creates and returns an absolute horizontal segment with layer
* \c \<layer\>, located at ordinate \c \<y\> and of width * \c \<layer\>, located at ordinate \c \<y\> and of width
* \c \<width\>. The differents extremities abscissas are given * \c \<width\>. The differents extremities abscissas are given
@ -59,7 +59,7 @@
*/ */
// \{ // \{
/*! \function const Unit& Horizontal::getDxSource() const; /*! \function const DbU::Unit& Horizontal::getDxSource() const;
* \Return the relative source abscissa of the segment (may be absolute * \Return the relative source abscissa of the segment (may be absolute
* if the source extremity isn't anchored). * if the source extremity isn't anchored).
* *
@ -67,7 +67,7 @@
* getSourceY() defined at the Segment level. * getSourceY() defined at the Segment level.
*/ */
/*! \function const Unit& Horizontal::getDxTarget() const; /*! \function const DbU::Unit& Horizontal::getDxTarget() const;
* \Return the relative target abscissa of the segment (may be absolute * \Return the relative target abscissa of the segment (may be absolute
* if the target extremity isn't anchored). * if the target extremity isn't anchored).
* *
@ -82,11 +82,11 @@
*/ */
// \{ // \{
/*! \function void Horizontal::setY(const Unit& x); /*! \function void Horizontal::setY(const DbU::Unit& x);
* sets the ordinate of the segment. * sets the ordinate of the segment.
*/ */
/*! \function void Horizontal::translate(const Unit& dy); /*! \function void Horizontal::translate(const DbU::Unit& dy);
* translate verticaly the horizontal segment of the quantity * translate verticaly the horizontal segment of the quantity
* \c \<dy\>. * \c \<dy\>.
*/ */

View File

@ -36,12 +36,12 @@
* otherwise. * otherwise.
*/ */
/*! \function Interval::Interval(const Unit& v); /*! \function Interval::Interval(const DbU::Unit& v);
* Builds an interval of null size centered on the value defined * Builds an interval of null size centered on the value defined
* by \c \<v\>. * by \c \<v\>.
*/ */
/*! \function Interval::Interval(const Unit& v1, const Unit& v2); /*! \function Interval::Interval(const DbU::Unit& v1, const DbU::Unit& v2);
* Builds the minimal interval enclosing the two values defined * Builds the minimal interval enclosing the two values defined
* by \c \<v1\> and \c \<v2\>. * by \c \<v1\> and \c \<v2\>.
*/ */
@ -78,24 +78,24 @@
*/ */
// \{ // \{
/*! \function const Unit& Interval::getVMin() const; /*! \function const DbU::Unit& Interval::getVMin() const;
* \Return the VMin value : meaningful only for a non empty interval. * \Return the VMin value : meaningful only for a non empty interval.
*/ */
/*! \function const Unit& Interval::getVMax() const; /*! \function const DbU::Unit& Interval::getVMax() const;
* \Return the VMax value : meaningful only for a non empty interval. * \Return the VMax value : meaningful only for a non empty interval.
*/ */
/*! \function Unit Interval::getCenter() const; /*! \function DbU::Unit Interval::getCenter() const;
* \Return the interval center value : meaningful only for a non empty * \Return the interval center value : meaningful only for a non empty
* interval. * interval.
*/ */
/*! \function Unit Interval::getSize() const; /*! \function DbU::Unit Interval::getSize() const;
* \Return the interval size : meaningful only for a non empty interval. * \Return the interval size : meaningful only for a non empty interval.
*/ */
/*! \function Unit Interval::getHalfSize() const; /*! \function DbU::Unit Interval::getHalfSize() const;
* \Return the half interval width : meaningful only for a non empty * \Return the half interval width : meaningful only for a non empty
* interval. * interval.
*/ */
@ -127,7 +127,7 @@
* \Return \true if the interval is reduced to a value, else \false. * \Return \true if the interval is reduced to a value, else \false.
*/ */
/*! \function bool Interval::contains(const Unit& v) const; /*! \function bool Interval::contains(const DbU::Unit& v) const;
* \Return \true if the interval is non empty and contains the value * \Return \true if the interval is non empty and contains the value
* defined by \c \<v\> else \false. * defined by \c \<v\> else \false.
*/ */
@ -154,20 +154,20 @@
* Transforms the interval into an empty one. * Transforms the interval into an empty one.
*/ */
/*! \function Interval& Interval::inflate(const Unit& dv); /*! \function Interval& Interval::inflate(const DbU::Unit& dv);
* Expands (or contracts) the interval, if not empty, in each * Expands (or contracts) the interval, if not empty, in each
* direction of the quantity \c \<dv\>. This quantity might be * direction of the quantity \c \<dv\>. This quantity might be
* negative enough to transform it into an empty interval. * negative enough to transform it into an empty interval.
*/ */
/*! \function Interval& Interval::inflate(const Unit& dvMin, const Unit& dvMax); /*! \function Interval& Interval::inflate(const DbU::Unit& dvMin, const DbU::Unit& dvMax);
* Expands (or contracts) the interval, if not empty, on the * Expands (or contracts) the interval, if not empty, on the
* left of the quantity \c \<dvMin\> and on the right of the * left of the quantity \c \<dvMin\> and on the right of the
* quantity \c \<dvMax\>. Those quantities might be negative * quantity \c \<dvMax\>. Those quantities might be negative
* enough to transform it into an empty interval. * enough to transform it into an empty interval.
*/ */
/*! \function Interval& Interval::merge(const Unit& v); /*! \function Interval& Interval::merge(const DbU::Unit& v);
* Expands the interval in order that it encloses the value * Expands the interval in order that it encloses the value
* defined \c \<v\>. If the interval was initially empty it * defined \c \<v\>. If the interval was initially empty it
* becomes reduced to the enclosed value. * becomes reduced to the enclosed value.
@ -179,7 +179,7 @@
* initially empty it becomes reduced to the enclosed interval. * initially empty it becomes reduced to the enclosed interval.
*/ */
/*! \function Interval& Interval::intersection(const Unit& vMin, const Unit& vMax); /*! \function Interval& Interval::intersection(const DbU::Unit& vMin, const DbU::Unit& vMax);
* The interval becomes the intersection of itself and * The interval becomes the intersection of itself and
* <b>[vMin,vMax]</b>. * <b>[vMin,vMax]</b>.
*/ */
@ -189,7 +189,7 @@
* <b>interval</b>. * <b>interval</b>.
*/ */
/*! \function Interval& Interval::translate(const Unit& dv); /*! \function Interval& Interval::translate(const DbU::Unit& dv);
* translates the interval, if not empty, of the quantity * translates the interval, if not empty, of the quantity
* \c \<dv\>. * \c \<dv\>.
* *

View File

@ -53,12 +53,12 @@
* CPG which represent poly used to realize transistor gates). * CPG which represent poly used to realize transistor gates).
*/ */
/*! \function const Unit& Layer::getMinimalSize() const; /*! \function const DbU::Unit& Layer::getMinimalSize() const;
* \Return the minimal size allowed for a rectangular layout pad on this * \Return the minimal size allowed for a rectangular layout pad on this
* layer. * layer.
*/ */
/*! \function const Unit& Layer::getMinimalSpacing() const; /*! \function const DbU::Unit& Layer::getMinimalSpacing() const;
* \Return the minimal spacing between two pads on this layer. * \Return the minimal spacing between two pads on this layer.
*/ */
@ -100,11 +100,11 @@
* other layer with that name. * other layer with that name.
*/ */
/*! \function void Layer::setMinimalSize(const Unit& minimalSize); /*! \function void Layer::setMinimalSize(const DbU::Unit& minimalSize);
* sets the minimal size of a pad on this layer. * sets the minimal size of a pad on this layer.
*/ */
/*! \function void Layer::setMinimalSpacing(const Unit& minimalSpacing); /*! \function void Layer::setMinimalSpacing(const DbU::Unit& minimalSpacing);
* sets the minimal spacing between two pads on this layer. * sets the minimal spacing between two pads on this layer.
*/ */

View File

@ -18,7 +18,7 @@
* Default constructor. * Default constructor.
*/ */
/*! \function Point::Point(const Unit& x, const Unit& y); /*! \function Point::Point(const DbU::Unit& x, const DbU::Unit& y);
* Creates the point defined by x and y coordinates. * Creates the point defined by x and y coordinates.
*/ */
@ -52,15 +52,15 @@
*/ */
// \{ // \{
/*! \function void Point::setX(const Unit& x); /*! \function void Point::setX(const DbU::Unit& x);
* Modifies point abscissa. * Modifies point abscissa.
*/ */
/*! \function void Point::setY(const Unit& y); /*! \function void Point::setY(const DbU::Unit& y);
* Modifies point ordinate. * Modifies point ordinate.
*/ */
/*! \function Point& Point::translate(const Unit& dx, const Unit& dy); /*! \function Point& Point::translate(const DbU::Unit& dx, const DbU::Unit& dy);
* Translates the point of dx and dy. * Translates the point of dx and dy.
*/ */

View File

@ -96,19 +96,19 @@
* aren't anchored). * aren't anchored).
*/ */
/*! \function const Unit& Segment::getWidth() const; /*! \function const DbU::Unit& Segment::getWidth() const;
* \Return the segment width. * \Return the segment width.
*/ */
/*! \function Unit Segment::getHalfWidth() const; /*! \function DbU::Unit Segment::getHalfWidth() const;
* \Return the segment half width. * \Return the segment half width.
*/ */
/*! \function Unit Segment::getSourceX() const; /*! \function DbU::Unit Segment::getSourceX() const;
* \Return the abscissa of the segment origin. * \Return the abscissa of the segment origin.
*/ */
/*! \function Unit Segment::getSourceY() const; /*! \function DbU::Unit Segment::getSourceY() const;
* \Return the ordinate of the segment origin. * \Return the ordinate of the segment origin.
*/ */
@ -116,11 +116,11 @@
* \Return the point location of the segment origin. * \Return the point location of the segment origin.
*/ */
/*! \function Unit Segment::getTargetX() const; /*! \function DbU::Unit Segment::getTargetX() const;
* \Return the abscissa of the segment extremity. * \Return the abscissa of the segment extremity.
*/ */
/*! \function Unit Segment::getTargetY() const; /*! \function DbU::Unit Segment::getTargetY() const;
* \Return the ordinate of the segment extremity. * \Return the ordinate of the segment extremity.
*/ */
@ -128,7 +128,7 @@
* \Return the point location of the segment extremity. * \Return the point location of the segment extremity.
*/ */
/*! \function Unit Segment::getLength() const; /*! \function DbU::Unit Segment::getLength() const;
* \Return the segment length. * \Return the segment length.
*/ */
@ -139,11 +139,11 @@
*/ */
// \{ // \{
/*! \function void Segment::setLayer(Layer* layer); /*! \function void Segment::setLayer(const Layer* layer);
* sets the segment layer. * sets the segment layer.
*/ */
/*! \function void Segment::setWidth(const Unit& width); /*! \function void Segment::setWidth(const DbU::Unit& width);
* sets the segment width. * sets the segment width.
*/ */

View File

@ -78,7 +78,7 @@ TO::R1
* <b>ID</b>. * <b>ID</b>.
*/ */
/*! \function Transformation::Transformation(const Unit& tx, const Unit& ty, const Transformation::Orientation& orientation=Orientation::ID); /*! \function Transformation::Transformation(const DbU::Unit& tx, const DbU::Unit& ty, const Transformation::Orientation& orientation=Orientation::ID);
* Builds a transformation whose translation part is defined by * Builds a transformation whose translation part is defined by
* the arguments \c \<xt\> and \c \<ty\> and whose orientation * the arguments \c \<xt\> and \c \<ty\> and whose orientation
* is defined by \c \<orientation\> (\c \<ID\> by default). * is defined by \c \<orientation\> (\c \<ID\> by default).
@ -122,11 +122,11 @@ TO::R1
*/ */
// \{ // \{
/*! \function const Unit& Transformation::getTx() const; /*! \function const DbU::Unit& Transformation::getTx() const;
* \Return the horizontal component of the translation. * \Return the horizontal component of the translation.
*/ */
/*! \function const Unit& Transformation::getTy() const; /*! \function const DbU::Unit& Transformation::getTy() const;
* \Return the vertical component of the translation. * \Return the vertical component of the translation.
*/ */
@ -139,39 +139,39 @@ TO::R1
* switch). * switch).
*/ */
/*! \function Unit Transformation::getX(const Unit& x, const Unit& y) const; /*! \function DbU::Unit Transformation::getX(const DbU::Unit& x, const DbU::Unit& y) const;
* \Return the point abscissa resulting of the transformation * \Return the point abscissa resulting of the transformation
* application on the point defined by \c \<x\> et \c \<y\>. * application on the point defined by \c \<x\> et \c \<y\>.
*/ */
/*! \function Unit Transformation::getY(const Unit& x, const Unit& y) const; /*! \function DbU::Unit Transformation::getY(const DbU::Unit& x, const DbU::Unit& y) const;
* \Return the point ordinate resulting of the transformation * \Return the point ordinate resulting of the transformation
* application on the point defined by \c \<x\> et \c \<y\>. * application on the point defined by \c \<x\> et \c \<y\>.
*/ */
/*! \function Unit Transformation::getX(const Point& point) const; /*! \function DbU::Unit Transformation::getX(const Point& point) const;
* \Return the point abscissa resulting of the transformation * \Return the point abscissa resulting of the transformation
* application on \c \<point\>. * application on \c \<point\>.
*/ */
/*! \function Unit Transformation::getY(const Point& point) const; /*! \function DbU::Unit Transformation::getY(const Point& point) const;
* \Return the point ordinate resulting of the transformation * \Return the point ordinate resulting of the transformation
* application on \c \<point\>. * application on \c \<point\>.
*/ */
/*! \function Unit Transformation::getDx(const Unit& dx, const Unit& dy) const; /*! \function DbU::Unit Transformation::getDx(const DbU::Unit& dx, const DbU::Unit& dy) const;
* \Return the horizontal component of the vector resulting from the * \Return the horizontal component of the vector resulting from the
* application of the transformation on the vector defined by * application of the transformation on the vector defined by
* \c \<dx\> et \c \<dy\>. * \c \<dx\> et \c \<dy\>.
*/ */
/*! \function Unit Transformation::getDy(const Unit& dx, const Unit& dy) const; /*! \function DbU::Unit Transformation::getDy(const DbU::Unit& dx, const DbU::Unit& dy) const;
* \Return the vertical component of the vector resulting from the * \Return the vertical component of the vector resulting from the
* application of the transformation on the vector defined by * application of the transformation on the vector defined by
* \c \<dx\> et \c \<dy\>. * \c \<dx\> et \c \<dy\>.
*/ */
/*! \function Point Transformation::getPoint(const Unit& x, const Unit& y) const; /*! \function Point Transformation::getPoint(const DbU::Unit& x, const DbU::Unit& y) const;
* \Return the point resulting from the application of the * \Return the point resulting from the application of the
* transformation on the point defined by \c \<dx\> et * transformation on the point defined by \c \<dx\> et
* \c \<dy\>. * \c \<dy\>.
@ -182,7 +182,7 @@ TO::R1
* transformation on \c \<point\>. * transformation on \c \<point\>.
*/ */
/*! \function Box Transformation::getBox(const Unit& x1, const Unit& y1, const Unit& x2, const Unit& y2) const; /*! \function Box Transformation::getBox(const DbU::Unit& x1, const DbU::Unit& y1, const DbU::Unit& x2, const DbU::Unit& y2) const;
* \Return the box resulting from the application of the transformation * \Return the box resulting from the application of the transformation
* on the box defined by \c \<x1\>, \c \<y1\>, \c \<x2\> et * on the box defined by \c \<x1\>, \c \<y1\>, \c \<x2\> et
* \c \<y2\>. * \c \<y2\>.
@ -240,7 +240,7 @@ TO::R1
*/ */
// \{ // \{
/*! \function void Transformation::applyOn(Unit& x, Unit& y) const; /*! \function void Transformation::applyOn(DbU::Unit& x, DbU::Unit& y) const;
* Applies the transformation on the coordinates given in * Applies the transformation on the coordinates given in
* arguments. * arguments.
*/ */

View File

@ -39,7 +39,7 @@
*/ */
// \{ // \{
/*! \function Vertical* Vertical::create(Component* source, Component* target, Layer* layer,const Unit& x,const Unit& width = 0,const Unit& dySource = 0, const Unit& dyTarget = 0); /*! \function Vertical* Vertical::create(Component* source, Component* target, const Layer* layer,const DbU::Unit& x,const DbU::Unit& width = 0,const DbU::Unit& dySource = 0, const DbU::Unit& dyTarget = 0);
* creates and returns a vertical segment whose origin lies * creates and returns a vertical segment whose origin lies
* (through an offset equal to \c \<dySource\>) on * (through an offset equal to \c \<dySource\>) on
* \c \<source\>, whose extremity lies (through an offset equal * \c \<source\>, whose extremity lies (through an offset equal
@ -52,7 +52,7 @@
* same net. * same net.
*/ */
/*! \function Vertical* Vertical::create(Net* net, Layer* layer, const Unit& x, const Unit& width = 0,const Unit& dySource = 0, const Unit& dyTarget = 0); /*! \function Vertical* Vertical::create(Net* net, const Layer* layer, const DbU::Unit& x, const DbU::Unit& width = 0,const DbU::Unit& dySource = 0, const DbU::Unit& dyTarget = 0);
* creates and returns an absolute vertical segment with layer * creates and returns an absolute vertical segment with layer
* \c \<layer\>, located at abscissa \c \<x\> and of width * \c \<layer\>, located at abscissa \c \<x\> and of width
* \c \<width\>. The differents extremities ordinates are given * \c \<width\>. The differents extremities ordinates are given
@ -69,7 +69,7 @@
*/ */
// \{ // \{
/*! \function const Unit& Vertical::getDySource() const; /*! \function const DbU::Unit& Vertical::getDySource() const;
* \Return the relative source ordinate of the segment (may be absolute * \Return the relative source ordinate of the segment (may be absolute
* if the source extremity isn't anchored). * if the source extremity isn't anchored).
* *
@ -77,7 +77,7 @@
* getSourceX() defined at the Segment level. * getSourceX() defined at the Segment level.
*/ */
/*! \function const Unit& Vertical::getDyTarget() const; /*! \function const DbU::Unit& Vertical::getDyTarget() const;
* \Return the relative target ordinate of the segment (may be absolute * \Return the relative target ordinate of the segment (may be absolute
* if the target extremity isn't anchored). * if the target extremity isn't anchored).
* *
@ -92,11 +92,11 @@
*/ */
// \{ // \{
/*! \function void Vertical::setX(const Unit& x); /*! \function void Vertical::setX(const DbU::Unit& x);
* sets the abscissa of the segment. * sets the abscissa of the segment.
*/ */
/*! \function void Vertical::translate(const Unit& dx); /*! \function void Vertical::translate(const DbU::Unit& dx);
* translate horizontaly the vertical segment of the quantity * translate horizontaly the vertical segment of the quantity
* \c \<dx\>. * \c \<dx\>.
*/ */

View File

@ -122,8 +122,8 @@ INPUT = \
Relation.dox \ Relation.dox \
../../src/hurricane/hurricane/Tabulation.h \ ../../src/hurricane/hurricane/Tabulation.h \
Tabulation.dox \ Tabulation.dox \
../../src/hurricane/hurricane/Unit.h \ ../../src/hurricane/hurricane/DbU.h \
Unit.dox \ DbU.dox \
../../src/hurricane/hurricane/Points.h \ ../../src/hurricane/hurricane/Points.h \
../../src/hurricane/hurricane/Point.h \ ../../src/hurricane/hurricane/Point.h \
Point.dox \ Point.dox \

View File

@ -162,8 +162,8 @@ namespace Hurricane {
, const Name& name , const Name& name
, const Material& material , const Material& material
, unsigned extractNumber , unsigned extractNumber
, const Unit& minimalSize , const DbU::Unit& minimalSize
, const Unit& minimalSpacing , const DbU::Unit& minimalSpacing
) : Layer(technology ) : Layer(technology
,name ,name
,minimalSize ,minimalSize
@ -178,8 +178,8 @@ namespace Hurricane {
, const Name& name , const Name& name
, const Material& material , const Material& material
, unsigned extractNumber , unsigned extractNumber
, const Unit& minimalSize , const DbU::Unit& minimalSize
, const Unit& minimalSpacing , const DbU::Unit& minimalSpacing
) )
{ {
BasicLayer* basicLayer = BasicLayer* basicLayer =

View File

@ -24,7 +24,7 @@ Box::Box()
_yMax(-1) _yMax(-1)
{} {}
Box::Box(const Unit& x, const Unit& y) Box::Box(const DbU::Unit& x, const DbU::Unit& y)
// *********************************** // ***********************************
: _xMin(x), : _xMin(x),
_yMin(y), _yMin(y),
@ -40,7 +40,7 @@ Box::Box(const Point& point)
_yMax(point.getY()) _yMax(point.getY())
{} {}
Box::Box(const Unit& x1, const Unit& y1, const Unit& x2, const Unit& y2) Box::Box(const DbU::Unit& x1, const DbU::Unit& y1, const DbU::Unit& x2, const DbU::Unit& y2)
// ********************************************************************* // *********************************************************************
: _xMin(min(x1, x2)), : _xMin(min(x1, x2)),
_yMin(min(y1, y2)), _yMin(min(y1, y2)),
@ -116,10 +116,10 @@ Box Box::getIntersection(const Box& box) const
min(_yMax, box._yMax)); min(_yMax, box._yMax));
} }
Unit Box::manhattanDistance(const Point& pt) const DbU::Unit Box::manhattanDistance(const Point& pt) const
// *********************************************** // ***********************************************
{ {
Unit dist = 0; DbU::Unit dist = 0;
if (isEmpty()) if (isEmpty())
throw Error("Can't compute distance to an empty Box"); throw Error("Can't compute distance to an empty Box");
if (pt.getX() < _xMin) dist = _xMin - pt.getX(); if (pt.getX() < _xMin) dist = _xMin - pt.getX();
@ -131,12 +131,12 @@ Unit Box::manhattanDistance(const Point& pt) const
return dist; return dist;
} }
Unit Box::manhattanDistance(const Box& box) const DbU::Unit Box::manhattanDistance(const Box& box) const
// ********************************************** // **********************************************
{ {
if (isEmpty() || box.isEmpty()) if (isEmpty() || box.isEmpty())
throw Error("Can't compute distance to an empty Box"); throw Error("Can't compute distance to an empty Box");
Unit dx, dy; DbU::Unit dx, dy;
if ((dx=box.getXMin() - _xMax) < 0) if ((dx=box.getXMin() - _xMax) < 0)
if ((dx=_xMin-box.getXMax()) < 0) dx=0; if ((dx=_xMin-box.getXMax()) < 0) dx=0;
if ((dy=box.getYMin() - _yMax) < 0) if ((dy=box.getYMin() - _yMax) < 0)
@ -164,7 +164,7 @@ bool Box::isPonctual() const
return (!isEmpty() && (_xMax == _xMin) && (_yMax == _yMin)); return (!isEmpty() && (_xMax == _xMin) && (_yMax == _yMin));
} }
bool Box::contains(const Unit& x, const Unit& y) const bool Box::contains(const DbU::Unit& x, const DbU::Unit& y) const
// *************************************************** // ***************************************************
{ {
return (!isEmpty() && return (!isEmpty() &&
@ -223,19 +223,19 @@ Box& Box::makeEmpty()
return *this; return *this;
} }
Box& Box::inflate(const Unit& d) Box& Box::inflate(const DbU::Unit& d)
// ***************************** // *****************************
{ {
return inflate(d, d, d, d); return inflate(d, d, d, d);
} }
Box& Box::inflate(const Unit& dx, const Unit& dy) Box& Box::inflate(const DbU::Unit& dx, const DbU::Unit& dy)
// ********************************************** // **********************************************
{ {
return inflate(dx, dy, dx, dy); return inflate(dx, dy, dx, dy);
} }
Box& Box::inflate(const Unit& dxMin, const Unit& dyMin, const Unit& dxMax, const Unit& dyMax) Box& Box::inflate(const DbU::Unit& dxMin, const DbU::Unit& dyMin, const DbU::Unit& dxMax, const DbU::Unit& dyMax)
// ****************************************************************************************** // ******************************************************************************************
{ {
if (!isEmpty()) { if (!isEmpty()) {
@ -247,20 +247,23 @@ Box& Box::inflate(const Unit& dxMin, const Unit& dyMin, const Unit& dxMax, const
return *this; return *this;
} }
Box Box::getInflated(const Unit& d) const { Box Box::getInflated(const DbU::Unit& d) const {
return Box(*this).inflate(d); return Box(*this).inflate(d);
} }
Box& Box::shrinkByFactor(double factor) Box& Box::shrinkByFactor(double factor)
// ************************************** // **************************************
{ {
assert((0 <= factor) && (factor <= 1)); assert((0.0 <= factor) && (factor <= 1.0));
Unit dx=getUnit(0.5*(1- factor) * (getValue(_xMax) - getValue(_xMin))); DbU::Unit dx = DbU::real ( 0.5 * (1-factor) * (DbU::getReal(_xMax) - DbU::getReal(_xMin)) );
Unit dy=getUnit(0.5*(1- factor) * (getValue(_yMax) - getValue(_yMin))); DbU::Unit dy = DbU::real ( 0.5 * (1-factor) * (DbU::getReal(_yMax) - DbU::getReal(_yMin)) );
//DbU::Unit dx=getUnit(0.5*(1- factor) * (getValue(_xMax) - getValue(_xMin)));
//DbU::Unit dy=getUnit(0.5*(1- factor) * (getValue(_yMax) - getValue(_yMin)));
return inflate(-dx, -dy); return inflate(-dx, -dy);
} }
Box& Box::merge(const Unit& x, const Unit& y) Box& Box::merge(const DbU::Unit& x, const DbU::Unit& y)
// ****************************************** // ******************************************
{ {
if (isEmpty()) { if (isEmpty()) {
@ -284,7 +287,7 @@ Box& Box::merge(const Point& point)
return merge(point.getX(), point.getY()); return merge(point.getX(), point.getY());
} }
Box& Box::merge(const Unit& x1, const Unit& y1, const Unit& x2, const Unit& y2) Box& Box::merge(const DbU::Unit& x1, const DbU::Unit& y1, const DbU::Unit& x2, const DbU::Unit& y2)
// **************************************************************************** // ****************************************************************************
{ {
merge(x1, y1); merge(x1, y1);
@ -302,7 +305,7 @@ Box& Box::merge(const Box& box)
return *this; return *this;
} }
Box& Box::translate(const Unit& dx, const Unit& dy) Box& Box::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// ************************************************ // ************************************************
{ {
if (!isEmpty()) { if (!isEmpty()) {
@ -320,10 +323,9 @@ string Box::_getString() const
if (isEmpty()) if (isEmpty())
return "<" + _TName("Box") + " empty>"; return "<" + _TName("Box") + " empty>";
else else
return "<" + _TName("Box") + " " + return "<" + _TName("Box") + " "
getValueString(_xMin) + " " + getValueString(_yMin) + " " + + DbU::getValueString(_xMin) + " " + DbU::getValueString(_yMin) + " "
getValueString(_xMax) + " " + getValueString(_yMax) + + DbU::getValueString(_xMax) + " " + DbU::getValueString(_yMax) + ">";
">";
} }
Record* Box::_getRecord() const Record* Box::_getRecord() const

View File

@ -70,7 +70,7 @@
hurricane/Technology.h hurricane/Technology.h
hurricane/Timer.h hurricane/Timer.h
hurricane/Transformation.h hurricane/Transformation.h
hurricane/Unit.h hurricane/DbU.h
hurricane/UpdateSession.h hurricane/UpdateSession.h
hurricane/UserGo.h hurricane/UserGos.h hurricane/UserGo.h hurricane/UserGos.h
hurricane/VectorCollection.h hurricane/VectorCollection.h
@ -136,7 +136,7 @@
Technology.cpp Technology.cpp
Timer.cpp Timer.cpp
Transformation.cpp Transformation.cpp
Unit.cpp DbU.cpp
UpdateSession.cpp UpdateSession.cpp
UserGo.cpp UserGo.cpp
Vertical.cpp Vertical.cpp

View File

@ -484,7 +484,7 @@ void Component::_setRubber(Rubber* rubber)
} }
} }
//bool Component::_IsInterceptedBy(View* view, const Point& point, const Unit& aperture) const //bool Component::_IsInterceptedBy(View* view, const Point& point, const DbU::Unit& aperture) const
//// ***************************************************************************************** //// *****************************************************************************************
//{ //{
// Box area(point); // Box area(point);
@ -924,7 +924,7 @@ double getArea ( Component* component )
{ {
Box bb = component->getBoundingBox (); Box bb = component->getBoundingBox ();
return getValue(bb.getWidth()) * getValue(bb.getHeight()); return DbU::getReal(bb.getWidth()) * DbU::getReal(bb.getHeight());
} }

View File

@ -86,7 +86,7 @@ class Contact_Hooks : public Collection<Hook*> {
// Contact implementation // Contact implementation
// **************************************************************************************************** // ****************************************************************************************************
Contact::Contact(Net* net, const Layer* layer, const Unit& x, const Unit& y, const Unit& width, const Unit& height) Contact::Contact(Net* net, const Layer* layer, const DbU::Unit& x, const DbU::Unit& y, const DbU::Unit& width, const DbU::Unit& height)
// **************************************************************************************************** // ****************************************************************************************************
: Inherit(net), : Inherit(net),
_anchorHook(this), _anchorHook(this),
@ -103,7 +103,7 @@ Contact::Contact(Net* net, const Layer* layer, const Unit& x, const Unit& y, con
if ( _height < _layer->getMinimalSize() ) _height = _layer->getMinimalSize(); if ( _height < _layer->getMinimalSize() ) _height = _layer->getMinimalSize();
} }
Contact::Contact(Net* net, Component* anchor, const Layer* layer, const Unit& dx, const Unit& dy, const Unit& width, const Unit& height) Contact::Contact(Net* net, Component* anchor, const Layer* layer, const DbU::Unit& dx, const DbU::Unit& dy, const DbU::Unit& width, const DbU::Unit& height)
// **************************************************************************************************** // ****************************************************************************************************
: Inherit(net), : Inherit(net),
_anchorHook(this), _anchorHook(this),
@ -131,7 +131,7 @@ Contact::Contact(Net* net, Component* anchor, const Layer* layer, const Unit& dx
if ( _height < _layer->getMinimalSize() ) _height = _layer->getMinimalSize(); if ( _height < _layer->getMinimalSize() ) _height = _layer->getMinimalSize();
} }
Contact* Contact::create(Net* net, const Layer* layer, const Unit& x, const Unit& y, const Unit& width, const Unit& height) Contact* Contact::create(Net* net, const Layer* layer, const DbU::Unit& x, const DbU::Unit& y, const DbU::Unit& width, const DbU::Unit& height)
// **************************************************************************************************** // ****************************************************************************************************
{ {
Contact* contact = new Contact(net, layer, x, y, width, height); Contact* contact = new Contact(net, layer, x, y, width, height);
@ -141,7 +141,7 @@ Contact* Contact::create(Net* net, const Layer* layer, const Unit& x, const Unit
return contact; return contact;
} }
Contact* Contact::create(Component* anchor, const Layer* layer, const Unit& dx, const Unit& dy, const Unit& width, const Unit& height) Contact* Contact::create(Component* anchor, const Layer* layer, const DbU::Unit& dx, const DbU::Unit& dy, const DbU::Unit& width, const DbU::Unit& height)
// **************************************************************************************************** // ****************************************************************************************************
{ {
if (!anchor) if (!anchor)
@ -160,14 +160,14 @@ Hooks Contact::getHooks() const
return Contact_Hooks(this); return Contact_Hooks(this);
} }
Unit Contact::getX() const DbU::Unit Contact::getX() const
// *********************** // ***********************
{ {
Component* anchor = getAnchor(); Component* anchor = getAnchor();
return (!anchor) ? _dx : anchor->getX() + _dx; return (!anchor) ? _dx : anchor->getX() + _dx;
} }
Unit Contact::getY() const DbU::Unit Contact::getY() const
// *********************** // ***********************
{ {
Component* anchor = getAnchor(); Component* anchor = getAnchor();
@ -184,7 +184,7 @@ Point Contact::getPosition() const
Box Contact::getBoundingBox() const Box Contact::getBoundingBox() const
// ******************************** // ********************************
{ {
Unit size = getLayer()->getEnclosure(); DbU::Unit size = getLayer()->getEnclosure();
return Box(getPosition()).inflate(getHalfWidth() + size, getHalfHeight() + size); return Box(getPosition()).inflate(getHalfWidth() + size, getHalfHeight() + size);
} }
@ -194,7 +194,7 @@ Box Contact::getBoundingBox(const BasicLayer* basicLayer) const
{ {
if (!_layer->contains(basicLayer)) return Box(); if (!_layer->contains(basicLayer)) return Box();
Unit size = getLayer()->getEnclosure(basicLayer); DbU::Unit size = getLayer()->getEnclosure(basicLayer);
return Box(getPosition()).inflate(getHalfWidth() + size, getHalfHeight() + size); return Box(getPosition()).inflate(getHalfWidth() + size, getHalfHeight() + size);
} }
@ -206,7 +206,7 @@ Component* Contact::getAnchor() const
return (masterHook) ? masterHook->getComponent() : NULL; return (masterHook) ? masterHook->getComponent() : NULL;
} }
void Contact::translate(const Unit& dx, const Unit& dy) void Contact::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// **************************************************** // ****************************************************
{ {
if ((dx != 0) || (dy != 0)) { if ((dx != 0) || (dy != 0)) {
@ -228,7 +228,7 @@ void Contact::setLayer(const Layer* layer)
} }
} }
void Contact::setWidth(const Unit& width) void Contact::setWidth(const DbU::Unit& width)
// ************************************** // **************************************
{ {
if (width != _width) { if (width != _width) {
@ -237,7 +237,7 @@ void Contact::setWidth(const Unit& width)
} }
} }
void Contact::setHeight(const Unit& height) void Contact::setHeight(const DbU::Unit& height)
// **************************************** // ****************************************
{ {
if (height != _height) { if (height != _height) {
@ -246,7 +246,7 @@ void Contact::setHeight(const Unit& height)
} }
} }
void Contact::setSizes(const Unit& width, const Unit& height) void Contact::setSizes(const DbU::Unit& width, const DbU::Unit& height)
// ********************************************************** // **********************************************************
{ {
if ((width != _width) || (height != _height)) { if ((width != _width) || (height != _height)) {
@ -256,19 +256,19 @@ void Contact::setSizes(const Unit& width, const Unit& height)
} }
} }
void Contact::setX(const Unit& x) void Contact::setX(const DbU::Unit& x)
// ****************************** // ******************************
{ {
setPosition(x, getY()); setPosition(x, getY());
} }
void Contact::setY(const Unit& y) void Contact::setY(const DbU::Unit& y)
// ****************************** // ******************************
{ {
setPosition(getX(), y); setPosition(getX(), y);
} }
void Contact::setPosition(const Unit& x, const Unit& y) void Contact::setPosition(const DbU::Unit& x, const DbU::Unit& y)
// **************************************************** // ****************************************************
{ {
Component* anchor = getAnchor(); Component* anchor = getAnchor();
@ -284,19 +284,19 @@ void Contact::setPosition(const Point& position)
setPosition(position.getX(), position.getY()); setPosition(position.getX(), position.getY());
} }
void Contact::setDx(const Unit& dx) void Contact::setDx(const DbU::Unit& dx)
// ******************************** // ********************************
{ {
setOffset(dx, _dy); setOffset(dx, _dy);
} }
void Contact::setDy(const Unit& dy) void Contact::setDy(const DbU::Unit& dy)
// ******************************** // ********************************
{ {
setOffset(_dx, dy); setOffset(_dx, dy);
} }
void Contact::setOffset(const Unit& dx, const Unit& dy) void Contact::setOffset(const DbU::Unit& dx, const DbU::Unit& dy)
// **************************************************** // ****************************************************
{ {
if ((dx != _dx) || (dy != _dy)) { if ((dx != _dx) || (dy != _dy)) {
@ -325,10 +325,10 @@ string Contact::_getString() const
{ {
string s = Inherit::_getString(); string s = Inherit::_getString();
s.insert(s.length() - 1, " " + getString(_layer->getName())); s.insert(s.length() - 1, " " + getString(_layer->getName()));
s.insert(s.length() - 1, " [" + getValueString(getX())); s.insert(s.length() - 1, " [" + DbU::getValueString(getX()));
s.insert(s.length() - 1, " " + getValueString(getY())); s.insert(s.length() - 1, " " + DbU::getValueString(getY()));
s.insert(s.length() - 1, "] " + getValueString(_width)); s.insert(s.length() - 1, "] " + DbU::getValueString(_width));
s.insert(s.length() - 1, "x" + getValueString(_height)); s.insert(s.length() - 1, "x" + DbU::getValueString(_height));
return s; return s;
} }

View File

@ -156,11 +156,11 @@ namespace Hurricane {
{ return getCollection(_basicLayers); } { return getCollection(_basicLayers); }
Unit ContactLayer::getEnclosure () const DbU::Unit ContactLayer::getEnclosure () const
{ return _maximalEnclosure; } { return _maximalEnclosure; }
Unit ContactLayer::getEnclosure ( const BasicLayer* layer ) const DbU::Unit ContactLayer::getEnclosure ( const BasicLayer* layer ) const
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) if ( _basicLayers[i] == layer )
@ -171,7 +171,7 @@ namespace Hurricane {
} }
void ContactLayer::setEnclosure ( const BasicLayer* layer, Unit enclosure ) void ContactLayer::setEnclosure ( const BasicLayer* layer, DbU::Unit enclosure )
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) { if ( _basicLayers[i] == layer ) {

View File

@ -40,7 +40,7 @@ DRCError* DRCError::create(Cell* cell, const Name& name, const Box& boundingBox)
return drcError; return drcError;
} }
void DRCError::translate(const Unit& dx, const Unit& dy) void DRCError::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// ***************************************************** // *****************************************************
{ {
if ((dx != 0) || (dy != 0)) { if ((dx != 0) || (dy != 0)) {

View File

@ -76,9 +76,9 @@ Record* DataBase::_getRecord() const
if (record) { if (record) {
record->add(getSlot("Technology", _technology)); record->add(getSlot("Technology", _technology));
record->add(getSlot("RootLibrary", _rootLibrary)); record->add(getSlot("RootLibrary", _rootLibrary));
record->add(getSlot("Precision", getPrecision())); record->add(getSlot("Precision", DbU::getPrecision()));
record->add(getSlot("Resolution", getValueString(1))); record->add(getSlot("Resolution", DbU::getValueString(DbU::db(1))));
record->add(getSlot("GridStep", getValueString(getGridStep()))); //record->add(getSlot("GridStep", getValueString(getGridStep())));
} }
return record; return record;
} }

View File

@ -0,0 +1,176 @@
// -*- C++ -*-
//
// This file is part of the Hurricane Software.
// Copyright (c) BULL S.A. 2000-2004, All Rights Reserved
//
// ===================================================================
//
// $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 |
// | |
// | Author : Remy Escassut |
// | E-mail : Jean-Paul.Chaput@lip6.fr |
// | =============================================================== |
// | C++ Module : "./DbU.cpp" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
# include <climits>
# include "hurricane/DbU.h"
# include "hurricane/Error.h"
namespace Hurricane {
const unsigned int DbU::_maximalPrecision = 3;
unsigned int DbU::_precision = 1;
double DbU::_resolution = 0.1;
double DbU::_unitsPerLambda = 10.0;
unsigned int DbU::_stringMode = DbU::Symbolic;
const DbU::Unit DbU::Min = LONG_MIN;
const DbU::Unit DbU::Max = LONG_MAX;
// -------------------------------------------------------------------
// Class : "Hurricane::DbU".
unsigned int DbU::getPrecision ()
{ return _precision; }
unsigned int DbU::getMaximalPrecision ()
{ return _maximalPrecision; }
double DbU::getResolution ()
{ return _resolution; }
void DbU::setPrecision ( unsigned int precision )
{
if ( _maximalPrecision < precision)
throw Error ( "DbU::Unit::setPrecision(): Precision %ud exceed maximal precision %ud."
, precision
, _maximalPrecision
);
_precision = precision;
_resolution = 1;
while ( precision-- ) _resolution /= 10;
//setGridStep(getUnit(1));
}
void DbU::setUnitsPerLambda ( double unitsPerLambda )
{
if ( ( rint(unitsPerLambda) != unitsPerLambda )
|| ( remainder(unitsPerLambda,2.0) != 0.0 ) )
throw Error ( "DbU::Unit::setUnitPerLambdas(): \"unitsPerLambda\" (%f) must be an even integer."
, unitsPerLambda
);
_unitsPerLambda = unitsPerLambda;
}
double DbU::getUnitsPerLambda ()
{ return _unitsPerLambda; }
void DbU::setStringMode ( unsigned int mode )
{ _stringMode = mode; }
// ****************************************************************************************************
// Grid managers
// ****************************************************************************************************
// const DbU::Unit& getGridStep()
// // **********************
// {
// return GRID_STEP;
// }
// void setGridStep(const DbU::Unit& gridStep)
// // ***********************************
// {
// if (!gridStep) throw Error("Can't set grid step : invalid value");
// GRID_STEP = gridStep;
// }
// bool isOnGrid(const DbU::Unit& unit, int n)
// // ***********************************
// {
// if (n <= 0) throw Error("Can't compute : invalid value");
// n *= GRID_STEP;
// return (((abs(unit) / n) * n) == abs(unit));
// }
// DbU::Unit getOnGridUnit(const DbU::Unit& unit, int s)
// // ****************************************
// {
// switch (s) {
// case -1 : {
// if (0 < unit) return (unit / GRID_STEP) * GRID_STEP;
// else if (unit < 0) return ((unit / GRID_STEP) - 1) * GRID_STEP;
// return unit;
// }
// case 0 : {
// int g1 = (unit / GRID_STEP) * GRID_STEP;
// int g2 = ((g1 < unit) ? (g1 + GRID_STEP) : (g1 - GRID_STEP));
// return (abs(g1 - unit) <= abs(g2 - unit)) ? g1 : g2;
// }
// case +1 : {
// if (0 < unit) return ((unit / GRID_STEP) + 1) * GRID_STEP;
// else if (unit < 0) return (unit / GRID_STEP) * GRID_STEP;
// return unit;
// }
// }
// throw Error("Can't get on grid unit : invalid parameter s (should be -1, 0 or +1)");
// return 0;
// }
string DbU::getValueString ( DbU::Unit u )
{
char buffer[1024];
if ( _stringMode == Db ) {
if ( u == 0 ) return "0u";
snprintf ( buffer, 1024, "%ldu", u );
} else if ( _stringMode == Real ) {
if ( u == 0 ) return "0g";
snprintf ( buffer, 1024, "%.1fg", getReal(u) );
} else if ( _stringMode == Symbolic ) {
if ( u == 0 ) return "0g";
snprintf ( buffer, 1024, "%.1flbd", getLambda(u) );
}
return buffer;
}
} // End of Hurricane namespace.

View File

@ -145,15 +145,15 @@ namespace Hurricane {
{ return getCollection(_basicLayers); } { return getCollection(_basicLayers); }
Unit DiffusionLayer::getExtentionCap () const DbU::Unit DiffusionLayer::getExtentionCap () const
{ return _maximalExtentionCap; } { return _maximalExtentionCap; }
Unit DiffusionLayer::getExtentionWidth () const DbU::Unit DiffusionLayer::getExtentionWidth () const
{ return _maximalExtentionWidth; } { return _maximalExtentionWidth; }
Unit DiffusionLayer::getExtentionCap ( const BasicLayer* layer ) const DbU::Unit DiffusionLayer::getExtentionCap ( const BasicLayer* layer ) const
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) { if ( _basicLayers[i] == layer ) {
@ -166,7 +166,7 @@ namespace Hurricane {
} }
Unit DiffusionLayer::getExtentionWidth ( const BasicLayer* layer ) const DbU::Unit DiffusionLayer::getExtentionWidth ( const BasicLayer* layer ) const
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) { if ( _basicLayers[i] == layer ) {
@ -179,7 +179,7 @@ namespace Hurricane {
} }
void DiffusionLayer::setExtentionCap ( const BasicLayer* layer, Unit cap ) void DiffusionLayer::setExtentionCap ( const BasicLayer* layer, DbU::Unit cap )
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) { if ( _basicLayers[i] == layer ) {
@ -191,7 +191,7 @@ namespace Hurricane {
} }
void DiffusionLayer::setExtentionWidth ( const BasicLayer* layer, Unit width ) void DiffusionLayer::setExtentionWidth ( const BasicLayer* layer, DbU::Unit width )
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) { if ( _basicLayers[i] == layer ) {

View File

@ -20,7 +20,7 @@ namespace Hurricane {
// Horizontal implementation // Horizontal implementation
// **************************************************************************************************** // ****************************************************************************************************
Horizontal::Horizontal(Net* net, Component* source, Component* target, const Layer* layer, const Unit& y, const Unit& width, const Unit& dxSource, const Unit& dxTarget) Horizontal::Horizontal(Net* net, Component* source, Component* target, const Layer* layer, const DbU::Unit& y, const DbU::Unit& width, const DbU::Unit& dxSource, const DbU::Unit& dxTarget)
// **************************************************************************************************** // ****************************************************************************************************
: Inherit(net, source, target, layer, width), : Inherit(net, source, target, layer, width),
_y(y), _y(y),
@ -29,7 +29,7 @@ Horizontal::Horizontal(Net* net, Component* source, Component* target, const Lay
{ {
} }
Horizontal* Horizontal::create(Net* net, const Layer* layer, const Unit& y, const Unit& width, const Unit& dxSource, const Unit& dxTarget) Horizontal* Horizontal::create(Net* net, const Layer* layer, const DbU::Unit& y, const DbU::Unit& width, const DbU::Unit& dxSource, const DbU::Unit& dxTarget)
// **************************************************************************************************** // ****************************************************************************************************
{ {
if (!net) if (!net)
@ -42,7 +42,7 @@ Horizontal* Horizontal::create(Net* net, const Layer* layer, const Unit& y, cons
return horizontal; return horizontal;
} }
Horizontal* Horizontal::create(Component* source, Component* target, const Layer* layer, const Unit& y, const Unit& width, const Unit& dxSource, const Unit& dxTarget) Horizontal* Horizontal::create(Component* source, Component* target, const Layer* layer, const DbU::Unit& y, const DbU::Unit& width, const DbU::Unit& dxSource, const DbU::Unit& dxTarget)
// **************************************************************************************************** // ****************************************************************************************************
{ {
if (!source) if (!source)
@ -62,8 +62,8 @@ Horizontal* Horizontal::create(Component* source, Component* target, const Layer
Box Horizontal::getBoundingBox() const Box Horizontal::getBoundingBox() const
// *********************************** // ***********************************
{ {
Unit size = getLayer()->getExtentionWidth() + getHalfWidth(); DbU::Unit size = getLayer()->getExtentionWidth() + getHalfWidth();
Unit extention = getLayer()->getExtentionCap (); DbU::Unit extention = getLayer()->getExtentionCap ();
return Box(getSourceX(), _y, getTargetX(), _y).inflate(extention, size); return Box(getSourceX(), _y, getTargetX(), _y).inflate(extention, size);
} }
@ -73,27 +73,27 @@ Box Horizontal::getBoundingBox(const BasicLayer* basicLayer) const
{ {
if (!getLayer()->contains(basicLayer)) return Box(); if (!getLayer()->contains(basicLayer)) return Box();
Unit size = getLayer()->getExtentionWidth(basicLayer) + getHalfWidth(); DbU::Unit size = getLayer()->getExtentionWidth(basicLayer) + getHalfWidth();
Unit extention = getLayer()->getExtentionCap (basicLayer); DbU::Unit extention = getLayer()->getExtentionCap (basicLayer);
return Box(getSourceX(), _y, getTargetX(), _y).inflate(extention, size); return Box(getSourceX(), _y, getTargetX(), _y).inflate(extention, size);
} }
Unit Horizontal::getSourceX() const DbU::Unit Horizontal::getSourceX() const
// ******************************** // ********************************
{ {
Component* source = getSource(); Component* source = getSource();
return (source) ? source->getX() + _dxSource : _dxSource; return (source) ? source->getX() + _dxSource : _dxSource;
} }
Unit Horizontal::getTargetX() const DbU::Unit Horizontal::getTargetX() const
// ******************************** // ********************************
{ {
Component* target = getTarget(); Component* target = getTarget();
return (target) ? target->getX() + _dxTarget : _dxTarget; return (target) ? target->getX() + _dxTarget : _dxTarget;
} }
Unit Horizontal::getLength() const DbU::Unit Horizontal::getLength() const
// ******************************* // *******************************
{ {
return abs(getSourceX() - getTargetX()); return abs(getSourceX() - getTargetX());
@ -105,7 +105,7 @@ Point Horizontal::getCenter() const
return Point ( (getSourceX()+getTargetX())/2, getY() ); return Point ( (getSourceX()+getTargetX())/2, getY() );
} }
void Horizontal::translate(const Unit& dx, const Unit& dy) void Horizontal::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// ******************************************************* // *******************************************************
{ {
if (dy != 0) { if (dy != 0) {
@ -114,7 +114,7 @@ void Horizontal::translate(const Unit& dx, const Unit& dy)
} }
} }
void Horizontal::setY(const Unit& y) void Horizontal::setY(const DbU::Unit& y)
// ********************************* // *********************************
{ {
if (y != _y) { if (y != _y) {
@ -123,7 +123,7 @@ void Horizontal::setY(const Unit& y)
} }
} }
void Horizontal::setDxSource(const Unit& dxSource) void Horizontal::setDxSource(const DbU::Unit& dxSource)
// *********************************************** // ***********************************************
{ {
if (dxSource != _dxSource) { if (dxSource != _dxSource) {
@ -132,7 +132,7 @@ void Horizontal::setDxSource(const Unit& dxSource)
} }
} }
void Horizontal::setDxTarget(const Unit& dxTarget) void Horizontal::setDxTarget(const DbU::Unit& dxTarget)
// *********************************************** // ***********************************************
{ {
if (dxTarget != _dxTarget) { if (dxTarget != _dxTarget) {
@ -141,7 +141,7 @@ void Horizontal::setDxTarget(const Unit& dxTarget)
} }
} }
void Horizontal::translate(const Unit& dy) void Horizontal::translate(const DbU::Unit& dy)
// *************************************** // ***************************************
{ {
if (dy != 0) { if (dy != 0) {

View File

@ -323,13 +323,13 @@ void Instance::invalidate(bool propagateFlag)
} }
} }
void Instance::translate(const Unit& dx, const Unit& dy) void Instance::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// ***************************************************** // *****************************************************
{ {
if ((dx != 0) || (dy !=0)) { if ((dx != 0) || (dy !=0)) {
Point translation = _transformation.getTranslation(); Point translation = _transformation.getTranslation();
Unit x = translation.getX() + dx; DbU::Unit x = translation.getX() + dx;
Unit y = translation.getY() + dy; DbU::Unit y = translation.getY() + dy;
Transformation::Orientation orientation = _transformation.getOrientation(); Transformation::Orientation orientation = _transformation.getOrientation();
setTransformation(Transformation(x, y, orientation)); setTransformation(Transformation(x, y, orientation));
} }
@ -472,8 +472,8 @@ Record* Instance::_getRecord() const
record->add(getSlot("MasterCell", _masterCell)); record->add(getSlot("MasterCell", _masterCell));
record->add(getSlot("Transformation", &_transformation)); record->add(getSlot("Transformation", &_transformation));
record->add(getSlot("PlacementStatus", _placementStatus)); record->add(getSlot("PlacementStatus", _placementStatus));
record->add(getSlot("XCenter", getValue(getAbutmentBox().getXCenter()))); record->add(getSlot("XCenter", DbU::getValueString(getAbutmentBox().getXCenter())));
record->add(getSlot("YCenter", getValue(getAbutmentBox().getYCenter()))); record->add(getSlot("YCenter", DbU::getValueString(getAbutmentBox().getYCenter())));
record->add(getSlot("Plugs", &_plugMap)); record->add(getSlot("Plugs", &_plugMap));
record->add(getSlot("SharedPathes", &_sharedPathMap)); record->add(getSlot("SharedPathes", &_sharedPathMap));
} }
@ -537,7 +537,7 @@ Record* Instance::_getRecord() const
// _masterCell->_DrawDisplaySlots(view, area, masterArea, masterTransformation); // _masterCell->_DrawDisplaySlots(view, area, masterArea, masterTransformation);
//} //}
// //
//bool Instance::_IsInterceptedBy(View* view, const Point& point, const Unit& aperture) const //bool Instance::_IsInterceptedBy(View* view, const Point& point, const DbU::Unit& aperture) const
//// **************************************************************************************** //// ****************************************************************************************
//{ //{
// Symbol* symbol = _masterCell->getSymbol(); // Symbol* symbol = _masterCell->getSymbol();

View File

@ -20,19 +20,19 @@ Interval::Interval(bool makeEmpty)
_vMax(-1) _vMax(-1)
{ {
if (!makeEmpty) { if (!makeEmpty) {
_vMin = UNIT_MIN; _vMin = DbU::Min;
_vMax = UNIT_MAX; _vMax = DbU::Max;
} }
} }
Interval::Interval(const Unit& value) Interval::Interval(const DbU::Unit& value)
// ********************************** // **********************************
: _vMin(value), : _vMin(value),
_vMax(value) _vMax(value)
{ {
} }
Interval::Interval(const Unit& v1, const Unit& v2) Interval::Interval(const DbU::Unit& v1, const DbU::Unit& v2)
// *********************************************** // ***********************************************
: _vMin(min(v1, v2)), : _vMin(min(v1, v2)),
_vMax(max(v1, v2)) _vMax(max(v1, v2))
@ -92,7 +92,7 @@ bool Interval::isPonctual() const
return (_vMax == _vMin); return (_vMax == _vMin);
} }
bool Interval::contains(const Unit& v) const bool Interval::contains(const DbU::Unit& v) const
// ***************************************** // *****************************************
{ {
return !isEmpty() && (_vMin <= v) && (v <= _vMax); return !isEmpty() && (_vMin <= v) && (v <= _vMax);
@ -140,13 +140,13 @@ Interval& Interval::makeEmpty()
return *this; return *this;
} }
Interval& Interval::inflate(const Unit& dv) Interval& Interval::inflate(const DbU::Unit& dv)
// **************************************** // ****************************************
{ {
return inflate(dv, dv); return inflate(dv, dv);
} }
Interval& Interval::inflate(const Unit& dvMin, const Unit& dvMax) Interval& Interval::inflate(const DbU::Unit& dvMin, const DbU::Unit& dvMax)
// ************************************************************** // **************************************************************
{ {
if (!isEmpty()) { if (!isEmpty()) {
@ -156,7 +156,7 @@ Interval& Interval::inflate(const Unit& dvMin, const Unit& dvMax)
return *this; return *this;
} }
Interval& Interval::merge(const Unit& v) Interval& Interval::merge(const DbU::Unit& v)
// ************************************* // *************************************
{ {
if (isEmpty()) { if (isEmpty()) {
@ -180,7 +180,7 @@ Interval& Interval::merge(const Interval& interval)
return *this; return *this;
} }
Interval& Interval::intersection(const Unit& vMin, const Unit& vMax) Interval& Interval::intersection(const DbU::Unit& vMin, const DbU::Unit& vMax)
// ***************************************************************** // *****************************************************************
{ {
return intersection(Interval(vMin,vMax)); return intersection(Interval(vMin,vMax));
@ -198,7 +198,7 @@ Interval& Interval::intersection(const Interval& interval)
return *this; return *this;
} }
Interval& Interval::translate(const Unit& dv) Interval& Interval::translate(const DbU::Unit& dv)
// ****************************************** // ******************************************
{ {
if (!isEmpty()) { if (!isEmpty()) {
@ -211,7 +211,7 @@ Interval& Interval::translate(const Unit& dv)
string Interval::_getString() const string Interval::_getString() const
// ******************************** // ********************************
{ {
return "<" + _TName("Interval") + " " + getValueString(_vMin) + " " + getValueString(_vMax) + ">"; return "<" + _TName("Interval") + " " + DbU::getValueString(_vMin) + " " + DbU::getValueString(_vMax) + ">";
} }
Record* Interval::_getRecord() const Record* Interval::_getRecord() const

View File

@ -39,9 +39,9 @@ namespace Hurricane {
Layer::Layer ( Technology* technology Layer::Layer ( Technology* technology
, const Name& name , const Name& name
, const Unit& minimalSize , const DbU::Unit& minimalSize
, const Unit& minimalSpacing , const DbU::Unit& minimalSpacing
, const Unit& pitch , const DbU::Unit& pitch
) : DBo() ) : DBo()
, _technology(technology) , _technology(technology)
, _name(name) , _name(name)
@ -71,27 +71,27 @@ namespace Hurricane {
{ return NULL; } { return NULL; }
Unit Layer::getEnclosure () const DbU::Unit Layer::getEnclosure () const
{ return 0; } { return 0; }
Unit Layer::getExtentionCap () const DbU::Unit Layer::getExtentionCap () const
{ return 0; } { return 0; }
Unit Layer::getExtentionWidth () const DbU::Unit Layer::getExtentionWidth () const
{ return 0; } { return 0; }
Unit Layer::getEnclosure ( const BasicLayer* layer ) const DbU::Unit Layer::getEnclosure ( const BasicLayer* layer ) const
{ return 0; } { return 0; }
Unit Layer::getExtentionCap ( const BasicLayer* layer ) const DbU::Unit Layer::getExtentionCap ( const BasicLayer* layer ) const
{ return 0; } { return 0; }
Unit Layer::getExtentionWidth ( const BasicLayer* layer ) const DbU::Unit Layer::getExtentionWidth ( const BasicLayer* layer ) const
{ return 0; } { return 0; }
@ -123,39 +123,39 @@ namespace Hurricane {
} }
void Layer::setMinimalSize ( const Unit& minimalSize ) void Layer::setMinimalSize ( const DbU::Unit& minimalSize )
{ {
_minimalSize = minimalSize; _minimalSize = minimalSize;
} }
void Layer::setMinimalSpacing ( const Unit& minimalSpacing ) void Layer::setMinimalSpacing ( const DbU::Unit& minimalSpacing )
{ {
_minimalSpacing = minimalSpacing; _minimalSpacing = minimalSpacing;
} }
void Layer::setPitch ( const Unit& pitch ) void Layer::setPitch ( const DbU::Unit& pitch )
{ {
_pitch = pitch; _pitch = pitch;
} }
void Layer::setEnclosure ( const BasicLayer* layer, Unit ) void Layer::setEnclosure ( const BasicLayer* layer, DbU::Unit )
{ {
cerr << "[WARNING] Layer::setEnclosure() musn't be called on " cerr << "[WARNING] Layer::setEnclosure() musn't be called on "
<< _getTypeName() << ": dummy implementation." << endl; << _getTypeName() << ": dummy implementation." << endl;
} }
void Layer::setExtentionCap ( const BasicLayer* layer, Unit ) void Layer::setExtentionCap ( const BasicLayer* layer, DbU::Unit )
{ {
cerr << "[WARNING] Layer::setExtentionCap() musn't be called on " cerr << "[WARNING] Layer::setExtentionCap() musn't be called on "
<< _getTypeName() << ": dummy implementation." << endl; << _getTypeName() << ": dummy implementation." << endl;
} }
void Layer::setExtentionWidth ( const BasicLayer* layer, Unit ) void Layer::setExtentionWidth ( const BasicLayer* layer, DbU::Unit )
{ {
cerr << "[WARNING] Layer::setExtentionWidth() musn't be called on " cerr << "[WARNING] Layer::setExtentionWidth() musn't be called on "
<< _getTypeName() << ": dummy implementation." << endl; << _getTypeName() << ": dummy implementation." << endl;

View File

@ -42,13 +42,13 @@ Pad* Pad::create(Net* net, const Layer* layer, const Box& boundingBox)
return pad; return pad;
} }
Unit Pad::getX() const DbU::Unit Pad::getX() const
// ******************* // *******************
{ {
return 0; return 0;
} }
Unit Pad::getY() const DbU::Unit Pad::getY() const
// ******************* // *******************
{ {
return 0; return 0;
@ -72,7 +72,7 @@ Box Pad::getBoundingBox(const BasicLayer* basicLayer) const
return boundingBox; return boundingBox;
} }
void Pad::translate(const Unit& dx, const Unit& dy) void Pad::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// ************************************************ // ************************************************
{ {
if ((dx != 0) || (dy != 0)) { if ((dx != 0) || (dy != 0)) {

View File

@ -19,7 +19,7 @@ namespace Hurricane {
// Pin implementation // Pin implementation
// **************************************************************************************************** // ****************************************************************************************************
Pin::Pin(Net* net, const Name& name, const AccessDirection& accessDirection, const PlacementStatus& placementStatus, const Layer* layer, const Unit& x, const Unit& y, const Unit& width, const Unit& height) Pin::Pin(Net* net, const Name& name, const AccessDirection& accessDirection, const PlacementStatus& placementStatus, const Layer* layer, const DbU::Unit& x, const DbU::Unit& y, const DbU::Unit& width, const DbU::Unit& height)
// **************************************************************************************************** // ****************************************************************************************************
: Inherit(net, layer, x, y, width, height), : Inherit(net, layer, x, y, width, height),
_name(name), _name(name),
@ -32,7 +32,7 @@ Pin::Pin(Net* net, const Name& name, const AccessDirection& accessDirection, con
} }
Pin* Pin::create(Net* net, const Name& name, const AccessDirection& accessDirection, const PlacementStatus& placementStatus, const Layer* layer, const Unit& x, const Unit& y, const Unit& width, const Unit& height) Pin* Pin::create(Net* net, const Name& name, const AccessDirection& accessDirection, const PlacementStatus& placementStatus, const Layer* layer, const DbU::Unit& x, const DbU::Unit& y, const DbU::Unit& width, const DbU::Unit& height)
// **************************************************************************************************** // ****************************************************************************************************
{ {
if (!net) if (!net)

View File

@ -76,13 +76,13 @@ Cell* Plug::getCell() const
return _instance->getCell(); return _instance->getCell();
} }
Unit Plug::getX() const DbU::Unit Plug::getX() const
// ******************** // ********************
{ {
return _instance->getTransformation().getX(_masterNet->getPosition()); return _instance->getTransformation().getX(_masterNet->getPosition());
} }
Unit Plug::getY() const DbU::Unit Plug::getY() const
// ******************** // ********************
{ {
return _instance->getTransformation().getY(_masterNet->getPosition()); return _instance->getTransformation().getY(_masterNet->getPosition());

View File

@ -22,7 +22,7 @@ Point::Point()
{ {
} }
Point::Point(const Unit& x, const Unit& y) Point::Point(const DbU::Unit& x, const DbU::Unit& y)
// *************************************** // ***************************************
: _x(x), : _x(x),
_y(y) _y(y)
@ -84,7 +84,7 @@ Point& Point::operator-=(const Point &point)
return *this; return *this;
} }
Point& Point::translate(const Unit& dx, const Unit& dy) Point& Point::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// **************************************************** // ****************************************************
{ {
_x += dx; _x += dx;
@ -92,14 +92,14 @@ Point& Point::translate(const Unit& dx, const Unit& dy)
return *this; return *this;
} }
Point Point::getTranslated(const Unit& dx, const Unit& dy) const { Point Point::getTranslated(const DbU::Unit& dx, const DbU::Unit& dy) const {
return Point(*this).translate(dx, dy); return Point(*this).translate(dx, dy);
} }
string Point::_getString() const string Point::_getString() const
// ***************************** // *****************************
{ {
return "<" + _TName("Point") + " " + getValueString(_x) + " " + getValueString(_y) + ">"; return "<" + _TName("Point") + " " + DbU::getValueString(_x) + " " + DbU::getValueString(_y) + ">";
} }
Record* Point::_getRecord() const Record* Point::_getRecord() const

View File

@ -21,22 +21,22 @@ namespace Hurricane {
// **************** // ****************
Unit Reference::_extend = 0; DbU::Unit Reference::_extend = 0;
Reference::Reference(Cell* cell, const Name& name, Unit x, Unit y) Reference::Reference(Cell* cell, const Name& name, DbU::Unit x, DbU::Unit y)
// *************************************************************** // ***************************************************************
: Inherit(cell), : Inherit(cell),
_name(name), _name(name),
_point(x,y) _point(x,y)
{ {
if ( !_extend ) _extend = getUnit(0.5); if ( !_extend ) _extend = DbU::real(0.5);
if (_name.isEmpty()) if (_name.isEmpty())
throw Error("Can't create " + _TName("Reference") + " : empty name"); throw Error("Can't create " + _TName("Reference") + " : empty name");
} }
Reference* Reference::create(Cell* cell, const Name& name, Unit x, Unit y) Reference* Reference::create(Cell* cell, const Name& name, DbU::Unit x, DbU::Unit y)
// *********************************************************************** // ***********************************************************************
{ {
Reference* reference = new Reference(cell, name, x, y); Reference* reference = new Reference(cell, name, x, y);
@ -58,7 +58,7 @@ Box Reference::getBoundingBox() const
return Box(_point).inflate(_extend); return Box(_point).inflate(_extend);
} }
void Reference::translate(const Unit& dx, const Unit& dy) void Reference::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// ***************************************************** // *****************************************************
{ {
if ((dx != 0) || (dy != 0)) { if ((dx != 0) || (dy != 0)) {

View File

@ -84,18 +84,18 @@ class Region_Tile {
public: const Box& getBoundingBox() const {return _boundingBox;}; public: const Box& getBoundingBox() const {return _boundingBox;};
public: const Unit& getXMin() const {return _boundingBox.getXMin();}; public: const DbU::Unit& getXMin() const {return _boundingBox.getXMin();};
public: const Unit& getYMin() const {return _boundingBox.getYMin();}; public: const DbU::Unit& getYMin() const {return _boundingBox.getYMin();};
public: const Unit& getXMax() const {return _boundingBox.getXMax();}; public: const DbU::Unit& getXMax() const {return _boundingBox.getXMax();};
public: const Unit& getYMax() const {return _boundingBox.getYMax();}; public: const DbU::Unit& getYMax() const {return _boundingBox.getYMax();};
public: Region_Tile* getTileAt(const Point& point) const; public: Region_Tile* getTileAt(const Point& point) const;
public: Region_Tile* getNonVoidTileAt(const Point& point) const; public: Region_Tile* getNonVoidTileAt(const Point& point) const;
public: Region_Tile* getLeftTile(const Unit& y) const; public: Region_Tile* getLeftTile(const DbU::Unit& y) const;
public: Region_Tile* getBottomTile(const Unit& x) const; public: Region_Tile* getBottomTile(const DbU::Unit& x) const;
public: Region_Tile* getTopTile(const Unit& x) const; public: Region_Tile* getTopTile(const DbU::Unit& x) const;
public: Region_Tile* getRightTile(const Unit& y) const; public: Region_Tile* getRightTile(const DbU::Unit& y) const;
// Filters // Filters
// ******* // *******
@ -111,8 +111,8 @@ class Region_Tile {
// Updators // Updators
// ******** // ********
public: void splitVertical(Region* region, const Unit& x); public: void splitVertical(Region* region, const DbU::Unit& x);
public: void splitHorizontal(Region* region, const Unit& y); public: void splitHorizontal(Region* region, const DbU::Unit& y);
public: bool mergeLeftTile(Region* region); public: bool mergeLeftTile(Region* region);
public: bool mergeBottomTile(Region* region); public: bool mergeBottomTile(Region* region);
public: bool mergeTopTile(Region* region); public: bool mergeTopTile(Region* region);
@ -133,14 +133,14 @@ class Region_Tile {
private: bool _IsBottomFull() const; private: bool _IsBottomFull() const;
private: bool _IsLeftFull() const; private: bool _IsLeftFull() const;
private: bool _IsRightFull() const; private: bool _IsRightFull() const;
private: Unit _TopSplitAtVerticalSize (Region* region); private: DbU::Unit _TopSplitAtVerticalSize (Region* region);
private: Unit _BottomSplitAtVerticalSize (Region* region); private: DbU::Unit _BottomSplitAtVerticalSize (Region* region);
private: Unit _LeftSplitAtHorizontalSize (Region* region); private: DbU::Unit _LeftSplitAtHorizontalSize (Region* region);
private: Unit _RightSplitAtHorizontalSize (Region* region); private: DbU::Unit _RightSplitAtHorizontalSize (Region* region);
private: bool _TopSplitAtHorizontalSize (Region* region, const Unit height); private: bool _TopSplitAtHorizontalSize (Region* region, const DbU::Unit height);
private: bool _BottomSplitAtHorizontalSize (Region* region, const Unit height); private: bool _BottomSplitAtHorizontalSize (Region* region, const DbU::Unit height);
private: bool _LeftSplitAtVerticalSize (Region* region, const Unit width); private: bool _LeftSplitAtVerticalSize (Region* region, const DbU::Unit width);
private: bool _RightSplitAtVerticalSize (Region* region, const Unit width); private: bool _RightSplitAtVerticalSize (Region* region, const DbU::Unit width);
public: Interval _getTopNeighbour () const; public: Interval _getTopNeighbour () const;
public: Interval _getBottomNeighbour () const; public: Interval _getBottomNeighbour () const;
@ -208,7 +208,7 @@ Region_Tile* Region_Tile::getNonVoidTileAt(const Point& point) const
return NULL; return NULL;
} }
Region_Tile* Region_Tile::getLeftTile(const Unit& y) const Region_Tile* Region_Tile::getLeftTile(const DbU::Unit& y) const
// ******************************************************* // *******************************************************
{ {
Region_Tile* tile = _leftTile; Region_Tile* tile = _leftTile;
@ -216,7 +216,7 @@ Region_Tile* Region_Tile::getLeftTile(const Unit& y) const
return tile; return tile;
} }
Region_Tile* Region_Tile::getBottomTile(const Unit& x) const Region_Tile* Region_Tile::getBottomTile(const DbU::Unit& x) const
// ********************************************************* // *********************************************************
{ {
Region_Tile* tile = _bottomTile; Region_Tile* tile = _bottomTile;
@ -224,7 +224,7 @@ Region_Tile* Region_Tile::getBottomTile(const Unit& x) const
return tile; return tile;
} }
Region_Tile* Region_Tile::getTopTile(const Unit& x) const Region_Tile* Region_Tile::getTopTile(const DbU::Unit& x) const
// ****************************************************** // ******************************************************
{ {
Region_Tile* tile = _topTile; Region_Tile* tile = _topTile;
@ -232,7 +232,7 @@ Region_Tile* Region_Tile::getTopTile(const Unit& x) const
return tile; return tile;
} }
Region_Tile* Region_Tile::getRightTile(const Unit& y) const Region_Tile* Region_Tile::getRightTile(const DbU::Unit& y) const
// ******************************************************** // ********************************************************
{ {
Region_Tile* tile = _rightTile; Region_Tile* tile = _rightTile;
@ -246,7 +246,7 @@ GenericFilter<Region_Tile*> Region_Tile::getIsVoidFilter()
return Region_Tile::IsVoidFilter(); return Region_Tile::IsVoidFilter();
} }
void Region_Tile::splitVertical(Region* region, const Unit& x) void Region_Tile::splitVertical(Region* region, const DbU::Unit& x)
// *********************************************************** // ***********************************************************
{ {
if ((getXMin() < x) && (x < getXMax())) { if ((getXMin() < x) && (x < getXMax())) {
@ -287,7 +287,7 @@ void Region_Tile::splitVertical(Region* region, const Unit& x)
} }
} }
void Region_Tile::splitHorizontal(Region* region, const Unit& y) void Region_Tile::splitHorizontal(Region* region, const DbU::Unit& y)
// ************************************************************* // *************************************************************
{ {
if ((getYMin() < y) && (y < getYMax())) { if ((getYMin() < y) && (y < getYMax())) {
@ -618,7 +618,7 @@ Region_Tile::_IsRightFull() const
rightTile->getYMin() <= getYMin()); rightTile->getYMin() <= getYMin());
}; // Region_Tile::_IsRightFull }; // Region_Tile::_IsRightFull
Unit DbU::Unit
Region_Tile::_TopSplitAtVerticalSize (Region* region) Region_Tile::_TopSplitAtVerticalSize (Region* region)
// ************************************************** // **************************************************
// Decoupe les tuiles top-left et top-right a la taille de this // Decoupe les tuiles top-left et top-right a la taille de this
@ -626,12 +626,12 @@ Region_Tile::_TopSplitAtVerticalSize (Region* region)
// Doit etre appele apres verif _IsTopFull() // Doit etre appele apres verif _IsTopFull()
{ {
Region_Tile* upTile = _topTile; Region_Tile* upTile = _topTile;
Unit height = upTile->getYMax() - getYMax(); DbU::Unit height = upTile->getYMax() - getYMax();
if (upTile && upTile->getXMax() != getXMax()) { if (upTile && upTile->getXMax() != getXMax()) {
upTile->splitVertical (region, getXMax()); upTile->splitVertical (region, getXMax());
upTile = _topTile; upTile = _topTile;
} }
Unit ht; DbU::Unit ht;
while (upTile && upTile->getXMin() > getXMin()) { while (upTile && upTile->getXMin() > getXMin()) {
ht = upTile->getYMax() - getYMax(); ht = upTile->getYMax() - getYMax();
if (height > ht) height = ht; if (height > ht) height = ht;
@ -645,7 +645,7 @@ Region_Tile::_TopSplitAtVerticalSize (Region* region)
return height; return height;
}; // Region_Tile::_TopSplitAtVerticalSize }; // Region_Tile::_TopSplitAtVerticalSize
Unit DbU::Unit
Region_Tile::_BottomSplitAtVerticalSize (Region* region) Region_Tile::_BottomSplitAtVerticalSize (Region* region)
// ***************************************************** // *****************************************************
// Decoupe les tuiles bottom-left et bottom-right a la taille de this // Decoupe les tuiles bottom-left et bottom-right a la taille de this
@ -653,12 +653,12 @@ Region_Tile::_BottomSplitAtVerticalSize (Region* region)
// Doit etre appele apres verif _IsBottomFull() // Doit etre appele apres verif _IsBottomFull()
{ {
Region_Tile* downTile = _bottomTile; Region_Tile* downTile = _bottomTile;
Unit height = getYMin() - downTile->getYMin(); DbU::Unit height = getYMin() - downTile->getYMin();
if (downTile && downTile->getXMin() != getXMin()) { if (downTile && downTile->getXMin() != getXMin()) {
downTile->splitVertical (region, getXMin()); downTile->splitVertical (region, getXMin());
downTile = _bottomTile; downTile = _bottomTile;
} }
Unit ht; DbU::Unit ht;
while (downTile && downTile->getXMax() < getXMax()) { while (downTile && downTile->getXMax() < getXMax()) {
ht = getYMin() - downTile->getYMin(); ht = getYMin() - downTile->getYMin();
if (height > ht) height = ht; if (height > ht) height = ht;
@ -673,7 +673,7 @@ Region_Tile::_BottomSplitAtVerticalSize (Region* region)
}; // Region_Tile::_BottomSplitAtVerticalSize }; // Region_Tile::_BottomSplitAtVerticalSize
Unit DbU::Unit
Region_Tile::_LeftSplitAtHorizontalSize (Region* region) Region_Tile::_LeftSplitAtHorizontalSize (Region* region)
// ***************************************************** // *****************************************************
// Decoupe les tuiles left-top et left-bottom a la taille de this // Decoupe les tuiles left-top et left-bottom a la taille de this
@ -681,12 +681,12 @@ Region_Tile::_LeftSplitAtHorizontalSize (Region* region)
// Doit etre appele apres verif _IsLeftFull() // Doit etre appele apres verif _IsLeftFull()
{ {
Region_Tile* leftTile = _leftTile; Region_Tile* leftTile = _leftTile;
Unit width = getXMin() - leftTile->getXMin(); DbU::Unit width = getXMin() - leftTile->getXMin();
if (leftTile && leftTile->getYMin() != getYMin()) { if (leftTile && leftTile->getYMin() != getYMin()) {
leftTile->splitHorizontal (region, getYMin()); leftTile->splitHorizontal (region, getYMin());
leftTile = _leftTile; leftTile = _leftTile;
} }
Unit wt; DbU::Unit wt;
while (leftTile && leftTile->getYMax() < getYMax()) { while (leftTile && leftTile->getYMax() < getYMax()) {
wt = getXMin() - leftTile->getXMin(); wt = getXMin() - leftTile->getXMin();
if (width > wt) width = wt; if (width > wt) width = wt;
@ -701,7 +701,7 @@ Region_Tile::_LeftSplitAtHorizontalSize (Region* region)
}; // Region_Tile::_LeftSplitAtHorizontalSize }; // Region_Tile::_LeftSplitAtHorizontalSize
Unit DbU::Unit
Region_Tile::_RightSplitAtHorizontalSize (Region* region) Region_Tile::_RightSplitAtHorizontalSize (Region* region)
// ****************************************************** // ******************************************************
// Decoupe les tuiles right-bottom et right-top a la taille de this // Decoupe les tuiles right-bottom et right-top a la taille de this
@ -709,12 +709,12 @@ Region_Tile::_RightSplitAtHorizontalSize (Region* region)
// Doit etre appele apres verif _IsRightFull() // Doit etre appele apres verif _IsRightFull()
{ {
Region_Tile* rightTile = _rightTile; Region_Tile* rightTile = _rightTile;
Unit width = rightTile->getXMax() - getXMax(); DbU::Unit width = rightTile->getXMax() - getXMax();
if (rightTile && rightTile->getYMax() != getYMax()) { if (rightTile && rightTile->getYMax() != getYMax()) {
rightTile->splitHorizontal (region, getYMax()); rightTile->splitHorizontal (region, getYMax());
rightTile = _rightTile; rightTile = _rightTile;
} }
Unit wt; DbU::Unit wt;
while (rightTile && rightTile->getYMin() > getYMin()) { while (rightTile && rightTile->getYMin() > getYMin()) {
wt = rightTile->getXMax() - getXMax(); wt = rightTile->getXMax() - getXMax();
if (width > wt) width = wt; if (width > wt) width = wt;
@ -730,7 +730,7 @@ Region_Tile::_RightSplitAtHorizontalSize (Region* region)
bool bool
Region_Tile::_TopSplitAtHorizontalSize (Region* region, const Unit height) Region_Tile::_TopSplitAtHorizontalSize (Region* region, const DbU::Unit height)
// *********************************************************************** // ***********************************************************************
// Retaille la hauteur de toutes les tuiles sur this a la hauteur height // Retaille la hauteur de toutes les tuiles sur this a la hauteur height
// Retourne true si une modif a ete faite // Retourne true si une modif a ete faite
@ -755,7 +755,7 @@ Region_Tile::_TopSplitAtHorizontalSize (Region* region, const Unit height)
bool bool
Region_Tile::_BottomSplitAtHorizontalSize (Region* region, const Unit height) Region_Tile::_BottomSplitAtHorizontalSize (Region* region, const DbU::Unit height)
// ************************************************************************** // **************************************************************************
// Retaille la hauteur de toutes les tuiles sous this a la hauteur height // Retaille la hauteur de toutes les tuiles sous this a la hauteur height
// Retourne true si une modif a ete faite // Retourne true si une modif a ete faite
@ -779,7 +779,7 @@ Region_Tile::_BottomSplitAtHorizontalSize (Region* region, const Unit height)
}; // Region_Tile::_BottomSplitAtHorizontalSize }; // Region_Tile::_BottomSplitAtHorizontalSize
bool bool
Region_Tile::_LeftSplitAtVerticalSize (Region* region, const Unit width) Region_Tile::_LeftSplitAtVerticalSize (Region* region, const DbU::Unit width)
// ************************************************************************** // **************************************************************************
// Retaille la largeur de toutes les tuiles a gauche de this a la largeur width // Retaille la largeur de toutes les tuiles a gauche de this a la largeur width
// Retourne true si une modif a ete faite // Retourne true si une modif a ete faite
@ -804,7 +804,7 @@ Region_Tile::_LeftSplitAtVerticalSize (Region* region, const Unit width)
bool bool
Region_Tile::_RightSplitAtVerticalSize (Region* region, const Unit width) Region_Tile::_RightSplitAtVerticalSize (Region* region, const DbU::Unit width)
// ************************************************************************** // **************************************************************************
// Retaille la hauteur de toutes les tuiles a droite de this a la largeur width // Retaille la hauteur de toutes les tuiles a droite de this a la largeur width
// Retourne true si une modif a ete faite // Retourne true si une modif a ete faite
@ -899,12 +899,12 @@ Region_Tile::VerticalEnhancement(Region* region)
bool modif = false; bool modif = false;
while (_IsTopFull ()) { while (_IsTopFull ()) {
Unit height = _TopSplitAtVerticalSize (region); DbU::Unit height = _TopSplitAtVerticalSize (region);
modif = _TopSplitAtHorizontalSize (region, height); modif = _TopSplitAtHorizontalSize (region, height);
modif = mergeTopTile (region) || modif; modif = mergeTopTile (region) || modif;
} }
while (_IsBottomFull ()) { while (_IsBottomFull ()) {
Unit height = _BottomSplitAtVerticalSize (region); DbU::Unit height = _BottomSplitAtVerticalSize (region);
modif = _BottomSplitAtHorizontalSize (region, height); modif = _BottomSplitAtHorizontalSize (region, height);
modif = mergeBottomTile (region) || modif; modif = mergeBottomTile (region) || modif;
} }
@ -918,12 +918,12 @@ Region_Tile::HorizontalEnhancement(Region* region)
bool modif = false; bool modif = false;
while (_IsLeftFull ()) { while (_IsLeftFull ()) {
Unit width = _LeftSplitAtHorizontalSize (region); DbU::Unit width = _LeftSplitAtHorizontalSize (region);
modif = _LeftSplitAtVerticalSize (region, width); modif = _LeftSplitAtVerticalSize (region, width);
modif = mergeLeftTile (region) || modif; modif = mergeLeftTile (region) || modif;
} }
while (_IsRightFull ()) { while (_IsRightFull ()) {
Unit width = _RightSplitAtHorizontalSize (region); DbU::Unit width = _RightSplitAtHorizontalSize (region);
modif = _RightSplitAtVerticalSize (region, width); modif = _RightSplitAtVerticalSize (region, width);
modif = mergeRightTile (region) || modif; modif = mergeRightTile (region) || modif;
} }
@ -1171,8 +1171,8 @@ void Region_Tiles::Locator::progress()
if (!_tileStack.empty()) { if (!_tileStack.empty()) {
Region_Tile* tile = _tileStack.top(); Region_Tile* tile = _tileStack.top();
_tileStack.pop(); _tileStack.pop();
Unit xMin = tile->getXMin(); DbU::Unit xMin = tile->getXMin();
Unit xMax = tile->getXMax(); DbU::Unit xMax = tile->getXMax();
Region_Tile* topTile = tile->_topTile; Region_Tile* topTile = tile->_topTile;
while (topTile && (xMin < topTile->getXMax())) { while (topTile && (xMin < topTile->getXMax())) {
if (topTile->getXMax() <= xMax) _tileStack.push(topTile); if (topTile->getXMax() <= xMax) _tileStack.push(topTile);
@ -1414,8 +1414,8 @@ void Region_TilesUnder::Locator::progress()
if (!_tileStack.empty()) { if (!_tileStack.empty()) {
Region_Tile* tile = _tileStack.top(); Region_Tile* tile = _tileStack.top();
_tileStack.pop(); _tileStack.pop();
Unit xMin = max(tile->getXMin(), _area.getXMin()); DbU::Unit xMin = max(tile->getXMin(), _area.getXMin());
Unit xMax = tile->getXMax(); DbU::Unit xMax = tile->getXMax();
Region_Tile* topTile = tile->_topTile; Region_Tile* topTile = tile->_topTile;
while (topTile && (xMin < topTile->getXMax())) { while (topTile && (xMin < topTile->getXMax())) {
if ((topTile->getXMin() <= _area.getXMax()) && if ((topTile->getXMin() <= _area.getXMax()) &&
@ -2010,8 +2010,8 @@ Region_Intervals::Locator::Locator(const Region::SwapLine* swapLine)
if (_swapLine) { if (_swapLine) {
switch (_swapLine->getType()) { switch (_swapLine->getType()) {
case Region::SwapLine::Type::VERTICAL : { case Region::SwapLine::Type::VERTICAL : {
Unit x = _swapLine->getPosition(); DbU::Unit x = _swapLine->getPosition();
Unit yMax = _swapLine->getExtention().getVMax(); DbU::Unit yMax = _swapLine->getExtention().getVMax();
_lowerTile = _swapLine->_getBaseTile(); _lowerTile = _swapLine->_getBaseTile();
while (_lowerTile && _lowerTile->isVoid()) while (_lowerTile && _lowerTile->isVoid())
_lowerTile = _lowerTile->getTopTile(x); _lowerTile = _lowerTile->getTopTile(x);
@ -2027,8 +2027,8 @@ Region_Intervals::Locator::Locator(const Region::SwapLine* swapLine)
break; break;
} }
case Region::SwapLine::Type::HORIZONTAL : { case Region::SwapLine::Type::HORIZONTAL : {
Unit y = _swapLine->getPosition(); DbU::Unit y = _swapLine->getPosition();
Unit xMax = _swapLine->getExtention().getVMax(); DbU::Unit xMax = _swapLine->getExtention().getVMax();
_lowerTile = _swapLine->_getBaseTile(); _lowerTile = _swapLine->_getBaseTile();
while (_lowerTile && _lowerTile->isVoid()) while (_lowerTile && _lowerTile->isVoid())
_lowerTile = _lowerTile->getRightTile(y); _lowerTile = _lowerTile->getRightTile(y);
@ -2103,8 +2103,8 @@ void Region_Intervals::Locator::progress()
if (isValid()) { if (isValid()) {
switch (_swapLine->getType()) { switch (_swapLine->getType()) {
case Region::SwapLine::Type::VERTICAL : { case Region::SwapLine::Type::VERTICAL : {
Unit x = _swapLine->getPosition(); DbU::Unit x = _swapLine->getPosition();
Unit yMax = _swapLine->getExtention().getVMax(); DbU::Unit yMax = _swapLine->getExtention().getVMax();
_lowerTile = _upperTile->getTopTile(x); _lowerTile = _upperTile->getTopTile(x);
while (_lowerTile && _lowerTile->isVoid()) while (_lowerTile && _lowerTile->isVoid())
_lowerTile = _lowerTile->getTopTile(x); _lowerTile = _lowerTile->getTopTile(x);
@ -2121,8 +2121,8 @@ void Region_Intervals::Locator::progress()
break; break;
} }
case Region::SwapLine::Type::HORIZONTAL : { case Region::SwapLine::Type::HORIZONTAL : {
Unit y = _swapLine->getPosition(); DbU::Unit y = _swapLine->getPosition();
Unit xMax = _swapLine->getExtention().getVMax(); DbU::Unit xMax = _swapLine->getExtention().getVMax();
_lowerTile = _upperTile->getRightTile(y); _lowerTile = _upperTile->getRightTile(y);
while (_lowerTile && _lowerTile->isVoid()) while (_lowerTile && _lowerTile->isVoid())
_lowerTile = _lowerTile->getRightTile(y); _lowerTile = _lowerTile->getRightTile(y);
@ -2239,7 +2239,7 @@ Region::SwapLine::SwapLine(Region* region, const Type& type, const Interval& ext
} }
} }
Region::SwapLine::SwapLine(Region* region, const Type& type, const Unit& position, const Interval& extention) Region::SwapLine::SwapLine(Region* region, const Type& type, const DbU::Unit& position, const Interval& extention)
// **************************************************************************************************** // ****************************************************************************************************
: _region(region), : _region(region),
_type(type), _type(type),
@ -2306,9 +2306,9 @@ void Region::SwapLine::progress(int n)
switch (_type) { switch (_type) {
case Type::VERTICAL : { case Type::VERTICAL : {
while (n--) { while (n--) {
Unit yMin = getExtention().getVMin(); DbU::Unit yMin = getExtention().getVMin();
Unit yMax = getExtention().getVMax(); DbU::Unit yMax = getExtention().getVMax();
Unit x = _region->getXMax() + 1; DbU::Unit x = _region->getXMax() + 1;
Region::Tile* tile = _baseTile; Region::Tile* tile = _baseTile;
while (tile) { while (tile) {
if (_position < tile->getXMax()) if (_position < tile->getXMax())
@ -2334,9 +2334,9 @@ void Region::SwapLine::progress(int n)
} }
case Type::HORIZONTAL : { case Type::HORIZONTAL : {
while (n--) { while (n--) {
Unit xMin = getExtention().getVMin(); DbU::Unit xMin = getExtention().getVMin();
Unit xMax = getExtention().getVMax(); DbU::Unit xMax = getExtention().getVMax();
Unit y = _region->getYMax() + 1; DbU::Unit y = _region->getYMax() + 1;
Region::Tile* tile = _baseTile; Region::Tile* tile = _baseTile;
while (tile) { while (tile) {
if (_position < tile->getYMax()) if (_position < tile->getYMax())
@ -2368,13 +2368,13 @@ void Region::SwapLine::progress(int n)
} }
} }
void Region::SwapLine::translate(const Unit& quantity) void Region::SwapLine::translate(const DbU::Unit& quantity)
// *************************************************** // ***************************************************
{ {
if (quantity) setPosition(getPosition() + quantity); if (quantity) setPosition(getPosition() + quantity);
} }
void Region::SwapLine::setPosition(const Unit& position) void Region::SwapLine::setPosition(const DbU::Unit& position)
// ***************************************************** // *****************************************************
{ {
if (position != _position) { if (position != _position) {
@ -2485,28 +2485,28 @@ Box Region::getBoundingBox() const
return boundingBox; return boundingBox;
} }
Unit Region::getXMin() const DbU::Unit Region::getXMin() const
// ************************* // *************************
{ {
return (_topLeftTile) ? _topLeftTile->getXMin() : Unit(); return (_topLeftTile) ? _topLeftTile->getXMin() : DbU::Unit();
} }
Unit Region::getYMin() const DbU::Unit Region::getYMin() const
// ************************* // *************************
{ {
return (_bottomRightTile) ? _bottomRightTile->getYMin() : Unit(); return (_bottomRightTile) ? _bottomRightTile->getYMin() : DbU::Unit();
} }
Unit Region::getXMax() const DbU::Unit Region::getXMax() const
// ************************* // *************************
{ {
return (_bottomRightTile) ? _bottomRightTile->getXMax() : Unit(); return (_bottomRightTile) ? _bottomRightTile->getXMax() : DbU::Unit();
} }
Unit Region::getYMax() const DbU::Unit Region::getYMax() const
// ************************* // *************************
{ {
return (_topLeftTile) ? _topLeftTile->getYMax() : Unit(); return (_topLeftTile) ? _topLeftTile->getYMax() : DbU::Unit();
} }
Boxes Region::getBoxes() const Boxes Region::getBoxes() const
@ -2539,7 +2539,7 @@ Region::SwapLine Region::getVerticalSwapLine(const Interval& extention) const
return SwapLine((Region*)this, Region::SwapLine::Type::VERTICAL, extention); return SwapLine((Region*)this, Region::SwapLine::Type::VERTICAL, extention);
} }
Region::SwapLine Region::getVerticalSwapLine(const Unit& x, const Interval& extention) const Region::SwapLine Region::getVerticalSwapLine(const DbU::Unit& x, const Interval& extention) const
// ***************************************************************************************** // *****************************************************************************************
{ {
return SwapLine((Region*)this, Region::SwapLine::Type::VERTICAL, x, extention); return SwapLine((Region*)this, Region::SwapLine::Type::VERTICAL, x, extention);
@ -2551,7 +2551,7 @@ Region::SwapLine Region::getHorizontalSwapLine(const Interval& extention) const
return SwapLine((Region*)this, Region::SwapLine::Type::HORIZONTAL, extention); return SwapLine((Region*)this, Region::SwapLine::Type::HORIZONTAL, extention);
} }
Region::SwapLine Region::getHorizontalSwapLine(const Unit& y, const Interval& extention) const Region::SwapLine Region::getHorizontalSwapLine(const DbU::Unit& y, const Interval& extention) const
// ******************************************************************************************* // *******************************************************************************************
{ {
return SwapLine((Region*)this, Region::SwapLine::Type::HORIZONTAL, y, extention); return SwapLine((Region*)this, Region::SwapLine::Type::HORIZONTAL, y, extention);
@ -2627,8 +2627,8 @@ Region& Region::clear()
while (!tileStack.empty()) { while (!tileStack.empty()) {
tile = tileStack.top(); tile = tileStack.top();
tileStack.pop(); tileStack.pop();
Unit xMin = tile->getXMin(); DbU::Unit xMin = tile->getXMin();
Unit xMax = tile->getXMax(); DbU::Unit xMax = tile->getXMax();
Tile* topTile = tile->_topTile; Tile* topTile = tile->_topTile;
while (topTile && (xMin < topTile->getXMax())) { while (topTile && (xMin < topTile->getXMax())) {
@ -2726,7 +2726,7 @@ Region& Region::getIntersection (const Region& region)
return *this; return *this;
} }
Region& Region::Inflate(const Unit& quantity) Region& Region::Inflate(const DbU::Unit& quantity)
// ****************************************** // ******************************************
{ {
if (!isEmpty()) { if (!isEmpty()) {
@ -2742,7 +2742,7 @@ Region& Region::Inflate(const Unit& quantity)
} }
} }
else if (quantity < 0) { else if (quantity < 0) {
_growthToFit(getBoundingBox().inflate(getUnit(1))); _growthToFit(getBoundingBox().inflate(DbU::real(1.0)));
list<Box> boxList; list<Box> boxList;
for_each_object(Tile*, tile, Region_Tiles(this).getSubSet(Tile::getIsVoidFilter())) { for_each_object(Tile*, tile, Region_Tiles(this).getSubSet(Tile::getIsVoidFilter())) {
boxList.push_back(tile->getBoundingBox()); boxList.push_back(tile->getBoundingBox());
@ -2758,7 +2758,7 @@ Region& Region::Inflate(const Unit& quantity)
return *this; return *this;
} }
Region& Region::translate(const Unit& dx, const Unit& dy) Region& Region::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// ****************************************************** // ******************************************************
{ {
if ((dx != 0) || (dy != 0)) { if ((dx != 0) || (dy != 0)) {
@ -2813,12 +2813,12 @@ Region_Tile* Region::_getStartTile(Tile* tile) const
if (tile) { if (tile) {
if (!startTile && tile->_rightTile) { if (!startTile && tile->_rightTile) {
Unit y = tile->getYMin(); DbU::Unit y = tile->getYMin();
startTile = tile->_rightTile; startTile = tile->_rightTile;
while (startTile && (y <= startTile->getYMax())) startTile = startTile->_bottomTile; while (startTile && (y <= startTile->getYMax())) startTile = startTile->_bottomTile;
} }
if (!startTile && tile->_bottomTile) { if (!startTile && tile->_bottomTile) {
Unit x = tile->getXMax(); DbU::Unit x = tile->getXMax();
startTile = tile->_bottomTile; startTile = tile->_bottomTile;
while (startTile && (startTile->getXMin() <= x)) startTile = startTile->_rightTile; while (startTile && (startTile->getXMin() <= x)) startTile = startTile->_rightTile;
} }
@ -3007,14 +3007,15 @@ Region::verticalEnhancement()
{ {
bool modif = false; bool modif = false;
Region result; Region result;
double minArea = 1.*getUnit(5)*getUnit(5); double minSide = DbU::getReal(DbU::real(5.0));
double minArea = minSide*minSide;
do { do {
// Rechercher la box de plus grande surface // Rechercher la box de plus grande surface
Box maxBox = Box(); Box maxBox = Box();
double area = minArea; double area = minArea;
for_each_box (box, getBoxes()) { for_each_box (box, getBoxes()) {
if (! box.isEmpty()) { if (! box.isEmpty()) {
double a = 1. * box.getWidth() * box.getHeight(); double a = DbU::getReal(box.getWidth()) * DbU::getReal(box.getHeight());
if (area < a) { if (area < a) {
area = a; area = a;
maxBox = box; maxBox = box;
@ -3024,7 +3025,7 @@ Region::verticalEnhancement()
} }
if (maxBox.isEmpty()) break; if (maxBox.isEmpty()) break;
Tile* tile = _getTileAt (maxBox.getCenter()); Tile* tile = _getTileAt (maxBox.getCenter());
if (maxBox.getWidth() >= getUnit(2)) { if (maxBox.getWidth() >= DbU::real(2.0)) {
modif = tile->VerticalEnhancement (this); modif = tile->VerticalEnhancement (this);
} }
result.fill (tile->getBoundingBox()); result.fill (tile->getBoundingBox());
@ -3053,14 +3054,15 @@ Region::horizontalEnhancement()
{ {
bool modif = false; bool modif = false;
Region result; Region result;
double minArea = 1.*getUnit(5)*getUnit(5); const double minSide = DbU::getReal(DbU::real(5.0));
double minArea = minSide*minSide;
do { do {
// Rechercher la box de plus grande surface // Rechercher la box de plus grande surface
Box maxBox = Box(); Box maxBox = Box();
double area = minArea; double area = minArea;
for_each_box (box, getBoxes()) { for_each_box (box, getBoxes()) {
if (! box.isEmpty()) { if (! box.isEmpty()) {
double a = 1. * box.getWidth() * box.getHeight(); double a = DbU::getReal(box.getWidth()) * DbU::getReal(box.getHeight());
if (area < a) { if (area < a) {
area = a; area = a;
maxBox = box; maxBox = box;
@ -3070,7 +3072,7 @@ Region::horizontalEnhancement()
} }
if (maxBox.isEmpty()) break; if (maxBox.isEmpty()) break;
Tile* tile = _getTileAt (maxBox.getCenter()); Tile* tile = _getTileAt (maxBox.getCenter());
if (maxBox.getWidth() >= getUnit(2)) { if (maxBox.getWidth() >= DbU::real(2.0)) {
modif = tile->HorizontalEnhancement (this); modif = tile->HorizontalEnhancement (this);
} }
result.fill (tile->getBoundingBox()); result.fill (tile->getBoundingBox());

View File

@ -231,31 +231,31 @@ namespace Hurricane {
{ return RegularLayer_RegularLayers(this); } { return RegularLayer_RegularLayers(this); }
Unit RegularLayer::getEnclosure () const DbU::Unit RegularLayer::getEnclosure () const
{ return _enclosure; } { return _enclosure; }
Unit RegularLayer::getExtentionCap () const DbU::Unit RegularLayer::getExtentionCap () const
{ return _extentionCap; } { return _extentionCap; }
Unit RegularLayer::getExtentionWidth () const DbU::Unit RegularLayer::getExtentionWidth () const
{ return _extentionWidth; } { return _extentionWidth; }
Unit RegularLayer::getEnclosure ( const BasicLayer* layer ) const DbU::Unit RegularLayer::getEnclosure ( const BasicLayer* layer ) const
{ {
return (layer == _basicLayer) ? _enclosure : 0; return (layer == _basicLayer) ? _enclosure : 0;
} }
Unit RegularLayer::getExtentionCap ( const BasicLayer* layer ) const DbU::Unit RegularLayer::getExtentionCap ( const BasicLayer* layer ) const
{ {
return (layer == _basicLayer) ? _extentionCap : 0; return (layer == _basicLayer) ? _extentionCap : 0;
} }
Unit RegularLayer::getExtentionWidth ( const BasicLayer* layer ) const DbU::Unit RegularLayer::getExtentionWidth ( const BasicLayer* layer ) const
{ {
return (layer == _basicLayer) ? _extentionWidth : 0; return (layer == _basicLayer) ? _extentionWidth : 0;
} }
@ -276,19 +276,19 @@ namespace Hurricane {
} }
void RegularLayer::setEnclosure ( const BasicLayer* layer, Unit enclosure ) void RegularLayer::setEnclosure ( const BasicLayer* layer, DbU::Unit enclosure )
{ {
if ( _basicLayer == layer ) _enclosure = enclosure; if ( _basicLayer == layer ) _enclosure = enclosure;
} }
void RegularLayer::setExtentionCap ( const BasicLayer* layer, Unit cap ) void RegularLayer::setExtentionCap ( const BasicLayer* layer, DbU::Unit cap )
{ {
if ( _basicLayer == layer ) _extentionCap = cap; if ( _basicLayer == layer ) _extentionCap = cap;
} }
void RegularLayer::setExtentionWidth ( const BasicLayer* layer, Unit width ) void RegularLayer::setExtentionWidth ( const BasicLayer* layer, DbU::Unit width )
{ {
if ( _basicLayer == layer ) _extentionWidth = width; if ( _basicLayer == layer ) _extentionWidth = width;
} }

View File

@ -78,13 +78,13 @@ void RoutingPad::_postCreate()
_occurrence.getMasterCell()->_addSlaveEntity(_occurrence.getEntity(),this); _occurrence.getMasterCell()->_addSlaveEntity(_occurrence.getEntity(),this);
} }
Unit RoutingPad::getX() const DbU::Unit RoutingPad::getX() const
// *********************** // ***********************
{ {
return _x; return _x;
} }
Unit RoutingPad::getY() const DbU::Unit RoutingPad::getY() const
// *********************** // ***********************
{ {
return _y; return _y;
@ -140,25 +140,25 @@ Point RoutingPad::getTargetPosition() const
return getPosition(); return getPosition();
} }
Unit RoutingPad::getSourceX() const DbU::Unit RoutingPad::getSourceX() const
// ******************************** // ********************************
{ {
return getSourcePosition().getX(); return getSourcePosition().getX();
} }
Unit RoutingPad::getSourceY() const DbU::Unit RoutingPad::getSourceY() const
// ******************************** // ********************************
{ {
return getSourcePosition().getY(); return getSourcePosition().getY();
} }
Unit RoutingPad::getTargetX() const DbU::Unit RoutingPad::getTargetX() const
// ******************************** // ********************************
{ {
return getTargetPosition().getX(); return getTargetPosition().getX();
} }
Unit RoutingPad::getTargetY() const DbU::Unit RoutingPad::getTargetY() const
// ******************************** // ********************************
{ {
return getTargetPosition().getY(); return getTargetPosition().getY();
@ -175,7 +175,7 @@ Point RoutingPad::getCenter() const
} }
void RoutingPad::translate(const Unit& dx, const Unit& dy) void RoutingPad::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// **************************************************** // ****************************************************
{ {
if ((dx != 0) || (dy != 0)) { if ((dx != 0) || (dy != 0)) {
@ -185,19 +185,19 @@ void RoutingPad::translate(const Unit& dx, const Unit& dy)
} }
} }
void RoutingPad::setX(const Unit& x) void RoutingPad::setX(const DbU::Unit& x)
// ****************************** // ******************************
{ {
setPosition(x, getY()); setPosition(x, getY());
} }
void RoutingPad::setY(const Unit& y) void RoutingPad::setY(const DbU::Unit& y)
// ****************************** // ******************************
{ {
setPosition(getX(), y); setPosition(getX(), y);
} }
void RoutingPad::setPosition(const Unit& x, const Unit& y) void RoutingPad::setPosition(const DbU::Unit& x, const DbU::Unit& y)
// **************************************************** // ****************************************************
{ {
setOffset(x, y); setOffset(x, y);
@ -209,7 +209,7 @@ void RoutingPad::setPosition(const Point& position)
setPosition(position.getX(), position.getY()); setPosition(position.getX(), position.getY());
} }
void RoutingPad::setOffset(const Unit& x, const Unit& y) void RoutingPad::setOffset(const DbU::Unit& x, const DbU::Unit& y)
// **************************************************** // ****************************************************
{ {
invalidate(true); invalidate(true);
@ -236,8 +236,8 @@ string RoutingPad::_getString() const
// ******************************* // *******************************
{ {
string s = Inherit::_getString(); string s = Inherit::_getString();
s.insert(s.length() - 1, " [" + getValueString(getX())); s.insert(s.length() - 1, " [" + DbU::getValueString(getX()));
s.insert(s.length() - 1, " " + getValueString(getY())); s.insert(s.length() - 1, " " + DbU::getValueString(getY()));
s.insert(s.length() - 1, "] "); s.insert(s.length() - 1, "] ");
s.insert(s.length() - 1, getString(_occurrence)); s.insert(s.length() - 1, getString(_occurrence));
return s; return s;

View File

@ -63,8 +63,8 @@ Point Rubber::getBarycenter() const
// ******************************** // ********************************
{ {
int n = getHooks().getSize(); int n = getHooks().getSize();
Unit x = 0; DbU::Unit x = 0;
Unit y = 0; DbU::Unit y = 0;
for_each_hook(hook, getHooks()) { for_each_hook(hook, getHooks()) {
Point position = hook->getComponent()->getBoundingBox().getCenter(); Point position = hook->getComponent()->getBoundingBox().getCenter();
x += position.getX() / n; x += position.getX() / n;
@ -117,7 +117,7 @@ void Rubber::unmaterialize()
} }
} }
void Rubber::translate(const Unit& dx, const Unit& dy) void Rubber::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// *************************************************** // ***************************************************
{ {
} }

View File

@ -151,7 +151,7 @@ class Segment_Anchors : public Collection<Component*> {
// Segment implementation // Segment implementation
// **************************************************************************************************** // ****************************************************************************************************
Segment::Segment(Net* net, Component* source, Component* target, const Layer* layer, const Unit& width) Segment::Segment(Net* net, Component* source, Component* target, const Layer* layer, const DbU::Unit& width)
// ********************************************************************************************** // **********************************************************************************************
: Inherit(net), : Inherit(net),
_sourceHook(this), _sourceHook(this),
@ -252,7 +252,7 @@ void Segment::setLayer(const Layer* layer)
} }
} }
void Segment::setWidth(const Unit& width) void Segment::setWidth(const DbU::Unit& width)
// ************************************** // **************************************
{ {
if (width != _width) { if (width != _width) {
@ -294,9 +294,9 @@ string Segment::_getString() const
{ {
string s = Inherit::_getString(); string s = Inherit::_getString();
s.insert(s.length() - 1, " " + getString(_layer->getName())); s.insert(s.length() - 1, " " + getString(_layer->getName()));
s.insert(s.length() - 1, " [" + getValueString(getSourceX()) + " " + getValueString(getSourceY()) + "]"); s.insert(s.length() - 1, " [" + DbU::getValueString(getSourceX()) + " " + DbU::getValueString(getSourceY()) + "]");
s.insert(s.length() - 1, " [" + getValueString(getTargetX()) + " " + getValueString(getTargetY()) + "]"); s.insert(s.length() - 1, " [" + DbU::getValueString(getTargetX()) + " " + DbU::getValueString(getTargetY()) + "]");
s.insert(s.length() - 1, " " + getValueString(_width)); s.insert(s.length() - 1, " " + DbU::getValueString(_width));
return s; return s;
} }

View File

@ -51,7 +51,7 @@ Transformation::Transformation()
{ {
} }
Transformation::Transformation(const Unit& tx, const Unit& ty, const Orientation& orientation) Transformation::Transformation(const DbU::Unit& tx, const DbU::Unit& ty, const Orientation& orientation)
// ******************************************************************************************* // *******************************************************************************************
: _tx(tx), : _tx(tx),
_ty(ty), _ty(ty),
@ -100,43 +100,43 @@ bool Transformation::operator!=(const Transformation& transformation) const
(_orientation != transformation._orientation)); (_orientation != transformation._orientation));
} }
Unit Transformation::getX(const Unit& x, const Unit& y) const DbU::Unit Transformation::getX(const DbU::Unit& x, const DbU::Unit& y) const
// ********************************************************** // **********************************************************
{ {
return (x * A[_orientation]) + (y * B[_orientation]) + _tx; return (x * A[_orientation]) + (y * B[_orientation]) + _tx;
} }
Unit Transformation::getY(const Unit& x, const Unit& y) const DbU::Unit Transformation::getY(const DbU::Unit& x, const DbU::Unit& y) const
// ********************************************************** // **********************************************************
{ {
return (x * C[_orientation]) + (y * D[_orientation]) + _ty; return (x * C[_orientation]) + (y * D[_orientation]) + _ty;
} }
Unit Transformation::getX(const Point& point) const DbU::Unit Transformation::getX(const Point& point) const
// ************************************************ // ************************************************
{ {
return getX(point.getX(), point.getY()); return getX(point.getX(), point.getY());
} }
Unit Transformation::getY(const Point& point) const DbU::Unit Transformation::getY(const Point& point) const
// ************************************************ // ************************************************
{ {
return getY(point.getX(), point.getY()); return getY(point.getX(), point.getY());
} }
Unit Transformation::getDx(const Unit& dx, const Unit& dy) const DbU::Unit Transformation::getDx(const DbU::Unit& dx, const DbU::Unit& dy) const
// ************************************************************* // *************************************************************
{ {
return (dx * A[_orientation]) + (dy * B[_orientation]); return (dx * A[_orientation]) + (dy * B[_orientation]);
} }
Unit Transformation::getDy(const Unit& dx, const Unit& dy) const DbU::Unit Transformation::getDy(const DbU::Unit& dx, const DbU::Unit& dy) const
// ************************************************************* // *************************************************************
{ {
return (dx * C[_orientation]) + (dy * D[_orientation]); return (dx * C[_orientation]) + (dy * D[_orientation]);
} }
Point Transformation::getPoint(const Unit& x, const Unit& y) const Point Transformation::getPoint(const DbU::Unit& x, const DbU::Unit& y) const
// *************************************************************** // ***************************************************************
{ {
return Point(getX(x, y), getY(x, y)); return Point(getX(x, y), getY(x, y));
@ -148,7 +148,7 @@ Point Transformation::getPoint(const Point& point) const
return getPoint(point.getX(), point.getY()); return getPoint(point.getX(), point.getY());
} }
Box Transformation::getBox(const Unit& x1, const Unit& y1, const Unit& x2, const Unit& y2) const Box Transformation::getBox(const DbU::Unit& x1, const DbU::Unit& y1, const DbU::Unit& x2, const DbU::Unit& y2) const
// ********************************************************************************************* // *********************************************************************************************
{ {
return Box(getX(x1, y1), getY(x1, y1), getX(x2, y2), getY(x2, y2)); return Box(getX(x1, y1), getY(x1, y1), getX(x2, y2), getY(x2, y2));
@ -170,8 +170,8 @@ Box Transformation::getBox(const Box& box) const
Transformation Transformation::getTransformation(const Transformation& transformation) const Transformation Transformation::getTransformation(const Transformation& transformation) const
// ***************************************************************************************** // *****************************************************************************************
{ {
Unit x = transformation._tx; DbU::Unit x = transformation._tx;
Unit y = transformation._ty; DbU::Unit y = transformation._ty;
return Transformation( return Transformation(
(x * A[_orientation]) + (y * B[_orientation]) + _tx, (x * A[_orientation]) + (y * B[_orientation]) + _tx,
@ -196,10 +196,10 @@ Transformation& Transformation::invert()
INVERT[_orientation])); INVERT[_orientation]));
} }
void Transformation::applyOn(Unit& x, Unit& y) const void Transformation::applyOn(DbU::Unit& x, DbU::Unit& y) const
// ************************************************* // *************************************************
{ {
Unit xi = x, yi = y; DbU::Unit xi = x, yi = y;
x = getX(xi, yi); x = getX(xi, yi);
y = getY(xi, yi); y = getY(xi, yi);
} }
@ -226,8 +226,8 @@ string Transformation::_getString() const
// ************************************** // **************************************
{ {
return "<" + _TName("Transformation") + " " + return "<" + _TName("Transformation") + " " +
getValueString(_tx) + " " + DbU::getValueString(_tx) + " " +
getValueString(_ty) + " " + DbU::getValueString(_ty) + " " +
getString(_orientation) + getString(_orientation) +
">"; ">";
} }

View File

@ -154,15 +154,15 @@ namespace Hurricane {
{ return getCollection(_basicLayers); } { return getCollection(_basicLayers); }
Unit TransistorLayer::getExtentionCap () const DbU::Unit TransistorLayer::getExtentionCap () const
{ return _maximalExtentionCap; } { return _maximalExtentionCap; }
Unit TransistorLayer::getExtentionWidth () const DbU::Unit TransistorLayer::getExtentionWidth () const
{ return _maximalExtentionWidth; } { return _maximalExtentionWidth; }
Unit TransistorLayer::getExtentionCap ( const BasicLayer* layer ) const DbU::Unit TransistorLayer::getExtentionCap ( const BasicLayer* layer ) const
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) if ( _basicLayers[i] == layer )
@ -173,7 +173,7 @@ namespace Hurricane {
} }
Unit TransistorLayer::getExtentionWidth ( const BasicLayer* layer ) const DbU::Unit TransistorLayer::getExtentionWidth ( const BasicLayer* layer ) const
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) if ( _basicLayers[i] == layer )
@ -184,7 +184,7 @@ namespace Hurricane {
} }
void TransistorLayer::setExtentionCap ( const BasicLayer* layer, Unit cap ) void TransistorLayer::setExtentionCap ( const BasicLayer* layer, DbU::Unit cap )
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) { if ( _basicLayers[i] == layer ) {
@ -195,7 +195,7 @@ namespace Hurricane {
} }
void TransistorLayer::setExtentionWidth ( const BasicLayer* layer, Unit width ) void TransistorLayer::setExtentionWidth ( const BasicLayer* layer, DbU::Unit width )
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) if ( _basicLayers[i] == layer )

View File

@ -1,186 +0,0 @@
// ****************************************************************************************************
// File: Unit.cpp
// Authors: R. Escassut
// Copyright (c) BULL S.A. 2000-2004, All Rights Reserved
// ****************************************************************************************************
#include "hurricane/Unit.h"
#include "hurricane/Error.h"
#include <math.h>
namespace Hurricane {
// ****************************************************************************************************
// Constants & Variables
// ****************************************************************************************************
static const unsigned MAXIMAL_PRECISION_ALLOWED = 3;
static unsigned PRECISION = 0;
static double RESOLUTION = 1;
static Unit GRID_STEP = 1;
// ****************************************************************************************************
// Precision managers
// ****************************************************************************************************
unsigned getPrecision()
// ********************
{
return PRECISION;
}
unsigned getMaximalPrecisionAllowed()
// **********************************
{
return MAXIMAL_PRECISION_ALLOWED;
}
void setPrecision(unsigned precision)
// **********************************
{
if (MAXIMAL_PRECISION_ALLOWED < precision)
throw Error("Can't set precision : not allowed");
PRECISION = precision;
RESOLUTION = 1;
while (precision--) RESOLUTION /= 10;
setGridStep(getUnit(1));
}
// ****************************************************************************************************
// Resolution managers
// ****************************************************************************************************
double getResolution()
// *******************
{
return RESOLUTION;
}
// ****************************************************************************************************
// Grid managers
// ****************************************************************************************************
const Unit& getGridStep()
// **********************
{
return GRID_STEP;
}
void setGridStep(const Unit& gridStep)
// ***********************************
{
if (!gridStep) throw Error("Can't set grid step : invalid value");
GRID_STEP = gridStep;
}
bool isOnGrid(const Unit& unit, int n)
// ***********************************
{
if (n <= 0) throw Error("Can't compute : invalid value");
n *= GRID_STEP;
return (((abs(unit) / n) * n) == abs(unit));
}
Unit getOnGridUnit(const Unit& unit, int s)
// ****************************************
{
switch (s) {
case -1 : {
if (0 < unit) return (unit / GRID_STEP) * GRID_STEP;
else if (unit < 0) return ((unit / GRID_STEP) - 1) * GRID_STEP;
return unit;
}
case 0 : {
int g1 = (unit / GRID_STEP) * GRID_STEP;
int g2 = ((g1 < unit) ? (g1 + GRID_STEP) : (g1 - GRID_STEP));
return (abs(g1 - unit) <= abs(g2 - unit)) ? g1 : g2;
}
case +1 : {
if (0 < unit) return ((unit / GRID_STEP) + 1) * GRID_STEP;
else if (unit < 0) return (unit / GRID_STEP) * GRID_STEP;
return unit;
}
}
throw Error("Can't get on grid unit : invalid parameter s (should be -1, 0 or +1)");
return 0;
}
// ****************************************************************************************************
// Others
// ****************************************************************************************************
Unit getUnit(double value)
// ***********************
{
return (int)rint(value / RESOLUTION);
}
double getValue(const Unit& unit)
// ******************************
{
return (unit * RESOLUTION);
}
string getValueString(const Unit& unit)
// ************************************
{
if (unit == 0) return "0";
char buffer[32];
unsigned length = sprintf(buffer, "%ld", abs(unit));
if (length <= PRECISION) {
unsigned offset = PRECISION - length + 1;
for (int i = length; 0 <= i; i--) buffer[i + offset] = buffer[i];
for (unsigned i = 0; i < offset; i++) buffer[i] = '0';
length += offset;
}
for (unsigned i = 0; i <= PRECISION; i++)
buffer[length - i + 1] = buffer[length - i];
buffer[length - PRECISION] = '.';
while (buffer[length] == '0') buffer[length--] = '\0';
if (buffer[length] == '.') buffer[length--] = '\0';
if (0 < unit)
return buffer;
else
return "-" + string(buffer);
}
} // End of Hurricane namespace.
bool Scan(const string& s, Hurricane::Unit& unit)
// ***********************************
{
double d;
if (Scan(s, d)) {
unit = Hurricane::getUnit(d);
return true;
}
return false;
}
// ****************************************************************************************************
// Copyright (c) BULL S.A. 2000-2004, All Rights Reserved
// ****************************************************************************************************

View File

@ -19,7 +19,7 @@ namespace Hurricane {
// Vertical implementation // Vertical implementation
// **************************************************************************************************** // ****************************************************************************************************
Vertical::Vertical(Net* net, Component* source, Component* target, const Layer* layer, const Unit& x, const Unit& width, const Unit& dySource, const Unit& dyTarget) Vertical::Vertical(Net* net, Component* source, Component* target, const Layer* layer, const DbU::Unit& x, const DbU::Unit& width, const DbU::Unit& dySource, const DbU::Unit& dyTarget)
// **************************************************************************************************** // ****************************************************************************************************
: Inherit(net, source, target, layer, width), : Inherit(net, source, target, layer, width),
_x(x), _x(x),
@ -28,7 +28,7 @@ Vertical::Vertical(Net* net, Component* source, Component* target, const Layer*
{ {
} }
Vertical* Vertical::create(Net* net, const Layer* layer, const Unit& x, const Unit& width, const Unit& dySource, const Unit& dyTarget) Vertical* Vertical::create(Net* net, const Layer* layer, const DbU::Unit& x, const DbU::Unit& width, const DbU::Unit& dySource, const DbU::Unit& dyTarget)
// **************************************************************************************************** // ****************************************************************************************************
{ {
if (!net) if (!net)
@ -41,7 +41,7 @@ Vertical* Vertical::create(Net* net, const Layer* layer, const Unit& x, const Un
return vertical; return vertical;
} }
Vertical* Vertical::create(Component* source, Component* target, const Layer* layer, const Unit& x, const Unit& width, const Unit& dySource, const Unit& dyTarget) Vertical* Vertical::create(Component* source, Component* target, const Layer* layer, const DbU::Unit& x, const DbU::Unit& width, const DbU::Unit& dySource, const DbU::Unit& dyTarget)
// **************************************************************************************************** // ****************************************************************************************************
{ {
if (!source) if (!source)
@ -61,8 +61,8 @@ Vertical* Vertical::create(Component* source, Component* target, const Layer* la
Box Vertical::getBoundingBox() const Box Vertical::getBoundingBox() const
// ********************************* // *********************************
{ {
Unit size = getLayer()->getExtentionWidth() + getHalfWidth(); DbU::Unit size = getLayer()->getExtentionWidth() + getHalfWidth();
Unit extention = getLayer()->getExtentionCap (); DbU::Unit extention = getLayer()->getExtentionCap ();
return Box(_x, getSourceY(), _x, getTargetY()).inflate(size, extention); return Box(_x, getSourceY(), _x, getTargetY()).inflate(size, extention);
} }
@ -73,8 +73,8 @@ Box Vertical::getBoundingBox(const BasicLayer* basicLayer) const
if (!getLayer()->contains(basicLayer)) return Box(); if (!getLayer()->contains(basicLayer)) return Box();
Unit size = getLayer()->getExtentionWidth(basicLayer) + getHalfWidth(); DbU::Unit size = getLayer()->getExtentionWidth(basicLayer) + getHalfWidth();
Unit extention = getLayer()->getExtentionCap (basicLayer); DbU::Unit extention = getLayer()->getExtentionCap (basicLayer);
//cerr << this << " on: " << basicLayer << " " << size << " " << extention << endl; //cerr << this << " on: " << basicLayer << " " << size << " " << extention << endl;
//cerr << Box(_x, getSourceY(), _x, getTargetY()).inflate(size, extention) << endl; //cerr << Box(_x, getSourceY(), _x, getTargetY()).inflate(size, extention) << endl;
@ -82,21 +82,21 @@ Box Vertical::getBoundingBox(const BasicLayer* basicLayer) const
return Box(_x, getSourceY(), _x, getTargetY()).inflate(size, extention); return Box(_x, getSourceY(), _x, getTargetY()).inflate(size, extention);
} }
Unit Vertical::getSourceY() const DbU::Unit Vertical::getSourceY() const
// ****************************** // ******************************
{ {
Component* source = getSource(); Component* source = getSource();
return (source) ? source->getY() + _dySource : _dySource; return (source) ? source->getY() + _dySource : _dySource;
} }
Unit Vertical::getTargetY() const DbU::Unit Vertical::getTargetY() const
// ****************************** // ******************************
{ {
Component* target = getTarget(); Component* target = getTarget();
return (target) ? target->getY() + _dyTarget : _dyTarget; return (target) ? target->getY() + _dyTarget : _dyTarget;
} }
Unit Vertical::getLength() const DbU::Unit Vertical::getLength() const
// ***************************** // *****************************
{ {
return abs(getSourceY() - getTargetY()); return abs(getSourceY() - getTargetY());
@ -108,7 +108,7 @@ Point Vertical::getCenter() const
return Point ( getX(), (getSourceY()+getTargetY())/2 ); return Point ( getX(), (getSourceY()+getTargetY())/2 );
} }
void Vertical::translate(const Unit& dx, const Unit& dy) void Vertical::translate(const DbU::Unit& dx, const DbU::Unit& dy)
// ***************************************************** // *****************************************************
{ {
if (dx != 0) { if (dx != 0) {
@ -117,7 +117,7 @@ void Vertical::translate(const Unit& dx, const Unit& dy)
} }
} }
void Vertical::setX(const Unit& x) void Vertical::setX(const DbU::Unit& x)
// ******************************* // *******************************
{ {
if (x != _x) { if (x != _x) {
@ -126,7 +126,7 @@ void Vertical::setX(const Unit& x)
} }
} }
void Vertical::setDySource(const Unit& dySource) void Vertical::setDySource(const DbU::Unit& dySource)
// ********************************************* // *********************************************
{ {
if (dySource != _dySource) { if (dySource != _dySource) {
@ -135,7 +135,7 @@ void Vertical::setDySource(const Unit& dySource)
} }
} }
void Vertical::setDyTarget(const Unit& dyTarget) void Vertical::setDyTarget(const DbU::Unit& dyTarget)
// ********************************************* // *********************************************
{ {
if (dyTarget != _dyTarget) { if (dyTarget != _dyTarget) {
@ -144,7 +144,7 @@ void Vertical::setDyTarget(const Unit& dyTarget)
} }
} }
void Vertical::translate(const Unit& dx) void Vertical::translate(const DbU::Unit& dx)
// ************************************* // *************************************
{ {
if (dx != 0) { if (dx != 0) {

View File

@ -146,13 +146,13 @@ namespace Hurricane {
{ return getCollection(_basicLayers); } { return getCollection(_basicLayers); }
Unit ViaLayer::getEnclosure () const DbU::Unit ViaLayer::getEnclosure () const
{ {
return _maximalEnclosure; return _maximalEnclosure;
} }
Unit ViaLayer::getEnclosure ( const BasicLayer* layer ) const DbU::Unit ViaLayer::getEnclosure ( const BasicLayer* layer ) const
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( layer == _basicLayers[i] ) return _enclosures[i]; if ( layer == _basicLayers[i] ) return _enclosures[i];
@ -162,7 +162,7 @@ namespace Hurricane {
} }
void ViaLayer::setEnclosure ( const BasicLayer* layer, Unit enclosure ) void ViaLayer::setEnclosure ( const BasicLayer* layer, DbU::Unit enclosure )
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( layer == _basicLayers[i] ) { if ( layer == _basicLayers[i] ) {

View File

@ -75,8 +75,8 @@ namespace Hurricane {
, const Name& name , const Name& name
, const Material& material , const Material& material
, unsigned extractNumber , unsigned extractNumber
, const Unit& minimalSize = 0 , const DbU::Unit& minimalSize = 0
, const Unit& minimalSpacing = 0 , const DbU::Unit& minimalSpacing = 0
); );
// Accessors. // Accessors.
inline const Material& getMaterial () const; inline const Material& getMaterial () const;
@ -111,8 +111,8 @@ namespace Hurricane {
, const Name& name , const Name& name
, const Material& material , const Material& material
, unsigned extractNumber , unsigned extractNumber
, const Unit& minimalSize = 0 , const DbU::Unit& minimalSize = 0
, const Unit& minimalSpacing = 0 , const DbU::Unit& minimalSpacing = 0
); );
virtual void _postCreate (); virtual void _postCreate ();
virtual void _preDestroy (); virtual void _preDestroy ();

View File

@ -24,19 +24,19 @@ class Box {
// ********** // **********
private: Unit _xMin; private: DbU::Unit _xMin;
private: Unit _yMin; private: DbU::Unit _yMin;
private: Unit _xMax; private: DbU::Unit _xMax;
private: Unit _yMax; private: DbU::Unit _yMax;
// constructors // constructors
// ************ // ************
public: Box(); public: Box();
public: Box(const Unit& x, const Unit& y); public: Box(const DbU::Unit& x, const DbU::Unit& y);
public: Box(const Point& point); public: Box(const Point& point);
public: Box(const Unit& x1, const Unit& y1, const Unit& x2, const Unit& y2); public: Box(const DbU::Unit& x1, const DbU::Unit& y1, const DbU::Unit& x2, const DbU::Unit& y2);
public: Box(const Point& point1, const Point& point2); public: Box(const Point& point1, const Point& point2);
public: Box(const Box& box); public: Box(const Box& box);
@ -52,25 +52,25 @@ class Box {
// Accessors // Accessors
// ********* // *********
public: const Unit& getXMin() const {return _xMin;}; public: const DbU::Unit& getXMin() const {return _xMin;};
public: const Unit& getYMin() const {return _yMin;}; public: const DbU::Unit& getYMin() const {return _yMin;};
public: const Unit& getXMax() const {return _xMax;}; public: const DbU::Unit& getXMax() const {return _xMax;};
public: const Unit& getYMax() const {return _yMax;}; public: const DbU::Unit& getYMax() const {return _yMax;};
public: Unit getXCenter() const {return ((_xMin + _xMax) / 2);}; public: DbU::Unit getXCenter() const {return ((_xMin + _xMax) / 2);};
public: Unit getYCenter() const {return ((_yMin + _yMax) / 2);}; public: DbU::Unit getYCenter() const {return ((_yMin + _yMax) / 2);};
public: Point getCenter() const {return Point(getXCenter(), getYCenter());}; public: Point getCenter() const {return Point(getXCenter(), getYCenter());};
public: Unit getWidth() const {return (_xMax - _xMin);}; public: DbU::Unit getWidth() const {return (_xMax - _xMin);};
public: Unit getHalfWidth() const {return (getWidth() / 2);}; public: DbU::Unit getHalfWidth() const {return (getWidth() / 2);};
public: Unit getHeight() const {return (_yMax - _yMin);}; public: DbU::Unit getHeight() const {return (_yMax - _yMin);};
public: Unit getHalfHeight() const {return (getHeight() / 2);}; public: DbU::Unit getHalfHeight() const {return (getHeight() / 2);};
public: Box getUnion(const Box& box) const; public: Box getUnion(const Box& box) const;
public: Box getIntersection(const Box& box) const; public: Box getIntersection(const Box& box) const;
public: Unit manhattanDistance(const Point& pt) const; public: DbU::Unit manhattanDistance(const Point& pt) const;
public: Unit manhattanDistance(const Box& box) const; public: DbU::Unit manhattanDistance(const Box& box) const;
// Predicates // Predicates
// ********** // **********
@ -79,7 +79,7 @@ class Box {
public: bool isFlat() const; public: bool isFlat() const;
public: bool isPonctual() const; public: bool isPonctual() const;
public: bool contains(const Unit& x, const Unit& y) const; public: bool contains(const DbU::Unit& x, const DbU::Unit& y) const;
public: bool contains(const Point& point) const; public: bool contains(const Point& point) const;
public: bool contains(const Box& box) const; public: bool contains(const Box& box) const;
@ -92,18 +92,18 @@ class Box {
public: Box& makeEmpty(); public: Box& makeEmpty();
public: Box& inflate(const Unit& d); public: Box& inflate(const DbU::Unit& d);
public: Box& inflate(const Unit& dx, const Unit& dy); public: Box& inflate(const DbU::Unit& dx, const DbU::Unit& dy);
public: Box& inflate(const Unit& dxMin, const Unit& dyMin, const Unit& dxMax, const Unit& dyMax); public: Box& inflate(const DbU::Unit& dxMin, const DbU::Unit& dyMin, const DbU::Unit& dxMax, const DbU::Unit& dyMax);
public: Box getInflated(const Unit& d) const; public: Box getInflated(const DbU::Unit& d) const;
public: Box& shrinkByFactor(double factor); // 0 <= factor <= 1 public: Box& shrinkByFactor(double factor); // 0 <= factor <= 1
public: Box& merge(const Unit& x, const Unit& y); public: Box& merge(const DbU::Unit& x, const DbU::Unit& y);
public: Box& merge(const Point& point); public: Box& merge(const Point& point);
public: Box& merge(const Unit& x1, const Unit& y1, const Unit& x2, const Unit& y2); public: Box& merge(const DbU::Unit& x1, const DbU::Unit& y1, const DbU::Unit& x2, const DbU::Unit& y2);
public: Box& merge(const Box& box); public: Box& merge(const Box& box);
public: Box& translate(const Unit& dx, const Unit& dy); public: Box& translate(const DbU::Unit& dx, const DbU::Unit& dy);
// Others // Others
// ****** // ******

View File

@ -72,8 +72,8 @@ class Component : public Go {
public: Rubber* getRubber() const {return _rubber;}; public: Rubber* getRubber() const {return _rubber;};
public: Hook* getBodyHook() {return &_bodyHook;}; public: Hook* getBodyHook() {return &_bodyHook;};
public: virtual Hooks getHooks() const; public: virtual Hooks getHooks() const;
public: virtual Unit getX() const = 0; public: virtual DbU::Unit getX() const = 0;
public: virtual Unit getY() const = 0; public: virtual DbU::Unit getY() const = 0;
public: virtual Point getPosition() const {return Point(getX(), getY());}; public: virtual Point getPosition() const {return Point(getX(), getY());};
public: virtual Point getCenter() const {return getPosition();}; public: virtual Point getCenter() const {return getPosition();};
public: virtual const Layer* getLayer() const = 0; public: virtual const Layer* getLayer() const = 0;

View File

@ -48,55 +48,80 @@ class Contact : public Component {
private: AnchorHook _anchorHook; private: AnchorHook _anchorHook;
private: const Layer* _layer; private: const Layer* _layer;
private: Unit _dx; private: DbU::Unit _dx;
private: Unit _dy; private: DbU::Unit _dy;
protected: Unit _width; protected: DbU::Unit _width;
protected: Unit _height; protected: DbU::Unit _height;
// Constructors // Constructors
// ************ // ************
protected: Contact(Net* net, const Layer* layer, const Unit& x, const Unit& y, const Unit& width = 0, const Unit& height = 0); protected: Contact( Net* net
protected: Contact(Net* net, Component* anchor, const Layer* layer, const Unit& dx, const Unit& dy, const Unit& width = 0, const Unit& height = 0); , const Layer* layer
, const DbU::Unit& x
, const DbU::Unit& y
, const DbU::Unit& width = 0
, const DbU::Unit& height = 0
);
protected: Contact( Net* net
, Component* anchor
, const Layer* layer
, const DbU::Unit& dx
, const DbU::Unit& dy
, const DbU::Unit& width = 0
, const DbU::Unit& height = 0
);
public: static Contact* create(Net* net, const Layer* layer, const Unit& x, const Unit& y, const Unit& width = 0, const Unit& height = 0); public: static Contact* create( Net* net
public: static Contact* create(Component* anchor, const Layer* layer, const Unit& dx, const Unit& dy, const Unit& width = 0, const Unit& height = 0); , const Layer* layer
, const DbU::Unit& x
, const DbU::Unit& y
, const DbU::Unit& width = 0
, const DbU::Unit& height = 0
);
public: static Contact* create( Component* anchor
, const Layer* layer
, const DbU::Unit& dx
, const DbU::Unit& dy
, const DbU::Unit& width = 0
, const DbU::Unit& height = 0
);
// Accessors // Accessors
// ********* // *********
public: virtual Hooks getHooks() const; public: virtual Hooks getHooks() const;
public: virtual Unit getX() const; public: virtual DbU::Unit getX() const;
public: virtual Unit getY() const; public: virtual DbU::Unit getY() const;
public: virtual Point getPosition() const; public: virtual Point getPosition() const;
public: virtual Box getBoundingBox() const; public: virtual Box getBoundingBox() const;
public: virtual const Layer* getLayer() const {return _layer;}; public: virtual const Layer* getLayer() const {return _layer;};
public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const; public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const;
public: Hook* getAnchorHook() {return &_anchorHook;}; public: Hook* getAnchorHook() {return &_anchorHook;};
public: Component* getAnchor() const; public: Component* getAnchor() const;
public: const Unit& getDx() const {return _dx;}; public: const DbU::Unit& getDx() const {return _dx;};
public: const Unit& getDy() const {return _dy;}; public: const DbU::Unit& getDy() const {return _dy;};
public: const Unit& getWidth() const {return _width;}; public: const DbU::Unit& getWidth() const {return _width;};
public: Unit getHalfWidth() const {return (_width / 2);}; public: DbU::Unit getHalfWidth() const {return (_width / 2);};
public: const Unit& getHeight() const {return _height;}; public: const DbU::Unit& getHeight() const {return _height;};
public: Unit getHalfHeight() const {return (_height / 2);}; public: DbU::Unit getHalfHeight() const {return (_height / 2);};
// Updators // Updators
// ******** // ********
public: virtual void translate(const Unit& dx, const Unit& dy); public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy);
public: void setLayer(const Layer* layer); public: void setLayer(const Layer* layer);
public: void setWidth(const Unit& width); public: void setWidth(const DbU::Unit& width);
public: void setHeight(const Unit& height); public: void setHeight(const DbU::Unit& height);
public: void setSizes(const Unit& width, const Unit& height); public: void setSizes(const DbU::Unit& width, const DbU::Unit& height);
public: void setX(const Unit& x); public: void setX(const DbU::Unit& x);
public: void setY(const Unit& y); public: void setY(const DbU::Unit& y);
public: void setPosition(const Unit& x, const Unit& y); public: void setPosition(const DbU::Unit& x, const DbU::Unit& y);
public: void setPosition(const Point& position); public: void setPosition(const Point& position);
public: void setDx(const Unit& dx); public: void setDx(const DbU::Unit& dx);
public: void setDy(const Unit& dy); public: void setDy(const DbU::Unit& dy);
public: void setOffset(const Unit& dx, const Unit& dy); public: void setOffset(const DbU::Unit& dx, const DbU::Unit& dy);
// Others // Others
// ****** // ******

View File

@ -77,10 +77,10 @@ namespace Hurricane {
); );
// Accessors. // Accessors.
virtual BasicLayers getBasicLayers () const; virtual BasicLayers getBasicLayers () const;
virtual Unit getEnclosure () const; virtual DbU::Unit getEnclosure () const;
virtual Unit getEnclosure ( const BasicLayer* layer ) const; virtual DbU::Unit getEnclosure ( const BasicLayer* layer ) const;
// Updators. // Updators.
virtual void setEnclosure ( const BasicLayer* layer, Unit enclosure ); virtual void setEnclosure ( const BasicLayer* layer, DbU::Unit enclosure );
// Hurricane Managment. // Hurricane Managment.
virtual string _getTypeName () const; virtual string _getTypeName () const;
virtual string _getString () const; virtual string _getString () const;
@ -89,8 +89,8 @@ namespace Hurricane {
private: private:
// Internal: Attributes // Internal: Attributes
vector<BasicLayer*> _basicLayers; vector<BasicLayer*> _basicLayers;
vector<Unit> _enclosures; vector<DbU::Unit> _enclosures;
Unit _maximalEnclosure; DbU::Unit _maximalEnclosure;
protected: protected:
// Internal: Constructors & Destructors. // Internal: Constructors & Destructors.

View File

@ -47,7 +47,7 @@ class DRCError : public Marker {
// Updators // Updators
// ******** // ********
public: virtual void translate(const Unit& dx, const Unit& dy); public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy);
// Others // Others
// ****** // ******

View File

@ -8,7 +8,7 @@
#define HURRICANE_DATA_BASE #define HURRICANE_DATA_BASE
#include "hurricane/DBo.h" #include "hurricane/DBo.h"
#include "hurricane/Unit.h" #include "hurricane/DbU.h"
namespace Hurricane { namespace Hurricane {

View File

@ -0,0 +1,99 @@
// -*- C++ -*-
//
// This file is part of the Hurricane Software.
// Copyright (c) BULL S.A. 2000-2004, All Rights Reserved
//
// ===================================================================
//
// $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 |
// | |
// | Author : Remy Escassut |
// | E-mail : Jean-Paul.Chaput@lip6.fr |
// | =============================================================== |
// | C++ Header : "./DbU.h" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
# ifndef __HURRICANE_DBU__
# define __HURRICANE_DBU__
# include <cmath>
# include "hurricane/Commons.h"
namespace Hurricane {
class DbU {
public:
typedef long Unit;
public:
enum StringMode { Db = 1
, Real = 2
, Symbolic = 4
};
public:
// User to DB Converters.
static inline Unit db ( long value );
static inline Unit real ( double value );
static inline Unit lambda ( double value );
// Precision & Resolution Managment.
static unsigned int getPrecision ();
static unsigned int getMaximalPrecision ();
static double getResolution ();
static void setPrecision ( unsigned int precision );
// Lamba Managment.
static void setUnitsPerLambda ( double unitsPerLambda );
static double getUnitsPerLambda ();
// Grid Managment.
//static void setGridStep ( const Unit& gridStep );
//static const Unit getGridStep ();
//static Unit getOnGridUnit ( const DbU::Unit& unit, int s=0 );
//static bool isOnGrid ( const Unit& unit, int n=1 );
// Conversions.
static inline long getDb ( Unit u );
static inline double getReal ( Unit u );
static inline double getLambda ( Unit u );
static string getValueString ( Unit u );
inline void setStringMode ( unsigned int mode );
public:
// Static Attributes: constants.
static const Unit Min;
static const Unit Max;
private:
// Internal: Static Attributes.
static const unsigned int _maximalPrecision;
static unsigned int _precision;
static double _resolution;
static double _unitsPerLambda;
static unsigned int _stringMode;
};
// Inline Functions.
inline DbU::Unit DbU::db ( long value ) { return value; }
inline DbU::Unit DbU::real ( double value ) { return (long)rint( value/_resolution ); }
inline DbU::Unit DbU::lambda ( double value ) { return real(value*_unitsPerLambda); }
inline long DbU::getDb ( DbU::Unit u ) { return u; }
inline double DbU::getReal ( DbU::Unit u ) { return _resolution*(double)u; }
inline double DbU::getLambda ( DbU::Unit u ) { return getReal(u)/_unitsPerLambda; }
} // End of Hurricane namespace.
# endif // __HURRICANE_DBU__

View File

@ -75,13 +75,13 @@ namespace Hurricane {
); );
// Accessors. // Accessors.
virtual BasicLayers getBasicLayers () const; virtual BasicLayers getBasicLayers () const;
virtual Unit getExtentionCap () const; virtual DbU::Unit getExtentionCap () const;
virtual Unit getExtentionWidth () const; virtual DbU::Unit getExtentionWidth () const;
virtual Unit getExtentionCap ( const BasicLayer* layer ) const; virtual DbU::Unit getExtentionCap ( const BasicLayer* layer ) const;
virtual Unit getExtentionWidth ( const BasicLayer* layer ) const; virtual DbU::Unit getExtentionWidth ( const BasicLayer* layer ) const;
// Updators. // Updators.
virtual void setExtentionCap ( const BasicLayer* layer, Unit cap ); virtual void setExtentionCap ( const BasicLayer* layer, DbU::Unit cap );
virtual void setExtentionWidth ( const BasicLayer* layer, Unit width ); virtual void setExtentionWidth ( const BasicLayer* layer, DbU::Unit width );
// Hurricane Managment. // Hurricane Managment.
virtual string _getTypeName () const; virtual string _getTypeName () const;
virtual string _getString () const; virtual string _getString () const;
@ -90,10 +90,10 @@ namespace Hurricane {
private: private:
// Internal: Attributes // Internal: Attributes
vector<BasicLayer*> _basicLayers; vector<BasicLayer*> _basicLayers;
vector<Unit> _extentionCaps; vector<DbU::Unit> _extentionCaps;
vector<Unit> _extentionWidths; vector<DbU::Unit> _extentionWidths;
Unit _maximalExtentionCap; DbU::Unit _maximalExtentionCap;
Unit _maximalExtentionWidth; DbU::Unit _maximalExtentionWidth;
protected: protected:
// Internal: Constructors & Destructors. // Internal: Constructors & Destructors.

View File

@ -63,7 +63,7 @@ class Go : public Entity {
public: virtual void invalidate(bool propagateFlag = true); public: virtual void invalidate(bool propagateFlag = true);
// implementation located on file UpdateSession.cpp to access local variables // implementation located on file UpdateSession.cpp to access local variables
public: virtual void translate(const Unit& dx, const Unit& dy) = 0; public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy) = 0;
// Others // Others
// ****** // ******

View File

@ -31,42 +31,62 @@ class Horizontal : public Segment {
// Attributes // Attributes
// ********** // **********
private: Unit _y; private: DbU::Unit _y;
private: Unit _dxSource; private: DbU::Unit _dxSource;
private: Unit _dxTarget; private: DbU::Unit _dxTarget;
// Constructors // Constructors
// ************ // ************
protected: Horizontal(Net* net, Component* source, Component* target, const Layer* layer, const Unit& y, const Unit& width = 0, const Unit& dxSource = 0, const Unit& dxTarget = 0); protected: Horizontal ( Net* net
, Component* source
public: static Horizontal* create(Net* net, const Layer* layer, const Unit& y, const Unit& width = 0, const Unit& dxSource = 0, const Unit& dxTarget = 0); , Component* target
public: static Horizontal* create(Component* source, Component* target, const Layer* layer, const Unit& y, const Unit& width = 0, const Unit& dxSource = 0, const Unit& dxTarget = 0); , const Layer* layer
, const DbU::Unit& y
, const DbU::Unit& width = 0
, const DbU::Unit& dxSource = 0
, const DbU::Unit& dxTarget = 0
);
public: static Horizontal* create ( Net* net
, const Layer* layer
, const DbU::Unit& y
, const DbU::Unit& width = 0
, const DbU::Unit& dxSource = 0
, const DbU::Unit& dxTarget = 0
);
public: static Horizontal* create ( Component* source
, Component* target
, const Layer* layer
, const DbU::Unit& y
, const DbU::Unit& width = 0
, const DbU::Unit& dxSource = 0
, const DbU::Unit& dxTarget = 0
);
// Accessors // Accessors
// ********* // *********
public: virtual Unit getY() const {return _y;}; public: virtual DbU::Unit getY() const {return _y;};
public: virtual Point getCenter() const; public: virtual Point getCenter() const;
public: virtual Box getBoundingBox() const; public: virtual Box getBoundingBox() const;
public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const; public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const;
public: virtual Unit getSourceX() const; public: virtual DbU::Unit getSourceX() const;
public: virtual Unit getSourceY() const {return getY();}; public: virtual DbU::Unit getSourceY() const {return getY();};
public: virtual Unit getTargetX() const; public: virtual DbU::Unit getTargetX() const;
public: virtual Unit getTargetY() const {return getY();}; public: virtual DbU::Unit getTargetY() const {return getY();};
public: virtual Unit getLength() const; public: virtual DbU::Unit getLength() const;
public: const Unit& getDxSource() const {return _dxSource;}; public: const DbU::Unit& getDxSource() const {return _dxSource;};
public: const Unit& getDxTarget() const {return _dxTarget;}; public: const DbU::Unit& getDxTarget() const {return _dxTarget;};
// Updators // Updators
// ******** // ********
public: virtual void translate(const Unit& dx, const Unit& dy); public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy);
public: void setY(const Unit& y); public: void setY(const DbU::Unit& y);
public: void setDxSource(const Unit& dxSource); public: void setDxSource(const DbU::Unit& dxSource);
public: void setDxTarget(const Unit& dxSource); public: void setDxTarget(const DbU::Unit& dxSource);
public: void translate(const Unit& dy); public: void translate(const DbU::Unit& dy);
// Others // Others
// ****** // ******

View File

@ -142,7 +142,7 @@ class Instance : public Go {
public: virtual void materialize(); public: virtual void materialize();
public: virtual void unmaterialize(); public: virtual void unmaterialize();
public: virtual void invalidate(bool propagateFlag = true); public: virtual void invalidate(bool propagateFlag = true);
public: virtual void translate(const Unit& dx, const Unit& dy); public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy);
public: void setName(const Name& name); public: void setName(const Name& name);
public: void setTransformation(const Transformation& transformation); public: void setTransformation(const Transformation& transformation);

View File

@ -7,7 +7,7 @@
#ifndef HURRICANE_INTERVAL #ifndef HURRICANE_INTERVAL
#define HURRICANE_INTERVAL #define HURRICANE_INTERVAL
#include "hurricane/Unit.h" #include "hurricane/DbU.h"
namespace Hurricane { namespace Hurricane {
@ -23,15 +23,15 @@ class Interval {
// Attributes // Attributes
// ********** // **********
private: Unit _vMin; private: DbU::Unit _vMin;
private: Unit _vMax; private: DbU::Unit _vMax;
// Constructors // Constructors
// ************ // ************
public: Interval(bool makeEmpty=true); public: Interval(bool makeEmpty=true);
public: Interval(const Unit& v); public: Interval(const DbU::Unit& v);
public: Interval(const Unit& v1, const Unit& v2); public: Interval(const DbU::Unit& v1, const DbU::Unit& v2);
public: Interval(const Interval& interval); public: Interval(const Interval& interval);
// Operators // Operators
@ -45,13 +45,13 @@ class Interval {
// Accessors // Accessors
// ********* // *********
public: const Unit& getVMin() const {return _vMin;}; public: const DbU::Unit& getVMin() const {return _vMin;};
public: const Unit& getVMax() const {return _vMax;}; public: const DbU::Unit& getVMax() const {return _vMax;};
public: Unit& getVMin() {return _vMin;}; public: DbU::Unit& getVMin() {return _vMin;};
public: Unit& getVMax() {return _vMax;}; public: DbU::Unit& getVMax() {return _vMax;};
public: Unit getCenter() const {return ((_vMin + _vMax) / 2);}; public: DbU::Unit getCenter() const {return ((_vMin + _vMax) / 2);};
public: Unit getSize() const {return (_vMax - _vMin);}; public: DbU::Unit getSize() const {return (_vMax - _vMin);};
public: Unit getHalfSize() const {return (getSize() / 2);}; public: DbU::Unit getHalfSize() const {return (getSize() / 2);};
public: Interval getUnion(const Interval& interval) const; public: Interval getUnion(const Interval& interval) const;
public: Interval getIntersection(const Interval& interval) const; public: Interval getIntersection(const Interval& interval) const;
@ -60,7 +60,7 @@ class Interval {
public: bool isEmpty() const; public: bool isEmpty() const;
public: bool isPonctual() const; public: bool isPonctual() const;
public: bool contains(const Unit& v) const; public: bool contains(const DbU::Unit& v) const;
public: bool contains(const Interval& interval) const; public: bool contains(const Interval& interval) const;
public: bool intersect(const Interval& interval) const; public: bool intersect(const Interval& interval) const;
public: bool inferior(const Interval& interval, bool strict=true) const; public: bool inferior(const Interval& interval, bool strict=true) const;
@ -71,13 +71,13 @@ class Interval {
// ******** // ********
public: Interval& makeEmpty(); public: Interval& makeEmpty();
public: Interval& inflate(const Unit& dv); public: Interval& inflate(const DbU::Unit& dv);
public: Interval& inflate(const Unit& dvMin, const Unit& dvMax); public: Interval& inflate(const DbU::Unit& dvMin, const DbU::Unit& dvMax);
public: Interval& merge(const Unit& v); public: Interval& merge(const DbU::Unit& v);
public: Interval& merge(const Interval& interval); public: Interval& merge(const Interval& interval);
public: Interval& intersection(const Unit& vMin, const Unit& vMax); public: Interval& intersection(const DbU::Unit& vMin, const DbU::Unit& vMax);
public: Interval& intersection(const Interval& interval); public: Interval& intersection(const Interval& interval);
public: Interval& translate(const Unit& dv); public: Interval& translate(const DbU::Unit& dv);
// Others // Others
// ****** // ******

View File

@ -29,7 +29,7 @@
# include "hurricane/DBo.h" # include "hurricane/DBo.h"
# include "hurricane/Layers.h" # include "hurricane/Layers.h"
# include "hurricane/Unit.h" # include "hurricane/DbU.h"
# include "hurricane/BasicLayers.h" # include "hurricane/BasicLayers.h"
@ -49,29 +49,29 @@ namespace Hurricane {
inline const Name& getName () const; inline const Name& getName () const;
inline const Mask& getMask () const; inline const Mask& getMask () const;
inline const Mask& getExtractMask () const; inline const Mask& getExtractMask () const;
inline const Unit& getMinimalSize () const; inline const DbU::Unit& getMinimalSize () const;
inline const Unit& getMinimalSpacing () const; inline const DbU::Unit& getMinimalSpacing () const;
inline Unit getPitch () const; inline DbU::Unit getPitch () const;
virtual BasicLayers getBasicLayers () const = 0; virtual BasicLayers getBasicLayers () const = 0;
virtual Layer* getConnectorLayer () const; virtual Layer* getConnectorLayer () const;
virtual Layer* getObstructionLayer () const; virtual Layer* getObstructionLayer () const;
virtual Unit getEnclosure () const; virtual DbU::Unit getEnclosure () const;
virtual Unit getExtentionCap () const; virtual DbU::Unit getExtentionCap () const;
virtual Unit getExtentionWidth () const; virtual DbU::Unit getExtentionWidth () const;
virtual Unit getEnclosure ( const BasicLayer* layer ) const; virtual DbU::Unit getEnclosure ( const BasicLayer* layer ) const;
virtual Unit getExtentionCap ( const BasicLayer* layer ) const; virtual DbU::Unit getExtentionCap ( const BasicLayer* layer ) const;
virtual Unit getExtentionWidth ( const BasicLayer* layer ) const; virtual DbU::Unit getExtentionWidth ( const BasicLayer* layer ) const;
// Predicates // Predicates
bool contains ( const Layer* layer ) const; bool contains ( const Layer* layer ) const;
bool intersect ( const Layer* layer ) const; bool intersect ( const Layer* layer ) const;
// Updators // Updators
void setName ( const Name& name ); void setName ( const Name& name );
void setMinimalSize ( const Unit& minimalSize ); void setMinimalSize ( const DbU::Unit& minimalSize );
void setMinimalSpacing ( const Unit& minimalSpacing ); void setMinimalSpacing ( const DbU::Unit& minimalSpacing );
void setPitch ( const Unit& pitch ); void setPitch ( const DbU::Unit& pitch );
virtual void setEnclosure ( const BasicLayer* layer, Unit ); virtual void setEnclosure ( const BasicLayer* layer, DbU::Unit );
virtual void setExtentionCap ( const BasicLayer* layer, Unit ); virtual void setExtentionCap ( const BasicLayer* layer, DbU::Unit );
virtual void setExtentionWidth ( const BasicLayer* layer, Unit ); virtual void setExtentionWidth ( const BasicLayer* layer, DbU::Unit );
// Hurricane Managment. // Hurricane Managment.
virtual string _getString () const; virtual string _getString () const;
virtual Record* _getRecord () const; virtual Record* _getRecord () const;
@ -87,18 +87,18 @@ namespace Hurricane {
Name _name; Name _name;
Mask _mask; Mask _mask;
Mask _extractMask; Mask _extractMask;
Unit _minimalSize; DbU::Unit _minimalSize;
Unit _minimalSpacing; DbU::Unit _minimalSpacing;
Unit _pitch; DbU::Unit _pitch;
Layer* _nextOfTechnologyLayerMap; Layer* _nextOfTechnologyLayerMap;
protected: protected:
// Internal: Constructors & Destructors. // Internal: Constructors & Destructors.
Layer ( Technology* technology Layer ( Technology* technology
, const Name& name , const Name& name
, const Unit& minimalSize = 0 , const DbU::Unit& minimalSize = 0
, const Unit& minimalSpacing = 0 , const DbU::Unit& minimalSpacing = 0
, const Unit& pitch = 0 , const DbU::Unit& pitch = 0
); );
virtual void _postCreate (); virtual void _postCreate ();
virtual void _preDestroy (); virtual void _preDestroy ();
@ -110,9 +110,9 @@ namespace Hurricane {
inline const Name& Layer::getName () const { return _name; } inline const Name& Layer::getName () const { return _name; }
inline const Layer::Mask& Layer::getMask () const { return _mask; } inline const Layer::Mask& Layer::getMask () const { return _mask; }
inline const Layer::Mask& Layer::getExtractMask () const { return _extractMask; } inline const Layer::Mask& Layer::getExtractMask () const { return _extractMask; }
inline const Unit& Layer::getMinimalSize () const { return _minimalSize; } inline const DbU::Unit& Layer::getMinimalSize () const { return _minimalSize; }
inline const Unit& Layer::getMinimalSpacing () const { return _minimalSpacing; } inline const DbU::Unit& Layer::getMinimalSpacing () const { return _minimalSpacing; }
inline Unit Layer::getPitch () const { return (_pitch==0?(_minimalSize + _minimalSpacing):_pitch); } inline DbU::Unit Layer::getPitch () const { return (!_pitch?(_minimalSize + _minimalSpacing):_pitch); }
inline Layer* Layer::_getNextOfTechnologyLayerMap () const { return _nextOfTechnologyLayerMap; } inline Layer* Layer::_getNextOfTechnologyLayerMap () const { return _nextOfTechnologyLayerMap; }
inline void Layer::_setMask ( const Mask& mask ) { _mask = mask; } inline void Layer::_setMask ( const Mask& mask ) { _mask = mask; }
inline void Layer::_setExtractMask ( const Mask& extractMask ) { _extractMask = extractMask; } inline void Layer::_setExtractMask ( const Mask& extractMask ) { _extractMask = extractMask; }

View File

@ -143,8 +143,8 @@ class Net : public Entity {
public: const Type& getType() const {return _type;}; public: const Type& getType() const {return _type;};
public: const Direction& getDirection() const {return _direction;}; public: const Direction& getDirection() const {return _direction;};
public: const Point& getPosition() const {return _position;}; public: const Point& getPosition() const {return _position;};
public: const Unit& getX() const {return _position.getX();}; public: const DbU::Unit& getX() const {return _position.getX();};
public: const Unit& getY() const {return _position.getY();}; public: const DbU::Unit& getY() const {return _position.getY();};
public: Components getComponents() const {return _componentSet.getElements();}; public: Components getComponents() const {return _componentSet.getElements();};
public: Rubbers getRubbers() const {return _rubberSet.getElements();}; public: Rubbers getRubbers() const {return _rubberSet.getElements();};
public: RoutingPads getRoutingPads() const; public: RoutingPads getRoutingPads() const;

View File

@ -44,8 +44,8 @@ class Pad : public Component {
// Accessors // Accessors
// ********* // *********
public: virtual Unit getX() const; public: virtual DbU::Unit getX() const;
public: virtual Unit getY() const; public: virtual DbU::Unit getY() const;
public: virtual Box getBoundingBox() const; public: virtual Box getBoundingBox() const;
public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const; public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const;
public: virtual const Layer* getLayer() const {return _layer;}; public: virtual const Layer* getLayer() const {return _layer;};
@ -53,7 +53,7 @@ class Pad : public Component {
// Updators // Updators
// ******** // ********
public: virtual void translate(const Unit& dx, const Unit& dy); public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy);
public: void setBoundingBox(const Box& boundingBox); public: void setBoundingBox(const Box& boundingBox);
// Others // Others

View File

@ -85,9 +85,26 @@ class Pin : public Contact {
// Constructors // Constructors
// ************ // ************
protected: Pin(Net* net, const Name& name, const AccessDirection& accessDirection, const PlacementStatus& placementStatus, const Layer* layer, const Unit& x, const Unit& y, const Unit& width = 0, const Unit& height = 0); protected: Pin( Net* net
, const Name& name
public: static Pin* create(Net* net, const Name& name, const AccessDirection& accessDirection, const PlacementStatus& placementStatus, const Layer* layer, const Unit& x, const Unit& y, const Unit& width = 0, const Unit& height = 0); , const AccessDirection& accessDirection
, const PlacementStatus& placementStatus
, const Layer* layer
, const DbU::Unit& x
, const DbU::Unit& y
, const DbU::Unit& width = 0
, const DbU::Unit& height = 0
);
public: static Pin* create( Net* net
, const Name& name
, const AccessDirection& accessDirection
, const PlacementStatus& placementStatus
, const Layer* layer
, const DbU::Unit& x
, const DbU::Unit& y
, const DbU::Unit& width = 0
, const DbU::Unit& height = 0
);
// Accessors // Accessors
// ********* // *********

View File

@ -50,8 +50,8 @@ class Plug : public Component {
// ********* // *********
public: virtual Cell* getCell() const; public: virtual Cell* getCell() const;
public: virtual Unit getX() const; public: virtual DbU::Unit getX() const;
public: virtual Unit getY() const; public: virtual DbU::Unit getY() const;
public: virtual Point getPosition() const; public: virtual Point getPosition() const;
public: virtual Box getBoundingBox() const; public: virtual Box getBoundingBox() const;
public: virtual const Layer* getLayer() const {return NULL;}; public: virtual const Layer* getLayer() const {return NULL;};
@ -73,7 +73,7 @@ class Plug : public Component {
// Updators // Updators
// ******** // ********
public: virtual void translate(const Unit& dx, const Unit& dy) {}; public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy) {};
public: void setNet(Net* net); public: void setNet(Net* net);

View File

@ -7,7 +7,7 @@
#ifndef HURRICANE_POINT #ifndef HURRICANE_POINT
#define HURRICANE_POINT #define HURRICANE_POINT
#include "hurricane/Unit.h" #include "hurricane/DbU.h"
namespace Hurricane { namespace Hurricane {
@ -23,15 +23,15 @@ class Point {
// Attributes // Attributes
// ********** // **********
private: Unit _x; private: DbU::Unit _x;
private: Unit _y; private: DbU::Unit _y;
// Constructors // Constructors
// ************ // ************
public: Point(); public: Point();
public: Point(const Unit& x, const Unit& y); public: Point(const DbU::Unit& x, const DbU::Unit& y);
public: Point(const Point& point); public: Point(const Point& point);
@ -51,18 +51,18 @@ class Point {
// Accessors // Accessors
// ********* // *********
public: const Unit& getX() const {return _x;}; public: const DbU::Unit& getX() const {return _x;};
public: const Unit& getY() const {return _y;}; public: const DbU::Unit& getY() const {return _y;};
public: Unit manhattanDistance(const Point pt) const public: DbU::Unit manhattanDistance(const Point pt) const
{ return abs(_x - pt.getX()) + abs(_y - pt.getY()); } { return abs(_x - pt.getX()) + abs(_y - pt.getY()); }
// Updators // Updators
// ******** // ********
public: void setX(const Unit& x) {_x = x;}; public: void setX(const DbU::Unit& x) {_x = x;};
public: void setY(const Unit& y) {_y = y;}; public: void setY(const DbU::Unit& y) {_y = y;};
public: Point& translate(const Unit& dx, const Unit& dy); public: Point& translate(const DbU::Unit& dx, const DbU::Unit& dy);
public: Point getTranslated(const Unit& dx, const Unit& dy) const; public: Point getTranslated(const DbU::Unit& dx, const DbU::Unit& dy) const;
// Others // Others
// ****** // ******

View File

@ -40,8 +40,8 @@ class QuadTree {
// ********** // **********
private: QuadTree* _parent; private: QuadTree* _parent;
private: Unit _x; private: DbU::Unit _x;
private: Unit _y; private: DbU::Unit _y;
private: Box _boundingBox; private: Box _boundingBox;
private: unsigned _size; private: unsigned _size;
private: GoSet _goSet; private: GoSet _goSet;

View File

@ -31,14 +31,14 @@ class Reference : public Marker {
public: Name _name; public: Name _name;
public: Point _point; public: Point _point;
public: static Unit _extend; public: static DbU::Unit _extend;
// Constructors // Constructors
// ************ // ************
protected: Reference(Cell* cell, const Name& name, Unit x, Unit y); protected: Reference(Cell* cell, const Name& name, DbU::Unit x, DbU::Unit y);
public: static Reference* create(Cell* cell, const Name& name, Unit x, Unit y ); public: static Reference* create(Cell* cell, const Name& name, DbU::Unit x, DbU::Unit y );
public: static Reference* create(Cell* cell, const Name& name, const Point& point ); public: static Reference* create(Cell* cell, const Name& name, const Point& point );
// Accessors // Accessors
@ -51,7 +51,7 @@ class Reference : public Marker {
// Updators // Updators
// ******** // ********
public: virtual void translate(const Unit& dx, const Unit& dy); public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy);
// Others // Others
// ****** // ******

View File

@ -58,7 +58,7 @@ class Region {
private: Region* _region; private: Region* _region;
private: Type _type; private: Type _type;
private: Unit _position; private: DbU::Unit _position;
private: Interval _extention; private: Interval _extention;
private: Tile* _baseTile; private: Tile* _baseTile;
@ -67,7 +67,7 @@ class Region {
public: SwapLine(); public: SwapLine();
public: SwapLine(Region* region, const Type& type, const Interval& extention = Interval()); public: SwapLine(Region* region, const Type& type, const Interval& extention = Interval());
public: SwapLine(Region* region, const Type& type, const Unit& position, const Interval& extention = Interval()); public: SwapLine(Region* region, const Type& type, const DbU::Unit& position, const Interval& extention = Interval());
public: SwapLine(const SwapLine& swapLine); public: SwapLine(const SwapLine& swapLine);
// Destructor // Destructor
@ -85,7 +85,7 @@ class Region {
public: Region* getRegion() const {return _region;}; public: Region* getRegion() const {return _region;};
public: Type getType() const {return _type;}; public: Type getType() const {return _type;};
public: const Unit& getPosition() const {return _position;}; public: const DbU::Unit& getPosition() const {return _position;};
public: const Interval& getExtention() const {return _extention;}; public: const Interval& getExtention() const {return _extention;};
public: Intervals getIntervals() const; public: Intervals getIntervals() const;
@ -99,8 +99,8 @@ class Region {
// ******** // ********
public: void progress(int n = 1); public: void progress(int n = 1);
public: void translate(const Unit& quantity); public: void translate(const DbU::Unit& quantity);
public: void setPosition(const Unit& position); public: void setPosition(const DbU::Unit& position);
// Others // Others
// ****** // ******
@ -140,10 +140,10 @@ class Region {
public: Box getBoundingBox() const; public: Box getBoundingBox() const;
public: Unit getXMin() const; public: DbU::Unit getXMin() const;
public: Unit getYMin() const; public: DbU::Unit getYMin() const;
public: Unit getXMax() const; public: DbU::Unit getXMax() const;
public: Unit getYMax() const; public: DbU::Unit getYMax() const;
public: Boxes getBoxes() const; public: Boxes getBoxes() const;
public: Boxes getBoxesUnder(const Box& area) const; public: Boxes getBoxesUnder(const Box& area) const;
@ -152,10 +152,10 @@ class Region {
public: Boxes getVoidBoxesUnder(const Box& area) const; public: Boxes getVoidBoxesUnder(const Box& area) const;
public: SwapLine getVerticalSwapLine(const Interval& extention = Interval()) const; public: SwapLine getVerticalSwapLine(const Interval& extention = Interval()) const;
public: SwapLine getVerticalSwapLine(const Unit& x, const Interval& extention = Interval()) const; public: SwapLine getVerticalSwapLine(const DbU::Unit& x, const Interval& extention = Interval()) const;
public: SwapLine getHorizontalSwapLine(const Interval& extention = Interval()) const; public: SwapLine getHorizontalSwapLine(const Interval& extention = Interval()) const;
public: SwapLine getHorizontalSwapLine(const Unit& y, const Interval& extention = Interval()) const; public: SwapLine getHorizontalSwapLine(const DbU::Unit& y, const Interval& extention = Interval()) const;
// Predicates // Predicates
// ********** // **********
@ -183,8 +183,8 @@ class Region {
public: Region& groove(const Region& region); public: Region& groove(const Region& region);
public: Region& getIntersection(const Region& region); public: Region& getIntersection(const Region& region);
public: Region& Inflate(const Unit& quantity); public: Region& Inflate(const DbU::Unit& quantity);
public: Region& translate(const Unit& dx, const Unit& dy); public: Region& translate(const DbU::Unit& dx, const DbU::Unit& dy);
public: bool verticalEnhancement(); public: bool verticalEnhancement();
public: bool verticalEnhancement(Point point); public: bool verticalEnhancement(Point point);

View File

@ -72,17 +72,17 @@ namespace Hurricane {
// Accessors. // Accessors.
virtual BasicLayers getBasicLayers () const; virtual BasicLayers getBasicLayers () const;
inline BasicLayer* getBasicLayer () const; inline BasicLayer* getBasicLayer () const;
virtual Unit getEnclosure () const; virtual DbU::Unit getEnclosure () const;
virtual Unit getExtentionCap () const; virtual DbU::Unit getExtentionCap () const;
virtual Unit getExtentionWidth () const; virtual DbU::Unit getExtentionWidth () const;
virtual Unit getEnclosure ( const BasicLayer* layer ) const; virtual DbU::Unit getEnclosure ( const BasicLayer* layer ) const;
virtual Unit getExtentionCap ( const BasicLayer* layer ) const; virtual DbU::Unit getExtentionCap ( const BasicLayer* layer ) const;
virtual Unit getExtentionWidth ( const BasicLayer* layer ) const; virtual DbU::Unit getExtentionWidth ( const BasicLayer* layer ) const;
// Updators // Updators
void setBasicLayer ( BasicLayer* layer ); void setBasicLayer ( BasicLayer* layer );
virtual void setEnclosure ( const BasicLayer* layer, Unit enclosure ); virtual void setEnclosure ( const BasicLayer* layer, DbU::Unit enclosure );
virtual void setExtentionCap ( const BasicLayer* layer, Unit cap ); virtual void setExtentionCap ( const BasicLayer* layer, DbU::Unit cap );
virtual void setExtentionWidth ( const BasicLayer* layer, Unit width ); virtual void setExtentionWidth ( const BasicLayer* layer, DbU::Unit width );
// Hurricane Managment. // Hurricane Managment.
virtual string _getTypeName () const; virtual string _getTypeName () const;
virtual string _getString () const; virtual string _getString () const;
@ -91,9 +91,9 @@ namespace Hurricane {
private: private:
// Internal: Attributes // Internal: Attributes
BasicLayer* _basicLayer; BasicLayer* _basicLayer;
Unit _enclosure; DbU::Unit _enclosure;
Unit _extentionCap; DbU::Unit _extentionCap;
Unit _extentionWidth; DbU::Unit _extentionWidth;
protected: protected:
// Internal: Constructors & Destructors. // Internal: Constructors & Destructors.

View File

@ -37,8 +37,8 @@ class RoutingPad : public Component {
// Attributes // Attributes
// ********** // **********
private: Unit _x; private: DbU::Unit _x;
private: Unit _y; private: DbU::Unit _y;
private: Occurrence _occurrence; private: Occurrence _occurrence;
@ -53,8 +53,8 @@ class RoutingPad : public Component {
// ********* // *********
//public: virtual Hooks getHooks() const; //public: virtual Hooks getHooks() const;
public: virtual Unit getX() const; public: virtual DbU::Unit getX() const;
public: virtual Unit getY() const; public: virtual DbU::Unit getY() const;
public: virtual Box getBoundingBox() const; public: virtual Box getBoundingBox() const;
public: virtual const Layer* getLayer() const; public: virtual const Layer* getLayer() const;
public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const; public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const;
@ -63,21 +63,21 @@ class RoutingPad : public Component {
public: Occurrence getPlugOccurrence(); public: Occurrence getPlugOccurrence();
public: Point getSourcePosition() const; public: Point getSourcePosition() const;
public: Point getTargetPosition() const; public: Point getTargetPosition() const;
public: Unit getSourceX() const; public: DbU::Unit getSourceX() const;
public: Unit getSourceY() const; public: DbU::Unit getSourceY() const;
public: Unit getTargetX() const; public: DbU::Unit getTargetX() const;
public: Unit getTargetY() const; public: DbU::Unit getTargetY() const;
// Updators // Updators
// ******** // ********
public: virtual void translate(const Unit& dx, const Unit& dy); public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy);
public: void setX(const Unit& x); public: void setX(const DbU::Unit& x);
public: void setY(const Unit& y); public: void setY(const DbU::Unit& y);
public: void setPosition(const Unit& x, const Unit& y); public: void setPosition(const DbU::Unit& x, const DbU::Unit& y);
public: void setPosition(const Point& position); public: void setPosition(const Point& position);
public: void setOffset(const Unit& x, const Unit& y); public: void setOffset(const DbU::Unit& x, const DbU::Unit& y);
public: void setExternalComponent(Component* component); public: void setExternalComponent(Component* component);
public: void restorePlugOccurrence(); public: void restorePlugOccurrence();

View File

@ -66,7 +66,7 @@ class Rubber : public Go {
public: virtual void materialize(); public: virtual void materialize();
public: virtual void unmaterialize(); public: virtual void unmaterialize();
public: virtual void translate(const Unit& dx, const Unit& dy); public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy);
public: virtual void invalidate(bool propagateFlag = true); public: virtual void invalidate(bool propagateFlag = true);
// Others // Others

View File

@ -66,19 +66,24 @@ class Segment : public Component {
private: SourceHook _sourceHook; private: SourceHook _sourceHook;
private: TargetHook _targetHook; private: TargetHook _targetHook;
private: const Layer* _layer; private: const Layer* _layer;
private: Unit _width; private: DbU::Unit _width;
// Constructors // Constructors
// ************ // ************
protected: Segment(Net* net, Component* source, Component* target, const Layer* layer, const Unit& width = 0); protected: Segment ( Net* net
, Component* source
, Component* target
, const Layer* layer
, const DbU::Unit& width = 0
);
// Accessors // Accessors
// ********* // *********
public: virtual Hooks getHooks() const; public: virtual Hooks getHooks() const;
public: virtual Unit getX() const {return 0;}; public: virtual DbU::Unit getX() const {return 0;};
public: virtual Unit getY() const {return 0;}; public: virtual DbU::Unit getY() const {return 0;};
public: virtual const Layer* getLayer() const {return _layer;}; public: virtual const Layer* getLayer() const {return _layer;};
public: Hook* getSourceHook() {return &_sourceHook;}; public: Hook* getSourceHook() {return &_sourceHook;};
public: Hook* getTargetHook() {return &_targetHook;}; public: Hook* getTargetHook() {return &_targetHook;};
@ -87,21 +92,21 @@ class Segment : public Component {
public: Component* getTarget() const; public: Component* getTarget() const;
public: Components getAnchors() const; public: Components getAnchors() const;
public: Component* getOppositeAnchor(Component* anchor) const; public: Component* getOppositeAnchor(Component* anchor) const;
public: const Unit& getWidth() const {return _width;}; public: const DbU::Unit& getWidth() const {return _width;};
public: Unit getHalfWidth() const {return (_width / 2);}; public: DbU::Unit getHalfWidth() const {return (_width / 2);};
public: virtual Unit getSourceX() const = 0; public: virtual DbU::Unit getSourceX() const = 0;
public: virtual Unit getSourceY() const = 0; public: virtual DbU::Unit getSourceY() const = 0;
public: virtual Point getSourcePosition() const; public: virtual Point getSourcePosition() const;
public: virtual Unit getTargetX() const = 0; public: virtual DbU::Unit getTargetX() const = 0;
public: virtual Unit getTargetY() const = 0; public: virtual DbU::Unit getTargetY() const = 0;
public: virtual Point getTargetPosition() const; public: virtual Point getTargetPosition() const;
public: virtual Unit getLength() const = 0; public: virtual DbU::Unit getLength() const = 0;
// Updators // Updators
// ******** // ********
public: void setLayer(const Layer* layer); public: void setLayer(const Layer* layer);
public: void setWidth(const Unit& width); public: void setWidth(const DbU::Unit& width);
public: void invert(); public: void invert();
// Others // Others

View File

@ -47,8 +47,8 @@ class Transformation {
// Attributes // Attributes
// ********** // **********
private: Unit _tx; private: DbU::Unit _tx;
private: Unit _ty; private: DbU::Unit _ty;
private: Orientation _orientation; private: Orientation _orientation;
// Constructors // Constructors
@ -56,7 +56,7 @@ class Transformation {
public: Transformation(); public: Transformation();
public: Transformation(const Unit& tx, const Unit& ty, const Orientation& orientation = Orientation::ID); public: Transformation(const DbU::Unit& tx, const DbU::Unit& ty, const Orientation& orientation = Orientation::ID);
public: Transformation(const Point& translation, const Orientation& orientation = Orientation::ID); public: Transformation(const Point& translation, const Orientation& orientation = Orientation::ID);
public: Transformation(const Transformation& transformation); public: Transformation(const Transformation& transformation);
@ -72,24 +72,24 @@ class Transformation {
// Accessors // Accessors
// ********* // *********
public: const Unit& getTx() const {return _tx;}; public: const DbU::Unit& getTx() const {return _tx;};
public: const Unit& getTy() const {return _ty;}; public: const DbU::Unit& getTy() const {return _ty;};
public: Point getTranslation() const {return Point(_tx, _ty);}; public: Point getTranslation() const {return Point(_tx, _ty);};
public: const Orientation& getOrientation() const {return _orientation;}; public: const Orientation& getOrientation() const {return _orientation;};
public: Unit getX(const Unit& x, const Unit& y) const; public: DbU::Unit getX(const DbU::Unit& x, const DbU::Unit& y) const;
public: Unit getY(const Unit& x, const Unit& y) const; public: DbU::Unit getY(const DbU::Unit& x, const DbU::Unit& y) const;
public: Unit getX(const Point& point) const; public: DbU::Unit getX(const Point& point) const;
public: Unit getY(const Point& point) const; public: DbU::Unit getY(const Point& point) const;
public: Unit getDx(const Unit& dx, const Unit& dy) const; public: DbU::Unit getDx(const DbU::Unit& dx, const DbU::Unit& dy) const;
public: Unit getDy(const Unit& dx, const Unit& dy) const; public: DbU::Unit getDy(const DbU::Unit& dx, const DbU::Unit& dy) const;
public: Point getPoint(const Unit& x, const Unit& y) const; public: Point getPoint(const DbU::Unit& x, const DbU::Unit& y) const;
public: Point getPoint(const Point& point) const; public: Point getPoint(const Point& point) const;
public: Box getBox(const Unit& x1, const Unit& y1, const Unit& x2, const Unit& y2) const; public: Box getBox(const DbU::Unit& x1, const DbU::Unit& y1, const DbU::Unit& x2, const DbU::Unit& y2) const;
public: Box getBox(const Point& point1, const Point& point2) const; public: Box getBox(const Point& point1, const Point& point2) const;
public: Box getBox(const Box& box) const; public: Box getBox(const Box& box) const;
@ -111,7 +111,7 @@ class Transformation {
// Manipulators // Manipulators
// ************ // ************
public: void applyOn(Unit& x, Unit& y) const; public: void applyOn(DbU::Unit& x, DbU::Unit& y) const;
public: void applyOn(Point& point) const; public: void applyOn(Point& point) const;
public: void applyOn(Box& box) const; public: void applyOn(Box& box) const;
public: void applyOn(Transformation& transformation) const; public: void applyOn(Transformation& transformation) const;

View File

@ -77,13 +77,13 @@ namespace Hurricane {
); );
// Accessors. // Accessors.
virtual BasicLayers getBasicLayers () const; virtual BasicLayers getBasicLayers () const;
virtual Unit getExtentionCap () const; virtual DbU::Unit getExtentionCap () const;
virtual Unit getExtentionWidth () const; virtual DbU::Unit getExtentionWidth () const;
virtual Unit getExtentionCap ( const BasicLayer* layer ) const; virtual DbU::Unit getExtentionCap ( const BasicLayer* layer ) const;
virtual Unit getExtentionWidth ( const BasicLayer* layer ) const; virtual DbU::Unit getExtentionWidth ( const BasicLayer* layer ) const;
// Updators. // Updators.
virtual void setExtentionCap ( const BasicLayer* layer, Unit cap ); virtual void setExtentionCap ( const BasicLayer* layer, DbU::Unit cap );
virtual void setExtentionWidth ( const BasicLayer* layer, Unit width ); virtual void setExtentionWidth ( const BasicLayer* layer, DbU::Unit width );
// Hurricane Managment. // Hurricane Managment.
virtual string _getTypeName () const; virtual string _getTypeName () const;
virtual string _getString () const; virtual string _getString () const;
@ -92,10 +92,10 @@ namespace Hurricane {
private: private:
// Internal: Attributes // Internal: Attributes
vector<BasicLayer*> _basicLayers; vector<BasicLayer*> _basicLayers;
vector<Unit> _extentionCaps; vector<DbU::Unit> _extentionCaps;
vector<Unit> _extentionWidths; vector<DbU::Unit> _extentionWidths;
Unit _maximalExtentionCap; DbU::Unit _maximalExtentionCap;
Unit _maximalExtentionWidth; DbU::Unit _maximalExtentionWidth;
protected: protected:
// Internal: Constructors & Destructors. // Internal: Constructors & Destructors.

View File

@ -1,106 +0,0 @@
// ****************************************************************************************************
// File: Unit.h
// Authors: R. Escassut
// Copyright (c) BULL S.A. 2000-2004, All Rights Reserved
// ****************************************************************************************************
#ifndef HURRICANE_UNIT
#define HURRICANE_UNIT
#include "hurricane/Commons.h"
namespace Hurricane {
// ****************************************************************************************************
// Unit declaration
// ****************************************************************************************************
typedef long Unit;
# define UNIT_MAX LONG_MAX
# define UNIT_MIN LONG_MIN
// ****************************************************************************************************
// Precision managers (precision defines the maximal number of decimals allowed)
// ****************************************************************************************************
unsigned getPrecision();
unsigned getMaximalPrecisionAllowed();
void setPrecision(unsigned precision);
// Should be called only once at the beginning of the program
// ****************************************************************************************************
// Resolution managers (the value associate to the unit 1)
// ****************************************************************************************************
double getResolution();
// ****************************************************************************************************
// Grid managers
// ****************************************************************************************************
const Unit& getGridStep();
void setGridStep(const Unit& gridStep);
bool isOnGrid(const Unit& unit, int n = 1);
Unit getOnGridUnit(const Unit& unit, int s = 0);
// ****************************************************************************************************
// Others
// ****************************************************************************************************
Unit getUnit(double value);
double getValue(const Unit& unit);
string getValueString(const Unit& unit);
// -------------------------------------------------------------------
// Class : "Proxy...<const Unit*>".
/* template<> */
/* inline string ProxyTypeName<Unit> ( const Unit* object ) */
/* { return "<PointerSlotAdapter<Unit>>"; } */
/* template<> */
/* inline string ProxyString<Unit> ( const Unit* object ) */
/* { return getValueString(); } */
/* template<> */
/* inline Record* ProxyRecord<Unit> ( const Unit* object ) */
/* { */
/* Record* record = new Record(getString(object)); */
/* record->Add(getSlot("Unit", (unsigned int*)_object)); */
/* return record; */
/* } */
} // End of Hurricane namespace.
bool Scan(const string& s, Hurricane::Unit& unit);
#endif // HURRICANE_UNIT
// ****************************************************************************************************
// Copyright (c) BULL S.A. 2000-2004, All Rights Reserved
// ****************************************************************************************************

View File

@ -31,42 +31,63 @@ class Vertical : public Segment {
// Attributes // Attributes
// ********** // **********
private: Unit _x; private: DbU::Unit _x;
private: Unit _dySource; private: DbU::Unit _dySource;
private: Unit _dyTarget; private: DbU::Unit _dyTarget;
// Constructors // Constructors
// ************ // ************
protected: Vertical(Net* net, Component* source, Component* target, const Layer* layer, const Unit& x, const Unit& width = 0, const Unit& dySource = 0, const Unit& dyTarget = 0); protected: Vertical ( Net* net
, Component* source
, Component* target
, const Layer* layer
, const DbU::Unit& x
, const DbU::Unit& width = 0
, const DbU::Unit& dySource = 0
, const DbU::Unit& dyTarget = 0
);
public: static Vertical* create(Net* net, const Layer* layer, const Unit& x, const Unit& width = 0, const Unit& dySource = 0, const Unit& dyTarget = 0); public: static Vertical* create ( Net* net
public: static Vertical* create(Component* source, Component* target, const Layer* layer, const Unit& x, const Unit& width = 0, const Unit& dySource = 0, const Unit& dyTarget = 0); , const Layer* layer
, const DbU::Unit& x
, const DbU::Unit& width = 0
, const DbU::Unit& dySource = 0
, const DbU::Unit& dyTarget = 0
);
public: static Vertical* create ( Component* source
, Component* target
, const Layer* layer
, const DbU::Unit& x
, const DbU::Unit& width = 0
, const DbU::Unit& dySource = 0
, const DbU::Unit& dyTarget = 0
);
// Accessors // Accessors
// ********* // *********
public: virtual Unit getX() const {return _x;}; public: virtual DbU::Unit getX() const {return _x;};
public: virtual Point getCenter() const; public: virtual Point getCenter() const;
public: virtual Box getBoundingBox() const; public: virtual Box getBoundingBox() const;
public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const; public: virtual Box getBoundingBox(const BasicLayer* basicLayer) const;
public: virtual Unit getSourceX() const {return getX();}; public: virtual DbU::Unit getSourceX() const {return getX();};
public: virtual Unit getSourceY() const; public: virtual DbU::Unit getSourceY() const;
public: virtual Unit getTargetX() const {return getX();}; public: virtual DbU::Unit getTargetX() const {return getX();};
public: virtual Unit getTargetY() const; public: virtual DbU::Unit getTargetY() const;
public: virtual Unit getLength() const; public: virtual DbU::Unit getLength() const;
public: const Unit& getDySource() const {return _dySource;}; public: const DbU::Unit& getDySource() const {return _dySource;};
public: const Unit& getDyTarget() const {return _dyTarget;}; public: const DbU::Unit& getDyTarget() const {return _dyTarget;};
// Updators // Updators
// ******** // ********
public: virtual void translate(const Unit& dx, const Unit& dy); public: virtual void translate(const DbU::Unit& dx, const DbU::Unit& dy);
public: void setX(const Unit& x); public: void setX(const DbU::Unit& x);
public: void setDySource(const Unit& dySource); public: void setDySource(const DbU::Unit& dySource);
public: void setDyTarget(const Unit& dyTarget); public: void setDyTarget(const DbU::Unit& dyTarget);
public: void translate(const Unit& dx); public: void translate(const DbU::Unit& dx);
// Others // Others
// ****** // ******

View File

@ -76,10 +76,10 @@ namespace Hurricane {
); );
// Accessors. // Accessors.
virtual BasicLayers getBasicLayers () const; virtual BasicLayers getBasicLayers () const;
virtual Unit getEnclosure () const; virtual DbU::Unit getEnclosure () const;
virtual Unit getEnclosure ( const BasicLayer* layer ) const; virtual DbU::Unit getEnclosure ( const BasicLayer* layer ) const;
// Updators. // Updators.
virtual void setEnclosure ( const BasicLayer* layer, Unit enclosure ); virtual void setEnclosure ( const BasicLayer* layer, DbU::Unit enclosure );
// Hurricane Managment. // Hurricane Managment.
virtual string _getTypeName () const; virtual string _getTypeName () const;
virtual string _getString () const; virtual string _getString () const;
@ -88,8 +88,8 @@ namespace Hurricane {
private: private:
// Internal: Attributes // Internal: Attributes
vector<BasicLayer*> _basicLayers; vector<BasicLayer*> _basicLayers;
vector<Unit> _enclosures; vector<DbU::Unit> _enclosures;
Unit _maximalEnclosure; DbU::Unit _maximalEnclosure;
protected: protected:
// Internal: Constructors & Destructors. // Internal: Constructors & Destructors.

View File

@ -164,7 +164,8 @@ void CellWidget::drawBoundaries ( const Instance* instance
bool CellWidget::isDrawable ( PaletteEntry* entry ) bool CellWidget::isDrawable ( PaletteEntry* entry )
{ {
return entry->isChecked() && ( Graphics::getThreshold(entry->getName()) < _scale*100 ); return entry->isChecked()
&& ( Graphics::getThreshold(entry->getName())/DbU::lambda(1.0) < _scale );
} }
@ -333,10 +334,10 @@ void CellWidget::screenReframe ()
_offsetVA.rx() = _stripWidth; _offsetVA.rx() = _stripWidth;
_offsetVA.ry() = _stripWidth; _offsetVA.ry() = _stripWidth;
Unit xmin = (Unit)( _visibleArea.getXMin() - ((float)_offsetVA.x()/_scale) ); DbU::Unit xmin = (DbU::Unit)( _visibleArea.getXMin() - ((float)_offsetVA.x()/_scale) );
Unit xmax = (Unit)( xmin + ((float)_drawingBuffer.width()/_scale) ) ; DbU::Unit xmax = (DbU::Unit)( xmin + ((float)_drawingBuffer.width()/_scale) ) ;
Unit ymax = (Unit)( _visibleArea.getYMax() + ((float)_offsetVA.y()/_scale) ); DbU::Unit ymax = (DbU::Unit)( _visibleArea.getYMax() + ((float)_offsetVA.y()/_scale) );
Unit ymin = (Unit)( ymax - ((float)_drawingBuffer.height()/_scale) ) ; DbU::Unit ymin = (DbU::Unit)( ymax - ((float)_drawingBuffer.height()/_scale) ) ;
_displayArea = Box ( xmin, ymin, xmax, ymax ); _displayArea = Box ( xmin, ymin, xmax, ymax );
@ -351,10 +352,10 @@ void CellWidget::setScale ( float scale )
Point center = _visibleArea.getCenter(); Point center = _visibleArea.getCenter();
_visibleArea.makeEmpty (); _visibleArea.makeEmpty ();
_visibleArea.merge ( (Unit)( center.getX() - width () / (_scale*2) ) _visibleArea.merge ( (DbU::Unit)( center.getX() - width () / (_scale*2) )
, (Unit)( center.getY() - height() / (_scale*2) ) , (DbU::Unit)( center.getY() - height() / (_scale*2) )
, (Unit)( center.getX() + width () / (_scale*2) ) , (DbU::Unit)( center.getX() + width () / (_scale*2) )
, (Unit)( center.getY() + height() / (_scale*2) ) , (DbU::Unit)( center.getY() + height() / (_scale*2) )
); );
//cerr << "_visibleArea: " << _visibleArea << " (offset: " << _offsetVA.x() << ")" << endl; //cerr << "_visibleArea: " << _visibleArea << " (offset: " << _offsetVA.x() << ")" << endl;
@ -376,17 +377,15 @@ void CellWidget::reframe ( const Box& box )
float scaleY = height / (float)box.getHeight(); float scaleY = height / (float)box.getHeight();
_scale = min ( scaleX, scaleY ); _scale = min ( scaleX, scaleY );
//cerr << " _scale := " << _scale << endl;
Point center = box.getCenter(); Point center = box.getCenter();
width /= 2; width /= 2;
height /= 2; height /= 2;
_visibleArea = Box ( (Unit)( center.getX() - width / _scale ) _visibleArea = Box ( (DbU::Unit)( center.getX() - width / _scale )
, (Unit)( center.getY() - height / _scale ) , (DbU::Unit)( center.getY() - height / _scale )
, (Unit)( center.getX() + width / _scale ) , (DbU::Unit)( center.getX() + width / _scale )
, (Unit)( center.getY() + height / _scale ) , (DbU::Unit)( center.getY() + height / _scale )
); );
screenReframe (); screenReframe ();
@ -406,8 +405,8 @@ void CellWidget::shiftLeft ( int dx )
int leftShift = ( 1 + ( dx - _offsetVA.rx() ) / _stripWidth ) * _stripWidth; int leftShift = ( 1 + ( dx - _offsetVA.rx() ) / _stripWidth ) * _stripWidth;
_displayArea.translate ( - (Unit)( leftShift / _scale ) , 0 ); _displayArea.translate ( - (DbU::Unit)( leftShift / _scale ) , 0 );
_visibleArea.translate ( - (Unit)( leftShift / _scale ) , 0 ); _visibleArea.translate ( - (DbU::Unit)( leftShift / _scale ) , 0 );
_offsetVA.rx() -= dx - leftShift; _offsetVA.rx() -= dx - leftShift;
if ( leftShift >= _drawingBuffer.width() ) { if ( leftShift >= _drawingBuffer.width() ) {
@ -436,8 +435,8 @@ void CellWidget::shiftRight ( int dx )
int rightShift = ( ( _offsetVA.rx() + dx ) / _stripWidth ) * _stripWidth; int rightShift = ( ( _offsetVA.rx() + dx ) / _stripWidth ) * _stripWidth;
_displayArea.translate ( (Unit)( rightShift / _scale ) , 0 ); _displayArea.translate ( (DbU::Unit)( rightShift / _scale ) , 0 );
_visibleArea.translate ( (Unit)( rightShift / _scale ) , 0 ); _visibleArea.translate ( (DbU::Unit)( rightShift / _scale ) , 0 );
_offsetVA.rx() += dx - rightShift; _offsetVA.rx() += dx - rightShift;
//cerr << " _displayArea: " << _displayArea << endl; //cerr << " _displayArea: " << _displayArea << endl;
@ -468,8 +467,8 @@ void CellWidget::shiftUp ( int dy )
int upShift = ( 1 + ( dy - _offsetVA.ry() ) / _stripWidth ) * _stripWidth; int upShift = ( 1 + ( dy - _offsetVA.ry() ) / _stripWidth ) * _stripWidth;
_displayArea.translate ( 0, (Unit)( upShift / _scale ) ); _displayArea.translate ( 0, (DbU::Unit)( upShift / _scale ) );
_visibleArea.translate ( 0, (Unit)( upShift / _scale ) ); _visibleArea.translate ( 0, (DbU::Unit)( upShift / _scale ) );
_offsetVA.ry() -= dy - upShift; _offsetVA.ry() -= dy - upShift;
if ( upShift >= _drawingBuffer.height() ) { if ( upShift >= _drawingBuffer.height() ) {
@ -498,8 +497,8 @@ void CellWidget::shiftDown ( int dy )
int downShift = ( ( _offsetVA.ry() + dy ) / _stripWidth ) * _stripWidth; int downShift = ( ( _offsetVA.ry() + dy ) / _stripWidth ) * _stripWidth;
_displayArea.translate ( 0, - (Unit)( downShift / _scale ) ); _displayArea.translate ( 0, - (DbU::Unit)( downShift / _scale ) );
_visibleArea.translate ( 0, - (Unit)( downShift / _scale ) ); _visibleArea.translate ( 0, - (DbU::Unit)( downShift / _scale ) );
_offsetVA.ry() += dy - downShift; _offsetVA.ry() += dy - downShift;
if ( downShift >= _drawingBuffer.height() ) { if ( downShift >= _drawingBuffer.height() ) {
@ -548,8 +547,8 @@ void CellWidget::resizeEvent ( QResizeEvent* )
//cerr << "New UA widget size: " << uaSize.width() << "x" << uaSize.height() << endl; //cerr << "New UA widget size: " << uaSize.width() << "x" << uaSize.height() << endl;
if ( uaDelta.width() || uaDelta.height() ) { if ( uaDelta.width() || uaDelta.height() ) {
_displayArea.inflate ( 0, 0, (Unit)(uaDelta.width()/_scale), (Unit)(uaDelta.height()/_scale) ); _displayArea.inflate ( 0, 0, (DbU::Unit)(uaDelta.width()/_scale), (DbU::Unit)(uaDelta.height()/_scale) );
_visibleArea.inflate ( 0, 0, (Unit)(uaDelta.width()/_scale), (Unit)(uaDelta.height()/_scale) ); _visibleArea.inflate ( 0, 0, (DbU::Unit)(uaDelta.width()/_scale), (DbU::Unit)(uaDelta.height()/_scale) );
//cerr << "new " << _displayArea << endl; //cerr << "new " << _displayArea << endl;
//cerr << "Previous buffer size: " << _drawingBuffer.width () << "x" //cerr << "Previous buffer size: " << _drawingBuffer.width () << "x"
@ -620,7 +619,7 @@ void CellWidget::mouseReleaseEvent ( QMouseEvent* event )
} }
QPoint CellWidget::getScreenPoint ( Unit x, Unit y ) const QPoint CellWidget::getScreenPoint ( DbU::Unit x, DbU::Unit y ) const
{ {
return QPoint ( getScreenX(x), getScreenY(y) ); return QPoint ( getScreenX(x), getScreenY(y) );
} }
@ -632,7 +631,7 @@ QPoint CellWidget::getScreenPoint ( const Point& point ) const
} }
QRect CellWidget::getScreenRect ( Unit x1, Unit y1, Unit x2, Unit y2 ) const QRect CellWidget::getScreenRect ( DbU::Unit x1, DbU::Unit y1, DbU::Unit x2, DbU::Unit y2 ) const
{ {
return QRect ( getScreenX(x1) return QRect ( getScreenX(x1)
, getScreenY(y2) , getScreenY(y2)

View File

@ -104,16 +104,16 @@ namespace Hurricane {
// Geometric conversions. // Geometric conversions.
public: public:
QRect getScreenRect ( Unit x1, Unit y1, Unit x2, Unit y2 ) const; QRect getScreenRect ( DbU::Unit x1, DbU::Unit y1, DbU::Unit x2, DbU::Unit y2 ) const;
QRect getScreenRect ( const Box& box ) const; QRect getScreenRect ( const Box& box ) const;
QPoint getScreenPoint ( Unit x, Unit y ) const; QPoint getScreenPoint ( DbU::Unit x, DbU::Unit y ) const;
QPoint getScreenPoint ( const Point& point ) const; QPoint getScreenPoint ( const Point& point ) const;
inline int getScreenX ( Unit x ) const; inline int getScreenX ( DbU::Unit x ) const;
inline int getScreenY ( Unit y ) const; inline int getScreenY ( DbU::Unit y ) const;
inline int getScreenLength ( Unit length ) const; inline int getScreenLength ( DbU::Unit length ) const;
inline Unit getX ( int x ) const; inline DbU::Unit getX ( int x ) const;
inline Unit getY ( int y ) const; inline DbU::Unit getY ( int y ) const;
inline Unit getLength ( int length ) const; inline DbU::Unit getLength ( int length ) const;
inline Box getBox ( const QRect& rect ) const; inline Box getBox ( const QRect& rect ) const;
// Painter control & Hurricane objects drawing primitives. // Painter control & Hurricane objects drawing primitives.
@ -150,37 +150,37 @@ inline void CellWidget::redraw ()
} }
inline int CellWidget::getScreenX ( Unit x ) const inline int CellWidget::getScreenX ( DbU::Unit x ) const
{ {
return (int)rint ( (float)( x - _displayArea.getXMin() ) * _scale ); return (int)rint ( (float)( x - _displayArea.getXMin() ) * _scale );
} }
inline int CellWidget::getScreenY ( Unit y ) const inline int CellWidget::getScreenY ( DbU::Unit y ) const
{ {
return (int)rint ( (float)( _displayArea.getYMax() - y ) * _scale ); return (int)rint ( (float)( _displayArea.getYMax() - y ) * _scale );
} }
inline int CellWidget::getScreenLength ( Unit length ) const inline int CellWidget::getScreenLength ( DbU::Unit length ) const
{ {
return (int)rint ( (float)length * _scale ); return (int)rint ( (float)length * _scale );
} }
inline Unit CellWidget::getX ( int x ) const inline DbU::Unit CellWidget::getX ( int x ) const
{ {
return (Unit)(x/_scale) + _displayArea.getXMin(); return (DbU::Unit)(x/_scale) + _displayArea.getXMin();
} }
inline Unit CellWidget::getY ( int y ) const inline DbU::Unit CellWidget::getY ( int y ) const
{ {
return _displayArea.getYMax() - (Unit)(y/_scale); return _displayArea.getYMax() - (DbU::Unit)(y/_scale);
} }
inline Unit CellWidget::getLength ( int length ) const inline DbU::Unit CellWidget::getLength ( int length ) const
{ {
return (int)( (float)length / _scale ); return (int)( (float)length / _scale );
} }

View File

@ -36,7 +36,7 @@
PySegmentLocator.cpp PySegmentLocator.cpp
PyTechnology.cpp PyTechnology.cpp
PyTransformation.cpp PyTransformation.cpp
PyUnit.cpp PyDbU.cpp
PyUpdateSession.cpp PyUpdateSession.cpp
PyVertical.cpp PyVertical.cpp
@ -74,7 +74,7 @@
hurricane/isobar/PySegmentLocator.h hurricane/isobar/PySegmentLocator.h
hurricane/isobar/PyTechnology.h hurricane/isobar/PyTechnology.h
hurricane/isobar/PyTransformation.h hurricane/isobar/PyTransformation.h
hurricane/isobar/PyUnit.h hurricane/isobar/PyDbU.h
hurricane/isobar/PyUpdateSession.h hurricane/isobar/PyUpdateSession.h
hurricane/isobar/PyVertical.h hurricane/isobar/PyVertical.h
) )

View File

@ -0,0 +1,221 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Project.
// Copyright (C) Laboratoire LIP6 - Departement ASIM
// Universite Pierre et Marie Curie
//
// Main contributors :
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
// Hugo Clément <Hugo.Clement@lip6.fr>
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
// Damien Dupuis <Damien.Dupuis@lip6.fr>
// Christian Masson <Christian.Masson@lip6.fr>
// Marek Sroka <Marek.Sroka@lip6.fr>
//
// The Coriolis Project is free software; you can redistribute it
// and/or modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// The Coriolis Project 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
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with the Coriolis Project; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
// License-Tag
// Authors-Tag
// ===================================================================
//
// $Id$
//
// x-----------------------------------------------------------------x
// | |
// | C O R I O L I S |
// | I s o b a r - Hurricane / Python Interface |
// | |
// | Author : Jean-Paul CHAPUT |
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
// | =============================================================== |
// | C++ Module : "./PyDbU.cpp" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
#include "hurricane/isobar/PyDbU.h"
namespace Isobar {
using namespace Hurricane;
extern "C" {
// x=================================================================x
// | "PyDbU" Python Module Code Part |
// x=================================================================x
#if defined(__PYTHON_MODULE__)
// x-------------------------------------------------------------x
// | "PyDbU" General Methods |
// x-------------------------------------------------------------x
// ---------------------------------------------------------------
// Module Method : "PyDbU_db ()"
extern PyObject* PyDbU_db ( PyObject* module, PyObject* args )
{
trace << "PyDbU_db ()" << endl;
PyObject* arg0;
DbU::Unit result = 0;
HTRY
__cs.Init ( "DbU.db" );
if ( ! PyArg_ParseTuple(args,"|O&:DbU.db",Converter,&arg0) )
return ( NULL );
if ( __cs.getObjectIds() == INT_ARG ) { result = DbU::db ( PyInt_AsLong ( arg0 ) ); }
else {
PyErr_SetString ( ConstructorError, "invalid number of parameters or bad type for DbU.db converter." );
return ( NULL );
}
HCATCH
return ( Py_BuildValue ( "i", result ) );
}
// ---------------------------------------------------------------
// Module Method : "PyDbU_real ()"
extern PyObject* PyDbU_real ( PyObject* module, PyObject* args )
{
trace << "PyDbU_real ()" << endl;
PyObject* arg0;
DbU::Unit result = 0;
HTRY
__cs.Init ( "DbU.real" );
if ( ! PyArg_ParseTuple(args,"|O&:DbU.real",Converter,&arg0) )
return ( NULL );
if ( __cs.getObjectIds() == FLOAT_ARG ) { result = DbU::real ( PyFloat_AsDouble ( arg0 ) ); }
else {
PyErr_SetString ( ConstructorError, "invalid number of parameters or bad type for DbU.real converter." );
return ( NULL );
}
HCATCH
return ( Py_BuildValue ( "i", result ) );
}
// ---------------------------------------------------------------
// Module Method : "PyDbU_lambda ()"
extern PyObject* PyDbU_lambda ( PyObject* module, PyObject* args )
{
trace << "PyDbU_symbolic ()" << endl;
PyObject* arg0;
DbU::Unit result = 0;
HTRY
__cs.Init ( "DbU.symbolic" );
if ( ! PyArg_ParseTuple(args,"|O&:DbU.symbolic",Converter,&arg0) )
return ( NULL );
if ( __cs.getObjectIds() == FLOAT_ARG ) { result = DbU::lambda ( PyFloat_AsDouble ( arg0 ) ); }
else {
PyErr_SetString ( ConstructorError, "invalid number of parameters or bad type for DbU.symbolic converter." );
return ( NULL );
}
HCATCH
return ( Py_BuildValue ( "i", result ) );
}
// ---------------------------------------------------------------
// Module Method : "PyDbU_getDb ()"
extern PyObject* PyDbU_getDb ( PyObject* module, PyObject* args )
{
trace << "PyDbU_getDb ()" << endl;
PyObject* arg0;
if ( ! ParseOneArg ( "Dbu.getDb", args,INT_ARG, &arg0 ) ) return ( NULL );
return ( Py_BuildValue("i",DbU::getDb(PyInt_AsLong(arg0))) );
}
// ---------------------------------------------------------------
// Module Method : "PyDbU_getReal ()"
extern PyObject* PyDbU_getReal ( PyObject* module, PyObject* args )
{
trace << "PyDbU_getReal ()" << endl;
PyObject* arg0;
if ( ! ParseOneArg ( "Dbu.getReal", args,INT_ARG, &arg0 ) ) return ( NULL );
return ( Py_BuildValue("d",DbU::getReal(PyInt_AsLong(arg0))) );
}
// ---------------------------------------------------------------
// Module Method : "PyDbU_getLambda ()"
extern PyObject* PyDbU_getLambda ( PyObject* module, PyObject* args )
{
trace << "PyDbU_getLambda ()" << endl;
PyObject* arg0;
if ( ! ParseOneArg ( "Dbu.getLambda", args,INT_ARG, &arg0 ) ) return ( NULL );
return ( Py_BuildValue("d",DbU::getLambda(PyInt_AsLong(arg0))) );
}
// ---------------------------------------------------------------
// Module Method : "PyDbU_getResolution ()"
extern PyObject* PyDbU_getResolution ( PyObject* module )
{
trace << "PyDbU_getResolution ()" << endl;
return ( Py_BuildValue("d",DbU::getResolution()) );
}
#endif // End of Python Module Code Part.
} // End of extern "C".
} // End of Isobar namespace.

View File

@ -54,7 +54,7 @@
#include "hurricane/isobar/PyHurricane.h" #include "hurricane/isobar/PyHurricane.h"
#include "hurricane/isobar/PyUpdateSession.h" #include "hurricane/isobar/PyUpdateSession.h"
#include "hurricane/isobar/PyUnit.h" #include "hurricane/isobar/PyDbU.h"
#include "hurricane/isobar/PyPoint.h" #include "hurricane/isobar/PyPoint.h"
#include "hurricane/isobar/PyBox.h" #include "hurricane/isobar/PyBox.h"
#include "hurricane/isobar/PyTransformation.h" #include "hurricane/isobar/PyTransformation.h"
@ -523,8 +523,12 @@ extern "C" {
// x-------------------------------------------------------------x // x-------------------------------------------------------------x
static PyMethodDef PyHurricane_Methods[] = static PyMethodDef PyHurricane_Methods[] =
{ { "getUnit" , PyUnit_getUnit , METH_VARARGS, "Convert to Unit." } { { "DbU_db" , PyDbU_db , METH_VARARGS, "Convert an integer to DbU::Unit (no scale factor)." }
, { "getValue" , PyUnit_getValue , METH_VARARGS, "Convert a Unit to a value." } , { "DbU_real" , PyDbU_real , METH_VARARGS, "Convert a real (founder grid) to DbU::Unit." }
, { "DbU_lambda" , PyDbU_lambda , METH_VARARGS, "Convert a symbolic (lambda) to DbU::Unit." }
, { "DbU_getDb" , PyDbU_getDb , METH_VARARGS, "Convert a DbU::Unit to an integer value (no scale factor)." }
, { "DbU_getReal" , PyDbU_getReal , METH_VARARGS, "Convert a DbU::Unit to a real value (to grid founder)." }
, { "DbU_getLambda" , PyDbU_getLambda , METH_VARARGS, "Convert a DbU::Unit to a symbolic value (to lambda)." }
, { "getDataBase" , (PyCFunction)PyDataBase_getDataBase , METH_NOARGS , "Get the current DataBase." } , { "getDataBase" , (PyCFunction)PyDataBase_getDataBase , METH_NOARGS , "Get the current DataBase." }
//, { "openUpdateSession" , (PyCFunction)PyUpdateSession_openUpdateSession , METH_NOARGS , "Open an UpdateSession." } //, { "openUpdateSession" , (PyCFunction)PyUpdateSession_openUpdateSession , METH_NOARGS , "Open an UpdateSession." }
//, { "closeUpdateSession" , (PyCFunction)PyUpdateSession_closeUpdateSession, METH_NOARGS , "Close an UpdateSession." } //, { "closeUpdateSession" , (PyCFunction)PyUpdateSession_closeUpdateSession, METH_NOARGS , "Close an UpdateSession." }

View File

@ -1,141 +0,0 @@
// -*- C++ -*-
//
// This file is part of the Coriolis Project.
// Copyright (C) Laboratoire LIP6 - Departement ASIM
// Universite Pierre et Marie Curie
//
// Main contributors :
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
// Hugo Clément <Hugo.Clement@lip6.fr>
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
// Damien Dupuis <Damien.Dupuis@lip6.fr>
// Christian Masson <Christian.Masson@lip6.fr>
// Marek Sroka <Marek.Sroka@lip6.fr>
//
// The Coriolis Project is free software; you can redistribute it
// and/or modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// The Coriolis Project 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
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with the Coriolis Project; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
//
// License-Tag
// Authors-Tag
// ===================================================================
//
// $Id: PyUnit.cpp,v 1.11 2006/05/03 14:00:05 jpc Exp $
//
// x-----------------------------------------------------------------x
// | |
// | C O R I O L I S |
// | I s o b a r - Hurricane / Python Interface |
// | |
// | Author : Jean-Paul CHAPUT |
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
// | =============================================================== |
// | C++ Module : "./PyUnit.cpp" |
// | *************************************************************** |
// | U p d a t e s |
// | |
// x-----------------------------------------------------------------x
#include "hurricane/isobar/PyUnit.h"
namespace Isobar {
using namespace Hurricane;
extern "C" {
// x=================================================================x
// | "PyUnit" Python Module Code Part |
// x=================================================================x
#if defined(__PYTHON_MODULE__)
// x-------------------------------------------------------------x
// | "PyUnit" General Methods |
// x-------------------------------------------------------------x
// ---------------------------------------------------------------
// Attribute Method : "PyUnit_getUnit ()"
extern PyObject* PyUnit_getUnit ( PyObject* module, PyObject* args )
{
trace << "PyUnit_getUnit ()" << endl;
PyObject* arg0;
Unit result = 0;
HTRY
__cs.Init ( "Unit.getUnit" );
if ( ! PyArg_ParseTuple(args,"|O&:Unit.getUnit",Converter,&arg0) )
return ( NULL );
if ( __cs.getObjectIds() == INT_ARG ) { result = getUnit ( PyInt_AsLong ( arg0 ) ); }
else if ( __cs.getObjectIds() == FLOAT_ARG ) { result = getUnit ( PyFloat_AsDouble ( arg0 ) ); }
else {
PyErr_SetString ( ConstructorError, "invalid number of parameters for Unit.getUnit constructor." );
return ( NULL );
}
HCATCH
return ( Py_BuildValue ( "i", result ) );
}
// ---------------------------------------------------------------
// Attribute Method : "PyUnit_getValue ()"
extern PyObject* PyUnit_getValue ( PyObject* module, PyObject* args )
{
trace << "PyUnit_getValue ()" << endl;
PyObject* arg0;
if ( ! ParseOneArg ( "getValue", args,INT_ARG, &arg0 ) ) return ( NULL );
return ( Py_BuildValue("d",getValue(PyInt_AsLong(arg0))) );
}
// ---------------------------------------------------------------
// Attribute Method : "PyUnit_getResolution ()"
extern PyObject* PyUnit_getResolution ( PyObject* module )
{
trace << "PyUnit_getResolution ()" << endl;
return ( Py_BuildValue("d",getResolution()) );
}
#endif // End of Python Module Code Part.
} // End of extern "C".
} // End of Isobar namespace.

View File

@ -33,7 +33,7 @@
// Authors-Tag // Authors-Tag
// =================================================================== // ===================================================================
// //
// $Id: PyUnit.h,v 1.6 2006/04/24 14:11:48 jpc Exp $ // $Id$
// //
// x-----------------------------------------------------------------x // x-----------------------------------------------------------------x
// | | // | |
@ -43,7 +43,7 @@
// | Author : Jean-Paul CHAPUT | // | Author : Jean-Paul CHAPUT |
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr | // | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
// | =============================================================== | // | =============================================================== |
// | C++ Header : "./PyUnit.h" | // | C++ Header : "./PyDbU.h" |
// | *************************************************************** | // | *************************************************************** |
// | U p d a t e s | // | U p d a t e s |
// | | // | |
@ -59,7 +59,7 @@
#include "hurricane/isobar/PyHurricane.h" #include "hurricane/isobar/PyHurricane.h"
#include "hurricane/Unit.h" #include "hurricane/DbU.h"
namespace Isobar { namespace Isobar {
@ -69,7 +69,7 @@ extern "C" {
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Python Object : "PyUnit". // Python Object : "PyDbU".
@ -77,8 +77,13 @@ extern "C" {
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Functions & Types exported to "PyHurricane.ccp". // Functions & Types exported to "PyHurricane.ccp".
extern PyObject* PyUnit_getUnit ( PyObject* module, PyObject* args ); extern PyObject* PyDbU_db ( PyObject* module, PyObject* args );
extern PyObject* PyUnit_getValue ( PyObject* module, PyObject* args ); extern PyObject* PyDbU_real ( PyObject* module, PyObject* args );
extern PyObject* PyDbU_lambda ( PyObject* module, PyObject* args );
extern PyObject* PyDbU_getDb ( PyObject* module, PyObject* args );
extern PyObject* PyDbU_getReal ( PyObject* module, PyObject* args );
extern PyObject* PyDbU_getLambda ( PyObject* module, PyObject* args );
extern PyObject* PyDbU_getResolution ( PyObject* module );
} // End of extern "C". } // End of extern "C".