Model transformations also can be applied to objects both inside and outside of segments. Model transformations also can be applied to objects created under retained or nonretained drawing mode. This means model transformations affect the output from:
Applications can change the model transformation any number of times in a single segment. Changing the model transformation changes the transformation applied to any drawing primitives used subsequently.
An application can determine the values for the current model transformation by calling GpiQueryModelTransformMatrix, model transformation's scaling, rotation, and translation values in a one-dimensional array representing elements in the MATRIXLF structure.
GpiSetModelTransformMatrix specifies the model transformation's scaling, rotation, and translation values applied to subsequent primitives in the segment. As this function does not require the name a segment, it also can be used to apply transformations to primitives outside of segments.
For example, in the building example earlier in the chapter, if the window is stored in a retained segment, an application could draw several identical windows on the house by setting a new translation component in the model transformation before calling GpiBox.