Primary Drawing Orders

Primary orders are mainly used to encode drawing operations. Each primary order is organized into a set of fields to which field-compression algorithms are applied. These algorithms are designed to eliminate sending a field if it has not changed since the last time the order was sent and to reduce the size of the field encoding for certain field types when they can be represented by smaller sized data.

The following are the broad categories of drawing operations that primary orders encode.

  • Combining bitmap patterns using raster operations (called a "blit").

  • Drawing graphic objects:

    • Rectangles

    • Lines

    • Polygons

    • Ellipses

  • Displaying text fragments

  • Transferring portions of the screen area from one point to another

  • Temporarily saving obscured regions of the screen

  • Rendering cached bitmaps

  • Rendering cached NineGrid bitmaps

A subset of the primary drawing operations requires rendering data to be present in a specific cache. For example, to render a NineGrid bitmap, it has to be present in the NineGrid cache. This implies that some of the primary drawing orders have a dependency on the secondary orders to first transmit the data necessary to complete a drawing operation to the client.

If a given primary drawing order cannot be constructed, the server sends screen bitmap data in a Bitmap Update (see [MS-RDPBCGR] sections and for the screen area affected by the primary drawing order. The use of the primary drawing orders is specified by using capability sets.