-- Module SI-PROTOCOL (T.126:07/1997)
-- See also ITU-T T.126 (07/1997)
-- See also the index of all ASN.1 assignments needed in this document

--  Begin SI Definitions
SI-PROTOCOL DEFINITIONS AUTOMATIC TAGS ::=
BEGIN

--  NOTE: All abstract types defined shall be exported.
--  ArchiveEntryName
--  Name used to reference an archive entry.
ArchiveEntryName ::= BMPString(SIZE (1..256))

--  ArchiveError
--  Specifies the cause of an error at a remote terminal during
--  a workspace archive operation.
ArchiveError ::= CHOICE {
  entryNotFound             NULL,
  --  The terminal does not have the entry that matches the
  --   archive name being accessed for reading, editing, or
  --  deletion.
  entryExists               NULL,
  --  The terminal already has an archive entry that matches
  --  the name of the archive entry name being created.
  storageExceeded           NULL,
  --  The terminal does not have sufficient memory to store
  --  the requested information.
  archiveNoLongerAvailable  NULL,
  --  The archive indicated is no longer available.
  unspecifiedError          NULL,
  --  A general error that is not previously defined has occurred.
  nonStandardError          NonStandardIdentifier,
  --  Non-standard error code.
  ...
}

--  ArchiveHeader
--  This type specifies the parameters used to address archives
--  stored at remote terminals.
ArchiveHeader ::= SEQUENCE {
  archiveName              ArchiveName,
  --  Name of the archive.
  archiveCreationTime      GeneralizedTime,
  --  Time and date of the creation of the archive.
  archiveModificationTime  GeneralizedTime,
  --  Time and date of the most recent modification of the archive.
  ...
}

--  ArchiveMode
--  One of the following sets of access modes must be indicated
--  when an archive is opened.
ArchiveMode ::= SEQUENCE {
  create  BOOLEAN,
  --  TRUE indicates that the archive shall be created.  If an archive with
  --  the same name exists, the operation should fail.
  read    BOOLEAN,
  --  TRUE indicates that the archive shall be opened for reading only.
  write   BOOLEAN,
  --  TRUE indicates that the archive shall be opened for writing.
  ...
}

--  ArchiveName
--  Name used to reference an archive.
ArchiveName ::= BMPString(SIZE (1..256))

--  ArchiveOpenResult
--  Specifies the result of an archive open request.
ArchiveOpenResult ::= CHOICE {
  archiveOpenSuccessful  NULL,
  --  The requested archive was successfully opened.
  archiveNotFound        NULL,
  --  An archive to be opened for reading or writing was
  --   not found to exist.
  archiveTimeIncorrect   ArchiveHeader,
  --  An archive to be opened for reading or writing was found,
  --   but with incorrect creation or modification time. The
  --  actual header is included in the error response in this case.
  archiveExists          NULL,
  --  An archive to be opened for creation already exists and will
  --  not be overwritten.
  archiveOpenForWriting  NULL,
  --  An archive to be opened for writing is already open for writing.
  storageExceeded        NULL,
  --  The terminal does not have sufficient memory to store the
  --  requested archive.
  unspecifiedError       NULL,
  --  An unspecified error has occurred preventing the archive
  --  from being opened.
  nonStandardResult      NonStandardIdentifier,
  --  Non-standard result code.
  ...
}

--  BitmapAbortReason
--  These values represent the possible reason codes
--  for the BitmapAbortPDU.
BitmapAbortReason ::= CHOICE {
  unspecified        NULL,
  --  Bitmap aborted for an unspecified reason.
  noResources        NULL,
  --  Bitmap creation failed due to local resource management
  --  problems.
  outOfPaper         NULL,
  --  Bitmap creation failed because the receiving terminal is
  --  out of paper.
  nonStandardReason  NonStandardParameter,
  ...
}

--  BitmapAttribute
--  This CHOICE represents the list of possible bitmap attributes.
BitmapAttribute ::= CHOICE {
  viewState             ViewState,
  --  Indicates the state.
  zOrder                ZOrder,
  --  Used to set the bitmap to the front or back of the display
  --   list within an addressable plane.
  nonStandardAttribute  NonStandardParameter,
  ...,
  --  Parameters added during 1st revision
  transparencyMask      TransparencyMask
}

--  BitmapData
--  All or part of a bitmap bitstream.
BitmapData ::= SEQUENCE {
  dataCheckpoint  SEQUENCE (SIZE (1..100)) OF TokenID OPTIONAL,
  --  Tokens to uninhibit when the corresponding data is ready
  --  for display if checkpointing is enabled for the exchange
  padBits         INTEGER(1..256) OPTIONAL,
  --  Count of bits at the end of the data octets that are not part
  --  of the image bitstream and are to be ignored
  data            OCTET STRING(SIZE (1..8192)),
  --  The compression-format-specific bitmap data.
  ...
}

--  BitmapDestinationAddress
--  Destination address for bitmap exchanges.
BitmapDestinationAddress ::= CHOICE {
  hardCopyDevice           NULL,
  softCopyImagePlane       SoftCopyDataPlaneAddress,
  softCopyAnnotationPlane  SoftCopyDataPlaneAddress,
  softCopyPointerPlane     SoftCopyPointerPlaneAddress,
  ...,
  --  Parameters added during 1st revision
  nonStandardDestination   NonStandardParameter
}

--  BitmapHeaderUncompressed
--  This type specifies the parameters of uncompressed bitmap
--  bitstreams.
BitmapHeaderUncompressed ::= SEQUENCE {
  colorMappingMode
    CHOICE {directMap
              SEQUENCE {colorSpace      ColorSpaceSpecifier,
                        resolutionMode  ColorResolutionModeSpecifier},
            paletteMap
              SEQUENCE {colorPalette  ColorPalette,
                        bitsPerPixel  INTEGER(1 | 4 | 8)},
            ...},
  ...
}

--  BitmapHeaderT4
--  Bitmap header for T.4 (G3) encoding
BitmapHeaderT4 ::= SEQUENCE {
  twoDimensionalEncoding  BOOLEAN,
  --  2-D encoding if TRUE,
  --  1-D encoding if FALSE
  ...
}

--  BitmapHeaderT6
--  Bitmap header for T.6 (G4) encoding
BitmapHeaderT6 ::= SEQUENCE {...
}

--  BitmapHeaderT81
--  This type is used to specify the parameters necessary to 
--  decode and display a T.81 (JPEG) image that are not specified
--  within the T.81 bitstream.
BitmapHeaderT81 ::= SEQUENCE {
  colorSpace       ColorSpaceSpecifier,
  resolutionMode   ColorResolutionModeSpecifier,
  ...,
  --  Parameters added during 1st revision
  colorPalette     ColorPalette OPTIONAL
  --  Color palette to be optionally used by the receiver to render
  --  the associated bitmap if the local display device is
  --  palette-mapped. This parameter is provided as a
  --  convenience for receiver rendering.
}

--  BitmapHeaderT82
--  This type is used to specify the parameters necessary to 
--  decode and display a T.82 (JBIG) image that are not specified
--  within the T.82 bitstream.
BitmapHeaderT82 ::= SEQUENCE {
  colorMappingMode
    CHOICE {directMap   ColorSpaceSpecifier,
            --  Only greyscale and RGB colorspaces are allowed.
            paletteMap
              SEQUENCE {bitmapPalette    ColorPalette,
                        progressiveMode
                          CHOICE {progressivePalettes
                                    SEQUENCE (SIZE (1..8)) OF ColorIndexTable,
                                  selfProgressive      NULL,
                                  ...} OPTIONAL}},
  ...
}

--  BitmapRegion
--  This type specifies a rectangular subregion within a bitmap.
BitmapRegion ::= SEQUENCE {
  upperLeft
    SEQUENCE {xCoordinate  INTEGER(0..65535), --  X component of a Cartesian address--
              yCoordinate  INTEGER(0..65535)}, --  Y component of a Cartesian address
  lowerRight
    SEQUENCE {xCoordinate  INTEGER(0..65535), --  X component of a Cartesian address--
              yCoordinate  INTEGER(0..65535)} --  Y component of a Cartesian address
}

