coriolis/hurricane/doc/hurricane/BasicLayer.dox

148 lines
5.4 KiB
C++

// -*- C++ -*-
namespace Hurricane {
/*! \class BasicLayer
* \brief BasicLayer description (\b API)
*
*/
/*! \name Constructors
*/
// \{
/*! \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
* type \c \<material\> for the given technology (some geometrical
* characteristics can also be specified).
*
* \caution Throws an exception if the technology is null, if the name is
* empty, if a layer of same name already exists or if we
* overflow the capacity of the bit field associated to the
* layer mask.
*
* \remark The extract number is a kind of logic number. In example the
* CP layer which represent a poly layer should have the same
* extract number as the CPG layer which represent a poly layer
* used to realize the transistor gates. While extractions
* process, layers which have the same extract number are
* considered as equivalents. A null value indicates that the
* extraction should ignore this layer.
*/
// \}
/*! \name Accessors
*/
// \{
/*! \function const BasicLayer::Type& BasicLayer::getMaterial() const;
* \Return the basic layer material.
*/
/*! \function unsigned BasicLayer::getExtractNumber() const;
* \Return the extract number.
*/
/* \function const string& BasicLayer::getFillPattern() const;
* Basic layers have graphic display characteristics which are
* defined by both a color and a filling pattern. The above
* methods provide the corresponding accessor functions.
*
* <b>Color :</b>
*
* A color is defined by its three RGB components (whose values
* lies in the 0, 255).
*
* <b>Pattern :</b>
*
* A filling pattern is a stiple (transparent bitmap) of 8 by 8
* pixels. The 64 bits of this stiple are defined by a string of
* 16 characters (allowed characters are 0123456789ABCDEF and
* abcdef). The 2 first characters describe the first line, the
* following 2 the second line and so forth. Pixels set to 1
* will be drawn with the color layer while pixels set to 0 are
* transparent. So the string "A5A5A5A5A5A5A5A5" represents a
* stipple with staggered pixel each two ones, while the
* "FFFFFFFFFFFFFFFF" stipple fills all the pixels (default
* value).
*/
/* \function double BasicLayer::getDisplayThreshold() const;
* In order to get an efficient graphic display we need :
*
* On one hand, when we are in close view, quickly filter
* objects which don't intersect the visible area. This is done
* by a quadtree geometrical access structure and also by the
* hierachy of cell assembly.
*
* On the other hand, when we are in an overview, not display
* very small objects (it is useless to display the internals of
* cells which represent few pixels on screen) and not display
* components laying on deep layers (because this doesn't help
* and probably the drawing will be hidden by upper layers).
*
* There is not a clear-cut between those two modes, so we
* change progressively the display behaviour.
*
* For that purpose we introduce for each basic layer a display
* threshold with shifting values, this makes appear
* progresively the different deep layers while we get closer
* and closer to the basic components
*/
// \}
/*! \name Modifiers
*/
// \{
/* \function void BasicLayer::SetColor(unsigned short redValue, unsigned short greenValue, unsigned short blueValue);
* Sets the color of a basic layer.
*/
/* \function void BasicLayer::SetFillPattern(const string& fillPattern);
* Sets the filling pattern of a basic layer.
*
* \caution Throws an exception if the string does't obey to the rules
* described above.
*/
/* \function void BasicLayer::SetDisplayThreshold(double threshold);
* Sets the display threshold of a basic layer.
*/
// \}
/*! \name BasicLayer Collection
*/
// \{
/*! \typedef BasicLayers
* Generic collection representing a set of basic layers.
*/
/*! \typedef BasicLayerLocator
* Generic locator for traversing a collection of basic layers.
*/
/*! \typedef BasicLayerFilter
* Generic filter allowing to select a subset of basic layers
* matching some criteria.
*/
/*! \def for_each_basic_layer(basicLayer, basicLayers)
* Macro for visiting all the layers of a collection of basic
* layers.
*/
// \}
}