pub trait LayoutEdit: LayoutBase + HierarchyEdit {
// Required methods
fn create_layer(&mut self, index: UInt, datatype: UInt) -> Self::LayerId;
fn create_layer_with_id(
&mut self,
layer_id: Self::LayerId,
index: UInt,
datatype: UInt,
) -> Result<(), ()>;
fn set_layer_name(
&mut self,
layer: &Self::LayerId,
name: Option<Self::NameType>,
) -> Option<Self::NameType>;
fn insert_shape(
&mut self,
parent_cell: &Self::CellId,
layer: &Self::LayerId,
geometry: Geometry<Self::Coord>,
) -> Self::ShapeId;
fn remove_shape(
&mut self,
shape_id: &Self::ShapeId,
) -> Option<Geometry<Self::Coord>>;
fn replace_shape(
&mut self,
shape_id: &Self::ShapeId,
geometry: Geometry<Self::Coord>,
) -> Geometry<Self::Coord>;
fn set_transform(
&mut self,
cell_inst: &Self::CellInstId,
tf: SimpleTransform<Self::Coord>,
);
// Provided methods
fn set_dbu(&mut self, dbu: Self::Coord) { ... }
fn set_shape_property(
&mut self,
shape: &Self::ShapeId,
key: Self::NameType,
value: PropertyValue,
) { ... }
}Expand description
Trait for layouts that support editing.
Required Methods§
Sourcefn create_layer(&mut self, index: UInt, datatype: UInt) -> Self::LayerId
fn create_layer(&mut self, index: UInt, datatype: UInt) -> Self::LayerId
Create a new layer.
Use set_layer_name() to define a name.
Sourcefn create_layer_with_id(
&mut self,
layer_id: Self::LayerId,
index: UInt,
datatype: UInt,
) -> Result<(), ()>
fn create_layer_with_id( &mut self, layer_id: Self::LayerId, index: UInt, datatype: UInt, ) -> Result<(), ()>
Create a new layer with a specific ID. This is used to clone layer-stacks between layouts while preserving their IDs.
Returns an Err when the ID already exists.
Sourcefn set_layer_name(
&mut self,
layer: &Self::LayerId,
name: Option<Self::NameType>,
) -> Option<Self::NameType>
fn set_layer_name( &mut self, layer: &Self::LayerId, name: Option<Self::NameType>, ) -> Option<Self::NameType>
Set the name of a layer or clear the layer name when passing None.
This method should not change the ID of the layer.
Returns the previous name of the layer.
Sourcefn insert_shape(
&mut self,
parent_cell: &Self::CellId,
layer: &Self::LayerId,
geometry: Geometry<Self::Coord>,
) -> Self::ShapeId
fn insert_shape( &mut self, parent_cell: &Self::CellId, layer: &Self::LayerId, geometry: Geometry<Self::Coord>, ) -> Self::ShapeId
Insert a geometric shape into the parent cell.
Sourcefn remove_shape(
&mut self,
shape_id: &Self::ShapeId,
) -> Option<Geometry<Self::Coord>>
fn remove_shape( &mut self, shape_id: &Self::ShapeId, ) -> Option<Geometry<Self::Coord>>
Remove shape from the parent cell.
Sourcefn replace_shape(
&mut self,
shape_id: &Self::ShapeId,
geometry: Geometry<Self::Coord>,
) -> Geometry<Self::Coord>
fn replace_shape( &mut self, shape_id: &Self::ShapeId, geometry: Geometry<Self::Coord>, ) -> Geometry<Self::Coord>
Replace the geometry of a shape.
Sourcefn set_transform(
&mut self,
cell_inst: &Self::CellInstId,
tf: SimpleTransform<Self::Coord>,
)
fn set_transform( &mut self, cell_inst: &Self::CellInstId, tf: SimpleTransform<Self::Coord>, )
Set the geometric transform that describes the location of a cell instance relative to its parent.
Provided Methods§
Sourcefn set_dbu(&mut self, dbu: Self::Coord)
fn set_dbu(&mut self, dbu: Self::Coord)
Set the distance unit used in this layout in ‘pixels per micron’.
Sourcefn set_shape_property(
&mut self,
shape: &Self::ShapeId,
key: Self::NameType,
value: PropertyValue,
)
fn set_shape_property( &mut self, shape: &Self::ShapeId, key: Self::NameType, value: PropertyValue, )
Set 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.