--  BitmapSize
--  The size of a bitmap in pixels.
BitmapSize ::= SEQUENCE {
  width   INTEGER(1..65536),
  --  The number of pixels horizontally
  height  INTEGER(1..65536)
  --  The number of pixels vertically
}

--  ButtonEvent
--  Describes pointing device button events.
ButtonEvent ::= CHOICE {
  buttonUp                NULL,
  --  The button is up.
  buttonDown              NULL,
  --  The button is down.
  buttonDoubleClick       NULL,
  --  A button down event occurred within the double-click
  --  time window.
  buttonTripleClick       NULL,
  --  A button down event occurred within the triple-click
  --  time window.
  buttonQuadClick         NULL,
  --  A button down event occurred within the quad-click
  --  time window.
  nonStandardButtonEvent  NonStandardIdentifier,
  ...
}

--  ColorAccuracyEnhancementCIELab
ColorAccuracyEnhancementCIELab ::= CHOICE {
  predefinedCIELabSpace
    CHOICE {nonStandardCIELabSpace  NonStandardParameter,
            ...},
  generalCIELabParameters
    SEQUENCE {colorTemperature  INTEGER(0..MAX) OPTIONAL, --  Color temperature of the white point assumed by the color space (in degrees Kelvin)--
              gamut
                SEQUENCE {lSpan    INTEGER(-32768..32767), --  max L* - min L*--
                          lOffset  INTEGER(-32768..32767), --  offset of the zero point for L--
                          aSpan    INTEGER(-32768..32767), --  max a* - min a*--
                          aOffset  INTEGER(-32768..32767), --  offset of the zero point for a--
                          bSpan    INTEGER(-32768..32767), --  max b* - min b*--
                          bOffset  INTEGER(-32768..32767) --  offset of the zero point for b 
              } OPTIONAL,
              ...},
  ...
}

--  ColorAccuracyEnhancementGreyscale
ColorAccuracyEnhancementGreyscale ::= CHOICE {
  predefinedGreyscaleSpace
    CHOICE {nonStandardGreyscaleSpace  NonStandardParameter,
            ...},
  generalGreyscaleParameters
    SEQUENCE {gamma  REAL(0..MAX) OPTIONAL,
              --  Gamma value of the color space
              ...},
  ...
}

--  ColorAccuracyEnhancementRGB
ColorAccuracyEnhancementRGB ::= CHOICE {
  predefinedRGBSpace    CHOICE {nonStandardRGBSpace  NonStandardParameter,
                                ...},
  generalRGBParameters
    SEQUENCE {gamma             REAL(0..MAX) OPTIONAL,
              --  Gamma value of the color space
              colorTemperature  INTEGER(0..MAX) OPTIONAL,
              -- Color temperature of the white point assumed by the color
              --  space (in degrees Kelvin)
              primaries
                SEQUENCE {red    ColorCIExyChromaticity,
                          --  CIE xy chromaticity coordinate of the red  primary
                          green  ColorCIExyChromaticity,
                          --  CIE xy chromaticity coordinate of the green primary
                          blue   ColorCIExyChromaticity
                          --  CIE xy chromaticity coordinate of the blue primary
              } OPTIONAL,
              ...},
  ...
}

--  ColorAccuracyEnhancementYCbCr
ColorAccuracyEnhancementYCbCr ::= CHOICE {
  predefinedYCbCrSpace
    CHOICE {cCIR709              NULL,
            nonStandardRGBSpace  NonStandardParameter,
            ...},
  generalYCbCrParameters
    SEQUENCE {gamma             REAL(0..MAX) OPTIONAL,
              --  Gamma value of the color space
              colorTemperature  INTEGER(0..MAX) OPTIONAL,
              --  Color temperature of the white point  assumed by the color
              --   space (in degrees Kelvin)
              primaries
                SEQUENCE {red    ColorCIExyChromaticity,
                          -- CIE xy chromaticity coordinate of the red primary
                          green  ColorCIExyChromaticity,
                          --  CIE xy chromaticity coordinate of the green primary
                          blue   ColorCIExyChromaticity
                          --  CIE xy chromaticity coordinate of the blue primary
              } OPTIONAL,
              ...},
  ...
}

--  ColorCIELab
--  Definition of a CIELab color.
ColorCIELab ::= SEQUENCE {
  l  INTEGER(0..255),
  --  Perceptually normalized luminance component
  a  INTEGER(0..255),
  --  One of two perceptually normalized chroma components
  b  INTEGER(0..255)
  --  One of two perceptually normalized chroma components
}

--  ColorCIExyChromaticity
--  Definition of a CIE normalized chromaticity value.
ColorCIExyChromaticity ::= SEQUENCE {
  x  REAL(0..one),
  --  CIE normalized x component
  y  REAL(0..one)
  --  CIE normalized y component
}

--  ColorIndexTable
--  This type is used to specify collections of color 
--  values.  All entries are references to absolute 
--  color palette data.
ColorIndexTable ::= SEQUENCE (SIZE (1..256)) OF INTEGER(0..255)

--  ColorPalette
ColorPalette ::= SEQUENCE {
  colorLookUpTable
    CHOICE {paletteRGB
              SEQUENCE {palette      SEQUENCE (SIZE (2..256)) OF ColorRGB,
                        enhancement  ColorAccuracyEnhancementRGB OPTIONAL,
                        ...},
            paletteCIELab
              SEQUENCE {palette      SEQUENCE (SIZE (2..256)) OF ColorCIELab,
                        enhancement  ColorAccuracyEnhancementCIELab OPTIONAL,
                        ...},
            paletteYCbCr
              SEQUENCE {palette      SEQUENCE (SIZE (2..256)) OF ColorYCbCr,
                        enhancement  ColorAccuracyEnhancementYCbCr OPTIONAL,
                        ...},
            nonStandardPalette  NonStandardParameter,
            ...},
  transparentEntry  INTEGER(0..255) OPTIONAL,
  --  Index value of transparent color
  ...
}

--  ColorResolutionModeSpecifier
ColorResolutionModeSpecifier ::= CHOICE {
  resolution4-4-4            NULL,
  --  Indicates single component 
  --  4:4:4
  resolution-4-2-2           NULL,
  --  4:2:2 chrominance sub-sampling
  resolution-4-2-0           NULL,
  --  4:2:0 chrominance sub-sampling
  nonStandardResolutionMode  NonStandardIdentifier,
  ...
}

--  ColorRGB
--  Definition of an RGB color.
ColorRGB ::= SEQUENCE {
  r  INTEGER(0..255),
  --  Red color component
  g  INTEGER(0..255),
  --  Green color component
  b  INTEGER(0..255)
  --  Blue color component
}

--  ColorSpaceSpecifier
ColorSpaceSpecifier ::= CHOICE {
  greyscale
    SEQUENCE {accuracyEnhancement  ColorAccuracyEnhancementGreyscale OPTIONAL
  },
  yCbCr
    SEQUENCE {accuracyEnhancement  ColorAccuracyEnhancementYCbCr OPTIONAL
  },
  rgb
    SEQUENCE {accuracyEnhancement  ColorAccuracyEnhancementRGB OPTIONAL
  },
  cieLab
    SEQUENCE {accuracyEnhancement  ColorAccuracyEnhancementCIELab OPTIONAL
  },
  nonStandardColorSpace  NonStandardIdentifier,
  ...
}

--  ColorYCbCr
--  Definition of a YCbCr color.
ColorYCbCr ::= SEQUENCE {
  y   INTEGER(0..255),
  --  Luminance component
  cb  INTEGER(0..255),
  --  Normalized blue minus luminance component
  cr  INTEGER(0..255)
  --  Normalized red minus luminance component
}

--  ConductorPrivilege
--  List of privileges that are awarded by the SICE at the conducting
--  node to other SICEs in the session.
ConductorPrivilege ::= CHOICE {
  workspacePrivilege            NULL,
  --  Privilege to create, edit, or delete workspaces
  annotationPrivilege           NULL,
  --  Privilege to create, edit, or delete annotation bitmaps
  --  or drawing elements
  imagePrivilege                NULL,
  --  Privilege to create, edit, or delete image bitmaps
  pointingPrivilege             NULL,
  --  Privilege to create, edit, or delete pointers
  remoteKeyEventPrivilege       NULL,
  --  Privilege to send remote keyboard events
  remotePointingEventPrivilege  NULL,
  --  Privilege to send pointing device events
  remotePrintingPrivilege       NULL,
  --  Privilege to request remote printing
  archiveCreateWritePrivilege   NULL,
  --  Privilege to create or append an archive
  nonStandardPrivilege          NonStandardIdentifier,
  --  Non-standard privilege that was successfully negotiated.
  ...
}

