pub trait LayoutBase: LayoutIds + HierarchyBase {
Show 16 methods
// Required methods
fn dbu(&self) -> Self::Coord;
fn each_layer(&self) -> Box<dyn Iterator<Item = Self::LayerId> + '_>;
fn layer_info(&self, layer: &Self::LayerId) -> LayerInfo<Self::NameType>;
fn find_layer(&self, index: UInt, datatype: UInt) -> Option<Self::LayerId>;
fn layer_by_name(&self, name: &str) -> Option<Self::LayerId>;
fn bounding_box_per_layer(
&self,
cell: &Self::CellId,
layer: &Self::LayerId,
) -> Option<Rect<Self::Coord>>;
fn each_shape_id(
&self,
cell: &Self::CellId,
layer: &Self::LayerId,
) -> Box<dyn Iterator<Item = Self::ShapeId> + '_>;
fn for_each_shape<F>(
&self,
cell: &Self::CellId,
layer: &Self::LayerId,
f: F,
)
where F: FnMut(&Self::ShapeId, &Geometry<Self::Coord>);
fn with_shape<F, R>(&self, shape_id: &Self::ShapeId, f: F) -> R
where F: FnMut(&Self::LayerId, &Geometry<Self::Coord>) -> R;
fn parent_of_shape(
&self,
shape_id: &Self::ShapeId,
) -> (Self::CellId, Self::LayerId);
fn get_transform(
&self,
cell_inst: &Self::CellInstId,
) -> SimpleTransform<Self::Coord>;
// Provided methods
fn bounding_box(&self, cell: &Self::CellId) -> Option<Rect<Self::Coord>> { ... }
fn shape_geometry(&self, shape_id: &Self::ShapeId) -> Geometry<Self::Coord> { ... }
fn shape_layer(&self, shape_id: &Self::ShapeId) -> Self::LayerId { ... }
fn for_each_shape_recursive<F>(
&self,
cell: &Self::CellId,
layer: &Self::LayerId,
f: F,
)
where F: FnMut(SimpleTransform<Self::Coord>, &Self::ShapeId, &Geometry<Self::Coord>) { ... }
fn get_shape_property(
&self,
shape: &Self::ShapeId,
key: &Self::NameType,
) -> Option<PropertyValue> { ... }
}
Expand description
Most basic trait of a layout.
This traits specifies methods for accessing the components of a layout.
Required Methods§
Sourcefn each_layer(&self) -> Box<dyn Iterator<Item = Self::LayerId> + '_>
fn each_layer(&self) -> Box<dyn Iterator<Item = Self::LayerId> + '_>
Iterate over all defined layers.
Sourcefn layer_info(&self, layer: &Self::LayerId) -> LayerInfo<Self::NameType>
fn layer_info(&self, layer: &Self::LayerId) -> LayerInfo<Self::NameType>
Get the LayerInfo
data structure for this layer.
Sourcefn find_layer(&self, index: UInt, datatype: UInt) -> Option<Self::LayerId>
fn find_layer(&self, index: UInt, datatype: UInt) -> Option<Self::LayerId>
Find layer index by the (index, data type) tuple.
Sourcefn layer_by_name(&self, name: &str) -> Option<Self::LayerId>
fn layer_by_name(&self, name: &str) -> Option<Self::LayerId>
Find layer index by the name.
Sourcefn bounding_box_per_layer(
&self,
cell: &Self::CellId,
layer: &Self::LayerId,
) -> Option<Rect<Self::Coord>>
fn bounding_box_per_layer( &self, cell: &Self::CellId, layer: &Self::LayerId, ) -> Option<Rect<Self::Coord>>
Compute the bounding box of the shapes on one layer. The bounding box also includes all child cell instances.
Sourcefn each_shape_id(
&self,
cell: &Self::CellId,
layer: &Self::LayerId,
) -> Box<dyn Iterator<Item = Self::ShapeId> + '_>
fn each_shape_id( &self, cell: &Self::CellId, layer: &Self::LayerId, ) -> Box<dyn Iterator<Item = Self::ShapeId> + '_>
Iterate over the IDs of all shapes in the cell on a specific layer.
Sourcefn for_each_shape<F>(&self, cell: &Self::CellId, layer: &Self::LayerId, f: F)
fn for_each_shape<F>(&self, cell: &Self::CellId, layer: &Self::LayerId, f: F)
Call a function for each shape on this layer.
Sourcefn with_shape<F, R>(&self, shape_id: &Self::ShapeId, f: F) -> R
fn with_shape<F, R>(&self, shape_id: &Self::ShapeId, f: F) -> R
Access a shape by its ID.
Sourcefn parent_of_shape(
&self,
shape_id: &Self::ShapeId,
) -> (Self::CellId, Self::LayerId)
fn parent_of_shape( &self, shape_id: &Self::ShapeId, ) -> (Self::CellId, Self::LayerId)
Get the parent cell and the layer of a shape as a (cell, layer) tuple.
Sourcefn get_transform(
&self,
cell_inst: &Self::CellInstId,
) -> SimpleTransform<Self::Coord>
fn get_transform( &self, cell_inst: &Self::CellInstId, ) -> SimpleTransform<Self::Coord>
Get the geometric transform that describes the location of a cell instance relative to its parent.
Provided Methods§
Sourcefn bounding_box(&self, cell: &Self::CellId) -> Option<Rect<Self::Coord>>
fn bounding_box(&self, cell: &Self::CellId) -> Option<Rect<Self::Coord>>
Compute the bounding box of the cell over all layers.
The bounding box is not defined if the cell is empty. In this
case return None
.
Sourcefn shape_geometry(&self, shape_id: &Self::ShapeId) -> Geometry<Self::Coord>
fn shape_geometry(&self, shape_id: &Self::ShapeId) -> Geometry<Self::Coord>
Get a clone of the shape geometry.
Sourcefn shape_layer(&self, shape_id: &Self::ShapeId) -> Self::LayerId
fn shape_layer(&self, shape_id: &Self::ShapeId) -> Self::LayerId
Get the layer of a shape.
Sourcefn for_each_shape_recursive<F>(
&self,
cell: &Self::CellId,
layer: &Self::LayerId,
f: F,
)
fn for_each_shape_recursive<F>( &self, cell: &Self::CellId, layer: &Self::LayerId, f: F, )
Call a function f
for each shape of this cell and its sub cells.
Along to the geometric shape f
also gets a transformation as argument.
The transformation describes the actual position of the geometric shape relative to the cell
.
Sourcefn get_shape_property(
&self,
shape: &Self::ShapeId,
key: &Self::NameType,
) -> Option<PropertyValue>
fn get_shape_property( &self, shape: &Self::ShapeId, key: &Self::NameType, ) -> Option<PropertyValue>
Get a property of a shape.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.