vem
is used by pigi
for editing icons. The commands described below are available in addition to the common commands described in the previous section.
alter-geometry a [box] [lines] or [pnts]This command replaces the box, path, or polygon under the cursor with the new specification supplied on the argument list. This can be used to "stretch" geometry or change their composition. For example, to make a box slightly larger, enter the slightly larger box onto the argument list, move the mouse over the old box, and invoke alter-geometry.
change-layer l [objs] or [pnts][lines][boxes] "layer"The change-layer command detaches geometry from its current layer and attaches it to a different layer. The geometry can be specified either as an object set constructed by the selection commands, or directly by drawing points on them, drawing lines through them, or drawing boxes around them. Normally, the target layer is determined by looking at the geometry under the cursor when the command was invoked. However, if the last argument to the command is text, it is interpreted as the name of the target layer.
copy-objects x [objs] {pnt pnt}The copy-objects command copies a set of objects from one place to another. The command takes an object argument that should contain a list of objects to be moved (this is built with select-objects and unselect-objects). The command assumes the object set has been transformed using the transform command or interactively dragged to a new location with the right mouse button. The command makes a copy of the objects which are transformed according to this translation. For example, to copy objects from one location to another, the user first selects the objects using select-objects, then interactively drags the objects using the right button (transformation), then invokes the copy-objects command to make a copy at the new location. Since the items remain selected, new copies can be made without reselecting the objects.
The optional second argument should be two points which specify the source and destination points of the copy. This alternative can be used if the object set is too large for interactive dragging or one wishes to copy objects from one facet into another. If the copy is from one facet to another facet, terminals will not be copied and the objects will be copied in a manner that preserves the position of the objects relative to the source point. The default key binding for this command is short for "xerox".
create-circle C [line] [pnts] "layer"Since
vem
does not have a circle argument type, a special circle drawing command has been added. For most types of geometry, the user should use create-geometry. Circles are specified in one of two ways. The first is a line followed by up to two points. The line specifies a filled circle with the first point being the center and the second its outer radius. If the first point is supplied, an arc is assumed with an angle formed by the second point of the line, the center point and the newly specified point. The angle is measured counter-clockwise. If the last point is supplied, it specifies the inner radius of the circle (otherwise the inner radius is zero). The second form takes two points and an optional point. It specifies a circle where the inner and outer radius are the same. If the last point is supplied, an arc with the same semantics as the first form is assumed. Finally, the layer of the circle is determined from the cursor position or by a final text argument specifying the layer directly.
create-geometry c [pnts] [lines] [boxes] [text] "layer"The create-geometry command creates new geometry. It takes any number of points, lines, boxes, or text and a layer specification. A points argument creates a closed polygon. A line argument creates a multi-point path. Box arguments create boxes. Finally, text arguments create labels. When creating labels, the point set after the label is interpreted as the target points for the label. All the geometry is created on the same layer. This layer may be specified as the final text argument to the command or by invoking the command over an object attached to a layer. If the layer is ambiguous, the command will present a choice of layers in a dialog box. The palette command can be used to create a window which offers all possible layers for creating geometry.
create-instance <*> [pnt] {"master:view name"}In most cases, the leaf cells designed with the physical editing style are not hierarchical. Instead, instances of the low-level cells are connected together using the symbolic editing style. However, those who would like to use
vem
as a purely physical design editor require instances in physical cells. This command places instances in the physical editing style. The instance is placed relative to the point supplied to the command. The master of the instance can be specified in two ways. In the first form, the user supplies a text argument which contains the cell, view, and instance names separated by spaces. The instance name is optional. The second form determines the master of the instance by looking at the instance under the cursor when the command is invoked. This instance can be in the same cell or in another cell. A common practice is to build a cell of primitives and use this cell as a menu for placing physical instances (see the palette command).
create-terminal <*> ["term name"]This command creates a new formal terminal named "term name". The implementation of the terminal is determined by constructing a list of all geometries under the spot where the command was invoked and choosing the smallest coincident boxes from this list. This command is dangerous in
pigi
.
delete-objects D [objs] or [pnts] [boxes] "layer"The delete command removes objects from a cell. The command has two forms. The first takes an object argument constructed using selection commands and deletes all of the items in this set. The second takes any number of point, line, and box arguments and a layer specification. This form deletes all objects under the points, all objects which intersect the lines, and all objects completely contained in the boxes that are attached to the specified layer. The layer may also be specified by placing the cursor over some other object attached to a layer when the command is invoked. If no layer is specified, all of the geometry is deleted.
edit-label E [pnt] {"LAYER"} or [objs]The edit-label command creates and edits labels. The command has two forms. The first form creates a new label at the specified point on the given layer. If the layer is not specified, it will be determined by looking at the object under the cursor. The second form edits labels selected using the select command.
Labels in
oct
are represented as a box where the text is drawn entirely inside the box subject to justification and text height parameters. The edit-label command builds the box automatically by examining the text height and text itself. Thus, the user can control the justification, text height, and the label text. These parameters are set using the edit-label dialog box. This is a modeless dialog box that is posted when the user invokes the edit-label command. The edit-label dialog box, shown on page 14, consists of three check-box areas for adjusting the label justification, and two type-in fields for adjusting the text height and the text itself. The justifications are computed in relation to the point the user specified when the label was first created. Thus, the horizontal justification specifies whether the point should be to the left, center, or right of the text. Similarly, the vertical justification specifies whether the point should be on the bottom, center, or top of the text. Finally, the line justification specifies how the lines should be justified within the text block when there is more than one line. The text height of the text is given in
oct
units. Note that the X window system does not directly support fully scalable fonts. Thus, vem
uses a strategy where it will pick the closest font from a set of fonts that can be specified as a start-up parameter (see the document "Customizing Vem" for details). Finally, the last type in field can be used to enter the text for the label. The label can have as many lines as necessary.
At the bottom of the dialog are four control buttons: Ok, Apply, Dismiss, and Help. The Ok button updates the value of the label and causes the dialog to close. The Apply button updates the value of the label (showing the effects in the graphics window) but does not close the dialog. This allows the user to adjust the label several times if necessary. The Dismiss button closes the dialog without updating the value of the label. Finally, the Help button displays some help about how to use the dialog.
move-objects m [objs] {pnt pnt}
The move-objects command moves a set of objects from one place to another. The command takes an object argument that should contain a list of objects to be moved (this is built with select-objects and unselect-objects). The command assumes the object set has been transformed using the transform command or interactively dragged to a new location using the right mouse button. The command moves the objects to a new location based on this transformation. For example, to move objects from one location to another, the user first selects the objects using select-objects, then interactively drags the objects using the right button (transformation), then invokes the move-objects command to actually move the items to the new location. The items remain selected for further moves if necessary.