--  DataPlaneID
--  This is the identifier of a data plane within a workspace.
DataPlaneID ::= INTEGER(0..255)

--  DrawingAttribute
--  The following drawingAttributes are used to specify visual and
--  behavioral properties of a drawing.
DrawingAttribute ::= CHOICE {
  penColor              WorkspaceColor,
  --  Color of drawing pen
  fillColor             WorkspaceColor,
  --  Color used to fill a closed region
  penThickness          PenThickness,
  --  Width of pen
  penNib                PenNib,
  --  Shape of pen nib
  lineStyle             LineStyle,
  --  Style of line
  highlight             BOOLEAN,
  --  Flag indicating whether the drawing element should be
  --  of a solid color or a highlight (semi-transparent)
  viewState             ViewState,
  --  Indicates the visibility state
  zOrder                ZOrder,
  --  Used to set the graphical element to the front or back of the
  --  display list within an addressable plane
  nonStandardAttribute  NonStandardParameter,
  ...
}

--  DrawingDestinationAddress
--  A DrawingDestinationAddress specifies the destination of drawing
--  elements.
DrawingDestinationAddress ::= CHOICE {
  softCopyAnnotationPlane  SoftCopyDataPlaneAddress,
  ...,
  --  Parameters added during 1st revision
  nonStandardDestination   NonStandardParameter
}

--  DrawingType
--  A DrawingType specifies the shape of a drawn element.
DrawingType ::= CHOICE {
  point                   NULL,
  --  Unconnected points
  openPolyLine            NULL,
  --  Points connected with straight lines. The last point is not
  --  connected to the first.
  closedPolyLine          NULL,
  --  Points connected with straight lines. 
  --  The last point is connected to the first.
  rectangle               NULL,
  --  A rectangle defined by two corners
  ellipse                 NULL,
  --  An ellipse
  nonStandardDrawingType  NonStandardIdentifier,
  --  Negotiated non-standard type
  ...
}

DSMCCTap ::= SEQUENCE {
  use             INTEGER(0..65535),
  --  the use for the Tap
  id              INTEGER(0..65535),
  --  identifier for the Tap
  associationTag  INTEGER(0..65535),
  --  group identifier for Tap resource descriptors
  selector        OCTET STRING(SIZE (1..256)) OPTIONAL,
  --   upper protocol selector info
  ...
}

--  EditablePlaneCopyDescriptor
--  Paired list of handles for source objects and their copies.
EditablePlaneCopyDescriptor ::= SEQUENCE {
  objectList
    SEQUENCE (SIZE (1..65536)) OF
      SEQUENCE {sourceObjectHandle       Handle,
                destinationObjectHandle  Handle
                --  This handle is used to reference the new copy of the source object in the future. 
      },
  destinationOffset  WorkspacePoint OPTIONAL,
  --  This parameter defines an offset to be added to the
  --  coordinates of all of the copied objects. If not present,
  --  zero offset is assumed.
  planeClearFlag     BOOLEAN,
  --  When FALSE, the destination objects are appended to
  --  the existing set of objects in the destination plane. When
  --  TRUE, all existing objects in the destination plane are
  --  deleted prior to the copy operation.
  ...
}

--  Handle
--  Unique identifier that is used to address objects to allow edit
--  and/or delete operations. These are obtained from GCC via the
--  GCC-Registry-Allocate-Handle request/confirm primitives.
Handle ::= INTEGER(0..4294967295)

--  KeyCode
--  Character code that is contained in a RemoteKeyboardEventPDU.
--  This is either a two-octet value that uses the UNICODE character
--  representation or special key specifier.
KeyCode ::= CHOICE {
  character       BMPString(SIZE (1)),
  --  UNICODE character
  fkey            INTEGER(1..32),
  --  Function key
  --  Edit and navigation keys
  upArrow         NULL,
  downArrow       NULL,
  leftArrow       NULL,
  rightArrow      NULL,
  pageUp          NULL,
  pageDown        NULL,
  home            NULL,
  end             NULL,
  insert          NULL,
  delete          NULL,
  nonStandardKey  NonStandardIdentifier,
  --  Non-standard key code
  ...
}

--  KeyModifier
--  Collection of keyboard modifiers.
KeyModifier ::= CHOICE {
  leftAlt              NULL,
  --  Indicates the left ALT modifier key is pressed
  rightAlt             NULL,
  --  Indicates the right ALT modifier key is pressed
  leftShift            NULL,
  --  Indicates the left SHIFT modifier key is pressed
  rightShift           NULL,
  --  Indicates the right SHIFT modifier key is pressed
  leftControl          NULL,
  --  Indicates the left CONTROL modifier key is pressed
  rightControl         NULL,
  --  Indicates the right CONTROL modifier key is pressed
  leftSpecial          NULL,
  --  Indicates the left SPECIAL modifier key is pressed
  rightSpecial         NULL,
  --  Indicates the right SPECIAL modifier key is pressed
  numberPad            NULL,
  --  Indicates the associated keystroke is actuated by the
  --  numeric keypad
  scrollLock           NULL,
  --  Indicates that the scroll lock is active
  nonStandardModifier  NonStandardIdentifier,
  --  Non-standard key modifier.
  ...
}

--  KeyPressState
--  Set of events for a key, used as part of
--  a RemoteKeyboardEventPDU
KeyPressState ::= CHOICE {
  none                      NULL,
  -- No key event is signaled. This is used when only keyboard
  --  modifier keys are changing state.
  keyPress                  NULL,
  --  A key press event has occurred. Note that multiple keyPress
  --  events may occur as a result of a keyDown event and keyboard
  --  auto-repeat.
  keyDown                   NULL,
  --  A key down transition has occurred. Note that this implies a
  --  keyUp for an unmatched previously received keyDown.
  keyUp                     NULL,
  --  A key up transition has occurred.
  nonStandardKeyPressState  NonStandardIdentifier,
  --  Non-standard key press state.
  ...
}

--  LineStyle
--  The LineStyle attribute is used during a line draw procedure. It
--  specifies the type of line drawn. 
LineStyle ::= CHOICE {
  solid             NULL,
  --  All pixels between endpoints are to be drawn.
  dashed            NULL,
  --  A dashed pattern is to be applied.
  dotted            NULL,
  --  A dotted pattern is to be applied.
  dash-dot          NULL,
  --  A dash-dot pattern is to be applied.
  dash-dot-dot      NULL,
  --  A dash-dot-dot pattern is to be applied.
  two-tone          NULL,
  --  Line color is to be applied to 50% of the line width with a
  --  complimentary color applied to either side.  The width of
  --  either side region is to be 25% of the line width.
  nonStandardStyle  NonStandardIdentifier,
  ...
}

--  MCSUserID 
--  This type is used to specify MCS User IDs.
MCSUserID ::= INTEGER(1001..65535)

--  H221NonStandardIdentifier 
--  Used to specify non-standard objects using H.221 numbering.
--  The first four octets shall designate country code and
--  manufacturer code, assigned as specified in
--  Annex A/H.221, for NS-cap and NS-comm.
H221NonStandardIdentifier ::= OCTET STRING(SIZE (4..255))

--  NonStandardIdentifier 
--  Unique identifier used to specify non-standard capabilities and
--  parameters either as an ASN.1 OBJECT IDENTIFIER or as an H.221
--  non-standard object.
NonStandardIdentifier ::= CHOICE {
  object           OBJECT IDENTIFIER,
  h221nonStandard  H221NonStandardIdentifier
}

--  NonStandardParameter 
--  Used to specify non-standard parameters.  This includes a
--  data field which may be used to fill in parameter values
--  of the type indicated by the NonStandardIdentifier.
NonStandardParameter ::= SEQUENCE {
  nonStandardIdentifier  NonStandardIdentifier,
  data                   OCTET STRING
}

--  one
--  This type provides a real value = 1 for use in this Recommendation.
one REAL ::=
  {mantissa 1, base 2, exponent 0}

--  PenNib
--  This type specifies the shape of the nib of the pen that is
--  used to draw graphical elements.
PenNib ::= CHOICE {
  circular        NULL,
  --  A circle is used for the nib shape.
  square          NULL,
  --  A square is used for the nib shape.
  nonStandardNib  NonStandardIdentifier,
  --  A non-standard pen nib
  ...
}

--  PenThickness
--  This type specifies the thickness of the pen that is used to
--  draw graphical elements.
PenThickness ::= INTEGER(1..255)

--  PermanentPlaneCopyDescriptor
--  Describes source and destination regions within the corresponding
--  planes to be copied from and to. This is only to be used when the
--  source and destination planes are permanent.
PermanentPlaneCopyDescriptor ::= SEQUENCE {
  sourceRegion       WorkspaceRegion,
  --  Source rectangle to be copied. 
  destinationRegion  WorkspaceRegion,
  --  Destination rectangle to be copied. 
  --  May be restricted by caps to be the same size as
  --  the source region.
  ...
}

--  PixelAspectRatio
--  This type specifies that horizontal to vertical ratio of
--  the size of a pixel.
PixelAspectRatio ::= CHOICE {
  square                  NULL,
  --  pixel aspect ratio is 1:1
  cif                     NULL,
  --  pixel aspect ratio is 12:11 (hor:ver)
  fax1                    NULL,
  --  385:800 (hor:ver)
  --  8 lines/mm horizontally, 
  --  3.85 lines/mm vertically
  fax2                    NULL,
  --  770:800 (hor:ver)
  --  8 lines/mm horizontally,
  --  7.7 lines/mm vertically
  general
    SEQUENCE
     --  The following two integers specify a rational number that
    --  is equivalent to a pixel's width divided by a pixel's height.
    {numerator    INTEGER(1..65535),
     denominator  INTEGER(1..65535)},
  nonStandardAspectRatio  NonStandardIdentifier,
  ...
}

--  PlaneAttribute
--  Plane attributes are editable characteristics of workspace planes.
PlaneAttribute ::= CHOICE {
  protection            PlaneProtection,
  --  Access restrictions for a plane
  nonStandardAttribute  NonStandardParameter,
  --  Non-standard attribute
  ...
}

--  PlaneProtection
--  This enumeration identifies the possible access restrictions
--  that can be imposed on a workspace plane.
PlaneProtection ::= SEQUENCE {
  protected  BOOLEAN,
  --  Only the SICEs granted access via the
  --  protectedPlaneAccessList can submit data to this plane.
  ...
}

--  PlaneUsage
--  This type specifies the usage of a single plane in a workspace.
PlaneUsage ::= CHOICE {
  annotation             NULL,
  --  The plane is designated to contain annotation data.
  image                  NULL,
  --  The plane is designated to contain image data.
  nonStandardPlaneUsage  NonStandardIdentifier,
  --  The plane is designated to contain non-standard plane data.
  ...
}

--  PointList
--  A list of points to define a drawing object using one of
--  three possible encodings depending on how far any point
--  in the list strays from the anchor point.
PointList ::= CHOICE {
  pointsDiff4   SEQUENCE (SIZE (0..255)) OF PointDiff4,
  pointsDiff8   SEQUENCE (SIZE (0..255)) OF PointDiff8,
  pointsDiff16  SEQUENCE (SIZE (0..255)) OF PointDiff16
}

--  PointListEdits
--  A list of points to edit a drawing object using one of
--  three possible encodings depending on how far any point
--  in the list strays from the anchor point.
PointListEdits ::=
  SEQUENCE SIZE (1..255) OF
    SEQUENCE {initialIndex          INTEGER(0..65534),
              --  Index of the first (or only) point to edit
              initialPointEdit      PointDiff16,
              --  Position of the point specified relative to the anchor point
              subsequentPointEdits  PointList OPTIONAL,
              --  Points specified relative to the previous point in this list
              --  (the first one specified relative to the initialPointEdit).
              --  When this list is used, successive points are assumed to
              --  have indices sequentially following the initialPointIndex.
              ...}

--  PointDiff4
--  A point specified differentially relative to an anchor point
--  with a range from -8 to +7.
PointDiff4 ::= SEQUENCE {
  xCoordinate  INTEGER(-8..7),
  --  X component of a Cartesian address
  yCoordinate  INTEGER(-8..7)
  --  Y component of a Cartesian address
}

--  PointDiff8
--  A point specified differentially relative to an anchor point
--  with a range from -128 to +127.
PointDiff8 ::= SEQUENCE {
  xCoordinate  INTEGER(-128..127),
  --  X component of a Cartesian address
  yCoordinate  INTEGER(-128..127)
  --  Y component of a Cartesian address
}

--  PointDiff16
--  A point specified differentially relative to an anchor point
--  with a range from -32768 to +32767.
PointDiff16 ::= SEQUENCE {
  xCoordinate  INTEGER(-32768..32767),
  --  X component of a Cartesian address
  yCoordinate  INTEGER(-32768..32767)
  --  Y component of a Cartesian address
}

--  RemoteEventDestinationAddress
--  A RemoteEventDestinationAddress specifies the destination of 
--  a remote event.
RemoteEventDestinationAddress ::= CHOICE {
  softCopyWorkspace       Handle,
  ...,
  --  Parameters added during 1st revision
  nonStandardDestination  NonStandardParameter
}

--  RemoteEventPermission
--  Choice of remote events that can be issued to a workspace.
RemoteEventPermission ::= CHOICE {
  keyboardEvent        NULL,
  pointingDeviceEvent  NULL,
  nonStandardEvent     NonStandardIdentifier,
  ...
}

--  RotationSpecifier
--  Specifies a rotation angle and an axis of revolution
RotationSpecifier ::= SEQUENCE {
  rotationAngle  INTEGER(0..21599),
  --  0 degrees to 359 degrees 59 minutes in units of minutes
  --  of arc.
  rotationAxis   PointDiff16
  --  Workspace location relative to an object's anchor point.
}

--  SoftCopyDataPlaneAddress
--  Address of a workspace data plane. 
SoftCopyDataPlaneAddress ::= SEQUENCE {
  workspaceHandle  Handle,
  plane            DataPlaneID
}

--  SoftCopyPointerPlaneAddress
--  Address of a workspace pointer plane.
SoftCopyPointerPlaneAddress ::= SEQUENCE {workspaceHandle  Handle
}

--  SourceDisplayIndicator
--  Indicator of the size and location of a workspace view within
--  the display device of the sourcing terminal.
SourceDisplayIndicator ::= SEQUENCE {
  displayAspectRatio   REAL(0..MAX),
  --  Aspect ratio of the display; horizontal over vertical size.
  --  Positive real values.
  horizontalSizeRatio  REAL(0..MAX),
  --  Ratio of workspace view horizontal dimension to display
  --  horizontal dimension.
  --  Positive real values.
  horizontalPosition   REAL,
  --  Horizontal offset of upper left corner of the workspace view
  --  from the upper left corner of the display normalized to the
  --  display width (where the display spans the horizontal
  --  range 0.0 to 1.0).
  verticalPosition     REAL,
  --  Vertical offset of upper left corner of the workspace view
  --  from the upper left corner of the display normalized to
  --  the display height (where the display spans the vertical
  --  range 0.0 to 1.0).
  ...
}

--  TokenID
--  MCS Token ID.
TokenID ::= INTEGER(1..65535)

--  TransparencyMask
--  A binary bitmap that indicates which pixels in a bitmap shall be
--  treated as transparent.
TransparencyMask ::= SEQUENCE {
  bitMask
    CHOICE {uncompressed       OCTET STRING,
            --  Binary bitmap where a value of 1 indicates that the
            --  corresponding pixel in the reference bitmap shall be
            --  displayed. A value of 0 indicates that that pixel shall be
            --  treated as transparent.
            jbigCompressed     OCTET STRING,
            --  Same as above but additionally compressed using JBIG.
            nonStandardFormat  NonStandardParameter,
            ...},
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  ...
}

--  VideoWindowDestinationAddress
--  A VideoWindowDestinationAddress specifies the destination of video windows.
VideoWindowDestinationAddress ::= CHOICE {
  softCopyImagePlane      SoftCopyDataPlaneAddress,
  nonStandardDestination  NonStandardParameter,
  ...
}

--  VideoSourceIdentifier
--  Used to reference an out-of-band video source.
VideoSourceIdentifier ::= CHOICE {
  default                      NULL,
  h243SourceIdentifier         OCTET STRING(SIZE (2)),
  --  A two-octet field. The first octet should contain
  --  the H.243 MCU ID (M), and the second octet should 
  --  contain the H.243 Terminal ID (T).
  h245SourceIdentifier         INTEGER(0..65535),
  dSMCCConnBinder              SEQUENCE OF DSMCCTap,
  videoIdentifier              OCTET STRING(SIZE (1..256)),
  nonStandardSourceIdentifier  NonStandardParameter,
  ...
}

--  VideoWindowAttribute
--  Attributes of video windows.
VideoWindowAttribute ::= CHOICE {
  transparencyMask      TransparencyMask,
  --  Bit mask specifying which pixels should be treated
  --  as transparent within the video window.
  nonStandardAttribute  NonStandardParameter,
  ...
}

--  ViewState
--  Controls the visibility state of an object.
ViewState ::= CHOICE {
  unselected            NULL,
  selected              NULL,
  hidden                NULL,
  nonStandardViewState  NonStandardIdentifier,
  ...
}

--  WorkspaceAttribute
--  Workspace attributes are editable characteristics of workspace.
WorkspaceAttribute ::= CHOICE {
  backgroundColor       WorkspaceColor,
  --  This specifies the background color of the workspace.
  preserve              BOOLEAN,
  --  If TRUE, the associated workspace resource should not
  --  be placed on the viewed workspace queue once it has been
  --  automatically removed from the Focus state.
  nonStandardAttribute  NonStandardParameter,
  ...
}

--  WorkspaceColor
--  The following defines a generic type for a color, used where a
--  color is required for drawing or workspace backgrounds.
WorkspaceColor ::= CHOICE {
  workspacePaletteIndex  INTEGER(0..255),
  rgbTrueColor           ColorRGB,
  transparent            NULL,
  ...
}

--  WorkspaceCoordinate
--  A WorkspaceCoordinate is the value of a single axis of
--  a point in a workspace.
WorkspaceCoordinate ::= INTEGER(-21845..43690)

--  WorkspaceDeleteReason
--  This value represents the reason codes for the 
--  WorkspaceDeletePDU.
WorkspaceDeleteReason ::= CHOICE {
  userInitiated        NULL,
  --  Workspace deletion initiated by user
  insufficientStorage  NULL,
  --  Workspace deleted due to insufficient storage capacity.
  nonStandardReason    NonStandardParameter,
  ...
}

--  WorkspaceIdentifier
WorkspaceIdentifier ::= CHOICE {
  activeWorkspace   Handle,
  --  Handle identifying the active workspace
  archiveWorkspace
    SEQUENCE {archiveHandle     Handle,
              --  Handle identifying the archive in which the archived  workspace is contained 
              entryName         ArchiveEntryName,
              --  Name of the archived workspace
              modificationTime  GeneralizedTime OPTIONAL},
  --  If the workspace identifier is being used for an operation 
  --  in which the workspace is to be modified, this parameter 
  --  shall indicate the time of modification. 
  --  In this case, the archive header is modified to reflect the 
  --  most recent modification time. Otherwise, this parameter 
  --  shall not be included. 
  ...
}

--  WorkspacePoint
--  A WorkspacePoint is a two-dimensional address of a location in a 
--  workspace plane including points in the invisible border areas.
WorkspacePoint ::= SEQUENCE {
  xCoordinate  WorkspaceCoordinate, --  X component of a Cartesian address 
  yCoordinate  WorkspaceCoordinate --  Y component of a Cartesian address 
}

--  WorkspaceRegion
--  This type can be used to describe both the size and 
--  position of a rectangular region within a workspace.
WorkspaceRegion ::= SEQUENCE {
  upperLeft   WorkspacePoint,
  lowerRight  WorkspacePoint
}

--  WorkspaceSize
--  The size of a workspace in pixels.
WorkspaceSize ::= SEQUENCE {
  width   INTEGER(1..21845), --  The number of pixels horizontally 
  height  INTEGER(1..21845) --  The number of pixels vertically 
}

--  WorkspaceViewAttribute
--  View attributes are editable characteristics of workspace views.
WorkspaceViewAttribute ::= CHOICE {
  viewRegion
    CHOICE {fullWorkspace     NULL, --  View the entire workspace --
            partialWorkspace  WorkspaceRegion},
  --  Rectangle defining the region of the workspace to view.
  --  The view shall not extend beyond the boundaries of
  --  the workspace. 
  viewState               WorkspaceViewState,
  --  Visibility state of the view 
  updatesEnabled          BOOLEAN,
  --  If this attribute is set to FALSE (the default is TRUE), it
  --  is an indication that subsequent updates to the workspace
  --  corresponding to this view not be shown until this attribute
  --  is set to TRUE.
  sourceDisplayIndicator  SourceDisplayIndicator,
  --  Indicates the characteristics of the view within the source
  --  display device
  nonStandardAttribute    NonStandardParameter,
  ...
}

--  WorkspaceViewState
--  A view's state indicates how the local terminal should
--  display the view.
WorkspaceViewState ::= CHOICE {
  hidden            NULL,
  --  This workspace should not be shown to the user.
  background        NULL,
  --  The display of this workspace is optional.
  foreground        NULL,
  --  The display of this workspace is desirable.
  focus             NULL,
  --  The display of this workspace is mandatory. Only one
  --  workspace may be set to this state.
  nonStandardState  NonStandardIdentifier,
  ...
}

--  ZOrder
--  This enumerated type is used to specify a transition to front
--  or back of an object within an addressable plane.
ZOrder ::= ENUMERATED {
  front(0),
  --  Move object to the front of the plane display list 
  back(1),
  --  Move object to the back of the plane display list 
  ...
  }

--  Begin SIPDU Definitions
--  ArchiveAcknowledgePDU
--  The ArchiveAcknowledgePDU is used to acknowledge that an archive
--  has been successfully opened.
ArchiveAcknowledgePDU ::= SEQUENCE {
  archiveHandle          Handle,
  --  Unique handle that references the archive
  result                 ArchiveOpenResult,
  --  Indicates whether or not the archive was opened successfully
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  ArchiveClosePDU
--  The ArchiveClosePDU is used to close an archive that was 
--  previously opened during an SI session.
ArchiveClosePDU ::= SEQUENCE {
  archiveHandle          Handle,
  --  Unique handle that references the archive
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  ArchiveErrorPDU
--  The ArchiveErrorPDU is used by a terminal receiving an 
--  archive PDU to signal error conditions to the sender.
ArchiveErrorPDU ::= SEQUENCE {
  archiveHandle          Handle,
  --  Unique handle that references the archive
  entryName              ArchiveEntryName OPTIONAL,
  --  Specifies the archive entry associated with the error if
  --  applicable
  errorCode              ArchiveError,
  --  Specifies the cause of the error at the remote terminal
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  ArchiveOpenPDU
--  The ArchiveOpenPDU is used to open an archive at a 
--  remote terminal that supports this capability.
ArchiveOpenPDU ::= SEQUENCE {
  archiveHandle          Handle,
  --  Unique handle that is used to reference this archive during
  --   the session
  mode                   ArchiveMode,
  --  Indicates the access restrictions placed on the archive
  header                 ArchiveHeader,
  --  Specifies information used to identify the archive. If the archive
  --  is being created, this is the information that is used to identify
  --  the archive in the future.
  maxEntries             INTEGER(1..65535) OPTIONAL,
  --  This parameter allows remote terminals to estimate the local
  --  resource usage for the specified archive so they can signal an
  --  error early in the archiving process. It is only to be specified if 
  --  the archive open mode is set to "create".
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities are
  --  present in the negotiated capability set.
  ...
}

--  BitmapAbortPDU
--  This PDU is used by both the transmitting SICE to signal that a 
--  bitmap exchange is being aborted and by an SICE requesting that
--  a bitmap exchange in progress be aborted.
BitmapAbortPDU ::= SEQUENCE {
  bitmapHandle           Handle,
  --  Handle referring to the bitmap being created
  userID                 MCSUserID OPTIONAL,
  --  Optionally provided by the transmitter if identification of
  --  the source of the abort is desired
  reason                 BitmapAbortReason OPTIONAL,
  message                BMPString(SIZE (1..256)) OPTIONAL,
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  BitmapCheckpointPDU
--  This PDU is used by a terminal that is transmitting a bitmap
--  when it wants to notify receiving terminals that they should
--  display previously received data.
BitmapCheckpointPDU ::= SEQUENCE {
  bitmapHandle           Handle,
  --  Handle used to reference this bitmap
  passedCheckpoints      SET (SIZE (1..100)) OF TokenID,
  --  List of checkpoints that have been uninhibited by all nodes
  percentComplete        INTEGER(1..100),
  --  Cumulative portion of the bitmap completed as a result of
  --  all passed checkpoints so far
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  BitmapCreatePDU
--  This PDU is used to initiate a bitmap transmission.
BitmapCreatePDU ::= SEQUENCE {
  bitmapHandle            Handle,
  --  Handle to be used to reference this object in the future
  destinationAddress      BitmapDestinationAddress,
  --  Destination address of the bitmap
  attributes              SET OF BitmapAttribute OPTIONAL,
  --  List of editable attributes of the bitmap
  anchorPoint             WorkspacePoint OPTIONAL,
  --  Point of origin of the bitmap with respect to the
  --  destination workspace. Only needed for softcopy bitmaps.
  --  Default is (0,0).
  bitmapSize              BitmapSize,
  --  Width and height of the total bitmap represented in the
  --  bitstream. For a multi-component bitmap, this is the
  --  size of the largest component.
  bitmapRegionOfInterest  BitmapRegion OPTIONAL,
  --  Region of interest within the bitmap to be applied to the
  --  workspace
  --  Default is full bitmap.
  pixelAspectRatio        PixelAspectRatio,
  --  Pixel aspect ratio of the bitmap
  scaling                 PointDiff16 OPTIONAL,
  --  Offset in workspace coordinates of the lower right hand
  --  corner of the bitmap relative to the anchor point.
  --  Default is no scaling.
  --  Only needed for softcopy bitmaps.
  checkpoints             SEQUENCE (SIZE (1..100)) OF TokenID OPTIONAL,
  --  Tokens to be used for checkpointing the bitmap create
  --   exchange
  bitmapFormatHeader
    CHOICE
     --  The following headers provide image bitstream parameters
    --  that are outside the scope of the corresponding coding
    --  standard but are necessary for image decompression. 
    --  NOTE: Some bitmap formats are disallowed depending
    --  on the value of the destinationAddress parameter.
    {bitmapHeaderUncompressed  BitmapHeaderUncompressed,
     --  Parameters for the uncompressed pixel representation
     bitmapHeaderT4            BitmapHeaderT4,
     --  Parameters for T4 (G3) encoded bitstreams outside
     --  the T.4 standard's scope
     bitmapHeaderT6            BitmapHeaderT6,
     --  Parameters for T6 (G4) encoded bitstreams outside
     --  the T.6 standard's scope
     bitmapHeaderT81           BitmapHeaderT81,
     --  Parameters for T.81 (JPEG) encoded bitstreams 
     --  outside the T.81 standard's scope
     bitmapHeaderT82           BitmapHeaderT82,
     --  Parameters for T.82 (JBIG) encoded bitstreams 
     --  outside the T.82 standard's scope
     bitmapHeaderNonStandard   NonStandardParameter,
     ...},
  bitmapData              BitmapData OPTIONAL,
  --  Compression format specific bitmap data padded to
  --   be byte-aligned.
  moreToFollow            BOOLEAN,
  --  Indicates whether or not this is the last block of data for
  --  the bitmap
  nonStandardParameters   SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  BitmapCreateContinuePDU
--  This PDU is used by the transmitting SICE to continue
--  a bitmap transmission begun by a BitmapCreatePDU
BitmapCreateContinuePDU ::= SEQUENCE {
  bitmapHandle           Handle,
  --  Handle referring to the bitmap being created
  bitmapData             BitmapData,
  --  Bitmap data
  moreToFollow           BOOLEAN,
  --  Indicates whether or not this is the last block of data for
  --  the bitmap
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  BitmapDeletePDU
--  This PDU is used to delete bitmaps.
BitmapDeletePDU ::= SEQUENCE {
  bitmapHandle           Handle,
  --  Handle used to reference this bitmap
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  BitmapEditPDU
--  This PDU is used to change bitmap attributes.
BitmapEditPDU ::= SEQUENCE {
  bitmapHandle                Handle,
  --  Handle used to reference this bitmap
  attributeEdits              SET OF BitmapAttribute OPTIONAL,
  --  List of attributes to be edited
  anchorPointEdit             WorkspacePoint OPTIONAL,
  --  Point of origin of the bitmap with respect to the destination
  --  workspace
  bitmapRegionOfInterestEdit  BitmapRegion OPTIONAL,
  --  Region of interest within the bitmap to be applied to the
  --  workspace
  scalingEdit                 PointDiff16 OPTIONAL,
  --  Offset in workspace coordinates of the lower right hand
  --  corner of the bitmap relative to the anchor point
  nonStandardParameters       SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  ConductorPrivilegeGrantPDU
--  This PDU is used by the conductor to grant or revoke privileges
--  when the session is in conducted mode.
ConductorPrivilegeGrantPDU ::= SEQUENCE {
  destinationUserID      MCSUserID,
  --  MCS User ID of the destination node
  privilegeList          SET OF ConductorPrivilege,
  --  A particular privilege shall appear in this list no more
  --  than once.
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  ConductorPrivilegeRequestPDU
--  This PDU is used to request privileges from the conductor
--  when the session is in conducted mode.
ConductorPrivilegeRequestPDU ::= SEQUENCE {
  privilegeList          SET OF ConductorPrivilege,
  --  A particular privilege shall appear in this list no more
  --  than once.
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  DrawingCreatePDU
--  A drawingCreate PDU is used to deposit one or more 
--  drawing elements to a workspace plane.
DrawingCreatePDU ::= SEQUENCE {
  drawingHandle          Handle OPTIONAL,
  --  Handle to be used to reference this drawing object in
  --  future exchanges. Note that editing and deleting objects is 
  --  only valid if the target plane is of type "editable".
  destinationAddress     DrawingDestinationAddress,
  --  Destination of drawing
  drawingType            DrawingType,
  --  Which basic drawing shape this element represents
  attributes             SET OF DrawingAttribute OPTIONAL,
  --  Attributes of the drawing object.
  --  NOTE: All attributes have default values that are assumed
  --  if the attribute is not specified.
  anchorPoint            WorkspacePoint,
  --  Point of origin of the drawing element.
  --  This forms the first of the control points and is the point
  --  from which all other control points are defined relative to.
  rotation               RotationSpecifier OPTIONAL,
  --  Specifies a rotation angle and point of revolution for
  --  the drawing element
  sampleRate             INTEGER(1..255) OPTIONAL,
  --  For applicable types, this indicates the rate at which
  --  points were acquired by the transmitting terminal
  --  (in samples per second) so they can be replayed at
  --  a similar rate if desired
  pointList              PointList,
  --  List of control points that define the drawing shape.
  --  The interpretation of the control point list is dependent on
  --  the value of the "type" parameter.
  --  Note that the control points in the list are differentially
  --  encoded from the previous.
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  DrawingDeletePDU
--  A DrawingDeletePDU is used to delete one 
--  graphical element from a workspace plane.
DrawingDeletePDU ::= SEQUENCE {
  drawingHandle          Handle,
  --  Drawing object to delete
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  DrawingEditPDU
--  A DrawingEditPDU is used to alter one or more of 
--  a drawing element's attributes or parameters.
DrawingEditPDU ::= SEQUENCE {
  drawingHandle          Handle,
  --  Identifier of item to be edited
  attributeEdits         SET OF DrawingAttribute OPTIONAL,
  --  List of attribute changes
  anchorPointEdit        WorkspacePoint OPTIONAL,
  --  Point of origin of the drawing element
  rotationEdit           RotationSpecifier OPTIONAL,
  --  Specifies a rotation angle and point of revolution for the
  --  drawing element
  pointListEdits         PointListEdits OPTIONAL,
  --  List of control point changes.
  --  Note that the index refers to
  --  the point list not including the anchor point.
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  FontPDU
FontPDU ::= SEQUENCE {
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard
  --  capabilities are present in the negotiated capability set.
  ...
}

--  RemoteEventPermissionGrantPDU
--  This PDU is used to grant permission to issue remote
--  events.
RemoteEventPermissionGrantPDU ::= SEQUENCE {
  destinationAddress         RemoteEventDestinationAddress,
  --  Address to which remote event permission is being granted
  destinationUserID          MCSUserID,
  --  MCS User ID of the destination node
  remoteEventPermissionList  SET OF RemoteEventPermission,
  --  A particular permission shall not be included in this list more
  --  than once.
  nonStandardParameters      SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities are
  --  present in the negotiated capability set.
  ...
}

--  RemoteEventPermissionRequestPDU
--  This PDU is used to request permission to issue remote
--  events from the workspace creator.
RemoteEventPermissionRequestPDU ::= SEQUENCE {
  destinationAddress         RemoteEventDestinationAddress,
  --  Address to which remote event permission is being requested
  remoteEventPermissionList  SET OF RemoteEventPermission,
  --  A particular permission shall not be included in this list more
  --  than once.
  nonStandardParameters      SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  RemoteKeyboardEventPDU
--  This PDU signals keyboard event.
RemoteKeyboardEventPDU ::= SEQUENCE {
  destinationAddress     RemoteEventDestinationAddress,
  --  Destination address of remote event
  keyModifierStates      SET OF KeyModifier OPTIONAL,
  --  Set of key modifiers. Only modifiers in this list
  --  are assumed to be active.
  --  A particular key modifier shall not be included
  --  in this set more than once.
  keyPressState          KeyPressState,
  --  This item specifies keyboard event that is being signaled
  keyCode                KeyCode,
  --  Character corresponding to the pressed key or function key
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  RemotePointingDeviceEventPDU
--  This PDU is used to signal pointing device events.
RemotePointingDeviceEventPDU ::= SEQUENCE {
  destinationAddress     RemoteEventDestinationAddress,
  --  Destination address of remote event
  leftButtonState        ButtonEvent,
  --  This specifies the left button state.
  middleButtonState      ButtonEvent,
  --  This specifies the middle button state.
  rightButtonState       ButtonEvent,
  --  This specifies the right button state.
  initialPoint           WorkspacePoint,
  --  This specifies the initial pointing device position.
  sampleRate             INTEGER(1..255) OPTIONAL,
  --  This parameter indicates the rate at which points were
  --  acquired by the transmitting terminal (in samples per second)
  --  so they can be replayed at a similar rate if desired.
  pointList              PointList OPTIONAL,
  --  Additional coordinates that are each differentially encoded
  --  with respect to the initialPoint parameter
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  RemotePrintPDU
--  This PDU is used to instruct a remote terminal to print
--  the specified workspace.
RemotePrintPDU ::= SEQUENCE {
  destinationAddress     RemoteEventDestinationAddress,
  --  Destination address of remote event
  numberOfCopies         INTEGER(1..65536) OPTIONAL,
  --  Number of copies to be printed
  portrait               BOOLEAN OPTIONAL,
  --  TRUE specifies a portrait paper orientation.
  --  FALSE specifies a landscape paper orientation.
  regionOfInterest       WorkspaceRegion OPTIONAL,
  --  Optionally defines rectangular region of interest
  --  within the workspace to be printed.
  --  If not present, it is implied that
  --  the entire workspace is to be printed.
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  SINonStandardPDU
--  This PDU allows any non-standard information to be transmitted.
SINonStandardPDU ::= SEQUENCE {
  nonStandardTransaction  NonStandardParameter,
  ...
}

--  TextCreatePDU 
TextCreatePDU ::= SEQUENCE {
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  TextDeletePDU
TextDeletePDU ::= SEQUENCE {
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  TextEditPDU
TextEditPDU ::= SEQUENCE {
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  VideoWindowCreatePDU
--  This PDU allows video windows encapsulating out-of-band video 
--  streams to be created.
VideoWindowCreatePDU ::= SEQUENCE {
  videoWindowHandle            Handle,
  --  Handle to be used to reference this object in the future
  destinationAddress           VideoWindowDestinationAddress,
  --  Destination address of the video window
  videoSourceIdentifier        VideoSourceIdentifier,
  --  Identifies the video source to be placed in the window
  attributes                   SET OF VideoWindowAttribute OPTIONAL,
  -- List of editable attributes of the video window
  videoWindowRegionOfInterest  BitmapRegion OPTIONAL,
  --  Region of interest within the video stream to be applied to 
  --  the workspace.  Default is full video area.
  anchorPoint                  WorkspacePoint OPTIONAL,
  --  Point of origin of the video window with respect to the 
  --  destination workspace.
  --  Only needed for softcopy bitmaps.
  --  Default is (0,0).
  extent                       PointDiff16 OPTIONAL,
  --  Offset in workspace coordinates of the lower right hand
  --  corner of the video window relative to the anchor point.
  --  Default is the lower right corner of the destination
  --  workspace plane.
  nonStandardParameters        SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard
  --  capabilities are present in the negotiated capability set.
  ...
}

--  VideoWindowDeletePDU
--  This PDU deletes video windows.
VideoWindowDeletePDU ::= SEQUENCE {
  videoWindowHandle      Handle,
  --  Handle referencing the video window
  --  to be deleted.
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  VideoWindowEditPDU
--  A VideoWindowEditPDU is used to alter one or more of 
--  a video window element's attributes or parameters.
VideoWindowEditPDU ::= SEQUENCE {
  videoWindowHandle      Handle,
  --  Identifier of item to be edited
  videoSourceIdentifier  VideoSourceIdentifier OPTIONAL,
  --  Identifies the video source to be placed in the window
  attributeEdits         SET OF VideoWindowAttribute OPTIONAL,
  --  List of attribute changes
  anchorPointEdit        WorkspacePoint OPTIONAL,
  --  Point of origin of the drawing element
  extent                 PointDiff16 OPTIONAL,
  --  Offset in workspace coordinates of the lower right hand
  --  corner of the video window relative to the anchor point.
  --  Defaut is the lower right corner of the
  --  destination workspace plane.
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  WorkspaceCreatePDU
--  This PDU causes a workspace to be created and its
--  attributes to be set.
WorkspaceCreatePDU ::= SEQUENCE {
  workspaceIdentifier         WorkspaceIdentifier,
  --  Identifier that will be used to reference this workspace
  --  in the future.
  appRosterInstance           INTEGER(0..65535),
  --  Indicates which application roster instance (returned in the 
  --  GCC-Application-Roster-Report indication) was valid when
  --  this PDU was issued. This is used to eliminate race conditions
  --  that can occur when terminals enter a session while a workspace
  --  is being created.
  synchronized                BOOLEAN,
  --  TRUE specifies that the workspace contents stacking
  --  order must be consistent everywhere.
  --  In many cases, this implies the use of
  --  MCS-UNIFORM-SEND-DATA for SIPDU submission.
  --  FALSE specifies that the workspace contents do not have
  --   to be consistent in stacking order; therefore the use of 
  --  MCS-SEND-DATA is acceptable for all content 
  --  submitting transactions.
  acceptKeyboardEvents        BOOLEAN,
  --  If TRUE this workspace can accept remote
  --  keyboard events.
  acceptPointingDeviceEvents  BOOLEAN,
  --  If TRUE this workspace can accept remote pointer
  --  device events.
  protectedPlaneAccessList    SET (SIZE (1..65536)) OF MCSUserID OPTIONAL,
  --  The ability to modify any protected plane in this workspace is
  --  restricted only to SICEs on this list. The creator of the workspace
  --  is NOT automatically granted access to these planes unless
  --  explicitly on this list.
  workspaceSize               WorkspaceSize,
  --  This value specifies the width and height of the new
  --  workspace in pixels.
  workspaceAttributes         SET OF WorkspaceAttribute OPTIONAL,
  --  Editable attributes of the workspace
  planeParameters
    SEQUENCE (SIZE (1..256)) OF
      SEQUENCE
       --  This sequence contains plane parameters.
      --  Its length is the number of planes in the workspace.
      {editable         BOOLEAN,
       --  This item specifies whether objects created on this plane
       --  are editable
       --  If not editable, each plane is treated as a bitmap image.
       usage            SET (SIZE (1..MAX)) OF PlaneUsage,
       --  This item specifies restrictions on the usage of this plane
       --  (image data or annotation data).
       --  At least one use shall be included.
       --  A particular usage designator shall be listed
       --  no more than once.
       planeAttributes  SET OF PlaneAttribute OPTIONAL,
       --  List of attributes
       --  A particular attribute shall be listed no more than once.
       ...},
  viewParameters
    SET (SIZE (1..256)) OF
      SEQUENCE
       --  Each entry in this list (if any) defines a view to be created in
      --  association with this workspace.
      {viewHandle      Handle,
       --  Identifier of the view to be created
       viewAttributes  SET OF WorkspaceViewAttribute OPTIONAL,
       --  Editable attributes of the view
       ...} OPTIONAL,
  nonStandardParameters       SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  WorkspaceCreateAcknowledgePDU
--  This PDU acknowledges the reception of a WorkspaceCreatePDU in 
--  the case of unsynchronized workspace.
WorkspaceCreateAcknowledgePDU ::= SEQUENCE {
  workspaceIdentifier    WorkspaceIdentifier,
  --  Workspace being acknowledged.
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  WorkspaceDeletePDU
--  This PDU causes a workspace to be destroyed.
WorkspaceDeletePDU ::= SEQUENCE {
  workspaceIdentifier    WorkspaceIdentifier,
  --  Workspace to be deleted
  reason                 WorkspaceDeleteReason,
  --  Reason for deletion of the workspace
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  WorkspaceEditPDU
--  This PDU allows workspace attributes to be edited.
WorkspaceEditPDU ::= SEQUENCE {
  workspaceIdentifier    WorkspaceIdentifier,
  --  Workspace to be edited
  attributeEdits         SET OF WorkspaceAttribute OPTIONAL,
  --  List of attribute changes
  planeEdits
    SET (SIZE (1..256)) OF
      SEQUENCE {plane            DataPlaneID,
                --  Plane whose attributes are to be edited
                planeAttributes  SET OF PlaneAttribute,
                --  List of attributes to change
                ...} OPTIONAL,
  viewEdits
    SET (SIZE (1..256)) OF
      SEQUENCE {viewHandle  Handle,
                --  Identifier of the view to be edited
                action
                  CHOICE {createNewView      SET OF WorkspaceViewAttribute,
                          --  Editable attributes of the view
                          editView           SET OF WorkspaceViewAttribute,
                          --  List of attributes to change
                          deleteView         NULL,
                          nonStandardAction  NonStandardParameter,
                          ...},
                ...} OPTIONAL,
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard
  --  capabilities are present in the negotiated capability set.
  ...
}

--  WorkspacePlaneCopyPDU
--  This PDU causes a portion of a plane to be copied
--  to another plane (either intra- or inter-workspace).
--   The source and destinations must either both be
--  permanent or both be editable, and they must have the same
--  usage designator; otherwise copy for that plane will
--  not take place.
--  If the planes are editable, objects with any of their control
--  points falling totally within the source rectangle are copied.
--  If the Scaling capability has been negotiated in the case of a
--  softcopy workspace then it is not necessary for the source and
--  destination rectangles to be the same size.
WorkspacePlaneCopyPDU ::= SEQUENCE {
  sourceWorkspaceIdentifier       WorkspaceIdentifier,
  --  Workspace to be copied
  sourcePlane                     DataPlaneID,
  --  Source plane identifier
  destinationWorkspaceIdentifier  WorkspaceIdentifier,
  --  Destination workspace identifier.
  --  May be the same as the source workspace
  destinationPlane                DataPlaneID,
  --  Destination plane identifier.
  --  May be the same as the source plane
  copyDescriptor
    CHOICE {permanentPlaneCopyDescriptor  PermanentPlaneCopyDescriptor,
            editablePlaneCopyDescriptor   EditablePlaneCopyDescriptor,
            ...},
  nonStandardParameters           SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

-- WorkspaceReadyPDU
--  This PDU signals that a workspace create is complete (for 
--  unsynchronized workspaces).
WorkspaceReadyPDU ::= SEQUENCE {
  workspaceIdentifier    WorkspaceIdentifier,
  --  Workspace being enabled
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  WorkspaceRefreshStatusPDU
--  This PDU is used by an SICE to announce or remit its status as 
--  the session refresh SICE for SICEs that join late.
WorkspaceRefreshStatusPDU ::= SEQUENCE {
  refreshStatus          BOOLEAN,
  --  TRUE indicates that the SICE sourcing this PDU is
  --  functioning as the session-wide refresher.
  --  FALSE indicates that the SICE sourcing this PDU has
  --  ceased to function as the session-wide refresher.
  nonStandardParameters  SET OF NonStandardParameter OPTIONAL,
  --  Allowed only if the corresponding non-standard capabilities
  --  are present in the negotiated capability set.
  ...
}

--  SIPDU
--  The set of all SIPDUs.
SIPDU ::= CHOICE {
  archiveAcknowledgePDU            ArchiveAcknowledgePDU,
  archiveClosePDU                  ArchiveClosePDU,
  archiveErrorPDU                  ArchiveErrorPDU,
  archiveOpenPDU                   ArchiveOpenPDU,
  bitmapAbortPDU                   BitmapAbortPDU,
  bitmapCheckpointPDU              BitmapCheckpointPDU,
  bitmapCreatePDU                  BitmapCreatePDU,
  bitmapCreateContinuePDU          BitmapCreateContinuePDU,
  bitmapDeletePDU                  BitmapDeletePDU,
  bitmapEditPDU                    BitmapEditPDU,
  conductorPrivilegeGrantPDU       ConductorPrivilegeGrantPDU,
  conductorPrivilegeRequestPDU     ConductorPrivilegeRequestPDU,
  drawingCreatePDU                 DrawingCreatePDU,
  drawingDeletePDU                 DrawingDeletePDU,
  drawingEditPDU                   DrawingEditPDU,
  remoteEventPermissionGrantPDU    RemoteEventPermissionGrantPDU,
  remoteEventPermissionRequestPDU  RemoteEventPermissionRequestPDU,
  remoteKeyboardEventPDU           RemoteKeyboardEventPDU,
  remotePointingDeviceEventPDU     RemotePointingDeviceEventPDU,
  remotePrintPDU                   RemotePrintPDU,
  siNonStandardPDU                 SINonStandardPDU,
  workspaceCreatePDU               WorkspaceCreatePDU,
  workspaceCreateAcknowledgePDU    WorkspaceCreateAcknowledgePDU,
  workspaceDeletePDU               WorkspaceDeletePDU,
  workspaceEditPDU                 WorkspaceEditPDU,
  workspacePlaneCopyPDU            WorkspacePlaneCopyPDU,
  workspaceReadyPDU                WorkspaceReadyPDU,
  workspaceRefreshStatusPDU        WorkspaceRefreshStatusPDU,
  ...,
  --  PDUs Added During 1st Revision
  [[ fontPDU                       FontPDU,
     textCreatePDU                 TextCreatePDU,
     textDeletePDU                 TextDeletePDU,
     textEditPDU                   TextEditPDU,
     videoWindowCreatePDU          VideoWindowCreatePDU,
     videoWindowDeleatePDU         VideoWindowDeletePDU,
     videoWindowEditPDU            VideoWindowEditPDU ]]
}

--  End SI Definitions
END
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D