diff options
Diffstat (limited to 'auto_xproto.go')
| -rw-r--r-- | auto_xproto.go | 14490 |
1 files changed, 0 insertions, 14490 deletions
diff --git a/auto_xproto.go b/auto_xproto.go deleted file mode 100644 index 8bd39b3..0000000 --- a/auto_xproto.go +++ /dev/null @@ -1,14490 +0,0 @@ -package xgb - -/* - This file was generated by xproto.xml on May 10 2012 12:39:34pm EDT. - This file is automatically generated. Edit at your peril! -*/ - -// Skipping definition for base type 'Int8' - -// Skipping definition for base type 'Card16' - -// Skipping definition for base type 'Char' - -// Skipping definition for base type 'Card32' - -// Skipping definition for base type 'Double' - -// Skipping definition for base type 'Bool' - -// Skipping definition for base type 'Float' - -// Skipping definition for base type 'Card8' - -// Skipping definition for base type 'Int16' - -// Skipping definition for base type 'Int32' - -// Skipping definition for base type 'Void' - -// Skipping definition for base type 'Byte' - -const ( - VisualClassStaticGray = 0 - VisualClassGrayScale = 1 - VisualClassStaticColor = 2 - VisualClassPseudoColor = 3 - VisualClassTrueColor = 4 - VisualClassDirectColor = 5 -) - -const ( - EventMaskNoEvent = 0 - EventMaskKeyPress = 1 - EventMaskKeyRelease = 2 - EventMaskButtonPress = 4 - EventMaskButtonRelease = 8 - EventMaskEnterWindow = 16 - EventMaskLeaveWindow = 32 - EventMaskPointerMotion = 64 - EventMaskPointerMotionHint = 128 - EventMaskButton1Motion = 256 - EventMaskButton2Motion = 512 - EventMaskButton3Motion = 1024 - EventMaskButton4Motion = 2048 - EventMaskButton5Motion = 4096 - EventMaskButtonMotion = 8192 - EventMaskKeymapState = 16384 - EventMaskExposure = 32768 - EventMaskVisibilityChange = 65536 - EventMaskStructureNotify = 131072 - EventMaskResizeRedirect = 262144 - EventMaskSubstructureNotify = 524288 - EventMaskSubstructureRedirect = 1048576 - EventMaskFocusChange = 2097152 - EventMaskPropertyChange = 4194304 - EventMaskColorMapChange = 8388608 - EventMaskOwnerGrabButton = 16777216 -) - -const ( - BackingStoreNotUseful = 0 - BackingStoreWhenMapped = 1 - BackingStoreAlways = 2 -) - -const ( - ImageOrderLSBFirst = 0 - ImageOrderMSBFirst = 1 -) - -const ( - ModMaskShift = 1 - ModMaskLock = 2 - ModMaskControl = 4 - ModMask1 = 8 - ModMask2 = 16 - ModMask3 = 32 - ModMask4 = 64 - ModMask5 = 128 - ModMaskAny = 32768 -) - -const ( - KeyButMaskShift = 1 - KeyButMaskLock = 2 - KeyButMaskControl = 4 - KeyButMaskMod1 = 8 - KeyButMaskMod2 = 16 - KeyButMaskMod3 = 32 - KeyButMaskMod4 = 64 - KeyButMaskMod5 = 128 - KeyButMaskButton1 = 256 - KeyButMaskButton2 = 512 - KeyButMaskButton3 = 1024 - KeyButMaskButton4 = 2048 - KeyButMaskButton5 = 4096 -) - -const ( - WindowNone = 0 -) - -const ( - ButtonMask1 = 256 - ButtonMask2 = 512 - ButtonMask3 = 1024 - ButtonMask4 = 2048 - ButtonMask5 = 4096 - ButtonMaskAny = 32768 -) - -const ( - MotionNormal = 0 - MotionHint = 1 -) - -const ( - NotifyDetailAncestor = 0 - NotifyDetailVirtual = 1 - NotifyDetailInferior = 2 - NotifyDetailNonlinear = 3 - NotifyDetailNonlinearVirtual = 4 - NotifyDetailPointer = 5 - NotifyDetailPointerRoot = 6 - NotifyDetailNone = 7 -) - -const ( - NotifyModeNormal = 0 - NotifyModeGrab = 1 - NotifyModeUngrab = 2 - NotifyModeWhileGrabbed = 3 -) - -const ( - VisibilityUnobscured = 0 - VisibilityPartiallyObscured = 1 - VisibilityFullyObscured = 2 -) - -const ( - PlaceOnTop = 0 - PlaceOnBottom = 1 -) - -const ( - PropertyNewValue = 0 - PropertyDelete = 1 -) - -const ( - TimeCurrentTime = 0 -) - -const ( - AtomNone = 0 - AtomAny = 0 - AtomPrimary = 1 - AtomSecondary = 2 - AtomArc = 3 - AtomAtom = 4 - AtomBitmap = 5 - AtomCardinal = 6 - AtomColormap = 7 - AtomCursor = 8 - AtomCutBuffer0 = 9 - AtomCutBuffer1 = 10 - AtomCutBuffer2 = 11 - AtomCutBuffer3 = 12 - AtomCutBuffer4 = 13 - AtomCutBuffer5 = 14 - AtomCutBuffer6 = 15 - AtomCutBuffer7 = 16 - AtomDrawable = 17 - AtomFont = 18 - AtomInteger = 19 - AtomPixmap = 20 - AtomPoint = 21 - AtomRectangle = 22 - AtomResourceManager = 23 - AtomRgbColorMap = 24 - AtomRgbBestMap = 25 - AtomRgbBlueMap = 26 - AtomRgbDefaultMap = 27 - AtomRgbGrayMap = 28 - AtomRgbGreenMap = 29 - AtomRgbRedMap = 30 - AtomString = 31 - AtomVisualid = 32 - AtomWindow = 33 - AtomWmCommand = 34 - AtomWmHints = 35 - AtomWmClientMachine = 36 - AtomWmIconName = 37 - AtomWmIconSize = 38 - AtomWmName = 39 - AtomWmNormalHints = 40 - AtomWmSizeHints = 41 - AtomWmZoomHints = 42 - AtomMinSpace = 43 - AtomNormSpace = 44 - AtomMaxSpace = 45 - AtomEndSpace = 46 - AtomSuperscriptX = 47 - AtomSuperscriptY = 48 - AtomSubscriptX = 49 - AtomSubscriptY = 50 - AtomUnderlinePosition = 51 - AtomUnderlineThickness = 52 - AtomStrikeoutAscent = 53 - AtomStrikeoutDescent = 54 - AtomItalicAngle = 55 - AtomXHeight = 56 - AtomQuadWidth = 57 - AtomWeight = 58 - AtomPointSize = 59 - AtomResolution = 60 - AtomCopyright = 61 - AtomNotice = 62 - AtomFontName = 63 - AtomFamilyName = 64 - AtomFullName = 65 - AtomCapHeight = 66 - AtomWmClass = 67 - AtomWmTransientFor = 68 -) - -const ( - ColormapStateUninstalled = 0 - ColormapStateInstalled = 1 -) - -const ( - ColormapNone = 0 -) - -const ( - MappingModifier = 0 - MappingKeyboard = 1 - MappingPointer = 2 -) - -const ( - WindowClassCopyFromParent = 0 - WindowClassInputOutput = 1 - WindowClassInputOnly = 2 -) - -const ( - CwBackPixmap = 1 - CwBackPixel = 2 - CwBorderPixmap = 4 - CwBorderPixel = 8 - CwBitGravity = 16 - CwWinGravity = 32 - CwBackingStore = 64 - CwBackingPlanes = 128 - CwBackingPixel = 256 - CwOverrideRedirect = 512 - CwSaveUnder = 1024 - CwEventMask = 2048 - CwDontPropagate = 4096 - CwColormap = 8192 - CwCursor = 16384 -) - -const ( - BackPixmapNone = 0 - BackPixmapParentRelative = 1 -) - -const ( - GravityBitForget = 0 - GravityWinUnmap = 0 - GravityNorthWest = 1 - GravityNorth = 2 - GravityNorthEast = 3 - GravityWest = 4 - GravityCenter = 5 - GravityEast = 6 - GravitySouthWest = 7 - GravitySouth = 8 - GravitySouthEast = 9 - GravityStatic = 10 -) - -const ( - MapStateUnmapped = 0 - MapStateUnviewable = 1 - MapStateViewable = 2 -) - -const ( - SetModeInsert = 0 - SetModeDelete = 1 -) - -const ( - ConfigWindowX = 1 - ConfigWindowY = 2 - ConfigWindowWidth = 4 - ConfigWindowHeight = 8 - ConfigWindowBorderWidth = 16 - ConfigWindowSibling = 32 - ConfigWindowStackMode = 64 -) - -const ( - StackModeAbove = 0 - StackModeBelow = 1 - StackModeTopIf = 2 - StackModeBottomIf = 3 - StackModeOpposite = 4 -) - -const ( - CirculateRaiseLowest = 0 - CirculateLowerHighest = 1 -) - -const ( - PropModeReplace = 0 - PropModePrepend = 1 - PropModeAppend = 2 -) - -const ( - GetPropertyTypeAny = 0 -) - -const ( - SendEventDestPointerWindow = 0 - SendEventDestItemFocus = 1 -) - -const ( - GrabModeSync = 0 - GrabModeAsync = 1 -) - -const ( - GrabStatusSuccess = 0 - GrabStatusAlreadyGrabbed = 1 - GrabStatusInvalidTime = 2 - GrabStatusNotViewable = 3 - GrabStatusFrozen = 4 -) - -const ( - CursorNone = 0 -) - -const ( - ButtonIndexAny = 0 - ButtonIndex1 = 1 - ButtonIndex2 = 2 - ButtonIndex3 = 3 - ButtonIndex4 = 4 - ButtonIndex5 = 5 -) - -const ( - GrabAny = 0 -) - -const ( - AllowAsyncPointer = 0 - AllowSyncPointer = 1 - AllowReplayPointer = 2 - AllowAsyncKeyboard = 3 - AllowSyncKeyboard = 4 - AllowReplayKeyboard = 5 - AllowAsyncBoth = 6 - AllowSyncBoth = 7 -) - -const ( - InputFocusNone = 0 - InputFocusPointerRoot = 1 - InputFocusParent = 2 - InputFocusFollowKeyboard = 3 -) - -const ( - FontDrawLeftToRight = 0 - FontDrawRightToLeft = 1 -) - -const ( - GcFunction = 1 - GcPlaneMask = 2 - GcForeground = 4 - GcBackground = 8 - GcLineWidth = 16 - GcLineStyle = 32 - GcCapStyle = 64 - GcJoinStyle = 128 - GcFillStyle = 256 - GcFillRule = 512 - GcTile = 1024 - GcStipple = 2048 - GcTileStippleOriginX = 4096 - GcTileStippleOriginY = 8192 - GcFont = 16384 - GcSubwindowMode = 32768 - GcGraphicsExposures = 65536 - GcClipOriginX = 131072 - GcClipOriginY = 262144 - GcClipMask = 524288 - GcDashOffset = 1048576 - GcDashList = 2097152 - GcArcMode = 4194304 -) - -const ( - GxClear = 0 - GxAnd = 1 - GxAndReverse = 2 - GxCopy = 3 - GxAndInverted = 4 - GxNoop = 5 - GxXor = 6 - GxOr = 7 - GxNor = 8 - GxEquiv = 9 - GxInvert = 10 - GxOrReverse = 11 - GxCopyInverted = 12 - GxOrInverted = 13 - GxNand = 14 - GxSet = 15 -) - -const ( - LineStyleSolid = 0 - LineStyleOnOffDash = 1 - LineStyleDoubleDash = 2 -) - -const ( - CapStyleNotLast = 0 - CapStyleButt = 1 - CapStyleRound = 2 - CapStyleProjecting = 3 -) - -const ( - JoinStyleMiter = 0 - JoinStyleRound = 1 - JoinStyleBevel = 2 -) - -const ( - FillStyleSolid = 0 - FillStyleTiled = 1 - FillStyleStippled = 2 - FillStyleOpaqueStippled = 3 -) - -const ( - FillRuleEvenOdd = 0 - FillRuleWinding = 1 -) - -const ( - SubwindowModeClipByChildren = 0 - SubwindowModeIncludeInferiors = 1 -) - -const ( - ArcModeChord = 0 - ArcModePieSlice = 1 -) - -const ( - ClipOrderingUnsorted = 0 - ClipOrderingYSorted = 1 - ClipOrderingYXSorted = 2 - ClipOrderingYXBanded = 3 -) - -const ( - CoordModeOrigin = 0 - CoordModePrevious = 1 -) - -const ( - PolyShapeComplex = 0 - PolyShapeNonconvex = 1 - PolyShapeConvex = 2 -) - -const ( - ImageFormatXYBitmap = 0 - ImageFormatXYPixmap = 1 - ImageFormatZPixmap = 2 -) - -const ( - ColormapAllocNone = 0 - ColormapAllocAll = 1 -) - -const ( - ColorFlagRed = 1 - ColorFlagGreen = 2 - ColorFlagBlue = 4 -) - -const ( - PixmapNone = 0 -) - -const ( - FontNone = 0 -) - -const ( - QueryShapeOfLargestCursor = 0 - QueryShapeOfFastestTile = 1 - QueryShapeOfFastestStipple = 2 -) - -const ( - KbKeyClickPercent = 1 - KbBellPercent = 2 - KbBellPitch = 4 - KbBellDuration = 8 - KbLed = 16 - KbLedMode = 32 - KbKey = 64 - KbAutoRepeatMode = 128 -) - -const ( - LedModeOff = 0 - LedModeOn = 1 -) - -const ( - AutoRepeatModeOff = 0 - AutoRepeatModeOn = 1 - AutoRepeatModeDefault = 2 -) - -const ( - BlankingNotPreferred = 0 - BlankingPreferred = 1 - BlankingDefault = 2 -) - -const ( - ExposuresNotAllowed = 0 - ExposuresAllowed = 1 - ExposuresDefault = 2 -) - -const ( - HostModeInsert = 0 - HostModeDelete = 1 -) - -const ( - FamilyInternet = 0 - FamilyDECnet = 1 - FamilyChaos = 2 - FamilyServerInterpreted = 5 - FamilyInternet6 = 6 -) - -const ( - AccessControlDisable = 0 - AccessControlEnable = 1 -) - -const ( - CloseDownDestroyAll = 0 - CloseDownRetainPermanent = 1 - CloseDownRetainTemporary = 2 -) - -const ( - KillAllTemporary = 0 -) - -const ( - ScreenSaverReset = 0 - ScreenSaverActive = 1 -) - -const ( - MappingStatusSuccess = 0 - MappingStatusBusy = 1 - MappingStatusFailure = 2 -) - -const ( - MapIndexShift = 0 - MapIndexLock = 1 - MapIndexControl = 2 - MapIndex1 = 3 - MapIndex2 = 4 - MapIndex3 = 5 - MapIndex4 = 6 - MapIndex5 = 7 -) - -type Window uint32 - -func (c *Conn) NewWindowId() (Window, error) { - id, err := c.NewId() - if err != nil { - return 0, err - } - return Window(id), nil -} - -type Pixmap uint32 - -func (c *Conn) NewPixmapId() (Pixmap, error) { - id, err := c.NewId() - if err != nil { - return 0, err - } - return Pixmap(id), nil -} - -type Cursor uint32 - -func (c *Conn) NewCursorId() (Cursor, error) { - id, err := c.NewId() - if err != nil { - return 0, err - } - return Cursor(id), nil -} - -type Font uint32 - -func (c *Conn) NewFontId() (Font, error) { - id, err := c.NewId() - if err != nil { - return 0, err - } - return Font(id), nil -} - -type Gcontext uint32 - -func (c *Conn) NewGcontextId() (Gcontext, error) { - id, err := c.NewId() - if err != nil { - return 0, err - } - return Gcontext(id), nil -} - -type Colormap uint32 - -func (c *Conn) NewColormapId() (Colormap, error) { - id, err := c.NewId() - if err != nil { - return 0, err - } - return Colormap(id), nil -} - -type Atom uint32 - -func (c *Conn) NewAtomId() (Atom, error) { - id, err := c.NewId() - if err != nil { - return 0, err - } - return Atom(id), nil -} - -type Drawable uint32 - -func (c *Conn) NewDrawableId() (Drawable, error) { - id, err := c.NewId() - if err != nil { - return 0, err - } - return Drawable(id), nil -} - -type Fontable uint32 - -func (c *Conn) NewFontableId() (Fontable, error) { - id, err := c.NewId() - if err != nil { - return 0, err - } - return Fontable(id), nil -} - -type Visualid uint32 - -type Timestamp uint32 - -type Keysym uint32 - -type Keycode byte - -type Button byte - -// 'Char2b' struct definition -// Size: 2 -type Char2b struct { - Byte1 byte - Byte2 byte -} - -// Struct read Char2b -func ReadChar2b(buf []byte, v *Char2b) int { - b := 0 - - v.Byte1 = buf[b] - b += 1 - - v.Byte2 = buf[b] - b += 1 - - return b -} - -// Struct list read Char2b -func ReadChar2bList(buf []byte, dest []Char2b) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Char2b{} - b += ReadChar2b(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Char2b -func (v Char2b) Bytes() []byte { - buf := make([]byte, 2) - b := 0 - - buf[b] = v.Byte1 - b += 1 - - buf[b] = v.Byte2 - b += 1 - - return buf -} - -// Write struct list Char2b -func Char2bListBytes(buf []byte, list []Char2b) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'Point' struct definition -// Size: 4 -type Point struct { - X int16 - Y int16 -} - -// Struct read Point -func ReadPoint(buf []byte, v *Point) int { - b := 0 - - v.X = int16(Get16(buf[b:])) - b += 2 - - v.Y = int16(Get16(buf[b:])) - b += 2 - - return b -} - -// Struct list read Point -func ReadPointList(buf []byte, dest []Point) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Point{} - b += ReadPoint(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Point -func (v Point) Bytes() []byte { - buf := make([]byte, 4) - b := 0 - - Put16(buf[b:], uint16(v.X)) - b += 2 - - Put16(buf[b:], uint16(v.Y)) - b += 2 - - return buf -} - -// Write struct list Point -func PointListBytes(buf []byte, list []Point) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'Rectangle' struct definition -// Size: 8 -type Rectangle struct { - X int16 - Y int16 - Width uint16 - Height uint16 -} - -// Struct read Rectangle -func ReadRectangle(buf []byte, v *Rectangle) int { - b := 0 - - v.X = int16(Get16(buf[b:])) - b += 2 - - v.Y = int16(Get16(buf[b:])) - b += 2 - - v.Width = Get16(buf[b:]) - b += 2 - - v.Height = Get16(buf[b:]) - b += 2 - - return b -} - -// Struct list read Rectangle -func ReadRectangleList(buf []byte, dest []Rectangle) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Rectangle{} - b += ReadRectangle(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Rectangle -func (v Rectangle) Bytes() []byte { - buf := make([]byte, 8) - b := 0 - - Put16(buf[b:], uint16(v.X)) - b += 2 - - Put16(buf[b:], uint16(v.Y)) - b += 2 - - Put16(buf[b:], v.Width) - b += 2 - - Put16(buf[b:], v.Height) - b += 2 - - return buf -} - -// Write struct list Rectangle -func RectangleListBytes(buf []byte, list []Rectangle) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'Arc' struct definition -// Size: 12 -type Arc struct { - X int16 - Y int16 - Width uint16 - Height uint16 - Angle1 int16 - Angle2 int16 -} - -// Struct read Arc -func ReadArc(buf []byte, v *Arc) int { - b := 0 - - v.X = int16(Get16(buf[b:])) - b += 2 - - v.Y = int16(Get16(buf[b:])) - b += 2 - - v.Width = Get16(buf[b:]) - b += 2 - - v.Height = Get16(buf[b:]) - b += 2 - - v.Angle1 = int16(Get16(buf[b:])) - b += 2 - - v.Angle2 = int16(Get16(buf[b:])) - b += 2 - - return b -} - -// Struct list read Arc -func ReadArcList(buf []byte, dest []Arc) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Arc{} - b += ReadArc(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Arc -func (v Arc) Bytes() []byte { - buf := make([]byte, 12) - b := 0 - - Put16(buf[b:], uint16(v.X)) - b += 2 - - Put16(buf[b:], uint16(v.Y)) - b += 2 - - Put16(buf[b:], v.Width) - b += 2 - - Put16(buf[b:], v.Height) - b += 2 - - Put16(buf[b:], uint16(v.Angle1)) - b += 2 - - Put16(buf[b:], uint16(v.Angle2)) - b += 2 - - return buf -} - -// Write struct list Arc -func ArcListBytes(buf []byte, list []Arc) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'Format' struct definition -// Size: 8 -type Format struct { - Depth byte - BitsPerPixel byte - ScanlinePad byte - // padding: 5 bytes -} - -// Struct read Format -func ReadFormat(buf []byte, v *Format) int { - b := 0 - - v.Depth = buf[b] - b += 1 - - v.BitsPerPixel = buf[b] - b += 1 - - v.ScanlinePad = buf[b] - b += 1 - - b += 5 // padding - - return b -} - -// Struct list read Format -func ReadFormatList(buf []byte, dest []Format) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Format{} - b += ReadFormat(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Format -func (v Format) Bytes() []byte { - buf := make([]byte, 8) - b := 0 - - buf[b] = v.Depth - b += 1 - - buf[b] = v.BitsPerPixel - b += 1 - - buf[b] = v.ScanlinePad - b += 1 - - b += 5 // padding - - return buf -} - -// Write struct list Format -func FormatListBytes(buf []byte, list []Format) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'VisualInfo' struct definition -// Size: 24 -type VisualInfo struct { - VisualId Visualid - Class byte - BitsPerRgbValue byte - ColormapEntries uint16 - RedMask uint32 - GreenMask uint32 - BlueMask uint32 - // padding: 4 bytes -} - -// Struct read VisualInfo -func ReadVisualInfo(buf []byte, v *VisualInfo) int { - b := 0 - - v.VisualId = Visualid(Get32(buf[b:])) - b += 4 - - v.Class = buf[b] - b += 1 - - v.BitsPerRgbValue = buf[b] - b += 1 - - v.ColormapEntries = Get16(buf[b:]) - b += 2 - - v.RedMask = Get32(buf[b:]) - b += 4 - - v.GreenMask = Get32(buf[b:]) - b += 4 - - v.BlueMask = Get32(buf[b:]) - b += 4 - - b += 4 // padding - - return b -} - -// Struct list read VisualInfo -func ReadVisualInfoList(buf []byte, dest []VisualInfo) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = VisualInfo{} - b += ReadVisualInfo(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write VisualInfo -func (v VisualInfo) Bytes() []byte { - buf := make([]byte, 24) - b := 0 - - Put32(buf[b:], uint32(v.VisualId)) - b += 4 - - buf[b] = v.Class - b += 1 - - buf[b] = v.BitsPerRgbValue - b += 1 - - Put16(buf[b:], v.ColormapEntries) - b += 2 - - Put32(buf[b:], v.RedMask) - b += 4 - - Put32(buf[b:], v.GreenMask) - b += 4 - - Put32(buf[b:], v.BlueMask) - b += 4 - - b += 4 // padding - - return buf -} - -// Write struct list VisualInfo -func VisualInfoListBytes(buf []byte, list []VisualInfo) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'DepthInfo' struct definition -// Size: (8 + pad((int(VisualsLen) * 24))) -type DepthInfo struct { - Depth byte - // padding: 1 bytes - VisualsLen uint16 - // padding: 4 bytes - Visuals []VisualInfo // size: pad((int(VisualsLen) * 24)) -} - -// Struct read DepthInfo -func ReadDepthInfo(buf []byte, v *DepthInfo) int { - b := 0 - - v.Depth = buf[b] - b += 1 - - b += 1 // padding - - v.VisualsLen = Get16(buf[b:]) - b += 2 - - b += 4 // padding - - v.Visuals = make([]VisualInfo, v.VisualsLen) - b += ReadVisualInfoList(buf[b:], v.Visuals) - - return b -} - -// Struct list read DepthInfo -func ReadDepthInfoList(buf []byte, dest []DepthInfo) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = DepthInfo{} - b += ReadDepthInfo(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write DepthInfo -func (v DepthInfo) Bytes() []byte { - buf := make([]byte, (8 + pad((int(v.VisualsLen) * 24)))) - b := 0 - - buf[b] = v.Depth - b += 1 - - b += 1 // padding - - Put16(buf[b:], v.VisualsLen) - b += 2 - - b += 4 // padding - - b += VisualInfoListBytes(buf[b:], v.Visuals) - - return buf -} - -// Write struct list DepthInfo -func DepthInfoListBytes(buf []byte, list []DepthInfo) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// Struct list size DepthInfo -func DepthInfoListSize(list []DepthInfo) int { - size := 0 - for _, item := range list { - size += (8 + pad((int(item.VisualsLen) * 24))) - } - return size -} - -// 'ScreenInfo' struct definition -// Size: (40 + DepthInfoListSize(AllowedDepths)) -type ScreenInfo struct { - Root Window - DefaultColormap Colormap - WhitePixel uint32 - BlackPixel uint32 - CurrentInputMasks uint32 - WidthInPixels uint16 - HeightInPixels uint16 - WidthInMillimeters uint16 - HeightInMillimeters uint16 - MinInstalledMaps uint16 - MaxInstalledMaps uint16 - RootVisual Visualid - BackingStores byte - SaveUnders bool - RootDepth byte - AllowedDepthsLen byte - AllowedDepths []DepthInfo // size: DepthInfoListSize(AllowedDepths) -} - -// Struct read ScreenInfo -func ReadScreenInfo(buf []byte, v *ScreenInfo) int { - b := 0 - - v.Root = Window(Get32(buf[b:])) - b += 4 - - v.DefaultColormap = Colormap(Get32(buf[b:])) - b += 4 - - v.WhitePixel = Get32(buf[b:]) - b += 4 - - v.BlackPixel = Get32(buf[b:]) - b += 4 - - v.CurrentInputMasks = Get32(buf[b:]) - b += 4 - - v.WidthInPixels = Get16(buf[b:]) - b += 2 - - v.HeightInPixels = Get16(buf[b:]) - b += 2 - - v.WidthInMillimeters = Get16(buf[b:]) - b += 2 - - v.HeightInMillimeters = Get16(buf[b:]) - b += 2 - - v.MinInstalledMaps = Get16(buf[b:]) - b += 2 - - v.MaxInstalledMaps = Get16(buf[b:]) - b += 2 - - v.RootVisual = Visualid(Get32(buf[b:])) - b += 4 - - v.BackingStores = buf[b] - b += 1 - - if buf[b] == 1 { - v.SaveUnders = true - } else { - v.SaveUnders = false - } - b += 1 - - v.RootDepth = buf[b] - b += 1 - - v.AllowedDepthsLen = buf[b] - b += 1 - - v.AllowedDepths = make([]DepthInfo, v.AllowedDepthsLen) - b += ReadDepthInfoList(buf[b:], v.AllowedDepths) - - return b -} - -// Struct list read ScreenInfo -func ReadScreenInfoList(buf []byte, dest []ScreenInfo) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = ScreenInfo{} - b += ReadScreenInfo(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write ScreenInfo -func (v ScreenInfo) Bytes() []byte { - buf := make([]byte, (40 + DepthInfoListSize(v.AllowedDepths))) - b := 0 - - Put32(buf[b:], uint32(v.Root)) - b += 4 - - Put32(buf[b:], uint32(v.DefaultColormap)) - b += 4 - - Put32(buf[b:], v.WhitePixel) - b += 4 - - Put32(buf[b:], v.BlackPixel) - b += 4 - - Put32(buf[b:], v.CurrentInputMasks) - b += 4 - - Put16(buf[b:], v.WidthInPixels) - b += 2 - - Put16(buf[b:], v.HeightInPixels) - b += 2 - - Put16(buf[b:], v.WidthInMillimeters) - b += 2 - - Put16(buf[b:], v.HeightInMillimeters) - b += 2 - - Put16(buf[b:], v.MinInstalledMaps) - b += 2 - - Put16(buf[b:], v.MaxInstalledMaps) - b += 2 - - Put32(buf[b:], uint32(v.RootVisual)) - b += 4 - - buf[b] = v.BackingStores - b += 1 - - if v.SaveUnders { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - buf[b] = v.RootDepth - b += 1 - - buf[b] = v.AllowedDepthsLen - b += 1 - - b += DepthInfoListBytes(buf[b:], v.AllowedDepths) - - return buf -} - -// Write struct list ScreenInfo -func ScreenInfoListBytes(buf []byte, list []ScreenInfo) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// Struct list size ScreenInfo -func ScreenInfoListSize(list []ScreenInfo) int { - size := 0 - for _, item := range list { - size += (40 + DepthInfoListSize(item.AllowedDepths)) - } - return size -} - -// 'SetupRequest' struct definition -// Size: ((12 + pad((int(AuthorizationProtocolNameLen) * 1))) + pad((int(AuthorizationProtocolDataLen) * 1))) -type SetupRequest struct { - ByteOrder byte - // padding: 1 bytes - ProtocolMajorVersion uint16 - ProtocolMinorVersion uint16 - AuthorizationProtocolNameLen uint16 - AuthorizationProtocolDataLen uint16 - // padding: 2 bytes - AuthorizationProtocolName string // size: pad((int(AuthorizationProtocolNameLen) * 1)) - AuthorizationProtocolData string // size: pad((int(AuthorizationProtocolDataLen) * 1)) -} - -// Struct read SetupRequest -func ReadSetupRequest(buf []byte, v *SetupRequest) int { - b := 0 - - v.ByteOrder = buf[b] - b += 1 - - b += 1 // padding - - v.ProtocolMajorVersion = Get16(buf[b:]) - b += 2 - - v.ProtocolMinorVersion = Get16(buf[b:]) - b += 2 - - v.AuthorizationProtocolNameLen = Get16(buf[b:]) - b += 2 - - v.AuthorizationProtocolDataLen = Get16(buf[b:]) - b += 2 - - b += 2 // padding - - { - byteString := make([]byte, v.AuthorizationProtocolNameLen) - copy(byteString[:v.AuthorizationProtocolNameLen], buf[b:]) - v.AuthorizationProtocolName = string(byteString) - b += pad(int(v.AuthorizationProtocolNameLen)) - } - - { - byteString := make([]byte, v.AuthorizationProtocolDataLen) - copy(byteString[:v.AuthorizationProtocolDataLen], buf[b:]) - v.AuthorizationProtocolData = string(byteString) - b += pad(int(v.AuthorizationProtocolDataLen)) - } - - return b -} - -// Struct list read SetupRequest -func ReadSetupRequestList(buf []byte, dest []SetupRequest) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = SetupRequest{} - b += ReadSetupRequest(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write SetupRequest -func (v SetupRequest) Bytes() []byte { - buf := make([]byte, ((12 + pad((int(v.AuthorizationProtocolNameLen) * 1))) + pad((int(v.AuthorizationProtocolDataLen) * 1)))) - b := 0 - - buf[b] = v.ByteOrder - b += 1 - - b += 1 // padding - - Put16(buf[b:], v.ProtocolMajorVersion) - b += 2 - - Put16(buf[b:], v.ProtocolMinorVersion) - b += 2 - - Put16(buf[b:], v.AuthorizationProtocolNameLen) - b += 2 - - Put16(buf[b:], v.AuthorizationProtocolDataLen) - b += 2 - - b += 2 // padding - - copy(buf[b:], v.AuthorizationProtocolName[:v.AuthorizationProtocolNameLen]) - b += pad(int(v.AuthorizationProtocolNameLen)) - - copy(buf[b:], v.AuthorizationProtocolData[:v.AuthorizationProtocolDataLen]) - b += pad(int(v.AuthorizationProtocolDataLen)) - - return buf -} - -// Write struct list SetupRequest -func SetupRequestListBytes(buf []byte, list []SetupRequest) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// Struct list size SetupRequest -func SetupRequestListSize(list []SetupRequest) int { - size := 0 - for _, item := range list { - size += ((12 + pad((int(item.AuthorizationProtocolNameLen) * 1))) + pad((int(item.AuthorizationProtocolDataLen) * 1))) - } - return size -} - -// 'SetupFailed' struct definition -// Size: (8 + pad((int(ReasonLen) * 1))) -type SetupFailed struct { - Status byte - ReasonLen byte - ProtocolMajorVersion uint16 - ProtocolMinorVersion uint16 - Length uint16 - Reason string // size: pad((int(ReasonLen) * 1)) -} - -// Struct read SetupFailed -func ReadSetupFailed(buf []byte, v *SetupFailed) int { - b := 0 - - v.Status = buf[b] - b += 1 - - v.ReasonLen = buf[b] - b += 1 - - v.ProtocolMajorVersion = Get16(buf[b:]) - b += 2 - - v.ProtocolMinorVersion = Get16(buf[b:]) - b += 2 - - v.Length = Get16(buf[b:]) - b += 2 - - { - byteString := make([]byte, v.ReasonLen) - copy(byteString[:v.ReasonLen], buf[b:]) - v.Reason = string(byteString) - b += pad(int(v.ReasonLen)) - } - - return b -} - -// Struct list read SetupFailed -func ReadSetupFailedList(buf []byte, dest []SetupFailed) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = SetupFailed{} - b += ReadSetupFailed(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write SetupFailed -func (v SetupFailed) Bytes() []byte { - buf := make([]byte, (8 + pad((int(v.ReasonLen) * 1)))) - b := 0 - - buf[b] = v.Status - b += 1 - - buf[b] = v.ReasonLen - b += 1 - - Put16(buf[b:], v.ProtocolMajorVersion) - b += 2 - - Put16(buf[b:], v.ProtocolMinorVersion) - b += 2 - - Put16(buf[b:], v.Length) - b += 2 - - copy(buf[b:], v.Reason[:v.ReasonLen]) - b += pad(int(v.ReasonLen)) - - return buf -} - -// Write struct list SetupFailed -func SetupFailedListBytes(buf []byte, list []SetupFailed) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// Struct list size SetupFailed -func SetupFailedListSize(list []SetupFailed) int { - size := 0 - for _, item := range list { - size += (8 + pad((int(item.ReasonLen) * 1))) - } - return size -} - -// 'SetupAuthenticate' struct definition -// Size: (8 + pad(((int(Length) * 4) * 1))) -type SetupAuthenticate struct { - Status byte - // padding: 5 bytes - Length uint16 - Reason string // size: pad(((int(Length) * 4) * 1)) -} - -// Struct read SetupAuthenticate -func ReadSetupAuthenticate(buf []byte, v *SetupAuthenticate) int { - b := 0 - - v.Status = buf[b] - b += 1 - - b += 5 // padding - - v.Length = Get16(buf[b:]) - b += 2 - - { - byteString := make([]byte, (int(v.Length) * 4)) - copy(byteString[:(int(v.Length)*4)], buf[b:]) - v.Reason = string(byteString) - b += pad(int((int(v.Length) * 4))) - } - - return b -} - -// Struct list read SetupAuthenticate -func ReadSetupAuthenticateList(buf []byte, dest []SetupAuthenticate) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = SetupAuthenticate{} - b += ReadSetupAuthenticate(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write SetupAuthenticate -func (v SetupAuthenticate) Bytes() []byte { - buf := make([]byte, (8 + pad(((int(v.Length) * 4) * 1)))) - b := 0 - - buf[b] = v.Status - b += 1 - - b += 5 // padding - - Put16(buf[b:], v.Length) - b += 2 - - copy(buf[b:], v.Reason[:(int(v.Length)*4)]) - b += pad(int((int(v.Length) * 4))) - - return buf -} - -// Write struct list SetupAuthenticate -func SetupAuthenticateListBytes(buf []byte, list []SetupAuthenticate) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// Struct list size SetupAuthenticate -func SetupAuthenticateListSize(list []SetupAuthenticate) int { - size := 0 - for _, item := range list { - size += (8 + pad(((int(item.Length) * 4) * 1))) - } - return size -} - -// 'SetupInfo' struct definition -// Size: (((40 + pad((int(VendorLen) * 1))) + pad((int(PixmapFormatsLen) * 8))) + ScreenInfoListSize(Roots)) -type SetupInfo struct { - Status byte - // padding: 1 bytes - ProtocolMajorVersion uint16 - ProtocolMinorVersion uint16 - Length uint16 - ReleaseNumber uint32 - ResourceIdBase uint32 - ResourceIdMask uint32 - MotionBufferSize uint32 - VendorLen uint16 - MaximumRequestLength uint16 - RootsLen byte - PixmapFormatsLen byte - ImageByteOrder byte - BitmapFormatBitOrder byte - BitmapFormatScanlineUnit byte - BitmapFormatScanlinePad byte - MinKeycode Keycode - MaxKeycode Keycode - // padding: 4 bytes - Vendor string // size: pad((int(VendorLen) * 1)) - PixmapFormats []Format // size: pad((int(PixmapFormatsLen) * 8)) - Roots []ScreenInfo // size: ScreenInfoListSize(Roots) -} - -// Struct read SetupInfo -func ReadSetupInfo(buf []byte, v *SetupInfo) int { - b := 0 - - v.Status = buf[b] - b += 1 - - b += 1 // padding - - v.ProtocolMajorVersion = Get16(buf[b:]) - b += 2 - - v.ProtocolMinorVersion = Get16(buf[b:]) - b += 2 - - v.Length = Get16(buf[b:]) - b += 2 - - v.ReleaseNumber = Get32(buf[b:]) - b += 4 - - v.ResourceIdBase = Get32(buf[b:]) - b += 4 - - v.ResourceIdMask = Get32(buf[b:]) - b += 4 - - v.MotionBufferSize = Get32(buf[b:]) - b += 4 - - v.VendorLen = Get16(buf[b:]) - b += 2 - - v.MaximumRequestLength = Get16(buf[b:]) - b += 2 - - v.RootsLen = buf[b] - b += 1 - - v.PixmapFormatsLen = buf[b] - b += 1 - - v.ImageByteOrder = buf[b] - b += 1 - - v.BitmapFormatBitOrder = buf[b] - b += 1 - - v.BitmapFormatScanlineUnit = buf[b] - b += 1 - - v.BitmapFormatScanlinePad = buf[b] - b += 1 - - v.MinKeycode = Keycode(buf[b]) - b += 1 - - v.MaxKeycode = Keycode(buf[b]) - b += 1 - - b += 4 // padding - - { - byteString := make([]byte, v.VendorLen) - copy(byteString[:v.VendorLen], buf[b:]) - v.Vendor = string(byteString) - b += pad(int(v.VendorLen)) - } - - v.PixmapFormats = make([]Format, v.PixmapFormatsLen) - b += ReadFormatList(buf[b:], v.PixmapFormats) - - v.Roots = make([]ScreenInfo, v.RootsLen) - b += ReadScreenInfoList(buf[b:], v.Roots) - - return b -} - -// Struct list read SetupInfo -func ReadSetupInfoList(buf []byte, dest []SetupInfo) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = SetupInfo{} - b += ReadSetupInfo(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write SetupInfo -func (v SetupInfo) Bytes() []byte { - buf := make([]byte, (((40 + pad((int(v.VendorLen) * 1))) + pad((int(v.PixmapFormatsLen) * 8))) + ScreenInfoListSize(v.Roots))) - b := 0 - - buf[b] = v.Status - b += 1 - - b += 1 // padding - - Put16(buf[b:], v.ProtocolMajorVersion) - b += 2 - - Put16(buf[b:], v.ProtocolMinorVersion) - b += 2 - - Put16(buf[b:], v.Length) - b += 2 - - Put32(buf[b:], v.ReleaseNumber) - b += 4 - - Put32(buf[b:], v.ResourceIdBase) - b += 4 - - Put32(buf[b:], v.ResourceIdMask) - b += 4 - - Put32(buf[b:], v.MotionBufferSize) - b += 4 - - Put16(buf[b:], v.VendorLen) - b += 2 - - Put16(buf[b:], v.MaximumRequestLength) - b += 2 - - buf[b] = v.RootsLen - b += 1 - - buf[b] = v.PixmapFormatsLen - b += 1 - - buf[b] = v.ImageByteOrder - b += 1 - - buf[b] = v.BitmapFormatBitOrder - b += 1 - - buf[b] = v.BitmapFormatScanlineUnit - b += 1 - - buf[b] = v.BitmapFormatScanlinePad - b += 1 - - buf[b] = byte(v.MinKeycode) - b += 1 - - buf[b] = byte(v.MaxKeycode) - b += 1 - - b += 4 // padding - - copy(buf[b:], v.Vendor[:v.VendorLen]) - b += pad(int(v.VendorLen)) - - b += FormatListBytes(buf[b:], v.PixmapFormats) - - b += ScreenInfoListBytes(buf[b:], v.Roots) - - return buf -} - -// Write struct list SetupInfo -func SetupInfoListBytes(buf []byte, list []SetupInfo) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// Struct list size SetupInfo -func SetupInfoListSize(list []SetupInfo) int { - size := 0 - for _, item := range list { - size += (((40 + pad((int(item.VendorLen) * 1))) + pad((int(item.PixmapFormatsLen) * 8))) + ScreenInfoListSize(item.Roots)) - } - return size -} - -// 'Timecoord' struct definition -// Size: 8 -type Timecoord struct { - Time Timestamp - X int16 - Y int16 -} - -// Struct read Timecoord -func ReadTimecoord(buf []byte, v *Timecoord) int { - b := 0 - - v.Time = Timestamp(Get32(buf[b:])) - b += 4 - - v.X = int16(Get16(buf[b:])) - b += 2 - - v.Y = int16(Get16(buf[b:])) - b += 2 - - return b -} - -// Struct list read Timecoord -func ReadTimecoordList(buf []byte, dest []Timecoord) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Timecoord{} - b += ReadTimecoord(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Timecoord -func (v Timecoord) Bytes() []byte { - buf := make([]byte, 8) - b := 0 - - Put32(buf[b:], uint32(v.Time)) - b += 4 - - Put16(buf[b:], uint16(v.X)) - b += 2 - - Put16(buf[b:], uint16(v.Y)) - b += 2 - - return buf -} - -// Write struct list Timecoord -func TimecoordListBytes(buf []byte, list []Timecoord) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'Fontprop' struct definition -// Size: 8 -type Fontprop struct { - Name Atom - Value uint32 -} - -// Struct read Fontprop -func ReadFontprop(buf []byte, v *Fontprop) int { - b := 0 - - v.Name = Atom(Get32(buf[b:])) - b += 4 - - v.Value = Get32(buf[b:]) - b += 4 - - return b -} - -// Struct list read Fontprop -func ReadFontpropList(buf []byte, dest []Fontprop) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Fontprop{} - b += ReadFontprop(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Fontprop -func (v Fontprop) Bytes() []byte { - buf := make([]byte, 8) - b := 0 - - Put32(buf[b:], uint32(v.Name)) - b += 4 - - Put32(buf[b:], v.Value) - b += 4 - - return buf -} - -// Write struct list Fontprop -func FontpropListBytes(buf []byte, list []Fontprop) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'Charinfo' struct definition -// Size: 12 -type Charinfo struct { - LeftSideBearing int16 - RightSideBearing int16 - CharacterWidth int16 - Ascent int16 - Descent int16 - Attributes uint16 -} - -// Struct read Charinfo -func ReadCharinfo(buf []byte, v *Charinfo) int { - b := 0 - - v.LeftSideBearing = int16(Get16(buf[b:])) - b += 2 - - v.RightSideBearing = int16(Get16(buf[b:])) - b += 2 - - v.CharacterWidth = int16(Get16(buf[b:])) - b += 2 - - v.Ascent = int16(Get16(buf[b:])) - b += 2 - - v.Descent = int16(Get16(buf[b:])) - b += 2 - - v.Attributes = Get16(buf[b:]) - b += 2 - - return b -} - -// Struct list read Charinfo -func ReadCharinfoList(buf []byte, dest []Charinfo) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Charinfo{} - b += ReadCharinfo(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Charinfo -func (v Charinfo) Bytes() []byte { - buf := make([]byte, 12) - b := 0 - - Put16(buf[b:], uint16(v.LeftSideBearing)) - b += 2 - - Put16(buf[b:], uint16(v.RightSideBearing)) - b += 2 - - Put16(buf[b:], uint16(v.CharacterWidth)) - b += 2 - - Put16(buf[b:], uint16(v.Ascent)) - b += 2 - - Put16(buf[b:], uint16(v.Descent)) - b += 2 - - Put16(buf[b:], v.Attributes) - b += 2 - - return buf -} - -// Write struct list Charinfo -func CharinfoListBytes(buf []byte, list []Charinfo) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'Str' struct definition -// Size: (1 + pad((int(NameLen) * 1))) -type Str struct { - NameLen byte - Name string // size: pad((int(NameLen) * 1)) -} - -// Struct read Str -func ReadStr(buf []byte, v *Str) int { - b := 0 - - v.NameLen = buf[b] - b += 1 - - { - byteString := make([]byte, v.NameLen) - copy(byteString[:v.NameLen], buf[b:]) - v.Name = string(byteString) - b += pad(int(v.NameLen)) - } - - return b -} - -// Struct list read Str -func ReadStrList(buf []byte, dest []Str) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Str{} - b += ReadStr(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Str -func (v Str) Bytes() []byte { - buf := make([]byte, (1 + pad((int(v.NameLen) * 1)))) - b := 0 - - buf[b] = v.NameLen - b += 1 - - copy(buf[b:], v.Name[:v.NameLen]) - b += pad(int(v.NameLen)) - - return buf -} - -// Write struct list Str -func StrListBytes(buf []byte, list []Str) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// Struct list size Str -func StrListSize(list []Str) int { - size := 0 - for _, item := range list { - size += (1 + pad((int(item.NameLen) * 1))) - } - return size -} - -// 'Segment' struct definition -// Size: 8 -type Segment struct { - X1 int16 - Y1 int16 - X2 int16 - Y2 int16 -} - -// Struct read Segment -func ReadSegment(buf []byte, v *Segment) int { - b := 0 - - v.X1 = int16(Get16(buf[b:])) - b += 2 - - v.Y1 = int16(Get16(buf[b:])) - b += 2 - - v.X2 = int16(Get16(buf[b:])) - b += 2 - - v.Y2 = int16(Get16(buf[b:])) - b += 2 - - return b -} - -// Struct list read Segment -func ReadSegmentList(buf []byte, dest []Segment) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Segment{} - b += ReadSegment(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Segment -func (v Segment) Bytes() []byte { - buf := make([]byte, 8) - b := 0 - - Put16(buf[b:], uint16(v.X1)) - b += 2 - - Put16(buf[b:], uint16(v.Y1)) - b += 2 - - Put16(buf[b:], uint16(v.X2)) - b += 2 - - Put16(buf[b:], uint16(v.Y2)) - b += 2 - - return buf -} - -// Write struct list Segment -func SegmentListBytes(buf []byte, list []Segment) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'Coloritem' struct definition -// Size: 12 -type Coloritem struct { - Pixel uint32 - Red uint16 - Green uint16 - Blue uint16 - Flags byte - // padding: 1 bytes -} - -// Struct read Coloritem -func ReadColoritem(buf []byte, v *Coloritem) int { - b := 0 - - v.Pixel = Get32(buf[b:]) - b += 4 - - v.Red = Get16(buf[b:]) - b += 2 - - v.Green = Get16(buf[b:]) - b += 2 - - v.Blue = Get16(buf[b:]) - b += 2 - - v.Flags = buf[b] - b += 1 - - b += 1 // padding - - return b -} - -// Struct list read Coloritem -func ReadColoritemList(buf []byte, dest []Coloritem) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Coloritem{} - b += ReadColoritem(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Coloritem -func (v Coloritem) Bytes() []byte { - buf := make([]byte, 12) - b := 0 - - Put32(buf[b:], v.Pixel) - b += 4 - - Put16(buf[b:], v.Red) - b += 2 - - Put16(buf[b:], v.Green) - b += 2 - - Put16(buf[b:], v.Blue) - b += 2 - - buf[b] = v.Flags - b += 1 - - b += 1 // padding - - return buf -} - -// Write struct list Coloritem -func ColoritemListBytes(buf []byte, list []Coloritem) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'Rgb' struct definition -// Size: 8 -type Rgb struct { - Red uint16 - Green uint16 - Blue uint16 - // padding: 2 bytes -} - -// Struct read Rgb -func ReadRgb(buf []byte, v *Rgb) int { - b := 0 - - v.Red = Get16(buf[b:]) - b += 2 - - v.Green = Get16(buf[b:]) - b += 2 - - v.Blue = Get16(buf[b:]) - b += 2 - - b += 2 // padding - - return b -} - -// Struct list read Rgb -func ReadRgbList(buf []byte, dest []Rgb) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Rgb{} - b += ReadRgb(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Rgb -func (v Rgb) Bytes() []byte { - buf := make([]byte, 8) - b := 0 - - Put16(buf[b:], v.Red) - b += 2 - - Put16(buf[b:], v.Green) - b += 2 - - Put16(buf[b:], v.Blue) - b += 2 - - b += 2 // padding - - return buf -} - -// Write struct list Rgb -func RgbListBytes(buf []byte, list []Rgb) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// 'Host' struct definition -// Size: (4 + pad((int(AddressLen) * 1))) -type Host struct { - Family byte - // padding: 1 bytes - AddressLen uint16 - Address []byte // size: pad((int(AddressLen) * 1)) -} - -// Struct read Host -func ReadHost(buf []byte, v *Host) int { - b := 0 - - v.Family = buf[b] - b += 1 - - b += 1 // padding - - v.AddressLen = Get16(buf[b:]) - b += 2 - - v.Address = make([]byte, v.AddressLen) - copy(v.Address[:v.AddressLen], buf[b:]) - b += pad(int(v.AddressLen)) - - return b -} - -// Struct list read Host -func ReadHostList(buf []byte, dest []Host) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = Host{} - b += ReadHost(buf[b:], &dest[i]) - } - return pad(b) -} - -// Struct write Host -func (v Host) Bytes() []byte { - buf := make([]byte, (4 + pad((int(v.AddressLen) * 1)))) - b := 0 - - buf[b] = v.Family - b += 1 - - b += 1 // padding - - Put16(buf[b:], v.AddressLen) - b += 2 - - copy(buf[b:], v.Address[:v.AddressLen]) - b += pad(int(v.AddressLen)) - - return buf -} - -// Write struct list Host -func HostListBytes(buf []byte, list []Host) int { - b := 0 - var structBytes []byte - for _, item := range list { - structBytes = item.Bytes() - copy(buf[b:], structBytes) - b += pad(len(structBytes)) - } - return b -} - -// Struct list size Host -func HostListSize(list []Host) int { - size := 0 - for _, item := range list { - size += (4 + pad((int(item.AddressLen) * 1))) - } - return size -} - -// Union definition ClientMessageDataUnion -// Note that to *create* a Union, you should *never* create -// this struct directly (unless you know what you're doing). -// Instead use one of the following constructors for 'ClientMessageDataUnion': -// NewClientMessageDataUnionData8(Data8 []byte) ClientMessageDataUnion -// NewClientMessageDataUnionData16(Data16 []uint16) ClientMessageDataUnion -// NewClientMessageDataUnionData32(Data32 []uint32) ClientMessageDataUnion -type ClientMessageDataUnion struct { - Data8 []byte // size: 20 - Data16 []uint16 // size: 20 - Data32 []uint32 // size: 20 -} - -// Union constructor for ClientMessageDataUnion for field Data8. -func NewClientMessageDataUnionData8(Data8 []byte) ClientMessageDataUnion { - var b int - buf := make([]byte, 20) - - copy(buf[b:], Data8[:20]) - b += pad(int(20)) - - // Create the Union type - v := ClientMessageDataUnion{} - - // Now copy buf into all fields - - b = 0 // always read the same bytes - v.Data8 = make([]byte, 20) - copy(v.Data8[:20], buf[b:]) - b += pad(int(20)) - - b = 0 // always read the same bytes - v.Data16 = make([]uint16, 10) - for i := 0; i < int(10); i++ { - v.Data16[i] = Get16(buf[b:]) - b += 2 - } - b = pad(b) - - b = 0 // always read the same bytes - v.Data32 = make([]uint32, 5) - for i := 0; i < int(5); i++ { - v.Data32[i] = Get32(buf[b:]) - b += 4 - } - b = pad(b) - - return v -} - -// Union constructor for ClientMessageDataUnion for field Data16. -func NewClientMessageDataUnionData16(Data16 []uint16) ClientMessageDataUnion { - var b int - buf := make([]byte, 20) - - for i := 0; i < int(10); i++ { - Put16(buf[b:], Data16[i]) - b += 2 - } - b = pad(b) - - // Create the Union type - v := ClientMessageDataUnion{} - - // Now copy buf into all fields - - b = 0 // always read the same bytes - v.Data8 = make([]byte, 20) - copy(v.Data8[:20], buf[b:]) - b += pad(int(20)) - - b = 0 // always read the same bytes - v.Data16 = make([]uint16, 10) - for i := 0; i < int(10); i++ { - v.Data16[i] = Get16(buf[b:]) - b += 2 - } - b = pad(b) - - b = 0 // always read the same bytes - v.Data32 = make([]uint32, 5) - for i := 0; i < int(5); i++ { - v.Data32[i] = Get32(buf[b:]) - b += 4 - } - b = pad(b) - - return v -} - -// Union constructor for ClientMessageDataUnion for field Data32. -func NewClientMessageDataUnionData32(Data32 []uint32) ClientMessageDataUnion { - var b int - buf := make([]byte, 20) - - for i := 0; i < int(5); i++ { - Put32(buf[b:], Data32[i]) - b += 4 - } - b = pad(b) - - // Create the Union type - v := ClientMessageDataUnion{} - - // Now copy buf into all fields - - b = 0 // always read the same bytes - v.Data8 = make([]byte, 20) - copy(v.Data8[:20], buf[b:]) - b += pad(int(20)) - - b = 0 // always read the same bytes - v.Data16 = make([]uint16, 10) - for i := 0; i < int(10); i++ { - v.Data16[i] = Get16(buf[b:]) - b += 2 - } - b = pad(b) - - b = 0 // always read the same bytes - v.Data32 = make([]uint32, 5) - for i := 0; i < int(5); i++ { - v.Data32[i] = Get32(buf[b:]) - b += 4 - } - b = pad(b) - - return v -} - -// Union read ClientMessageDataUnion -func ReadClientMessageDataUnion(buf []byte, v *ClientMessageDataUnion) int { - var b int - - b = 0 // re-read the same bytes - v.Data8 = make([]byte, 20) - copy(v.Data8[:20], buf[b:]) - b += pad(int(20)) - - b = 0 // re-read the same bytes - v.Data16 = make([]uint16, 10) - for i := 0; i < int(10); i++ { - v.Data16[i] = Get16(buf[b:]) - b += 2 - } - b = pad(b) - - b = 0 // re-read the same bytes - v.Data32 = make([]uint32, 5) - for i := 0; i < int(5); i++ { - v.Data32[i] = Get32(buf[b:]) - b += 4 - } - b = pad(b) - - return 20 -} - -// Union list read ClientMessageDataUnion -func ReadClientMessageDataUnionList(buf []byte, dest []ClientMessageDataUnion) int { - b := 0 - for i := 0; i < len(dest); i++ { - dest[i] = ClientMessageDataUnion{} - b += ReadClientMessageDataUnion(buf[b:], &dest[i]) - } - return pad(b) -} - -// Union write ClientMessageDataUnion -// Each field in a union must contain the same data. -// So simply pick the first field and write that to the wire. -func (v ClientMessageDataUnion) Bytes() []byte { - buf := make([]byte, 20) - b := 0 - - copy(buf[b:], v.Data8[:20]) - b += pad(int(20)) - return buf -} - -// Union list write ClientMessageDataUnion -func ClientMessageDataUnionListBytes(buf []byte, list []ClientMessageDataUnion) int { - b := 0 - var unionBytes []byte - for _, item := range list { - unionBytes = item.Bytes() - copy(buf[b:], unionBytes) - b += pad(len(unionBytes)) - } - return b -} - -// Event definition KeyPress (2) -// Size: 32 - -const KeyPress = 2 - -type KeyPressEvent struct { - Sequence uint16 - Detail Keycode - Time Timestamp - Root Window - Event Window - Child Window - RootX int16 - RootY int16 - EventX int16 - EventY int16 - State uint16 - SameScreen bool - // padding: 1 bytes -} - -// Event read KeyPress -func NewKeyPressEvent(buf []byte) Event { - v := KeyPressEvent{} - b := 1 // don't read event number - - v.Detail = Keycode(buf[b]) - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Time = Timestamp(Get32(buf[b:])) - b += 4 - - v.Root = Window(Get32(buf[b:])) - b += 4 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Child = Window(Get32(buf[b:])) - b += 4 - - v.RootX = int16(Get16(buf[b:])) - b += 2 - - v.RootY = int16(Get16(buf[b:])) - b += 2 - - v.EventX = int16(Get16(buf[b:])) - b += 2 - - v.EventY = int16(Get16(buf[b:])) - b += 2 - - v.State = Get16(buf[b:]) - b += 2 - - if buf[b] == 1 { - v.SameScreen = true - } else { - v.SameScreen = false - } - b += 1 - - b += 1 // padding - - return v -} - -// Event write KeyPress -func (v KeyPressEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 2 - b += 1 - - buf[b] = byte(v.Detail) - b += 1 - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Time)) - b += 4 - - Put32(buf[b:], uint32(v.Root)) - b += 4 - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Child)) - b += 4 - - Put16(buf[b:], uint16(v.RootX)) - b += 2 - - Put16(buf[b:], uint16(v.RootY)) - b += 2 - - Put16(buf[b:], uint16(v.EventX)) - b += 2 - - Put16(buf[b:], uint16(v.EventY)) - b += 2 - - Put16(buf[b:], v.State) - b += 2 - - if v.SameScreen { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - b += 1 // padding - - return buf -} - -func (v KeyPressEvent) ImplementsEvent() {} - -func (v KeyPressEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v KeyPressEvent) String() string { - fieldVals := make([]string, 0, 12) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) - fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) - fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) - fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) - fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) - fieldVals = append(fieldVals, sprintf("State: %d", v.State)) - fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) - return "KeyPress {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[2] = NewKeyPressEvent -} - -// Event definition ButtonPress (4) -// Size: 32 - -const ButtonPress = 4 - -type ButtonPressEvent struct { - Sequence uint16 - Detail Button - Time Timestamp - Root Window - Event Window - Child Window - RootX int16 - RootY int16 - EventX int16 - EventY int16 - State uint16 - SameScreen bool - // padding: 1 bytes -} - -// Event read ButtonPress -func NewButtonPressEvent(buf []byte) Event { - v := ButtonPressEvent{} - b := 1 // don't read event number - - v.Detail = Button(buf[b]) - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Time = Timestamp(Get32(buf[b:])) - b += 4 - - v.Root = Window(Get32(buf[b:])) - b += 4 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Child = Window(Get32(buf[b:])) - b += 4 - - v.RootX = int16(Get16(buf[b:])) - b += 2 - - v.RootY = int16(Get16(buf[b:])) - b += 2 - - v.EventX = int16(Get16(buf[b:])) - b += 2 - - v.EventY = int16(Get16(buf[b:])) - b += 2 - - v.State = Get16(buf[b:]) - b += 2 - - if buf[b] == 1 { - v.SameScreen = true - } else { - v.SameScreen = false - } - b += 1 - - b += 1 // padding - - return v -} - -// Event write ButtonPress -func (v ButtonPressEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 4 - b += 1 - - buf[b] = byte(v.Detail) - b += 1 - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Time)) - b += 4 - - Put32(buf[b:], uint32(v.Root)) - b += 4 - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Child)) - b += 4 - - Put16(buf[b:], uint16(v.RootX)) - b += 2 - - Put16(buf[b:], uint16(v.RootY)) - b += 2 - - Put16(buf[b:], uint16(v.EventX)) - b += 2 - - Put16(buf[b:], uint16(v.EventY)) - b += 2 - - Put16(buf[b:], v.State) - b += 2 - - if v.SameScreen { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - b += 1 // padding - - return buf -} - -func (v ButtonPressEvent) ImplementsEvent() {} - -func (v ButtonPressEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v ButtonPressEvent) String() string { - fieldVals := make([]string, 0, 12) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) - fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) - fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) - fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) - fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) - fieldVals = append(fieldVals, sprintf("State: %d", v.State)) - fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) - return "ButtonPress {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[4] = NewButtonPressEvent -} - -// Event definition MotionNotify (6) -// Size: 32 - -const MotionNotify = 6 - -type MotionNotifyEvent struct { - Sequence uint16 - Detail byte - Time Timestamp - Root Window - Event Window - Child Window - RootX int16 - RootY int16 - EventX int16 - EventY int16 - State uint16 - SameScreen bool - // padding: 1 bytes -} - -// Event read MotionNotify -func NewMotionNotifyEvent(buf []byte) Event { - v := MotionNotifyEvent{} - b := 1 // don't read event number - - v.Detail = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Time = Timestamp(Get32(buf[b:])) - b += 4 - - v.Root = Window(Get32(buf[b:])) - b += 4 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Child = Window(Get32(buf[b:])) - b += 4 - - v.RootX = int16(Get16(buf[b:])) - b += 2 - - v.RootY = int16(Get16(buf[b:])) - b += 2 - - v.EventX = int16(Get16(buf[b:])) - b += 2 - - v.EventY = int16(Get16(buf[b:])) - b += 2 - - v.State = Get16(buf[b:]) - b += 2 - - if buf[b] == 1 { - v.SameScreen = true - } else { - v.SameScreen = false - } - b += 1 - - b += 1 // padding - - return v -} - -// Event write MotionNotify -func (v MotionNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 6 - b += 1 - - buf[b] = v.Detail - b += 1 - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Time)) - b += 4 - - Put32(buf[b:], uint32(v.Root)) - b += 4 - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Child)) - b += 4 - - Put16(buf[b:], uint16(v.RootX)) - b += 2 - - Put16(buf[b:], uint16(v.RootY)) - b += 2 - - Put16(buf[b:], uint16(v.EventX)) - b += 2 - - Put16(buf[b:], uint16(v.EventY)) - b += 2 - - Put16(buf[b:], v.State) - b += 2 - - if v.SameScreen { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - b += 1 // padding - - return buf -} - -func (v MotionNotifyEvent) ImplementsEvent() {} - -func (v MotionNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v MotionNotifyEvent) String() string { - fieldVals := make([]string, 0, 12) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) - fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) - fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) - fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) - fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) - fieldVals = append(fieldVals, sprintf("State: %d", v.State)) - fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) - return "MotionNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[6] = NewMotionNotifyEvent -} - -// Event definition EnterNotify (7) -// Size: 32 - -const EnterNotify = 7 - -type EnterNotifyEvent struct { - Sequence uint16 - Detail byte - Time Timestamp - Root Window - Event Window - Child Window - RootX int16 - RootY int16 - EventX int16 - EventY int16 - State uint16 - Mode byte - SameScreenFocus byte -} - -// Event read EnterNotify -func NewEnterNotifyEvent(buf []byte) Event { - v := EnterNotifyEvent{} - b := 1 // don't read event number - - v.Detail = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Time = Timestamp(Get32(buf[b:])) - b += 4 - - v.Root = Window(Get32(buf[b:])) - b += 4 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Child = Window(Get32(buf[b:])) - b += 4 - - v.RootX = int16(Get16(buf[b:])) - b += 2 - - v.RootY = int16(Get16(buf[b:])) - b += 2 - - v.EventX = int16(Get16(buf[b:])) - b += 2 - - v.EventY = int16(Get16(buf[b:])) - b += 2 - - v.State = Get16(buf[b:]) - b += 2 - - v.Mode = buf[b] - b += 1 - - v.SameScreenFocus = buf[b] - b += 1 - - return v -} - -// Event write EnterNotify -func (v EnterNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 7 - b += 1 - - buf[b] = v.Detail - b += 1 - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Time)) - b += 4 - - Put32(buf[b:], uint32(v.Root)) - b += 4 - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Child)) - b += 4 - - Put16(buf[b:], uint16(v.RootX)) - b += 2 - - Put16(buf[b:], uint16(v.RootY)) - b += 2 - - Put16(buf[b:], uint16(v.EventX)) - b += 2 - - Put16(buf[b:], uint16(v.EventY)) - b += 2 - - Put16(buf[b:], v.State) - b += 2 - - buf[b] = v.Mode - b += 1 - - buf[b] = v.SameScreenFocus - b += 1 - - return buf -} - -func (v EnterNotifyEvent) ImplementsEvent() {} - -func (v EnterNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v EnterNotifyEvent) String() string { - fieldVals := make([]string, 0, 12) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) - fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) - fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) - fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) - fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) - fieldVals = append(fieldVals, sprintf("State: %d", v.State)) - fieldVals = append(fieldVals, sprintf("Mode: %d", v.Mode)) - fieldVals = append(fieldVals, sprintf("SameScreenFocus: %d", v.SameScreenFocus)) - return "EnterNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[7] = NewEnterNotifyEvent -} - -// Event definition FocusIn (9) -// Size: 32 - -const FocusIn = 9 - -type FocusInEvent struct { - Sequence uint16 - Detail byte - Event Window - Mode byte - // padding: 3 bytes -} - -// Event read FocusIn -func NewFocusInEvent(buf []byte) Event { - v := FocusInEvent{} - b := 1 // don't read event number - - v.Detail = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Mode = buf[b] - b += 1 - - b += 3 // padding - - return v -} - -// Event write FocusIn -func (v FocusInEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 9 - b += 1 - - buf[b] = v.Detail - b += 1 - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - buf[b] = v.Mode - b += 1 - - b += 3 // padding - - return buf -} - -func (v FocusInEvent) ImplementsEvent() {} - -func (v FocusInEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v FocusInEvent) String() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Mode: %d", v.Mode)) - return "FocusIn {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[9] = NewFocusInEvent -} - -// Event definition KeymapNotify (11) -// Size: 32 - -const KeymapNotify = 11 - -type KeymapNotifyEvent struct { - Keys []byte // size: 32 -} - -// Event read KeymapNotify -func NewKeymapNotifyEvent(buf []byte) Event { - v := KeymapNotifyEvent{} - b := 1 // don't read event number - - v.Keys = make([]byte, 31) - copy(v.Keys[:31], buf[b:]) - b += pad(int(31)) - - return v -} - -// Event write KeymapNotify -func (v KeymapNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 11 - b += 1 - - copy(buf[b:], v.Keys[:31]) - b += pad(int(31)) - - return buf -} - -func (v KeymapNotifyEvent) ImplementsEvent() {} - -func (v KeymapNotifyEvent) SequenceId() uint16 { - return uint16(0) -} - -func (v KeymapNotifyEvent) String() string { - fieldVals := make([]string, 0, 1) - return "KeymapNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[11] = NewKeymapNotifyEvent -} - -// Event definition Expose (12) -// Size: 32 - -const Expose = 12 - -type ExposeEvent struct { - Sequence uint16 - // padding: 1 bytes - Window Window - X uint16 - Y uint16 - Width uint16 - Height uint16 - Count uint16 - // padding: 2 bytes -} - -// Event read Expose -func NewExposeEvent(buf []byte) Event { - v := ExposeEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.X = Get16(buf[b:]) - b += 2 - - v.Y = Get16(buf[b:]) - b += 2 - - v.Width = Get16(buf[b:]) - b += 2 - - v.Height = Get16(buf[b:]) - b += 2 - - v.Count = Get16(buf[b:]) - b += 2 - - b += 2 // padding - - return v -} - -// Event write Expose -func (v ExposeEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 12 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - Put16(buf[b:], v.X) - b += 2 - - Put16(buf[b:], v.Y) - b += 2 - - Put16(buf[b:], v.Width) - b += 2 - - Put16(buf[b:], v.Height) - b += 2 - - Put16(buf[b:], v.Count) - b += 2 - - b += 2 // padding - - return buf -} - -func (v ExposeEvent) ImplementsEvent() {} - -func (v ExposeEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v ExposeEvent) String() string { - fieldVals := make([]string, 0, 8) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("X: %d", v.X)) - fieldVals = append(fieldVals, sprintf("Y: %d", v.Y)) - fieldVals = append(fieldVals, sprintf("Width: %d", v.Width)) - fieldVals = append(fieldVals, sprintf("Height: %d", v.Height)) - fieldVals = append(fieldVals, sprintf("Count: %d", v.Count)) - return "Expose {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[12] = NewExposeEvent -} - -// Event definition GraphicsExposure (13) -// Size: 32 - -const GraphicsExposure = 13 - -type GraphicsExposureEvent struct { - Sequence uint16 - // padding: 1 bytes - Drawable Drawable - X uint16 - Y uint16 - Width uint16 - Height uint16 - MinorOpcode uint16 - Count uint16 - MajorOpcode byte - // padding: 3 bytes -} - -// Event read GraphicsExposure -func NewGraphicsExposureEvent(buf []byte) Event { - v := GraphicsExposureEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Drawable = Drawable(Get32(buf[b:])) - b += 4 - - v.X = Get16(buf[b:]) - b += 2 - - v.Y = Get16(buf[b:]) - b += 2 - - v.Width = Get16(buf[b:]) - b += 2 - - v.Height = Get16(buf[b:]) - b += 2 - - v.MinorOpcode = Get16(buf[b:]) - b += 2 - - v.Count = Get16(buf[b:]) - b += 2 - - v.MajorOpcode = buf[b] - b += 1 - - b += 3 // padding - - return v -} - -// Event write GraphicsExposure -func (v GraphicsExposureEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 13 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Drawable)) - b += 4 - - Put16(buf[b:], v.X) - b += 2 - - Put16(buf[b:], v.Y) - b += 2 - - Put16(buf[b:], v.Width) - b += 2 - - Put16(buf[b:], v.Height) - b += 2 - - Put16(buf[b:], v.MinorOpcode) - b += 2 - - Put16(buf[b:], v.Count) - b += 2 - - buf[b] = v.MajorOpcode - b += 1 - - b += 3 // padding - - return buf -} - -func (v GraphicsExposureEvent) ImplementsEvent() {} - -func (v GraphicsExposureEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v GraphicsExposureEvent) String() string { - fieldVals := make([]string, 0, 10) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Drawable: %d", v.Drawable)) - fieldVals = append(fieldVals, sprintf("X: %d", v.X)) - fieldVals = append(fieldVals, sprintf("Y: %d", v.Y)) - fieldVals = append(fieldVals, sprintf("Width: %d", v.Width)) - fieldVals = append(fieldVals, sprintf("Height: %d", v.Height)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", v.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("Count: %d", v.Count)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", v.MajorOpcode)) - return "GraphicsExposure {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[13] = NewGraphicsExposureEvent -} - -// Event definition NoExposure (14) -// Size: 32 - -const NoExposure = 14 - -type NoExposureEvent struct { - Sequence uint16 - // padding: 1 bytes - Drawable Drawable - MinorOpcode uint16 - MajorOpcode byte - // padding: 1 bytes -} - -// Event read NoExposure -func NewNoExposureEvent(buf []byte) Event { - v := NoExposureEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Drawable = Drawable(Get32(buf[b:])) - b += 4 - - v.MinorOpcode = Get16(buf[b:]) - b += 2 - - v.MajorOpcode = buf[b] - b += 1 - - b += 1 // padding - - return v -} - -// Event write NoExposure -func (v NoExposureEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 14 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Drawable)) - b += 4 - - Put16(buf[b:], v.MinorOpcode) - b += 2 - - buf[b] = v.MajorOpcode - b += 1 - - b += 1 // padding - - return buf -} - -func (v NoExposureEvent) ImplementsEvent() {} - -func (v NoExposureEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v NoExposureEvent) String() string { - fieldVals := make([]string, 0, 5) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Drawable: %d", v.Drawable)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", v.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", v.MajorOpcode)) - return "NoExposure {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[14] = NewNoExposureEvent -} - -// Event definition VisibilityNotify (15) -// Size: 32 - -const VisibilityNotify = 15 - -type VisibilityNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Window Window - State byte - // padding: 3 bytes -} - -// Event read VisibilityNotify -func NewVisibilityNotifyEvent(buf []byte) Event { - v := VisibilityNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.State = buf[b] - b += 1 - - b += 3 // padding - - return v -} - -// Event write VisibilityNotify -func (v VisibilityNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 15 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - buf[b] = v.State - b += 1 - - b += 3 // padding - - return buf -} - -func (v VisibilityNotifyEvent) ImplementsEvent() {} - -func (v VisibilityNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v VisibilityNotifyEvent) String() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("State: %d", v.State)) - return "VisibilityNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[15] = NewVisibilityNotifyEvent -} - -// Event definition CreateNotify (16) -// Size: 32 - -const CreateNotify = 16 - -type CreateNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Parent Window - Window Window - X int16 - Y int16 - Width uint16 - Height uint16 - BorderWidth uint16 - OverrideRedirect bool - // padding: 1 bytes -} - -// Event read CreateNotify -func NewCreateNotifyEvent(buf []byte) Event { - v := CreateNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Parent = Window(Get32(buf[b:])) - b += 4 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.X = int16(Get16(buf[b:])) - b += 2 - - v.Y = int16(Get16(buf[b:])) - b += 2 - - v.Width = Get16(buf[b:]) - b += 2 - - v.Height = Get16(buf[b:]) - b += 2 - - v.BorderWidth = Get16(buf[b:]) - b += 2 - - if buf[b] == 1 { - v.OverrideRedirect = true - } else { - v.OverrideRedirect = false - } - b += 1 - - b += 1 // padding - - return v -} - -// Event write CreateNotify -func (v CreateNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 16 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Parent)) - b += 4 - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - Put16(buf[b:], uint16(v.X)) - b += 2 - - Put16(buf[b:], uint16(v.Y)) - b += 2 - - Put16(buf[b:], v.Width) - b += 2 - - Put16(buf[b:], v.Height) - b += 2 - - Put16(buf[b:], v.BorderWidth) - b += 2 - - if v.OverrideRedirect { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - b += 1 // padding - - return buf -} - -func (v CreateNotifyEvent) ImplementsEvent() {} - -func (v CreateNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v CreateNotifyEvent) String() string { - fieldVals := make([]string, 0, 10) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Parent: %d", v.Parent)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("X: %d", v.X)) - fieldVals = append(fieldVals, sprintf("Y: %d", v.Y)) - fieldVals = append(fieldVals, sprintf("Width: %d", v.Width)) - fieldVals = append(fieldVals, sprintf("Height: %d", v.Height)) - fieldVals = append(fieldVals, sprintf("BorderWidth: %d", v.BorderWidth)) - fieldVals = append(fieldVals, sprintf("OverrideRedirect: %t", v.OverrideRedirect)) - return "CreateNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[16] = NewCreateNotifyEvent -} - -// Event definition DestroyNotify (17) -// Size: 32 - -const DestroyNotify = 17 - -type DestroyNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Event Window - Window Window -} - -// Event read DestroyNotify -func NewDestroyNotifyEvent(buf []byte) Event { - v := DestroyNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - return v -} - -// Event write DestroyNotify -func (v DestroyNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 17 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - return buf -} - -func (v DestroyNotifyEvent) ImplementsEvent() {} - -func (v DestroyNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v DestroyNotifyEvent) String() string { - fieldVals := make([]string, 0, 3) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - return "DestroyNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[17] = NewDestroyNotifyEvent -} - -// Event definition UnmapNotify (18) -// Size: 32 - -const UnmapNotify = 18 - -type UnmapNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Event Window - Window Window - FromConfigure bool - // padding: 3 bytes -} - -// Event read UnmapNotify -func NewUnmapNotifyEvent(buf []byte) Event { - v := UnmapNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - if buf[b] == 1 { - v.FromConfigure = true - } else { - v.FromConfigure = false - } - b += 1 - - b += 3 // padding - - return v -} - -// Event write UnmapNotify -func (v UnmapNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 18 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - if v.FromConfigure { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - b += 3 // padding - - return buf -} - -func (v UnmapNotifyEvent) ImplementsEvent() {} - -func (v UnmapNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v UnmapNotifyEvent) String() string { - fieldVals := make([]string, 0, 5) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("FromConfigure: %t", v.FromConfigure)) - return "UnmapNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[18] = NewUnmapNotifyEvent -} - -// Event definition MapNotify (19) -// Size: 32 - -const MapNotify = 19 - -type MapNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Event Window - Window Window - OverrideRedirect bool - // padding: 3 bytes -} - -// Event read MapNotify -func NewMapNotifyEvent(buf []byte) Event { - v := MapNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - if buf[b] == 1 { - v.OverrideRedirect = true - } else { - v.OverrideRedirect = false - } - b += 1 - - b += 3 // padding - - return v -} - -// Event write MapNotify -func (v MapNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 19 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - if v.OverrideRedirect { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - b += 3 // padding - - return buf -} - -func (v MapNotifyEvent) ImplementsEvent() {} - -func (v MapNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v MapNotifyEvent) String() string { - fieldVals := make([]string, 0, 5) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("OverrideRedirect: %t", v.OverrideRedirect)) - return "MapNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[19] = NewMapNotifyEvent -} - -// Event definition MapRequest (20) -// Size: 32 - -const MapRequest = 20 - -type MapRequestEvent struct { - Sequence uint16 - // padding: 1 bytes - Parent Window - Window Window -} - -// Event read MapRequest -func NewMapRequestEvent(buf []byte) Event { - v := MapRequestEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Parent = Window(Get32(buf[b:])) - b += 4 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - return v -} - -// Event write MapRequest -func (v MapRequestEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 20 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Parent)) - b += 4 - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - return buf -} - -func (v MapRequestEvent) ImplementsEvent() {} - -func (v MapRequestEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v MapRequestEvent) String() string { - fieldVals := make([]string, 0, 3) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Parent: %d", v.Parent)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - return "MapRequest {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[20] = NewMapRequestEvent -} - -// Event definition ReparentNotify (21) -// Size: 32 - -const ReparentNotify = 21 - -type ReparentNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Event Window - Window Window - Parent Window - X int16 - Y int16 - OverrideRedirect bool - // padding: 3 bytes -} - -// Event read ReparentNotify -func NewReparentNotifyEvent(buf []byte) Event { - v := ReparentNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.Parent = Window(Get32(buf[b:])) - b += 4 - - v.X = int16(Get16(buf[b:])) - b += 2 - - v.Y = int16(Get16(buf[b:])) - b += 2 - - if buf[b] == 1 { - v.OverrideRedirect = true - } else { - v.OverrideRedirect = false - } - b += 1 - - b += 3 // padding - - return v -} - -// Event write ReparentNotify -func (v ReparentNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 21 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - Put32(buf[b:], uint32(v.Parent)) - b += 4 - - Put16(buf[b:], uint16(v.X)) - b += 2 - - Put16(buf[b:], uint16(v.Y)) - b += 2 - - if v.OverrideRedirect { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - b += 3 // padding - - return buf -} - -func (v ReparentNotifyEvent) ImplementsEvent() {} - -func (v ReparentNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v ReparentNotifyEvent) String() string { - fieldVals := make([]string, 0, 8) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("Parent: %d", v.Parent)) - fieldVals = append(fieldVals, sprintf("X: %d", v.X)) - fieldVals = append(fieldVals, sprintf("Y: %d", v.Y)) - fieldVals = append(fieldVals, sprintf("OverrideRedirect: %t", v.OverrideRedirect)) - return "ReparentNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[21] = NewReparentNotifyEvent -} - -// Event definition ConfigureNotify (22) -// Size: 32 - -const ConfigureNotify = 22 - -type ConfigureNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Event Window - Window Window - AboveSibling Window - X int16 - Y int16 - Width uint16 - Height uint16 - BorderWidth uint16 - OverrideRedirect bool - // padding: 1 bytes -} - -// Event read ConfigureNotify -func NewConfigureNotifyEvent(buf []byte) Event { - v := ConfigureNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.AboveSibling = Window(Get32(buf[b:])) - b += 4 - - v.X = int16(Get16(buf[b:])) - b += 2 - - v.Y = int16(Get16(buf[b:])) - b += 2 - - v.Width = Get16(buf[b:]) - b += 2 - - v.Height = Get16(buf[b:]) - b += 2 - - v.BorderWidth = Get16(buf[b:]) - b += 2 - - if buf[b] == 1 { - v.OverrideRedirect = true - } else { - v.OverrideRedirect = false - } - b += 1 - - b += 1 // padding - - return v -} - -// Event write ConfigureNotify -func (v ConfigureNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 22 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - Put32(buf[b:], uint32(v.AboveSibling)) - b += 4 - - Put16(buf[b:], uint16(v.X)) - b += 2 - - Put16(buf[b:], uint16(v.Y)) - b += 2 - - Put16(buf[b:], v.Width) - b += 2 - - Put16(buf[b:], v.Height) - b += 2 - - Put16(buf[b:], v.BorderWidth) - b += 2 - - if v.OverrideRedirect { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - b += 1 // padding - - return buf -} - -func (v ConfigureNotifyEvent) ImplementsEvent() {} - -func (v ConfigureNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v ConfigureNotifyEvent) String() string { - fieldVals := make([]string, 0, 11) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("AboveSibling: %d", v.AboveSibling)) - fieldVals = append(fieldVals, sprintf("X: %d", v.X)) - fieldVals = append(fieldVals, sprintf("Y: %d", v.Y)) - fieldVals = append(fieldVals, sprintf("Width: %d", v.Width)) - fieldVals = append(fieldVals, sprintf("Height: %d", v.Height)) - fieldVals = append(fieldVals, sprintf("BorderWidth: %d", v.BorderWidth)) - fieldVals = append(fieldVals, sprintf("OverrideRedirect: %t", v.OverrideRedirect)) - return "ConfigureNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[22] = NewConfigureNotifyEvent -} - -// Event definition ConfigureRequest (23) -// Size: 32 - -const ConfigureRequest = 23 - -type ConfigureRequestEvent struct { - Sequence uint16 - StackMode byte - Parent Window - Window Window - Sibling Window - X int16 - Y int16 - Width uint16 - Height uint16 - BorderWidth uint16 - ValueMask uint16 -} - -// Event read ConfigureRequest -func NewConfigureRequestEvent(buf []byte) Event { - v := ConfigureRequestEvent{} - b := 1 // don't read event number - - v.StackMode = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Parent = Window(Get32(buf[b:])) - b += 4 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.Sibling = Window(Get32(buf[b:])) - b += 4 - - v.X = int16(Get16(buf[b:])) - b += 2 - - v.Y = int16(Get16(buf[b:])) - b += 2 - - v.Width = Get16(buf[b:]) - b += 2 - - v.Height = Get16(buf[b:]) - b += 2 - - v.BorderWidth = Get16(buf[b:]) - b += 2 - - v.ValueMask = Get16(buf[b:]) - b += 2 - - return v -} - -// Event write ConfigureRequest -func (v ConfigureRequestEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 23 - b += 1 - - buf[b] = v.StackMode - b += 1 - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Parent)) - b += 4 - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - Put32(buf[b:], uint32(v.Sibling)) - b += 4 - - Put16(buf[b:], uint16(v.X)) - b += 2 - - Put16(buf[b:], uint16(v.Y)) - b += 2 - - Put16(buf[b:], v.Width) - b += 2 - - Put16(buf[b:], v.Height) - b += 2 - - Put16(buf[b:], v.BorderWidth) - b += 2 - - Put16(buf[b:], v.ValueMask) - b += 2 - - return buf -} - -func (v ConfigureRequestEvent) ImplementsEvent() {} - -func (v ConfigureRequestEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v ConfigureRequestEvent) String() string { - fieldVals := make([]string, 0, 10) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("StackMode: %d", v.StackMode)) - fieldVals = append(fieldVals, sprintf("Parent: %d", v.Parent)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("Sibling: %d", v.Sibling)) - fieldVals = append(fieldVals, sprintf("X: %d", v.X)) - fieldVals = append(fieldVals, sprintf("Y: %d", v.Y)) - fieldVals = append(fieldVals, sprintf("Width: %d", v.Width)) - fieldVals = append(fieldVals, sprintf("Height: %d", v.Height)) - fieldVals = append(fieldVals, sprintf("BorderWidth: %d", v.BorderWidth)) - fieldVals = append(fieldVals, sprintf("ValueMask: %d", v.ValueMask)) - return "ConfigureRequest {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[23] = NewConfigureRequestEvent -} - -// Event definition GravityNotify (24) -// Size: 32 - -const GravityNotify = 24 - -type GravityNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Event Window - Window Window - X int16 - Y int16 -} - -// Event read GravityNotify -func NewGravityNotifyEvent(buf []byte) Event { - v := GravityNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.X = int16(Get16(buf[b:])) - b += 2 - - v.Y = int16(Get16(buf[b:])) - b += 2 - - return v -} - -// Event write GravityNotify -func (v GravityNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 24 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - Put16(buf[b:], uint16(v.X)) - b += 2 - - Put16(buf[b:], uint16(v.Y)) - b += 2 - - return buf -} - -func (v GravityNotifyEvent) ImplementsEvent() {} - -func (v GravityNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v GravityNotifyEvent) String() string { - fieldVals := make([]string, 0, 5) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("X: %d", v.X)) - fieldVals = append(fieldVals, sprintf("Y: %d", v.Y)) - return "GravityNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[24] = NewGravityNotifyEvent -} - -// Event definition ResizeRequest (25) -// Size: 32 - -const ResizeRequest = 25 - -type ResizeRequestEvent struct { - Sequence uint16 - // padding: 1 bytes - Window Window - Width uint16 - Height uint16 -} - -// Event read ResizeRequest -func NewResizeRequestEvent(buf []byte) Event { - v := ResizeRequestEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.Width = Get16(buf[b:]) - b += 2 - - v.Height = Get16(buf[b:]) - b += 2 - - return v -} - -// Event write ResizeRequest -func (v ResizeRequestEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 25 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - Put16(buf[b:], v.Width) - b += 2 - - Put16(buf[b:], v.Height) - b += 2 - - return buf -} - -func (v ResizeRequestEvent) ImplementsEvent() {} - -func (v ResizeRequestEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v ResizeRequestEvent) String() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("Width: %d", v.Width)) - fieldVals = append(fieldVals, sprintf("Height: %d", v.Height)) - return "ResizeRequest {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[25] = NewResizeRequestEvent -} - -// Event definition CirculateNotify (26) -// Size: 32 - -const CirculateNotify = 26 - -type CirculateNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Event Window - Window Window - // padding: 4 bytes - Place byte - // padding: 3 bytes -} - -// Event read CirculateNotify -func NewCirculateNotifyEvent(buf []byte) Event { - v := CirculateNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Event = Window(Get32(buf[b:])) - b += 4 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - b += 4 // padding - - v.Place = buf[b] - b += 1 - - b += 3 // padding - - return v -} - -// Event write CirculateNotify -func (v CirculateNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 26 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Event)) - b += 4 - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - b += 4 // padding - - buf[b] = v.Place - b += 1 - - b += 3 // padding - - return buf -} - -func (v CirculateNotifyEvent) ImplementsEvent() {} - -func (v CirculateNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v CirculateNotifyEvent) String() string { - fieldVals := make([]string, 0, 6) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("Place: %d", v.Place)) - return "CirculateNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[26] = NewCirculateNotifyEvent -} - -// Event definition PropertyNotify (28) -// Size: 32 - -const PropertyNotify = 28 - -type PropertyNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Window Window - Atom Atom - Time Timestamp - State byte - // padding: 3 bytes -} - -// Event read PropertyNotify -func NewPropertyNotifyEvent(buf []byte) Event { - v := PropertyNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.Atom = Atom(Get32(buf[b:])) - b += 4 - - v.Time = Timestamp(Get32(buf[b:])) - b += 4 - - v.State = buf[b] - b += 1 - - b += 3 // padding - - return v -} - -// Event write PropertyNotify -func (v PropertyNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 28 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - Put32(buf[b:], uint32(v.Atom)) - b += 4 - - Put32(buf[b:], uint32(v.Time)) - b += 4 - - buf[b] = v.State - b += 1 - - b += 3 // padding - - return buf -} - -func (v PropertyNotifyEvent) ImplementsEvent() {} - -func (v PropertyNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v PropertyNotifyEvent) String() string { - fieldVals := make([]string, 0, 6) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("Atom: %d", v.Atom)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("State: %d", v.State)) - return "PropertyNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[28] = NewPropertyNotifyEvent -} - -// Event definition SelectionClear (29) -// Size: 32 - -const SelectionClear = 29 - -type SelectionClearEvent struct { - Sequence uint16 - // padding: 1 bytes - Time Timestamp - Owner Window - Selection Atom -} - -// Event read SelectionClear -func NewSelectionClearEvent(buf []byte) Event { - v := SelectionClearEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Time = Timestamp(Get32(buf[b:])) - b += 4 - - v.Owner = Window(Get32(buf[b:])) - b += 4 - - v.Selection = Atom(Get32(buf[b:])) - b += 4 - - return v -} - -// Event write SelectionClear -func (v SelectionClearEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 29 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Time)) - b += 4 - - Put32(buf[b:], uint32(v.Owner)) - b += 4 - - Put32(buf[b:], uint32(v.Selection)) - b += 4 - - return buf -} - -func (v SelectionClearEvent) ImplementsEvent() {} - -func (v SelectionClearEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v SelectionClearEvent) String() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("Owner: %d", v.Owner)) - fieldVals = append(fieldVals, sprintf("Selection: %d", v.Selection)) - return "SelectionClear {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[29] = NewSelectionClearEvent -} - -// Event definition SelectionRequest (30) -// Size: 32 - -const SelectionRequest = 30 - -type SelectionRequestEvent struct { - Sequence uint16 - // padding: 1 bytes - Time Timestamp - Owner Window - Requestor Window - Selection Atom - Target Atom - Property Atom -} - -// Event read SelectionRequest -func NewSelectionRequestEvent(buf []byte) Event { - v := SelectionRequestEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Time = Timestamp(Get32(buf[b:])) - b += 4 - - v.Owner = Window(Get32(buf[b:])) - b += 4 - - v.Requestor = Window(Get32(buf[b:])) - b += 4 - - v.Selection = Atom(Get32(buf[b:])) - b += 4 - - v.Target = Atom(Get32(buf[b:])) - b += 4 - - v.Property = Atom(Get32(buf[b:])) - b += 4 - - return v -} - -// Event write SelectionRequest -func (v SelectionRequestEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 30 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Time)) - b += 4 - - Put32(buf[b:], uint32(v.Owner)) - b += 4 - - Put32(buf[b:], uint32(v.Requestor)) - b += 4 - - Put32(buf[b:], uint32(v.Selection)) - b += 4 - - Put32(buf[b:], uint32(v.Target)) - b += 4 - - Put32(buf[b:], uint32(v.Property)) - b += 4 - - return buf -} - -func (v SelectionRequestEvent) ImplementsEvent() {} - -func (v SelectionRequestEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v SelectionRequestEvent) String() string { - fieldVals := make([]string, 0, 7) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("Owner: %d", v.Owner)) - fieldVals = append(fieldVals, sprintf("Requestor: %d", v.Requestor)) - fieldVals = append(fieldVals, sprintf("Selection: %d", v.Selection)) - fieldVals = append(fieldVals, sprintf("Target: %d", v.Target)) - fieldVals = append(fieldVals, sprintf("Property: %d", v.Property)) - return "SelectionRequest {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[30] = NewSelectionRequestEvent -} - -// Event definition SelectionNotify (31) -// Size: 32 - -const SelectionNotify = 31 - -type SelectionNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Time Timestamp - Requestor Window - Selection Atom - Target Atom - Property Atom -} - -// Event read SelectionNotify -func NewSelectionNotifyEvent(buf []byte) Event { - v := SelectionNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Time = Timestamp(Get32(buf[b:])) - b += 4 - - v.Requestor = Window(Get32(buf[b:])) - b += 4 - - v.Selection = Atom(Get32(buf[b:])) - b += 4 - - v.Target = Atom(Get32(buf[b:])) - b += 4 - - v.Property = Atom(Get32(buf[b:])) - b += 4 - - return v -} - -// Event write SelectionNotify -func (v SelectionNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 31 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Time)) - b += 4 - - Put32(buf[b:], uint32(v.Requestor)) - b += 4 - - Put32(buf[b:], uint32(v.Selection)) - b += 4 - - Put32(buf[b:], uint32(v.Target)) - b += 4 - - Put32(buf[b:], uint32(v.Property)) - b += 4 - - return buf -} - -func (v SelectionNotifyEvent) ImplementsEvent() {} - -func (v SelectionNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v SelectionNotifyEvent) String() string { - fieldVals := make([]string, 0, 6) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("Requestor: %d", v.Requestor)) - fieldVals = append(fieldVals, sprintf("Selection: %d", v.Selection)) - fieldVals = append(fieldVals, sprintf("Target: %d", v.Target)) - fieldVals = append(fieldVals, sprintf("Property: %d", v.Property)) - return "SelectionNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[31] = NewSelectionNotifyEvent -} - -// Event definition ColormapNotify (32) -// Size: 32 - -const ColormapNotify = 32 - -type ColormapNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Window Window - Colormap Colormap - New bool - State byte - // padding: 2 bytes -} - -// Event read ColormapNotify -func NewColormapNotifyEvent(buf []byte) Event { - v := ColormapNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.Colormap = Colormap(Get32(buf[b:])) - b += 4 - - if buf[b] == 1 { - v.New = true - } else { - v.New = false - } - b += 1 - - v.State = buf[b] - b += 1 - - b += 2 // padding - - return v -} - -// Event write ColormapNotify -func (v ColormapNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 32 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - Put32(buf[b:], uint32(v.Colormap)) - b += 4 - - if v.New { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - buf[b] = v.State - b += 1 - - b += 2 // padding - - return buf -} - -func (v ColormapNotifyEvent) ImplementsEvent() {} - -func (v ColormapNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v ColormapNotifyEvent) String() string { - fieldVals := make([]string, 0, 6) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("Colormap: %d", v.Colormap)) - fieldVals = append(fieldVals, sprintf("New: %t", v.New)) - fieldVals = append(fieldVals, sprintf("State: %d", v.State)) - return "ColormapNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[32] = NewColormapNotifyEvent -} - -// Event definition ClientMessage (33) -// Size: 32 - -const ClientMessage = 33 - -type ClientMessageEvent struct { - Sequence uint16 - Format byte - Window Window - Type Atom - Data ClientMessageDataUnion -} - -// Event read ClientMessage -func NewClientMessageEvent(buf []byte) Event { - v := ClientMessageEvent{} - b := 1 // don't read event number - - v.Format = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Window = Window(Get32(buf[b:])) - b += 4 - - v.Type = Atom(Get32(buf[b:])) - b += 4 - - v.Data = ClientMessageDataUnion{} - b += ReadClientMessageDataUnion(buf[b:], &v.Data) - - return v -} - -// Event write ClientMessage -func (v ClientMessageEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 33 - b += 1 - - buf[b] = v.Format - b += 1 - - b += 2 // skip sequence number - - Put32(buf[b:], uint32(v.Window)) - b += 4 - - Put32(buf[b:], uint32(v.Type)) - b += 4 - - { - unionBytes := v.Data.Bytes() - copy(buf[b:], unionBytes) - b += pad(len(unionBytes)) - } - - return buf -} - -func (v ClientMessageEvent) ImplementsEvent() {} - -func (v ClientMessageEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v ClientMessageEvent) String() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Format: %d", v.Format)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("Type: %d", v.Type)) - return "ClientMessage {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[33] = NewClientMessageEvent -} - -// Event definition MappingNotify (34) -// Size: 32 - -const MappingNotify = 34 - -type MappingNotifyEvent struct { - Sequence uint16 - // padding: 1 bytes - Request byte - FirstKeycode Keycode - Count byte - // padding: 1 bytes -} - -// Event read MappingNotify -func NewMappingNotifyEvent(buf []byte) Event { - v := MappingNotifyEvent{} - b := 1 // don't read event number - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Request = buf[b] - b += 1 - - v.FirstKeycode = Keycode(buf[b]) - b += 1 - - v.Count = buf[b] - b += 1 - - b += 1 // padding - - return v -} - -// Event write MappingNotify -func (v MappingNotifyEvent) Bytes() []byte { - buf := make([]byte, 32) - b := 0 - - // write event number - buf[b] = 34 - b += 1 - - b += 1 // padding - - b += 2 // skip sequence number - - buf[b] = v.Request - b += 1 - - buf[b] = byte(v.FirstKeycode) - b += 1 - - buf[b] = v.Count - b += 1 - - b += 1 // padding - - return buf -} - -func (v MappingNotifyEvent) ImplementsEvent() {} - -func (v MappingNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v MappingNotifyEvent) String() string { - fieldVals := make([]string, 0, 5) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Request: %d", v.Request)) - fieldVals = append(fieldVals, sprintf("FirstKeycode: %d", v.FirstKeycode)) - fieldVals = append(fieldVals, sprintf("Count: %d", v.Count)) - return "MappingNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[34] = NewMappingNotifyEvent -} - -// EventCopy definition KeyRelease (3) - -const KeyRelease = 3 - -type KeyReleaseEvent KeyPressEvent - -func NewKeyReleaseEvent(buf []byte) Event { - return KeyReleaseEvent(NewKeyPressEvent(buf).(KeyPressEvent)) -} - -func (v KeyReleaseEvent) Bytes() []byte { - return KeyPressEvent(v).Bytes() -} - -func (v KeyReleaseEvent) ImplementsEvent() {} - -func (v KeyReleaseEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v KeyReleaseEvent) String() string { - fieldVals := make([]string, 0, 12) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) - fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) - fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) - fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) - fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) - fieldVals = append(fieldVals, sprintf("State: %d", v.State)) - fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) - return "KeyRelease {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[3] = NewKeyReleaseEvent -} - -// EventCopy definition ButtonRelease (5) - -const ButtonRelease = 5 - -type ButtonReleaseEvent ButtonPressEvent - -func NewButtonReleaseEvent(buf []byte) Event { - return ButtonReleaseEvent(NewButtonPressEvent(buf).(ButtonPressEvent)) -} - -func (v ButtonReleaseEvent) Bytes() []byte { - return ButtonPressEvent(v).Bytes() -} - -func (v ButtonReleaseEvent) ImplementsEvent() {} - -func (v ButtonReleaseEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v ButtonReleaseEvent) String() string { - fieldVals := make([]string, 0, 12) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) - fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) - fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) - fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) - fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) - fieldVals = append(fieldVals, sprintf("State: %d", v.State)) - fieldVals = append(fieldVals, sprintf("SameScreen: %t", v.SameScreen)) - return "ButtonRelease {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[5] = NewButtonReleaseEvent -} - -// EventCopy definition LeaveNotify (8) - -const LeaveNotify = 8 - -type LeaveNotifyEvent EnterNotifyEvent - -func NewLeaveNotifyEvent(buf []byte) Event { - return LeaveNotifyEvent(NewEnterNotifyEvent(buf).(EnterNotifyEvent)) -} - -func (v LeaveNotifyEvent) Bytes() []byte { - return EnterNotifyEvent(v).Bytes() -} - -func (v LeaveNotifyEvent) ImplementsEvent() {} - -func (v LeaveNotifyEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v LeaveNotifyEvent) String() string { - fieldVals := make([]string, 0, 12) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) - fieldVals = append(fieldVals, sprintf("Time: %d", v.Time)) - fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Child: %d", v.Child)) - fieldVals = append(fieldVals, sprintf("RootX: %d", v.RootX)) - fieldVals = append(fieldVals, sprintf("RootY: %d", v.RootY)) - fieldVals = append(fieldVals, sprintf("EventX: %d", v.EventX)) - fieldVals = append(fieldVals, sprintf("EventY: %d", v.EventY)) - fieldVals = append(fieldVals, sprintf("State: %d", v.State)) - fieldVals = append(fieldVals, sprintf("Mode: %d", v.Mode)) - fieldVals = append(fieldVals, sprintf("SameScreenFocus: %d", v.SameScreenFocus)) - return "LeaveNotify {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[8] = NewLeaveNotifyEvent -} - -// EventCopy definition FocusOut (10) - -const FocusOut = 10 - -type FocusOutEvent FocusInEvent - -func NewFocusOutEvent(buf []byte) Event { - return FocusOutEvent(NewFocusInEvent(buf).(FocusInEvent)) -} - -func (v FocusOutEvent) Bytes() []byte { - return FocusInEvent(v).Bytes() -} - -func (v FocusOutEvent) ImplementsEvent() {} - -func (v FocusOutEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v FocusOutEvent) String() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Detail: %d", v.Detail)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Mode: %d", v.Mode)) - return "FocusOut {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[10] = NewFocusOutEvent -} - -// EventCopy definition CirculateRequest (27) - -const CirculateRequest = 27 - -type CirculateRequestEvent CirculateNotifyEvent - -func NewCirculateRequestEvent(buf []byte) Event { - return CirculateRequestEvent(NewCirculateNotifyEvent(buf).(CirculateNotifyEvent)) -} - -func (v CirculateRequestEvent) Bytes() []byte { - return CirculateNotifyEvent(v).Bytes() -} - -func (v CirculateRequestEvent) ImplementsEvent() {} - -func (v CirculateRequestEvent) SequenceId() uint16 { - return v.Sequence -} - -func (v CirculateRequestEvent) String() string { - fieldVals := make([]string, 0, 6) - fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) - fieldVals = append(fieldVals, sprintf("Event: %d", v.Event)) - fieldVals = append(fieldVals, sprintf("Window: %d", v.Window)) - fieldVals = append(fieldVals, sprintf("Place: %d", v.Place)) - return "CirculateRequest {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newEventFuncs[27] = NewCirculateRequestEvent -} - -// Error definition Request (1) -// Size: 32 - -const BadRequest = 1 - -type RequestError struct { - Sequence uint16 - NiceName string - BadValue uint32 - MinorOpcode uint16 - MajorOpcode byte - // padding: 1 bytes -} - -// Error read Request -func NewRequestError(buf []byte) Error { - v := RequestError{} - v.NiceName = "Request" - - b := 1 // skip error determinant - b += 1 // don't read error number - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.BadValue = Get32(buf[b:]) - b += 4 - - v.MinorOpcode = Get16(buf[b:]) - b += 2 - - v.MajorOpcode = buf[b] - b += 1 - - b += 1 // padding - - return v -} - -func (err RequestError) ImplementsError() {} - -func (err RequestError) SequenceId() uint16 { - return err.Sequence -} - -func (err RequestError) BadId() uint32 { - return err.BadValue -} - -func (err RequestError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadRequest {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[1] = NewRequestError -} - -// Error definition Value (2) -// Size: 32 - -const BadValue = 2 - -type ValueError struct { - Sequence uint16 - NiceName string - BadValue uint32 - MinorOpcode uint16 - MajorOpcode byte - // padding: 1 bytes -} - -// Error read Value -func NewValueError(buf []byte) Error { - v := ValueError{} - v.NiceName = "Value" - - b := 1 // skip error determinant - b += 1 // don't read error number - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.BadValue = Get32(buf[b:]) - b += 4 - - v.MinorOpcode = Get16(buf[b:]) - b += 2 - - v.MajorOpcode = buf[b] - b += 1 - - b += 1 // padding - - return v -} - -func (err ValueError) ImplementsError() {} - -func (err ValueError) SequenceId() uint16 { - return err.Sequence -} - -func (err ValueError) BadId() uint32 { - return err.BadValue -} - -func (err ValueError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadValue {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[2] = NewValueError -} - -// ErrorCopy definition Window (3) - -const BadWindow = 3 - -type WindowError ValueError - -func NewWindowError(buf []byte) Error { - v := WindowError(NewValueError(buf).(ValueError)) - v.NiceName = "Window" - return v -} - -func (err WindowError) ImplementsError() {} - -func (err WindowError) SequenceId() uint16 { - return err.Sequence -} - -func (err WindowError) BadId() uint32 { - return err.BadValue -} - -func (err WindowError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadWindow {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[3] = NewWindowError -} - -// ErrorCopy definition Pixmap (4) - -const BadPixmap = 4 - -type PixmapError ValueError - -func NewPixmapError(buf []byte) Error { - v := PixmapError(NewValueError(buf).(ValueError)) - v.NiceName = "Pixmap" - return v -} - -func (err PixmapError) ImplementsError() {} - -func (err PixmapError) SequenceId() uint16 { - return err.Sequence -} - -func (err PixmapError) BadId() uint32 { - return err.BadValue -} - -func (err PixmapError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadPixmap {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[4] = NewPixmapError -} - -// ErrorCopy definition Atom (5) - -const BadAtom = 5 - -type AtomError ValueError - -func NewAtomError(buf []byte) Error { - v := AtomError(NewValueError(buf).(ValueError)) - v.NiceName = "Atom" - return v -} - -func (err AtomError) ImplementsError() {} - -func (err AtomError) SequenceId() uint16 { - return err.Sequence -} - -func (err AtomError) BadId() uint32 { - return err.BadValue -} - -func (err AtomError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadAtom {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[5] = NewAtomError -} - -// ErrorCopy definition Cursor (6) - -const BadCursor = 6 - -type CursorError ValueError - -func NewCursorError(buf []byte) Error { - v := CursorError(NewValueError(buf).(ValueError)) - v.NiceName = "Cursor" - return v -} - -func (err CursorError) ImplementsError() {} - -func (err CursorError) SequenceId() uint16 { - return err.Sequence -} - -func (err CursorError) BadId() uint32 { - return err.BadValue -} - -func (err CursorError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadCursor {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[6] = NewCursorError -} - -// ErrorCopy definition Font (7) - -const BadFont = 7 - -type FontError ValueError - -func NewFontError(buf []byte) Error { - v := FontError(NewValueError(buf).(ValueError)) - v.NiceName = "Font" - return v -} - -func (err FontError) ImplementsError() {} - -func (err FontError) SequenceId() uint16 { - return err.Sequence -} - -func (err FontError) BadId() uint32 { - return err.BadValue -} - -func (err FontError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadFont {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[7] = NewFontError -} - -// ErrorCopy definition Match (8) - -const BadMatch = 8 - -type MatchError RequestError - -func NewMatchError(buf []byte) Error { - v := MatchError(NewRequestError(buf).(RequestError)) - v.NiceName = "Match" - return v -} - -func (err MatchError) ImplementsError() {} - -func (err MatchError) SequenceId() uint16 { - return err.Sequence -} - -func (err MatchError) BadId() uint32 { - return err.BadValue -} - -func (err MatchError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadMatch {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[8] = NewMatchError -} - -// ErrorCopy definition Drawable (9) - -const BadDrawable = 9 - -type DrawableError ValueError - -func NewDrawableError(buf []byte) Error { - v := DrawableError(NewValueError(buf).(ValueError)) - v.NiceName = "Drawable" - return v -} - -func (err DrawableError) ImplementsError() {} - -func (err DrawableError) SequenceId() uint16 { - return err.Sequence -} - -func (err DrawableError) BadId() uint32 { - return err.BadValue -} - -func (err DrawableError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadDrawable {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[9] = NewDrawableError -} - -// ErrorCopy definition Access (10) - -const BadAccess = 10 - -type AccessError RequestError - -func NewAccessError(buf []byte) Error { - v := AccessError(NewRequestError(buf).(RequestError)) - v.NiceName = "Access" - return v -} - -func (err AccessError) ImplementsError() {} - -func (err AccessError) SequenceId() uint16 { - return err.Sequence -} - -func (err AccessError) BadId() uint32 { - return err.BadValue -} - -func (err AccessError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadAccess {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[10] = NewAccessError -} - -// ErrorCopy definition Alloc (11) - -const BadAlloc = 11 - -type AllocError RequestError - -func NewAllocError(buf []byte) Error { - v := AllocError(NewRequestError(buf).(RequestError)) - v.NiceName = "Alloc" - return v -} - -func (err AllocError) ImplementsError() {} - -func (err AllocError) SequenceId() uint16 { - return err.Sequence -} - -func (err AllocError) BadId() uint32 { - return err.BadValue -} - -func (err AllocError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadAlloc {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[11] = NewAllocError -} - -// ErrorCopy definition Colormap (12) - -const BadColormap = 12 - -type ColormapError ValueError - -func NewColormapError(buf []byte) Error { - v := ColormapError(NewValueError(buf).(ValueError)) - v.NiceName = "Colormap" - return v -} - -func (err ColormapError) ImplementsError() {} - -func (err ColormapError) SequenceId() uint16 { - return err.Sequence -} - -func (err ColormapError) BadId() uint32 { - return err.BadValue -} - -func (err ColormapError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadColormap {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[12] = NewColormapError -} - -// ErrorCopy definition GContext (13) - -const BadGContext = 13 - -type GContextError ValueError - -func NewGContextError(buf []byte) Error { - v := GContextError(NewValueError(buf).(ValueError)) - v.NiceName = "GContext" - return v -} - -func (err GContextError) ImplementsError() {} - -func (err GContextError) SequenceId() uint16 { - return err.Sequence -} - -func (err GContextError) BadId() uint32 { - return err.BadValue -} - -func (err GContextError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadGContext {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[13] = NewGContextError -} - -// ErrorCopy definition IDChoice (14) - -const BadIDChoice = 14 - -type IDChoiceError ValueError - -func NewIDChoiceError(buf []byte) Error { - v := IDChoiceError(NewValueError(buf).(ValueError)) - v.NiceName = "IDChoice" - return v -} - -func (err IDChoiceError) ImplementsError() {} - -func (err IDChoiceError) SequenceId() uint16 { - return err.Sequence -} - -func (err IDChoiceError) BadId() uint32 { - return err.BadValue -} - -func (err IDChoiceError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadIDChoice {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[14] = NewIDChoiceError -} - -// ErrorCopy definition Name (15) - -const BadName = 15 - -type NameError RequestError - -func NewNameError(buf []byte) Error { - v := NameError(NewRequestError(buf).(RequestError)) - v.NiceName = "Name" - return v -} - -func (err NameError) ImplementsError() {} - -func (err NameError) SequenceId() uint16 { - return err.Sequence -} - -func (err NameError) BadId() uint32 { - return err.BadValue -} - -func (err NameError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadName {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[15] = NewNameError -} - -// ErrorCopy definition Length (16) - -const BadLength = 16 - -type LengthError RequestError - -func NewLengthError(buf []byte) Error { - v := LengthError(NewRequestError(buf).(RequestError)) - v.NiceName = "Length" - return v -} - -func (err LengthError) ImplementsError() {} - -func (err LengthError) SequenceId() uint16 { - return err.Sequence -} - -func (err LengthError) BadId() uint32 { - return err.BadValue -} - -func (err LengthError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadLength {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[16] = NewLengthError -} - -// ErrorCopy definition Implementation (17) - -const BadImplementation = 17 - -type ImplementationError RequestError - -func NewImplementationError(buf []byte) Error { - v := ImplementationError(NewRequestError(buf).(RequestError)) - v.NiceName = "Implementation" - return v -} - -func (err ImplementationError) ImplementsError() {} - -func (err ImplementationError) SequenceId() uint16 { - return err.Sequence -} - -func (err ImplementationError) BadId() uint32 { - return err.BadValue -} - -func (err ImplementationError) Error() string { - fieldVals := make([]string, 0, 4) - fieldVals = append(fieldVals, "NiceName: "+err.NiceName) - fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) - fieldVals = append(fieldVals, sprintf("BadValue: %d", err.BadValue)) - fieldVals = append(fieldVals, sprintf("MinorOpcode: %d", err.MinorOpcode)) - fieldVals = append(fieldVals, sprintf("MajorOpcode: %d", err.MajorOpcode)) - return "BadImplementation {" + stringsJoin(fieldVals, ", ") + "}" -} - -func init() { - newErrorFuncs[17] = NewImplementationError -} - -// Request CreateWindow -// size: pad((28 + (4 + pad((4 * popCount(int(ValueMask))))))) -type CreateWindowCookie struct { - *cookie -} - -// Write request to wire for CreateWindow -func (c *Conn) CreateWindow(Depth byte, Wid Window, Parent Window, X int16, Y int16, Width uint16, Height uint16, BorderWidth uint16, Class uint16, Visual Visualid, ValueMask uint32, ValueList []uint32) CreateWindowCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.createWindowRequest(Depth, Wid, Parent, X, Y, Width, Height, BorderWidth, Class, Visual, ValueMask, ValueList), cookie) - return CreateWindowCookie{cookie} -} - -func (c *Conn) CreateWindowChecked(Depth byte, Wid Window, Parent Window, X int16, Y int16, Width uint16, Height uint16, BorderWidth uint16, Class uint16, Visual Visualid, ValueMask uint32, ValueList []uint32) CreateWindowCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.createWindowRequest(Depth, Wid, Parent, X, Y, Width, Height, BorderWidth, Class, Visual, ValueMask, ValueList), cookie) - return CreateWindowCookie{cookie} -} - -func (cook CreateWindowCookie) Check() error { - return cook.check() -} - -// Write request to wire for CreateWindow -func (c *Conn) createWindowRequest(Depth byte, Wid Window, Parent Window, X int16, Y int16, Width uint16, Height uint16, BorderWidth uint16, Class uint16, Visual Visualid, ValueMask uint32, ValueList []uint32) []byte { - size := pad((28 + (4 + pad((4 * popCount(int(ValueMask))))))) - b := 0 - buf := make([]byte, size) - - buf[b] = 1 // request opcode - b += 1 - - buf[b] = Depth - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Wid)) - b += 4 - - Put32(buf[b:], uint32(Parent)) - b += 4 - - Put16(buf[b:], uint16(X)) - b += 2 - - Put16(buf[b:], uint16(Y)) - b += 2 - - Put16(buf[b:], Width) - b += 2 - - Put16(buf[b:], Height) - b += 2 - - Put16(buf[b:], BorderWidth) - b += 2 - - Put16(buf[b:], Class) - b += 2 - - Put32(buf[b:], uint32(Visual)) - b += 4 - - Put32(buf[b:], ValueMask) - b += 4 - for i := 0; i < popCount(int(ValueMask)); i++ { - Put32(buf[b:], ValueList[i]) - b += 4 - } - b = pad(b) - - return buf -} - -// Request ChangeWindowAttributes -// size: pad((8 + (4 + pad((4 * popCount(int(ValueMask))))))) -type ChangeWindowAttributesCookie struct { - *cookie -} - -// Write request to wire for ChangeWindowAttributes -func (c *Conn) ChangeWindowAttributes(Window Window, ValueMask uint32, ValueList []uint32) ChangeWindowAttributesCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.changeWindowAttributesRequest(Window, ValueMask, ValueList), cookie) - return ChangeWindowAttributesCookie{cookie} -} - -func (c *Conn) ChangeWindowAttributesChecked(Window Window, ValueMask uint32, ValueList []uint32) ChangeWindowAttributesCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.changeWindowAttributesRequest(Window, ValueMask, ValueList), cookie) - return ChangeWindowAttributesCookie{cookie} -} - -func (cook ChangeWindowAttributesCookie) Check() error { - return cook.check() -} - -// Write request to wire for ChangeWindowAttributes -func (c *Conn) changeWindowAttributesRequest(Window Window, ValueMask uint32, ValueList []uint32) []byte { - size := pad((8 + (4 + pad((4 * popCount(int(ValueMask))))))) - b := 0 - buf := make([]byte, size) - - buf[b] = 2 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - Put32(buf[b:], ValueMask) - b += 4 - for i := 0; i < popCount(int(ValueMask)); i++ { - Put32(buf[b:], ValueList[i]) - b += 4 - } - b = pad(b) - - return buf -} - -// Request GetWindowAttributes -// size: 8 -type GetWindowAttributesCookie struct { - *cookie -} - -func (c *Conn) GetWindowAttributes(Window Window) GetWindowAttributesCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getWindowAttributesRequest(Window), cookie) - return GetWindowAttributesCookie{cookie} -} - -func (c *Conn) GetWindowAttributesUnchecked(Window Window) GetWindowAttributesCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getWindowAttributesRequest(Window), cookie) - return GetWindowAttributesCookie{cookie} -} - -// Request reply for GetWindowAttributes -// size: 44 -type GetWindowAttributesReply struct { - Sequence uint16 - Length uint32 - BackingStore byte - Visual Visualid - Class uint16 - BitGravity byte - WinGravity byte - BackingPlanes uint32 - BackingPixel uint32 - SaveUnder bool - MapIsInstalled bool - MapState byte - OverrideRedirect bool - Colormap Colormap - AllEventMasks uint32 - YourEventMask uint32 - DoNotPropagateMask uint16 - // padding: 2 bytes -} - -// Waits and reads reply data from request GetWindowAttributes -func (cook GetWindowAttributesCookie) Reply() (*GetWindowAttributesReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getWindowAttributesReply(buf), nil -} - -// Read reply into structure from buffer for GetWindowAttributes -func getWindowAttributesReply(buf []byte) *GetWindowAttributesReply { - v := new(GetWindowAttributesReply) - b := 1 // skip reply determinant - - v.BackingStore = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Visual = Visualid(Get32(buf[b:])) - b += 4 - - v.Class = Get16(buf[b:]) - b += 2 - - v.BitGravity = buf[b] - b += 1 - - v.WinGravity = buf[b] - b += 1 - - v.BackingPlanes = Get32(buf[b:]) - b += 4 - - v.BackingPixel = Get32(buf[b:]) - b += 4 - - if buf[b] == 1 { - v.SaveUnder = true - } else { - v.SaveUnder = false - } - b += 1 - - if buf[b] == 1 { - v.MapIsInstalled = true - } else { - v.MapIsInstalled = false - } - b += 1 - - v.MapState = buf[b] - b += 1 - - if buf[b] == 1 { - v.OverrideRedirect = true - } else { - v.OverrideRedirect = false - } - b += 1 - - v.Colormap = Colormap(Get32(buf[b:])) - b += 4 - - v.AllEventMasks = Get32(buf[b:]) - b += 4 - - v.YourEventMask = Get32(buf[b:]) - b += 4 - - v.DoNotPropagateMask = Get16(buf[b:]) - b += 2 - - b += 2 // padding - - return v -} - -func (cook GetWindowAttributesCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetWindowAttributes -func (c *Conn) getWindowAttributesRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 3 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request DestroyWindow -// size: 8 -type DestroyWindowCookie struct { - *cookie -} - -// Write request to wire for DestroyWindow -func (c *Conn) DestroyWindow(Window Window) DestroyWindowCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.destroyWindowRequest(Window), cookie) - return DestroyWindowCookie{cookie} -} - -func (c *Conn) DestroyWindowChecked(Window Window) DestroyWindowCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.destroyWindowRequest(Window), cookie) - return DestroyWindowCookie{cookie} -} - -func (cook DestroyWindowCookie) Check() error { - return cook.check() -} - -// Write request to wire for DestroyWindow -func (c *Conn) destroyWindowRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 4 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request DestroySubwindows -// size: 8 -type DestroySubwindowsCookie struct { - *cookie -} - -// Write request to wire for DestroySubwindows -func (c *Conn) DestroySubwindows(Window Window) DestroySubwindowsCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.destroySubwindowsRequest(Window), cookie) - return DestroySubwindowsCookie{cookie} -} - -func (c *Conn) DestroySubwindowsChecked(Window Window) DestroySubwindowsCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.destroySubwindowsRequest(Window), cookie) - return DestroySubwindowsCookie{cookie} -} - -func (cook DestroySubwindowsCookie) Check() error { - return cook.check() -} - -// Write request to wire for DestroySubwindows -func (c *Conn) destroySubwindowsRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 5 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request ChangeSaveSet -// size: 8 -type ChangeSaveSetCookie struct { - *cookie -} - -// Write request to wire for ChangeSaveSet -func (c *Conn) ChangeSaveSet(Mode byte, Window Window) ChangeSaveSetCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.changeSaveSetRequest(Mode, Window), cookie) - return ChangeSaveSetCookie{cookie} -} - -func (c *Conn) ChangeSaveSetChecked(Mode byte, Window Window) ChangeSaveSetCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.changeSaveSetRequest(Mode, Window), cookie) - return ChangeSaveSetCookie{cookie} -} - -func (cook ChangeSaveSetCookie) Check() error { - return cook.check() -} - -// Write request to wire for ChangeSaveSet -func (c *Conn) changeSaveSetRequest(Mode byte, Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 6 // request opcode - b += 1 - - buf[b] = Mode - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request ReparentWindow -// size: 16 -type ReparentWindowCookie struct { - *cookie -} - -// Write request to wire for ReparentWindow -func (c *Conn) ReparentWindow(Window Window, Parent Window, X int16, Y int16) ReparentWindowCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.reparentWindowRequest(Window, Parent, X, Y), cookie) - return ReparentWindowCookie{cookie} -} - -func (c *Conn) ReparentWindowChecked(Window Window, Parent Window, X int16, Y int16) ReparentWindowCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.reparentWindowRequest(Window, Parent, X, Y), cookie) - return ReparentWindowCookie{cookie} -} - -func (cook ReparentWindowCookie) Check() error { - return cook.check() -} - -// Write request to wire for ReparentWindow -func (c *Conn) reparentWindowRequest(Window Window, Parent Window, X int16, Y int16) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 7 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - Put32(buf[b:], uint32(Parent)) - b += 4 - - Put16(buf[b:], uint16(X)) - b += 2 - - Put16(buf[b:], uint16(Y)) - b += 2 - - return buf -} - -// Request MapWindow -// size: 8 -type MapWindowCookie struct { - *cookie -} - -// Write request to wire for MapWindow -func (c *Conn) MapWindow(Window Window) MapWindowCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.mapWindowRequest(Window), cookie) - return MapWindowCookie{cookie} -} - -func (c *Conn) MapWindowChecked(Window Window) MapWindowCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.mapWindowRequest(Window), cookie) - return MapWindowCookie{cookie} -} - -func (cook MapWindowCookie) Check() error { - return cook.check() -} - -// Write request to wire for MapWindow -func (c *Conn) mapWindowRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 8 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request MapSubwindows -// size: 8 -type MapSubwindowsCookie struct { - *cookie -} - -// Write request to wire for MapSubwindows -func (c *Conn) MapSubwindows(Window Window) MapSubwindowsCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.mapSubwindowsRequest(Window), cookie) - return MapSubwindowsCookie{cookie} -} - -func (c *Conn) MapSubwindowsChecked(Window Window) MapSubwindowsCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.mapSubwindowsRequest(Window), cookie) - return MapSubwindowsCookie{cookie} -} - -func (cook MapSubwindowsCookie) Check() error { - return cook.check() -} - -// Write request to wire for MapSubwindows -func (c *Conn) mapSubwindowsRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 9 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request UnmapWindow -// size: 8 -type UnmapWindowCookie struct { - *cookie -} - -// Write request to wire for UnmapWindow -func (c *Conn) UnmapWindow(Window Window) UnmapWindowCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.unmapWindowRequest(Window), cookie) - return UnmapWindowCookie{cookie} -} - -func (c *Conn) UnmapWindowChecked(Window Window) UnmapWindowCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.unmapWindowRequest(Window), cookie) - return UnmapWindowCookie{cookie} -} - -func (cook UnmapWindowCookie) Check() error { - return cook.check() -} - -// Write request to wire for UnmapWindow -func (c *Conn) unmapWindowRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 10 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request UnmapSubwindows -// size: 8 -type UnmapSubwindowsCookie struct { - *cookie -} - -// Write request to wire for UnmapSubwindows -func (c *Conn) UnmapSubwindows(Window Window) UnmapSubwindowsCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.unmapSubwindowsRequest(Window), cookie) - return UnmapSubwindowsCookie{cookie} -} - -func (c *Conn) UnmapSubwindowsChecked(Window Window) UnmapSubwindowsCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.unmapSubwindowsRequest(Window), cookie) - return UnmapSubwindowsCookie{cookie} -} - -func (cook UnmapSubwindowsCookie) Check() error { - return cook.check() -} - -// Write request to wire for UnmapSubwindows -func (c *Conn) unmapSubwindowsRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 11 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request ConfigureWindow -// size: pad((10 + (2 + pad((4 * popCount(int(ValueMask))))))) -type ConfigureWindowCookie struct { - *cookie -} - -// Write request to wire for ConfigureWindow -func (c *Conn) ConfigureWindow(Window Window, ValueMask uint16, ValueList []uint32) ConfigureWindowCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.configureWindowRequest(Window, ValueMask, ValueList), cookie) - return ConfigureWindowCookie{cookie} -} - -func (c *Conn) ConfigureWindowChecked(Window Window, ValueMask uint16, ValueList []uint32) ConfigureWindowCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.configureWindowRequest(Window, ValueMask, ValueList), cookie) - return ConfigureWindowCookie{cookie} -} - -func (cook ConfigureWindowCookie) Check() error { - return cook.check() -} - -// Write request to wire for ConfigureWindow -func (c *Conn) configureWindowRequest(Window Window, ValueMask uint16, ValueList []uint32) []byte { - size := pad((10 + (2 + pad((4 * popCount(int(ValueMask))))))) - b := 0 - buf := make([]byte, size) - - buf[b] = 12 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - Put16(buf[b:], ValueMask) - b += 2 - - b += 2 // padding - - for i := 0; i < popCount(int(ValueMask)); i++ { - Put32(buf[b:], ValueList[i]) - b += 4 - } - b = pad(b) - - return buf -} - -// Request CirculateWindow -// size: 8 -type CirculateWindowCookie struct { - *cookie -} - -// Write request to wire for CirculateWindow -func (c *Conn) CirculateWindow(Direction byte, Window Window) CirculateWindowCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.circulateWindowRequest(Direction, Window), cookie) - return CirculateWindowCookie{cookie} -} - -func (c *Conn) CirculateWindowChecked(Direction byte, Window Window) CirculateWindowCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.circulateWindowRequest(Direction, Window), cookie) - return CirculateWindowCookie{cookie} -} - -func (cook CirculateWindowCookie) Check() error { - return cook.check() -} - -// Write request to wire for CirculateWindow -func (c *Conn) circulateWindowRequest(Direction byte, Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 13 // request opcode - b += 1 - - buf[b] = Direction - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request GetGeometry -// size: 8 -type GetGeometryCookie struct { - *cookie -} - -func (c *Conn) GetGeometry(Drawable Drawable) GetGeometryCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getGeometryRequest(Drawable), cookie) - return GetGeometryCookie{cookie} -} - -func (c *Conn) GetGeometryUnchecked(Drawable Drawable) GetGeometryCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getGeometryRequest(Drawable), cookie) - return GetGeometryCookie{cookie} -} - -// Request reply for GetGeometry -// size: 24 -type GetGeometryReply struct { - Sequence uint16 - Length uint32 - Depth byte - Root Window - X int16 - Y int16 - Width uint16 - Height uint16 - BorderWidth uint16 - // padding: 2 bytes -} - -// Waits and reads reply data from request GetGeometry -func (cook GetGeometryCookie) Reply() (*GetGeometryReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getGeometryReply(buf), nil -} - -// Read reply into structure from buffer for GetGeometry -func getGeometryReply(buf []byte) *GetGeometryReply { - v := new(GetGeometryReply) - b := 1 // skip reply determinant - - v.Depth = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Root = Window(Get32(buf[b:])) - b += 4 - - v.X = int16(Get16(buf[b:])) - b += 2 - - v.Y = int16(Get16(buf[b:])) - b += 2 - - v.Width = Get16(buf[b:]) - b += 2 - - v.Height = Get16(buf[b:]) - b += 2 - - v.BorderWidth = Get16(buf[b:]) - b += 2 - - b += 2 // padding - - return v -} - -func (cook GetGeometryCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetGeometry -func (c *Conn) getGeometryRequest(Drawable Drawable) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 14 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - return buf -} - -// Request QueryTree -// size: 8 -type QueryTreeCookie struct { - *cookie -} - -func (c *Conn) QueryTree(Window Window) QueryTreeCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.queryTreeRequest(Window), cookie) - return QueryTreeCookie{cookie} -} - -func (c *Conn) QueryTreeUnchecked(Window Window) QueryTreeCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.queryTreeRequest(Window), cookie) - return QueryTreeCookie{cookie} -} - -// Request reply for QueryTree -// size: (32 + pad((int(ChildrenLen) * 4))) -type QueryTreeReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - Root Window - Parent Window - ChildrenLen uint16 - // padding: 14 bytes - Children []Window // size: pad((int(ChildrenLen) * 4)) -} - -// Waits and reads reply data from request QueryTree -func (cook QueryTreeCookie) Reply() (*QueryTreeReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return queryTreeReply(buf), nil -} - -// Read reply into structure from buffer for QueryTree -func queryTreeReply(buf []byte) *QueryTreeReply { - v := new(QueryTreeReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Root = Window(Get32(buf[b:])) - b += 4 - - v.Parent = Window(Get32(buf[b:])) - b += 4 - - v.ChildrenLen = Get16(buf[b:]) - b += 2 - - b += 14 // padding - - v.Children = make([]Window, v.ChildrenLen) - for i := 0; i < int(v.ChildrenLen); i++ { - v.Children[i] = Window(Get32(buf[b:])) - b += 4 - } - b = pad(b) - - return v -} - -func (cook QueryTreeCookie) Check() error { - return cook.check() -} - -// Write request to wire for QueryTree -func (c *Conn) queryTreeRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 15 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request InternAtom -// size: pad((8 + pad((int(NameLen) * 1)))) -type InternAtomCookie struct { - *cookie -} - -func (c *Conn) InternAtom(OnlyIfExists bool, NameLen uint16, Name string) InternAtomCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.internAtomRequest(OnlyIfExists, NameLen, Name), cookie) - return InternAtomCookie{cookie} -} - -func (c *Conn) InternAtomUnchecked(OnlyIfExists bool, NameLen uint16, Name string) InternAtomCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.internAtomRequest(OnlyIfExists, NameLen, Name), cookie) - return InternAtomCookie{cookie} -} - -// Request reply for InternAtom -// size: 12 -type InternAtomReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - Atom Atom -} - -// Waits and reads reply data from request InternAtom -func (cook InternAtomCookie) Reply() (*InternAtomReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return internAtomReply(buf), nil -} - -// Read reply into structure from buffer for InternAtom -func internAtomReply(buf []byte) *InternAtomReply { - v := new(InternAtomReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Atom = Atom(Get32(buf[b:])) - b += 4 - - return v -} - -func (cook InternAtomCookie) Check() error { - return cook.check() -} - -// Write request to wire for InternAtom -func (c *Conn) internAtomRequest(OnlyIfExists bool, NameLen uint16, Name string) []byte { - size := pad((8 + pad((int(NameLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 16 // request opcode - b += 1 - - if OnlyIfExists { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put16(buf[b:], NameLen) - b += 2 - - b += 2 // padding - - copy(buf[b:], Name[:NameLen]) - b += pad(int(NameLen)) - - return buf -} - -// Request GetAtomName -// size: 8 -type GetAtomNameCookie struct { - *cookie -} - -func (c *Conn) GetAtomName(Atom Atom) GetAtomNameCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getAtomNameRequest(Atom), cookie) - return GetAtomNameCookie{cookie} -} - -func (c *Conn) GetAtomNameUnchecked(Atom Atom) GetAtomNameCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getAtomNameRequest(Atom), cookie) - return GetAtomNameCookie{cookie} -} - -// Request reply for GetAtomName -// size: (32 + pad((int(NameLen) * 1))) -type GetAtomNameReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - NameLen uint16 - // padding: 22 bytes - Name string // size: pad((int(NameLen) * 1)) -} - -// Waits and reads reply data from request GetAtomName -func (cook GetAtomNameCookie) Reply() (*GetAtomNameReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getAtomNameReply(buf), nil -} - -// Read reply into structure from buffer for GetAtomName -func getAtomNameReply(buf []byte) *GetAtomNameReply { - v := new(GetAtomNameReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.NameLen = Get16(buf[b:]) - b += 2 - - b += 22 // padding - - { - byteString := make([]byte, v.NameLen) - copy(byteString[:v.NameLen], buf[b:]) - v.Name = string(byteString) - b += pad(int(v.NameLen)) - } - - return v -} - -func (cook GetAtomNameCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetAtomName -func (c *Conn) getAtomNameRequest(Atom Atom) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 17 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Atom)) - b += 4 - - return buf -} - -// Request ChangeProperty -// size: pad((24 + pad((((int(DataLen) * int(Format)) / 8) * 1)))) -type ChangePropertyCookie struct { - *cookie -} - -// Write request to wire for ChangeProperty -func (c *Conn) ChangeProperty(Mode byte, Window Window, Property Atom, Type Atom, Format byte, DataLen uint32, Data []byte) ChangePropertyCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.changePropertyRequest(Mode, Window, Property, Type, Format, DataLen, Data), cookie) - return ChangePropertyCookie{cookie} -} - -func (c *Conn) ChangePropertyChecked(Mode byte, Window Window, Property Atom, Type Atom, Format byte, DataLen uint32, Data []byte) ChangePropertyCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.changePropertyRequest(Mode, Window, Property, Type, Format, DataLen, Data), cookie) - return ChangePropertyCookie{cookie} -} - -func (cook ChangePropertyCookie) Check() error { - return cook.check() -} - -// Write request to wire for ChangeProperty -func (c *Conn) changePropertyRequest(Mode byte, Window Window, Property Atom, Type Atom, Format byte, DataLen uint32, Data []byte) []byte { - size := pad((24 + pad((((int(DataLen) * int(Format)) / 8) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 18 // request opcode - b += 1 - - buf[b] = Mode - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - Put32(buf[b:], uint32(Property)) - b += 4 - - Put32(buf[b:], uint32(Type)) - b += 4 - - buf[b] = Format - b += 1 - - b += 3 // padding - - Put32(buf[b:], DataLen) - b += 4 - - copy(buf[b:], Data[:((int(DataLen)*int(Format))/8)]) - b += pad(int(((int(DataLen) * int(Format)) / 8))) - - return buf -} - -// Request DeleteProperty -// size: 12 -type DeletePropertyCookie struct { - *cookie -} - -// Write request to wire for DeleteProperty -func (c *Conn) DeleteProperty(Window Window, Property Atom) DeletePropertyCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.deletePropertyRequest(Window, Property), cookie) - return DeletePropertyCookie{cookie} -} - -func (c *Conn) DeletePropertyChecked(Window Window, Property Atom) DeletePropertyCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.deletePropertyRequest(Window, Property), cookie) - return DeletePropertyCookie{cookie} -} - -func (cook DeletePropertyCookie) Check() error { - return cook.check() -} - -// Write request to wire for DeleteProperty -func (c *Conn) deletePropertyRequest(Window Window, Property Atom) []byte { - size := 12 - b := 0 - buf := make([]byte, size) - - buf[b] = 19 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - Put32(buf[b:], uint32(Property)) - b += 4 - - return buf -} - -// Request GetProperty -// size: 24 -type GetPropertyCookie struct { - *cookie -} - -func (c *Conn) GetProperty(Delete bool, Window Window, Property Atom, Type Atom, LongOffset uint32, LongLength uint32) GetPropertyCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getPropertyRequest(Delete, Window, Property, Type, LongOffset, LongLength), cookie) - return GetPropertyCookie{cookie} -} - -func (c *Conn) GetPropertyUnchecked(Delete bool, Window Window, Property Atom, Type Atom, LongOffset uint32, LongLength uint32) GetPropertyCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getPropertyRequest(Delete, Window, Property, Type, LongOffset, LongLength), cookie) - return GetPropertyCookie{cookie} -} - -// Request reply for GetProperty -// size: (32 + pad(((int(ValueLen) * (int(Format) / 8)) * 1))) -type GetPropertyReply struct { - Sequence uint16 - Length uint32 - Format byte - Type Atom - BytesAfter uint32 - ValueLen uint32 - // padding: 12 bytes - Value []byte // size: pad(((int(ValueLen) * (int(Format) / 8)) * 1)) -} - -// Waits and reads reply data from request GetProperty -func (cook GetPropertyCookie) Reply() (*GetPropertyReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getPropertyReply(buf), nil -} - -// Read reply into structure from buffer for GetProperty -func getPropertyReply(buf []byte) *GetPropertyReply { - v := new(GetPropertyReply) - b := 1 // skip reply determinant - - v.Format = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Type = Atom(Get32(buf[b:])) - b += 4 - - v.BytesAfter = Get32(buf[b:]) - b += 4 - - v.ValueLen = Get32(buf[b:]) - b += 4 - - b += 12 // padding - - v.Value = make([]byte, (int(v.ValueLen) * (int(v.Format) / 8))) - copy(v.Value[:(int(v.ValueLen)*(int(v.Format)/8))], buf[b:]) - b += pad(int((int(v.ValueLen) * (int(v.Format) / 8)))) - - return v -} - -func (cook GetPropertyCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetProperty -func (c *Conn) getPropertyRequest(Delete bool, Window Window, Property Atom, Type Atom, LongOffset uint32, LongLength uint32) []byte { - size := 24 - b := 0 - buf := make([]byte, size) - - buf[b] = 20 // request opcode - b += 1 - - if Delete { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - Put32(buf[b:], uint32(Property)) - b += 4 - - Put32(buf[b:], uint32(Type)) - b += 4 - - Put32(buf[b:], LongOffset) - b += 4 - - Put32(buf[b:], LongLength) - b += 4 - - return buf -} - -// Request ListProperties -// size: 8 -type ListPropertiesCookie struct { - *cookie -} - -func (c *Conn) ListProperties(Window Window) ListPropertiesCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.listPropertiesRequest(Window), cookie) - return ListPropertiesCookie{cookie} -} - -func (c *Conn) ListPropertiesUnchecked(Window Window) ListPropertiesCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.listPropertiesRequest(Window), cookie) - return ListPropertiesCookie{cookie} -} - -// Request reply for ListProperties -// size: (32 + pad((int(AtomsLen) * 4))) -type ListPropertiesReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - AtomsLen uint16 - // padding: 22 bytes - Atoms []Atom // size: pad((int(AtomsLen) * 4)) -} - -// Waits and reads reply data from request ListProperties -func (cook ListPropertiesCookie) Reply() (*ListPropertiesReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return listPropertiesReply(buf), nil -} - -// Read reply into structure from buffer for ListProperties -func listPropertiesReply(buf []byte) *ListPropertiesReply { - v := new(ListPropertiesReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.AtomsLen = Get16(buf[b:]) - b += 2 - - b += 22 // padding - - v.Atoms = make([]Atom, v.AtomsLen) - for i := 0; i < int(v.AtomsLen); i++ { - v.Atoms[i] = Atom(Get32(buf[b:])) - b += 4 - } - b = pad(b) - - return v -} - -func (cook ListPropertiesCookie) Check() error { - return cook.check() -} - -// Write request to wire for ListProperties -func (c *Conn) listPropertiesRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 21 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request SetSelectionOwner -// size: 16 -type SetSelectionOwnerCookie struct { - *cookie -} - -// Write request to wire for SetSelectionOwner -func (c *Conn) SetSelectionOwner(Owner Window, Selection Atom, Time Timestamp) SetSelectionOwnerCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.setSelectionOwnerRequest(Owner, Selection, Time), cookie) - return SetSelectionOwnerCookie{cookie} -} - -func (c *Conn) SetSelectionOwnerChecked(Owner Window, Selection Atom, Time Timestamp) SetSelectionOwnerCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.setSelectionOwnerRequest(Owner, Selection, Time), cookie) - return SetSelectionOwnerCookie{cookie} -} - -func (cook SetSelectionOwnerCookie) Check() error { - return cook.check() -} - -// Write request to wire for SetSelectionOwner -func (c *Conn) setSelectionOwnerRequest(Owner Window, Selection Atom, Time Timestamp) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 22 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Owner)) - b += 4 - - Put32(buf[b:], uint32(Selection)) - b += 4 - - Put32(buf[b:], uint32(Time)) - b += 4 - - return buf -} - -// Request GetSelectionOwner -// size: 8 -type GetSelectionOwnerCookie struct { - *cookie -} - -func (c *Conn) GetSelectionOwner(Selection Atom) GetSelectionOwnerCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getSelectionOwnerRequest(Selection), cookie) - return GetSelectionOwnerCookie{cookie} -} - -func (c *Conn) GetSelectionOwnerUnchecked(Selection Atom) GetSelectionOwnerCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getSelectionOwnerRequest(Selection), cookie) - return GetSelectionOwnerCookie{cookie} -} - -// Request reply for GetSelectionOwner -// size: 12 -type GetSelectionOwnerReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - Owner Window -} - -// Waits and reads reply data from request GetSelectionOwner -func (cook GetSelectionOwnerCookie) Reply() (*GetSelectionOwnerReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getSelectionOwnerReply(buf), nil -} - -// Read reply into structure from buffer for GetSelectionOwner -func getSelectionOwnerReply(buf []byte) *GetSelectionOwnerReply { - v := new(GetSelectionOwnerReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Owner = Window(Get32(buf[b:])) - b += 4 - - return v -} - -func (cook GetSelectionOwnerCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetSelectionOwner -func (c *Conn) getSelectionOwnerRequest(Selection Atom) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 23 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Selection)) - b += 4 - - return buf -} - -// Request ConvertSelection -// size: 24 -type ConvertSelectionCookie struct { - *cookie -} - -// Write request to wire for ConvertSelection -func (c *Conn) ConvertSelection(Requestor Window, Selection Atom, Target Atom, Property Atom, Time Timestamp) ConvertSelectionCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.convertSelectionRequest(Requestor, Selection, Target, Property, Time), cookie) - return ConvertSelectionCookie{cookie} -} - -func (c *Conn) ConvertSelectionChecked(Requestor Window, Selection Atom, Target Atom, Property Atom, Time Timestamp) ConvertSelectionCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.convertSelectionRequest(Requestor, Selection, Target, Property, Time), cookie) - return ConvertSelectionCookie{cookie} -} - -func (cook ConvertSelectionCookie) Check() error { - return cook.check() -} - -// Write request to wire for ConvertSelection -func (c *Conn) convertSelectionRequest(Requestor Window, Selection Atom, Target Atom, Property Atom, Time Timestamp) []byte { - size := 24 - b := 0 - buf := make([]byte, size) - - buf[b] = 24 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Requestor)) - b += 4 - - Put32(buf[b:], uint32(Selection)) - b += 4 - - Put32(buf[b:], uint32(Target)) - b += 4 - - Put32(buf[b:], uint32(Property)) - b += 4 - - Put32(buf[b:], uint32(Time)) - b += 4 - - return buf -} - -// Request SendEvent -// size: 44 -type SendEventCookie struct { - *cookie -} - -// Write request to wire for SendEvent -func (c *Conn) SendEvent(Propagate bool, Destination Window, EventMask uint32, Event string) SendEventCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.sendEventRequest(Propagate, Destination, EventMask, Event), cookie) - return SendEventCookie{cookie} -} - -func (c *Conn) SendEventChecked(Propagate bool, Destination Window, EventMask uint32, Event string) SendEventCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.sendEventRequest(Propagate, Destination, EventMask, Event), cookie) - return SendEventCookie{cookie} -} - -func (cook SendEventCookie) Check() error { - return cook.check() -} - -// Write request to wire for SendEvent -func (c *Conn) sendEventRequest(Propagate bool, Destination Window, EventMask uint32, Event string) []byte { - size := 44 - b := 0 - buf := make([]byte, size) - - buf[b] = 25 // request opcode - b += 1 - - if Propagate { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Destination)) - b += 4 - - Put32(buf[b:], EventMask) - b += 4 - - copy(buf[b:], Event[:32]) - b += pad(int(32)) - - return buf -} - -// Request GrabPointer -// size: 24 -type GrabPointerCookie struct { - *cookie -} - -func (c *Conn) GrabPointer(OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Time Timestamp) GrabPointerCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.grabPointerRequest(OwnerEvents, GrabWindow, EventMask, PointerMode, KeyboardMode, ConfineTo, Cursor, Time), cookie) - return GrabPointerCookie{cookie} -} - -func (c *Conn) GrabPointerUnchecked(OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Time Timestamp) GrabPointerCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.grabPointerRequest(OwnerEvents, GrabWindow, EventMask, PointerMode, KeyboardMode, ConfineTo, Cursor, Time), cookie) - return GrabPointerCookie{cookie} -} - -// Request reply for GrabPointer -// size: 8 -type GrabPointerReply struct { - Sequence uint16 - Length uint32 - Status byte -} - -// Waits and reads reply data from request GrabPointer -func (cook GrabPointerCookie) Reply() (*GrabPointerReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return grabPointerReply(buf), nil -} - -// Read reply into structure from buffer for GrabPointer -func grabPointerReply(buf []byte) *GrabPointerReply { - v := new(GrabPointerReply) - b := 1 // skip reply determinant - - v.Status = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - return v -} - -func (cook GrabPointerCookie) Check() error { - return cook.check() -} - -// Write request to wire for GrabPointer -func (c *Conn) grabPointerRequest(OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Time Timestamp) []byte { - size := 24 - b := 0 - buf := make([]byte, size) - - buf[b] = 26 // request opcode - b += 1 - - if OwnerEvents { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(GrabWindow)) - b += 4 - - Put16(buf[b:], EventMask) - b += 2 - - buf[b] = PointerMode - b += 1 - - buf[b] = KeyboardMode - b += 1 - - Put32(buf[b:], uint32(ConfineTo)) - b += 4 - - Put32(buf[b:], uint32(Cursor)) - b += 4 - - Put32(buf[b:], uint32(Time)) - b += 4 - - return buf -} - -// Request UngrabPointer -// size: 8 -type UngrabPointerCookie struct { - *cookie -} - -// Write request to wire for UngrabPointer -func (c *Conn) UngrabPointer(Time Timestamp) UngrabPointerCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.ungrabPointerRequest(Time), cookie) - return UngrabPointerCookie{cookie} -} - -func (c *Conn) UngrabPointerChecked(Time Timestamp) UngrabPointerCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.ungrabPointerRequest(Time), cookie) - return UngrabPointerCookie{cookie} -} - -func (cook UngrabPointerCookie) Check() error { - return cook.check() -} - -// Write request to wire for UngrabPointer -func (c *Conn) ungrabPointerRequest(Time Timestamp) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 27 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Time)) - b += 4 - - return buf -} - -// Request GrabButton -// size: 24 -type GrabButtonCookie struct { - *cookie -} - -// Write request to wire for GrabButton -func (c *Conn) GrabButton(OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Button byte, Modifiers uint16) GrabButtonCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.grabButtonRequest(OwnerEvents, GrabWindow, EventMask, PointerMode, KeyboardMode, ConfineTo, Cursor, Button, Modifiers), cookie) - return GrabButtonCookie{cookie} -} - -func (c *Conn) GrabButtonChecked(OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Button byte, Modifiers uint16) GrabButtonCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.grabButtonRequest(OwnerEvents, GrabWindow, EventMask, PointerMode, KeyboardMode, ConfineTo, Cursor, Button, Modifiers), cookie) - return GrabButtonCookie{cookie} -} - -func (cook GrabButtonCookie) Check() error { - return cook.check() -} - -// Write request to wire for GrabButton -func (c *Conn) grabButtonRequest(OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Button byte, Modifiers uint16) []byte { - size := 24 - b := 0 - buf := make([]byte, size) - - buf[b] = 28 // request opcode - b += 1 - - if OwnerEvents { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(GrabWindow)) - b += 4 - - Put16(buf[b:], EventMask) - b += 2 - - buf[b] = PointerMode - b += 1 - - buf[b] = KeyboardMode - b += 1 - - Put32(buf[b:], uint32(ConfineTo)) - b += 4 - - Put32(buf[b:], uint32(Cursor)) - b += 4 - - buf[b] = Button - b += 1 - - b += 1 // padding - - Put16(buf[b:], Modifiers) - b += 2 - - return buf -} - -// Request UngrabButton -// size: 12 -type UngrabButtonCookie struct { - *cookie -} - -// Write request to wire for UngrabButton -func (c *Conn) UngrabButton(Button byte, GrabWindow Window, Modifiers uint16) UngrabButtonCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.ungrabButtonRequest(Button, GrabWindow, Modifiers), cookie) - return UngrabButtonCookie{cookie} -} - -func (c *Conn) UngrabButtonChecked(Button byte, GrabWindow Window, Modifiers uint16) UngrabButtonCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.ungrabButtonRequest(Button, GrabWindow, Modifiers), cookie) - return UngrabButtonCookie{cookie} -} - -func (cook UngrabButtonCookie) Check() error { - return cook.check() -} - -// Write request to wire for UngrabButton -func (c *Conn) ungrabButtonRequest(Button byte, GrabWindow Window, Modifiers uint16) []byte { - size := 12 - b := 0 - buf := make([]byte, size) - - buf[b] = 29 // request opcode - b += 1 - - buf[b] = Button - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(GrabWindow)) - b += 4 - - Put16(buf[b:], Modifiers) - b += 2 - - b += 2 // padding - - return buf -} - -// Request ChangeActivePointerGrab -// size: 16 -type ChangeActivePointerGrabCookie struct { - *cookie -} - -// Write request to wire for ChangeActivePointerGrab -func (c *Conn) ChangeActivePointerGrab(Cursor Cursor, Time Timestamp, EventMask uint16) ChangeActivePointerGrabCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.changeActivePointerGrabRequest(Cursor, Time, EventMask), cookie) - return ChangeActivePointerGrabCookie{cookie} -} - -func (c *Conn) ChangeActivePointerGrabChecked(Cursor Cursor, Time Timestamp, EventMask uint16) ChangeActivePointerGrabCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.changeActivePointerGrabRequest(Cursor, Time, EventMask), cookie) - return ChangeActivePointerGrabCookie{cookie} -} - -func (cook ChangeActivePointerGrabCookie) Check() error { - return cook.check() -} - -// Write request to wire for ChangeActivePointerGrab -func (c *Conn) changeActivePointerGrabRequest(Cursor Cursor, Time Timestamp, EventMask uint16) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 30 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cursor)) - b += 4 - - Put32(buf[b:], uint32(Time)) - b += 4 - - Put16(buf[b:], EventMask) - b += 2 - - b += 2 // padding - - return buf -} - -// Request GrabKeyboard -// size: 16 -type GrabKeyboardCookie struct { - *cookie -} - -func (c *Conn) GrabKeyboard(OwnerEvents bool, GrabWindow Window, Time Timestamp, PointerMode byte, KeyboardMode byte) GrabKeyboardCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.grabKeyboardRequest(OwnerEvents, GrabWindow, Time, PointerMode, KeyboardMode), cookie) - return GrabKeyboardCookie{cookie} -} - -func (c *Conn) GrabKeyboardUnchecked(OwnerEvents bool, GrabWindow Window, Time Timestamp, PointerMode byte, KeyboardMode byte) GrabKeyboardCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.grabKeyboardRequest(OwnerEvents, GrabWindow, Time, PointerMode, KeyboardMode), cookie) - return GrabKeyboardCookie{cookie} -} - -// Request reply for GrabKeyboard -// size: 8 -type GrabKeyboardReply struct { - Sequence uint16 - Length uint32 - Status byte -} - -// Waits and reads reply data from request GrabKeyboard -func (cook GrabKeyboardCookie) Reply() (*GrabKeyboardReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return grabKeyboardReply(buf), nil -} - -// Read reply into structure from buffer for GrabKeyboard -func grabKeyboardReply(buf []byte) *GrabKeyboardReply { - v := new(GrabKeyboardReply) - b := 1 // skip reply determinant - - v.Status = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - return v -} - -func (cook GrabKeyboardCookie) Check() error { - return cook.check() -} - -// Write request to wire for GrabKeyboard -func (c *Conn) grabKeyboardRequest(OwnerEvents bool, GrabWindow Window, Time Timestamp, PointerMode byte, KeyboardMode byte) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 31 // request opcode - b += 1 - - if OwnerEvents { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(GrabWindow)) - b += 4 - - Put32(buf[b:], uint32(Time)) - b += 4 - - buf[b] = PointerMode - b += 1 - - buf[b] = KeyboardMode - b += 1 - - b += 2 // padding - - return buf -} - -// Request UngrabKeyboard -// size: 8 -type UngrabKeyboardCookie struct { - *cookie -} - -// Write request to wire for UngrabKeyboard -func (c *Conn) UngrabKeyboard(Time Timestamp) UngrabKeyboardCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.ungrabKeyboardRequest(Time), cookie) - return UngrabKeyboardCookie{cookie} -} - -func (c *Conn) UngrabKeyboardChecked(Time Timestamp) UngrabKeyboardCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.ungrabKeyboardRequest(Time), cookie) - return UngrabKeyboardCookie{cookie} -} - -func (cook UngrabKeyboardCookie) Check() error { - return cook.check() -} - -// Write request to wire for UngrabKeyboard -func (c *Conn) ungrabKeyboardRequest(Time Timestamp) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 32 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Time)) - b += 4 - - return buf -} - -// Request GrabKey -// size: 16 -type GrabKeyCookie struct { - *cookie -} - -// Write request to wire for GrabKey -func (c *Conn) GrabKey(OwnerEvents bool, GrabWindow Window, Modifiers uint16, Key Keycode, PointerMode byte, KeyboardMode byte) GrabKeyCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.grabKeyRequest(OwnerEvents, GrabWindow, Modifiers, Key, PointerMode, KeyboardMode), cookie) - return GrabKeyCookie{cookie} -} - -func (c *Conn) GrabKeyChecked(OwnerEvents bool, GrabWindow Window, Modifiers uint16, Key Keycode, PointerMode byte, KeyboardMode byte) GrabKeyCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.grabKeyRequest(OwnerEvents, GrabWindow, Modifiers, Key, PointerMode, KeyboardMode), cookie) - return GrabKeyCookie{cookie} -} - -func (cook GrabKeyCookie) Check() error { - return cook.check() -} - -// Write request to wire for GrabKey -func (c *Conn) grabKeyRequest(OwnerEvents bool, GrabWindow Window, Modifiers uint16, Key Keycode, PointerMode byte, KeyboardMode byte) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 33 // request opcode - b += 1 - - if OwnerEvents { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(GrabWindow)) - b += 4 - - Put16(buf[b:], Modifiers) - b += 2 - - buf[b] = byte(Key) - b += 1 - - buf[b] = PointerMode - b += 1 - - buf[b] = KeyboardMode - b += 1 - - b += 3 // padding - - return buf -} - -// Request UngrabKey -// size: 12 -type UngrabKeyCookie struct { - *cookie -} - -// Write request to wire for UngrabKey -func (c *Conn) UngrabKey(Key Keycode, GrabWindow Window, Modifiers uint16) UngrabKeyCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.ungrabKeyRequest(Key, GrabWindow, Modifiers), cookie) - return UngrabKeyCookie{cookie} -} - -func (c *Conn) UngrabKeyChecked(Key Keycode, GrabWindow Window, Modifiers uint16) UngrabKeyCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.ungrabKeyRequest(Key, GrabWindow, Modifiers), cookie) - return UngrabKeyCookie{cookie} -} - -func (cook UngrabKeyCookie) Check() error { - return cook.check() -} - -// Write request to wire for UngrabKey -func (c *Conn) ungrabKeyRequest(Key Keycode, GrabWindow Window, Modifiers uint16) []byte { - size := 12 - b := 0 - buf := make([]byte, size) - - buf[b] = 34 // request opcode - b += 1 - - buf[b] = byte(Key) - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(GrabWindow)) - b += 4 - - Put16(buf[b:], Modifiers) - b += 2 - - b += 2 // padding - - return buf -} - -// Request AllowEvents -// size: 8 -type AllowEventsCookie struct { - *cookie -} - -// Write request to wire for AllowEvents -func (c *Conn) AllowEvents(Mode byte, Time Timestamp) AllowEventsCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.allowEventsRequest(Mode, Time), cookie) - return AllowEventsCookie{cookie} -} - -func (c *Conn) AllowEventsChecked(Mode byte, Time Timestamp) AllowEventsCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.allowEventsRequest(Mode, Time), cookie) - return AllowEventsCookie{cookie} -} - -func (cook AllowEventsCookie) Check() error { - return cook.check() -} - -// Write request to wire for AllowEvents -func (c *Conn) allowEventsRequest(Mode byte, Time Timestamp) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 35 // request opcode - b += 1 - - buf[b] = Mode - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Time)) - b += 4 - - return buf -} - -// Request GrabServer -// size: 4 -type GrabServerCookie struct { - *cookie -} - -// Write request to wire for GrabServer -func (c *Conn) GrabServer() GrabServerCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.grabServerRequest(), cookie) - return GrabServerCookie{cookie} -} - -func (c *Conn) GrabServerChecked() GrabServerCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.grabServerRequest(), cookie) - return GrabServerCookie{cookie} -} - -func (cook GrabServerCookie) Check() error { - return cook.check() -} - -// Write request to wire for GrabServer -func (c *Conn) grabServerRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 36 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request UngrabServer -// size: 4 -type UngrabServerCookie struct { - *cookie -} - -// Write request to wire for UngrabServer -func (c *Conn) UngrabServer() UngrabServerCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.ungrabServerRequest(), cookie) - return UngrabServerCookie{cookie} -} - -func (c *Conn) UngrabServerChecked() UngrabServerCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.ungrabServerRequest(), cookie) - return UngrabServerCookie{cookie} -} - -func (cook UngrabServerCookie) Check() error { - return cook.check() -} - -// Write request to wire for UngrabServer -func (c *Conn) ungrabServerRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 37 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request QueryPointer -// size: 8 -type QueryPointerCookie struct { - *cookie -} - -func (c *Conn) QueryPointer(Window Window) QueryPointerCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.queryPointerRequest(Window), cookie) - return QueryPointerCookie{cookie} -} - -func (c *Conn) QueryPointerUnchecked(Window Window) QueryPointerCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.queryPointerRequest(Window), cookie) - return QueryPointerCookie{cookie} -} - -// Request reply for QueryPointer -// size: 28 -type QueryPointerReply struct { - Sequence uint16 - Length uint32 - SameScreen bool - Root Window - Child Window - RootX int16 - RootY int16 - WinX int16 - WinY int16 - Mask uint16 - // padding: 2 bytes -} - -// Waits and reads reply data from request QueryPointer -func (cook QueryPointerCookie) Reply() (*QueryPointerReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return queryPointerReply(buf), nil -} - -// Read reply into structure from buffer for QueryPointer -func queryPointerReply(buf []byte) *QueryPointerReply { - v := new(QueryPointerReply) - b := 1 // skip reply determinant - - if buf[b] == 1 { - v.SameScreen = true - } else { - v.SameScreen = false - } - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Root = Window(Get32(buf[b:])) - b += 4 - - v.Child = Window(Get32(buf[b:])) - b += 4 - - v.RootX = int16(Get16(buf[b:])) - b += 2 - - v.RootY = int16(Get16(buf[b:])) - b += 2 - - v.WinX = int16(Get16(buf[b:])) - b += 2 - - v.WinY = int16(Get16(buf[b:])) - b += 2 - - v.Mask = Get16(buf[b:]) - b += 2 - - b += 2 // padding - - return v -} - -func (cook QueryPointerCookie) Check() error { - return cook.check() -} - -// Write request to wire for QueryPointer -func (c *Conn) queryPointerRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 38 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request GetMotionEvents -// size: 16 -type GetMotionEventsCookie struct { - *cookie -} - -func (c *Conn) GetMotionEvents(Window Window, Start Timestamp, Stop Timestamp) GetMotionEventsCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getMotionEventsRequest(Window, Start, Stop), cookie) - return GetMotionEventsCookie{cookie} -} - -func (c *Conn) GetMotionEventsUnchecked(Window Window, Start Timestamp, Stop Timestamp) GetMotionEventsCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getMotionEventsRequest(Window, Start, Stop), cookie) - return GetMotionEventsCookie{cookie} -} - -// Request reply for GetMotionEvents -// size: (32 + pad((int(EventsLen) * 8))) -type GetMotionEventsReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - EventsLen uint32 - // padding: 20 bytes - Events []Timecoord // size: pad((int(EventsLen) * 8)) -} - -// Waits and reads reply data from request GetMotionEvents -func (cook GetMotionEventsCookie) Reply() (*GetMotionEventsReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getMotionEventsReply(buf), nil -} - -// Read reply into structure from buffer for GetMotionEvents -func getMotionEventsReply(buf []byte) *GetMotionEventsReply { - v := new(GetMotionEventsReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.EventsLen = Get32(buf[b:]) - b += 4 - - b += 20 // padding - - v.Events = make([]Timecoord, v.EventsLen) - b += ReadTimecoordList(buf[b:], v.Events) - - return v -} - -func (cook GetMotionEventsCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetMotionEvents -func (c *Conn) getMotionEventsRequest(Window Window, Start Timestamp, Stop Timestamp) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 39 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - Put32(buf[b:], uint32(Start)) - b += 4 - - Put32(buf[b:], uint32(Stop)) - b += 4 - - return buf -} - -// Request TranslateCoordinates -// size: 16 -type TranslateCoordinatesCookie struct { - *cookie -} - -func (c *Conn) TranslateCoordinates(SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16) TranslateCoordinatesCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.translateCoordinatesRequest(SrcWindow, DstWindow, SrcX, SrcY), cookie) - return TranslateCoordinatesCookie{cookie} -} - -func (c *Conn) TranslateCoordinatesUnchecked(SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16) TranslateCoordinatesCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.translateCoordinatesRequest(SrcWindow, DstWindow, SrcX, SrcY), cookie) - return TranslateCoordinatesCookie{cookie} -} - -// Request reply for TranslateCoordinates -// size: 16 -type TranslateCoordinatesReply struct { - Sequence uint16 - Length uint32 - SameScreen bool - Child Window - DstX int16 - DstY int16 -} - -// Waits and reads reply data from request TranslateCoordinates -func (cook TranslateCoordinatesCookie) Reply() (*TranslateCoordinatesReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return translateCoordinatesReply(buf), nil -} - -// Read reply into structure from buffer for TranslateCoordinates -func translateCoordinatesReply(buf []byte) *TranslateCoordinatesReply { - v := new(TranslateCoordinatesReply) - b := 1 // skip reply determinant - - if buf[b] == 1 { - v.SameScreen = true - } else { - v.SameScreen = false - } - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Child = Window(Get32(buf[b:])) - b += 4 - - v.DstX = int16(Get16(buf[b:])) - b += 2 - - v.DstY = int16(Get16(buf[b:])) - b += 2 - - return v -} - -func (cook TranslateCoordinatesCookie) Check() error { - return cook.check() -} - -// Write request to wire for TranslateCoordinates -func (c *Conn) translateCoordinatesRequest(SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 40 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(SrcWindow)) - b += 4 - - Put32(buf[b:], uint32(DstWindow)) - b += 4 - - Put16(buf[b:], uint16(SrcX)) - b += 2 - - Put16(buf[b:], uint16(SrcY)) - b += 2 - - return buf -} - -// Request WarpPointer -// size: 24 -type WarpPointerCookie struct { - *cookie -} - -// Write request to wire for WarpPointer -func (c *Conn) WarpPointer(SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16, SrcWidth uint16, SrcHeight uint16, DstX int16, DstY int16) WarpPointerCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.warpPointerRequest(SrcWindow, DstWindow, SrcX, SrcY, SrcWidth, SrcHeight, DstX, DstY), cookie) - return WarpPointerCookie{cookie} -} - -func (c *Conn) WarpPointerChecked(SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16, SrcWidth uint16, SrcHeight uint16, DstX int16, DstY int16) WarpPointerCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.warpPointerRequest(SrcWindow, DstWindow, SrcX, SrcY, SrcWidth, SrcHeight, DstX, DstY), cookie) - return WarpPointerCookie{cookie} -} - -func (cook WarpPointerCookie) Check() error { - return cook.check() -} - -// Write request to wire for WarpPointer -func (c *Conn) warpPointerRequest(SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16, SrcWidth uint16, SrcHeight uint16, DstX int16, DstY int16) []byte { - size := 24 - b := 0 - buf := make([]byte, size) - - buf[b] = 41 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(SrcWindow)) - b += 4 - - Put32(buf[b:], uint32(DstWindow)) - b += 4 - - Put16(buf[b:], uint16(SrcX)) - b += 2 - - Put16(buf[b:], uint16(SrcY)) - b += 2 - - Put16(buf[b:], SrcWidth) - b += 2 - - Put16(buf[b:], SrcHeight) - b += 2 - - Put16(buf[b:], uint16(DstX)) - b += 2 - - Put16(buf[b:], uint16(DstY)) - b += 2 - - return buf -} - -// Request SetInputFocus -// size: 12 -type SetInputFocusCookie struct { - *cookie -} - -// Write request to wire for SetInputFocus -func (c *Conn) SetInputFocus(RevertTo byte, Focus Window, Time Timestamp) SetInputFocusCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.setInputFocusRequest(RevertTo, Focus, Time), cookie) - return SetInputFocusCookie{cookie} -} - -func (c *Conn) SetInputFocusChecked(RevertTo byte, Focus Window, Time Timestamp) SetInputFocusCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.setInputFocusRequest(RevertTo, Focus, Time), cookie) - return SetInputFocusCookie{cookie} -} - -func (cook SetInputFocusCookie) Check() error { - return cook.check() -} - -// Write request to wire for SetInputFocus -func (c *Conn) setInputFocusRequest(RevertTo byte, Focus Window, Time Timestamp) []byte { - size := 12 - b := 0 - buf := make([]byte, size) - - buf[b] = 42 // request opcode - b += 1 - - buf[b] = RevertTo - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Focus)) - b += 4 - - Put32(buf[b:], uint32(Time)) - b += 4 - - return buf -} - -// Request GetInputFocus -// size: 4 -type GetInputFocusCookie struct { - *cookie -} - -func (c *Conn) GetInputFocus() GetInputFocusCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getInputFocusRequest(), cookie) - return GetInputFocusCookie{cookie} -} - -func (c *Conn) GetInputFocusUnchecked() GetInputFocusCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getInputFocusRequest(), cookie) - return GetInputFocusCookie{cookie} -} - -// Request reply for GetInputFocus -// size: 12 -type GetInputFocusReply struct { - Sequence uint16 - Length uint32 - RevertTo byte - Focus Window -} - -// Waits and reads reply data from request GetInputFocus -func (cook GetInputFocusCookie) Reply() (*GetInputFocusReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getInputFocusReply(buf), nil -} - -// Read reply into structure from buffer for GetInputFocus -func getInputFocusReply(buf []byte) *GetInputFocusReply { - v := new(GetInputFocusReply) - b := 1 // skip reply determinant - - v.RevertTo = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Focus = Window(Get32(buf[b:])) - b += 4 - - return v -} - -func (cook GetInputFocusCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetInputFocus -func (c *Conn) getInputFocusRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 43 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request QueryKeymap -// size: 4 -type QueryKeymapCookie struct { - *cookie -} - -func (c *Conn) QueryKeymap() QueryKeymapCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.queryKeymapRequest(), cookie) - return QueryKeymapCookie{cookie} -} - -func (c *Conn) QueryKeymapUnchecked() QueryKeymapCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.queryKeymapRequest(), cookie) - return QueryKeymapCookie{cookie} -} - -// Request reply for QueryKeymap -// size: 40 -type QueryKeymapReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - Keys []byte // size: 32 -} - -// Waits and reads reply data from request QueryKeymap -func (cook QueryKeymapCookie) Reply() (*QueryKeymapReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return queryKeymapReply(buf), nil -} - -// Read reply into structure from buffer for QueryKeymap -func queryKeymapReply(buf []byte) *QueryKeymapReply { - v := new(QueryKeymapReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Keys = make([]byte, 32) - copy(v.Keys[:32], buf[b:]) - b += pad(int(32)) - - return v -} - -func (cook QueryKeymapCookie) Check() error { - return cook.check() -} - -// Write request to wire for QueryKeymap -func (c *Conn) queryKeymapRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 44 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request OpenFont -// size: pad((12 + pad((int(NameLen) * 1)))) -type OpenFontCookie struct { - *cookie -} - -// Write request to wire for OpenFont -func (c *Conn) OpenFont(Fid Font, NameLen uint16, Name string) OpenFontCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.openFontRequest(Fid, NameLen, Name), cookie) - return OpenFontCookie{cookie} -} - -func (c *Conn) OpenFontChecked(Fid Font, NameLen uint16, Name string) OpenFontCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.openFontRequest(Fid, NameLen, Name), cookie) - return OpenFontCookie{cookie} -} - -func (cook OpenFontCookie) Check() error { - return cook.check() -} - -// Write request to wire for OpenFont -func (c *Conn) openFontRequest(Fid Font, NameLen uint16, Name string) []byte { - size := pad((12 + pad((int(NameLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 45 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Fid)) - b += 4 - - Put16(buf[b:], NameLen) - b += 2 - - b += 2 // padding - - copy(buf[b:], Name[:NameLen]) - b += pad(int(NameLen)) - - return buf -} - -// Request CloseFont -// size: 8 -type CloseFontCookie struct { - *cookie -} - -// Write request to wire for CloseFont -func (c *Conn) CloseFont(Font Font) CloseFontCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.closeFontRequest(Font), cookie) - return CloseFontCookie{cookie} -} - -func (c *Conn) CloseFontChecked(Font Font) CloseFontCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.closeFontRequest(Font), cookie) - return CloseFontCookie{cookie} -} - -func (cook CloseFontCookie) Check() error { - return cook.check() -} - -// Write request to wire for CloseFont -func (c *Conn) closeFontRequest(Font Font) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 46 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Font)) - b += 4 - - return buf -} - -// Request QueryFont -// size: 8 -type QueryFontCookie struct { - *cookie -} - -func (c *Conn) QueryFont(Font Fontable) QueryFontCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.queryFontRequest(Font), cookie) - return QueryFontCookie{cookie} -} - -func (c *Conn) QueryFontUnchecked(Font Fontable) QueryFontCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.queryFontRequest(Font), cookie) - return QueryFontCookie{cookie} -} - -// Request reply for QueryFont -// size: ((60 + pad((int(PropertiesLen) * 8))) + pad((int(CharInfosLen) * 12))) -type QueryFontReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - MinBounds Charinfo - // padding: 4 bytes - MaxBounds Charinfo - // padding: 4 bytes - MinCharOrByte2 uint16 - MaxCharOrByte2 uint16 - DefaultChar uint16 - PropertiesLen uint16 - DrawDirection byte - MinByte1 byte - MaxByte1 byte - AllCharsExist bool - FontAscent int16 - FontDescent int16 - CharInfosLen uint32 - Properties []Fontprop // size: pad((int(PropertiesLen) * 8)) - CharInfos []Charinfo // size: pad((int(CharInfosLen) * 12)) -} - -// Waits and reads reply data from request QueryFont -func (cook QueryFontCookie) Reply() (*QueryFontReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return queryFontReply(buf), nil -} - -// Read reply into structure from buffer for QueryFont -func queryFontReply(buf []byte) *QueryFontReply { - v := new(QueryFontReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.MinBounds = Charinfo{} - b += ReadCharinfo(buf[b:], &v.MinBounds) - - b += 4 // padding - - v.MaxBounds = Charinfo{} - b += ReadCharinfo(buf[b:], &v.MaxBounds) - - b += 4 // padding - - v.MinCharOrByte2 = Get16(buf[b:]) - b += 2 - - v.MaxCharOrByte2 = Get16(buf[b:]) - b += 2 - - v.DefaultChar = Get16(buf[b:]) - b += 2 - - v.PropertiesLen = Get16(buf[b:]) - b += 2 - - v.DrawDirection = buf[b] - b += 1 - - v.MinByte1 = buf[b] - b += 1 - - v.MaxByte1 = buf[b] - b += 1 - - if buf[b] == 1 { - v.AllCharsExist = true - } else { - v.AllCharsExist = false - } - b += 1 - - v.FontAscent = int16(Get16(buf[b:])) - b += 2 - - v.FontDescent = int16(Get16(buf[b:])) - b += 2 - - v.CharInfosLen = Get32(buf[b:]) - b += 4 - - v.Properties = make([]Fontprop, v.PropertiesLen) - b += ReadFontpropList(buf[b:], v.Properties) - - v.CharInfos = make([]Charinfo, v.CharInfosLen) - b += ReadCharinfoList(buf[b:], v.CharInfos) - - return v -} - -func (cook QueryFontCookie) Check() error { - return cook.check() -} - -// Write request to wire for QueryFont -func (c *Conn) queryFontRequest(Font Fontable) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 47 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Font)) - b += 4 - - return buf -} - -// Request QueryTextExtents -// size: pad((8 + pad((len(String) * 2)))) -type QueryTextExtentsCookie struct { - *cookie -} - -func (c *Conn) QueryTextExtents(Font Fontable, String []Char2b, StringLen uint16) QueryTextExtentsCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.queryTextExtentsRequest(Font, String, StringLen), cookie) - return QueryTextExtentsCookie{cookie} -} - -func (c *Conn) QueryTextExtentsUnchecked(Font Fontable, String []Char2b, StringLen uint16) QueryTextExtentsCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.queryTextExtentsRequest(Font, String, StringLen), cookie) - return QueryTextExtentsCookie{cookie} -} - -// Request reply for QueryTextExtents -// size: 28 -type QueryTextExtentsReply struct { - Sequence uint16 - Length uint32 - DrawDirection byte - FontAscent int16 - FontDescent int16 - OverallAscent int16 - OverallDescent int16 - OverallWidth int32 - OverallLeft int32 - OverallRight int32 -} - -// Waits and reads reply data from request QueryTextExtents -func (cook QueryTextExtentsCookie) Reply() (*QueryTextExtentsReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return queryTextExtentsReply(buf), nil -} - -// Read reply into structure from buffer for QueryTextExtents -func queryTextExtentsReply(buf []byte) *QueryTextExtentsReply { - v := new(QueryTextExtentsReply) - b := 1 // skip reply determinant - - v.DrawDirection = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.FontAscent = int16(Get16(buf[b:])) - b += 2 - - v.FontDescent = int16(Get16(buf[b:])) - b += 2 - - v.OverallAscent = int16(Get16(buf[b:])) - b += 2 - - v.OverallDescent = int16(Get16(buf[b:])) - b += 2 - - v.OverallWidth = int32(Get32(buf[b:])) - b += 4 - - v.OverallLeft = int32(Get32(buf[b:])) - b += 4 - - v.OverallRight = int32(Get32(buf[b:])) - b += 4 - - return v -} - -func (cook QueryTextExtentsCookie) Check() error { - return cook.check() -} - -// Write request to wire for QueryTextExtents -func (c *Conn) queryTextExtentsRequest(Font Fontable, String []Char2b, StringLen uint16) []byte { - size := pad((8 + pad((len(String) * 2)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 48 // request opcode - b += 1 - - buf[b] = byte((int(StringLen) & 1)) - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Font)) - b += 4 - - b += Char2bListBytes(buf[b:], String) - - // skip writing local field: StringLen (2) :: uint16 - - return buf -} - -// Request ListFonts -// size: pad((8 + pad((int(PatternLen) * 1)))) -type ListFontsCookie struct { - *cookie -} - -func (c *Conn) ListFonts(MaxNames uint16, PatternLen uint16, Pattern string) ListFontsCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.listFontsRequest(MaxNames, PatternLen, Pattern), cookie) - return ListFontsCookie{cookie} -} - -func (c *Conn) ListFontsUnchecked(MaxNames uint16, PatternLen uint16, Pattern string) ListFontsCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.listFontsRequest(MaxNames, PatternLen, Pattern), cookie) - return ListFontsCookie{cookie} -} - -// Request reply for ListFonts -// size: (32 + StrListSize(Names)) -type ListFontsReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - NamesLen uint16 - // padding: 22 bytes - Names []Str // size: StrListSize(Names) -} - -// Waits and reads reply data from request ListFonts -func (cook ListFontsCookie) Reply() (*ListFontsReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return listFontsReply(buf), nil -} - -// Read reply into structure from buffer for ListFonts -func listFontsReply(buf []byte) *ListFontsReply { - v := new(ListFontsReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.NamesLen = Get16(buf[b:]) - b += 2 - - b += 22 // padding - - v.Names = make([]Str, v.NamesLen) - b += ReadStrList(buf[b:], v.Names) - - return v -} - -func (cook ListFontsCookie) Check() error { - return cook.check() -} - -// Write request to wire for ListFonts -func (c *Conn) listFontsRequest(MaxNames uint16, PatternLen uint16, Pattern string) []byte { - size := pad((8 + pad((int(PatternLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 49 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put16(buf[b:], MaxNames) - b += 2 - - Put16(buf[b:], PatternLen) - b += 2 - - copy(buf[b:], Pattern[:PatternLen]) - b += pad(int(PatternLen)) - - return buf -} - -// Request ListFontsWithInfo -// size: pad((8 + pad((int(PatternLen) * 1)))) -type ListFontsWithInfoCookie struct { - *cookie -} - -func (c *Conn) ListFontsWithInfo(MaxNames uint16, PatternLen uint16, Pattern string) ListFontsWithInfoCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.listFontsWithInfoRequest(MaxNames, PatternLen, Pattern), cookie) - return ListFontsWithInfoCookie{cookie} -} - -func (c *Conn) ListFontsWithInfoUnchecked(MaxNames uint16, PatternLen uint16, Pattern string) ListFontsWithInfoCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.listFontsWithInfoRequest(MaxNames, PatternLen, Pattern), cookie) - return ListFontsWithInfoCookie{cookie} -} - -// Request reply for ListFontsWithInfo -// size: ((60 + pad((int(PropertiesLen) * 8))) + pad((int(NameLen) * 1))) -type ListFontsWithInfoReply struct { - Sequence uint16 - Length uint32 - NameLen byte - MinBounds Charinfo - // padding: 4 bytes - MaxBounds Charinfo - // padding: 4 bytes - MinCharOrByte2 uint16 - MaxCharOrByte2 uint16 - DefaultChar uint16 - PropertiesLen uint16 - DrawDirection byte - MinByte1 byte - MaxByte1 byte - AllCharsExist bool - FontAscent int16 - FontDescent int16 - RepliesHint uint32 - Properties []Fontprop // size: pad((int(PropertiesLen) * 8)) - Name string // size: pad((int(NameLen) * 1)) -} - -// Waits and reads reply data from request ListFontsWithInfo -func (cook ListFontsWithInfoCookie) Reply() (*ListFontsWithInfoReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return listFontsWithInfoReply(buf), nil -} - -// Read reply into structure from buffer for ListFontsWithInfo -func listFontsWithInfoReply(buf []byte) *ListFontsWithInfoReply { - v := new(ListFontsWithInfoReply) - b := 1 // skip reply determinant - - v.NameLen = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.MinBounds = Charinfo{} - b += ReadCharinfo(buf[b:], &v.MinBounds) - - b += 4 // padding - - v.MaxBounds = Charinfo{} - b += ReadCharinfo(buf[b:], &v.MaxBounds) - - b += 4 // padding - - v.MinCharOrByte2 = Get16(buf[b:]) - b += 2 - - v.MaxCharOrByte2 = Get16(buf[b:]) - b += 2 - - v.DefaultChar = Get16(buf[b:]) - b += 2 - - v.PropertiesLen = Get16(buf[b:]) - b += 2 - - v.DrawDirection = buf[b] - b += 1 - - v.MinByte1 = buf[b] - b += 1 - - v.MaxByte1 = buf[b] - b += 1 - - if buf[b] == 1 { - v.AllCharsExist = true - } else { - v.AllCharsExist = false - } - b += 1 - - v.FontAscent = int16(Get16(buf[b:])) - b += 2 - - v.FontDescent = int16(Get16(buf[b:])) - b += 2 - - v.RepliesHint = Get32(buf[b:]) - b += 4 - - v.Properties = make([]Fontprop, v.PropertiesLen) - b += ReadFontpropList(buf[b:], v.Properties) - - { - byteString := make([]byte, v.NameLen) - copy(byteString[:v.NameLen], buf[b:]) - v.Name = string(byteString) - b += pad(int(v.NameLen)) - } - - return v -} - -func (cook ListFontsWithInfoCookie) Check() error { - return cook.check() -} - -// Write request to wire for ListFontsWithInfo -func (c *Conn) listFontsWithInfoRequest(MaxNames uint16, PatternLen uint16, Pattern string) []byte { - size := pad((8 + pad((int(PatternLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 50 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put16(buf[b:], MaxNames) - b += 2 - - Put16(buf[b:], PatternLen) - b += 2 - - copy(buf[b:], Pattern[:PatternLen]) - b += pad(int(PatternLen)) - - return buf -} - -// Request SetFontPath -// size: pad((8 + StrListSize(Font))) -type SetFontPathCookie struct { - *cookie -} - -// Write request to wire for SetFontPath -func (c *Conn) SetFontPath(FontQty uint16, Font []Str) SetFontPathCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.setFontPathRequest(FontQty, Font), cookie) - return SetFontPathCookie{cookie} -} - -func (c *Conn) SetFontPathChecked(FontQty uint16, Font []Str) SetFontPathCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.setFontPathRequest(FontQty, Font), cookie) - return SetFontPathCookie{cookie} -} - -func (cook SetFontPathCookie) Check() error { - return cook.check() -} - -// Write request to wire for SetFontPath -func (c *Conn) setFontPathRequest(FontQty uint16, Font []Str) []byte { - size := pad((8 + StrListSize(Font))) - b := 0 - buf := make([]byte, size) - - buf[b] = 51 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put16(buf[b:], FontQty) - b += 2 - - b += 2 // padding - - b += StrListBytes(buf[b:], Font) - - return buf -} - -// Request GetFontPath -// size: 4 -type GetFontPathCookie struct { - *cookie -} - -func (c *Conn) GetFontPath() GetFontPathCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getFontPathRequest(), cookie) - return GetFontPathCookie{cookie} -} - -func (c *Conn) GetFontPathUnchecked() GetFontPathCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getFontPathRequest(), cookie) - return GetFontPathCookie{cookie} -} - -// Request reply for GetFontPath -// size: (32 + StrListSize(Path)) -type GetFontPathReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - PathLen uint16 - // padding: 22 bytes - Path []Str // size: StrListSize(Path) -} - -// Waits and reads reply data from request GetFontPath -func (cook GetFontPathCookie) Reply() (*GetFontPathReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getFontPathReply(buf), nil -} - -// Read reply into structure from buffer for GetFontPath -func getFontPathReply(buf []byte) *GetFontPathReply { - v := new(GetFontPathReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.PathLen = Get16(buf[b:]) - b += 2 - - b += 22 // padding - - v.Path = make([]Str, v.PathLen) - b += ReadStrList(buf[b:], v.Path) - - return v -} - -func (cook GetFontPathCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetFontPath -func (c *Conn) getFontPathRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 52 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request CreatePixmap -// size: 16 -type CreatePixmapCookie struct { - *cookie -} - -// Write request to wire for CreatePixmap -func (c *Conn) CreatePixmap(Depth byte, Pid Pixmap, Drawable Drawable, Width uint16, Height uint16) CreatePixmapCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.createPixmapRequest(Depth, Pid, Drawable, Width, Height), cookie) - return CreatePixmapCookie{cookie} -} - -func (c *Conn) CreatePixmapChecked(Depth byte, Pid Pixmap, Drawable Drawable, Width uint16, Height uint16) CreatePixmapCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.createPixmapRequest(Depth, Pid, Drawable, Width, Height), cookie) - return CreatePixmapCookie{cookie} -} - -func (cook CreatePixmapCookie) Check() error { - return cook.check() -} - -// Write request to wire for CreatePixmap -func (c *Conn) createPixmapRequest(Depth byte, Pid Pixmap, Drawable Drawable, Width uint16, Height uint16) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 53 // request opcode - b += 1 - - buf[b] = Depth - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Pid)) - b += 4 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put16(buf[b:], Width) - b += 2 - - Put16(buf[b:], Height) - b += 2 - - return buf -} - -// Request FreePixmap -// size: 8 -type FreePixmapCookie struct { - *cookie -} - -// Write request to wire for FreePixmap -func (c *Conn) FreePixmap(Pixmap Pixmap) FreePixmapCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.freePixmapRequest(Pixmap), cookie) - return FreePixmapCookie{cookie} -} - -func (c *Conn) FreePixmapChecked(Pixmap Pixmap) FreePixmapCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.freePixmapRequest(Pixmap), cookie) - return FreePixmapCookie{cookie} -} - -func (cook FreePixmapCookie) Check() error { - return cook.check() -} - -// Write request to wire for FreePixmap -func (c *Conn) freePixmapRequest(Pixmap Pixmap) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 54 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Pixmap)) - b += 4 - - return buf -} - -// Request CreateGC -// size: pad((12 + (4 + pad((4 * popCount(int(ValueMask))))))) -type CreateGCCookie struct { - *cookie -} - -// Write request to wire for CreateGC -func (c *Conn) CreateGC(Cid Gcontext, Drawable Drawable, ValueMask uint32, ValueList []uint32) CreateGCCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.createGCRequest(Cid, Drawable, ValueMask, ValueList), cookie) - return CreateGCCookie{cookie} -} - -func (c *Conn) CreateGCChecked(Cid Gcontext, Drawable Drawable, ValueMask uint32, ValueList []uint32) CreateGCCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.createGCRequest(Cid, Drawable, ValueMask, ValueList), cookie) - return CreateGCCookie{cookie} -} - -func (cook CreateGCCookie) Check() error { - return cook.check() -} - -// Write request to wire for CreateGC -func (c *Conn) createGCRequest(Cid Gcontext, Drawable Drawable, ValueMask uint32, ValueList []uint32) []byte { - size := pad((12 + (4 + pad((4 * popCount(int(ValueMask))))))) - b := 0 - buf := make([]byte, size) - - buf[b] = 55 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cid)) - b += 4 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], ValueMask) - b += 4 - for i := 0; i < popCount(int(ValueMask)); i++ { - Put32(buf[b:], ValueList[i]) - b += 4 - } - b = pad(b) - - return buf -} - -// Request ChangeGC -// size: pad((8 + (4 + pad((4 * popCount(int(ValueMask))))))) -type ChangeGCCookie struct { - *cookie -} - -// Write request to wire for ChangeGC -func (c *Conn) ChangeGC(Gc Gcontext, ValueMask uint32, ValueList []uint32) ChangeGCCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.changeGCRequest(Gc, ValueMask, ValueList), cookie) - return ChangeGCCookie{cookie} -} - -func (c *Conn) ChangeGCChecked(Gc Gcontext, ValueMask uint32, ValueList []uint32) ChangeGCCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.changeGCRequest(Gc, ValueMask, ValueList), cookie) - return ChangeGCCookie{cookie} -} - -func (cook ChangeGCCookie) Check() error { - return cook.check() -} - -// Write request to wire for ChangeGC -func (c *Conn) changeGCRequest(Gc Gcontext, ValueMask uint32, ValueList []uint32) []byte { - size := pad((8 + (4 + pad((4 * popCount(int(ValueMask))))))) - b := 0 - buf := make([]byte, size) - - buf[b] = 56 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - Put32(buf[b:], ValueMask) - b += 4 - for i := 0; i < popCount(int(ValueMask)); i++ { - Put32(buf[b:], ValueList[i]) - b += 4 - } - b = pad(b) - - return buf -} - -// Request CopyGC -// size: 16 -type CopyGCCookie struct { - *cookie -} - -// Write request to wire for CopyGC -func (c *Conn) CopyGC(SrcGc Gcontext, DstGc Gcontext, ValueMask uint32) CopyGCCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.copyGCRequest(SrcGc, DstGc, ValueMask), cookie) - return CopyGCCookie{cookie} -} - -func (c *Conn) CopyGCChecked(SrcGc Gcontext, DstGc Gcontext, ValueMask uint32) CopyGCCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.copyGCRequest(SrcGc, DstGc, ValueMask), cookie) - return CopyGCCookie{cookie} -} - -func (cook CopyGCCookie) Check() error { - return cook.check() -} - -// Write request to wire for CopyGC -func (c *Conn) copyGCRequest(SrcGc Gcontext, DstGc Gcontext, ValueMask uint32) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 57 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(SrcGc)) - b += 4 - - Put32(buf[b:], uint32(DstGc)) - b += 4 - - Put32(buf[b:], ValueMask) - b += 4 - - return buf -} - -// Request SetDashes -// size: pad((12 + pad((int(DashesLen) * 1)))) -type SetDashesCookie struct { - *cookie -} - -// Write request to wire for SetDashes -func (c *Conn) SetDashes(Gc Gcontext, DashOffset uint16, DashesLen uint16, Dashes []byte) SetDashesCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.setDashesRequest(Gc, DashOffset, DashesLen, Dashes), cookie) - return SetDashesCookie{cookie} -} - -func (c *Conn) SetDashesChecked(Gc Gcontext, DashOffset uint16, DashesLen uint16, Dashes []byte) SetDashesCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.setDashesRequest(Gc, DashOffset, DashesLen, Dashes), cookie) - return SetDashesCookie{cookie} -} - -func (cook SetDashesCookie) Check() error { - return cook.check() -} - -// Write request to wire for SetDashes -func (c *Conn) setDashesRequest(Gc Gcontext, DashOffset uint16, DashesLen uint16, Dashes []byte) []byte { - size := pad((12 + pad((int(DashesLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 58 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - Put16(buf[b:], DashOffset) - b += 2 - - Put16(buf[b:], DashesLen) - b += 2 - - copy(buf[b:], Dashes[:DashesLen]) - b += pad(int(DashesLen)) - - return buf -} - -// Request SetClipRectangles -// size: pad((12 + pad((len(Rectangles) * 8)))) -type SetClipRectanglesCookie struct { - *cookie -} - -// Write request to wire for SetClipRectangles -func (c *Conn) SetClipRectangles(Ordering byte, Gc Gcontext, ClipXOrigin int16, ClipYOrigin int16, Rectangles []Rectangle) SetClipRectanglesCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.setClipRectanglesRequest(Ordering, Gc, ClipXOrigin, ClipYOrigin, Rectangles), cookie) - return SetClipRectanglesCookie{cookie} -} - -func (c *Conn) SetClipRectanglesChecked(Ordering byte, Gc Gcontext, ClipXOrigin int16, ClipYOrigin int16, Rectangles []Rectangle) SetClipRectanglesCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.setClipRectanglesRequest(Ordering, Gc, ClipXOrigin, ClipYOrigin, Rectangles), cookie) - return SetClipRectanglesCookie{cookie} -} - -func (cook SetClipRectanglesCookie) Check() error { - return cook.check() -} - -// Write request to wire for SetClipRectangles -func (c *Conn) setClipRectanglesRequest(Ordering byte, Gc Gcontext, ClipXOrigin int16, ClipYOrigin int16, Rectangles []Rectangle) []byte { - size := pad((12 + pad((len(Rectangles) * 8)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 59 // request opcode - b += 1 - - buf[b] = Ordering - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - Put16(buf[b:], uint16(ClipXOrigin)) - b += 2 - - Put16(buf[b:], uint16(ClipYOrigin)) - b += 2 - - b += RectangleListBytes(buf[b:], Rectangles) - - return buf -} - -// Request FreeGC -// size: 8 -type FreeGCCookie struct { - *cookie -} - -// Write request to wire for FreeGC -func (c *Conn) FreeGC(Gc Gcontext) FreeGCCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.freeGCRequest(Gc), cookie) - return FreeGCCookie{cookie} -} - -func (c *Conn) FreeGCChecked(Gc Gcontext) FreeGCCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.freeGCRequest(Gc), cookie) - return FreeGCCookie{cookie} -} - -func (cook FreeGCCookie) Check() error { - return cook.check() -} - -// Write request to wire for FreeGC -func (c *Conn) freeGCRequest(Gc Gcontext) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 60 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - return buf -} - -// Request ClearArea -// size: 16 -type ClearAreaCookie struct { - *cookie -} - -// Write request to wire for ClearArea -func (c *Conn) ClearArea(Exposures bool, Window Window, X int16, Y int16, Width uint16, Height uint16) ClearAreaCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.clearAreaRequest(Exposures, Window, X, Y, Width, Height), cookie) - return ClearAreaCookie{cookie} -} - -func (c *Conn) ClearAreaChecked(Exposures bool, Window Window, X int16, Y int16, Width uint16, Height uint16) ClearAreaCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.clearAreaRequest(Exposures, Window, X, Y, Width, Height), cookie) - return ClearAreaCookie{cookie} -} - -func (cook ClearAreaCookie) Check() error { - return cook.check() -} - -// Write request to wire for ClearArea -func (c *Conn) clearAreaRequest(Exposures bool, Window Window, X int16, Y int16, Width uint16, Height uint16) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 61 // request opcode - b += 1 - - if Exposures { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - Put16(buf[b:], uint16(X)) - b += 2 - - Put16(buf[b:], uint16(Y)) - b += 2 - - Put16(buf[b:], Width) - b += 2 - - Put16(buf[b:], Height) - b += 2 - - return buf -} - -// Request CopyArea -// size: 28 -type CopyAreaCookie struct { - *cookie -} - -// Write request to wire for CopyArea -func (c *Conn) CopyArea(SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16) CopyAreaCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.copyAreaRequest(SrcDrawable, DstDrawable, Gc, SrcX, SrcY, DstX, DstY, Width, Height), cookie) - return CopyAreaCookie{cookie} -} - -func (c *Conn) CopyAreaChecked(SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16) CopyAreaCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.copyAreaRequest(SrcDrawable, DstDrawable, Gc, SrcX, SrcY, DstX, DstY, Width, Height), cookie) - return CopyAreaCookie{cookie} -} - -func (cook CopyAreaCookie) Check() error { - return cook.check() -} - -// Write request to wire for CopyArea -func (c *Conn) copyAreaRequest(SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16) []byte { - size := 28 - b := 0 - buf := make([]byte, size) - - buf[b] = 62 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(SrcDrawable)) - b += 4 - - Put32(buf[b:], uint32(DstDrawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - Put16(buf[b:], uint16(SrcX)) - b += 2 - - Put16(buf[b:], uint16(SrcY)) - b += 2 - - Put16(buf[b:], uint16(DstX)) - b += 2 - - Put16(buf[b:], uint16(DstY)) - b += 2 - - Put16(buf[b:], Width) - b += 2 - - Put16(buf[b:], Height) - b += 2 - - return buf -} - -// Request CopyPlane -// size: 32 -type CopyPlaneCookie struct { - *cookie -} - -// Write request to wire for CopyPlane -func (c *Conn) CopyPlane(SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16, BitPlane uint32) CopyPlaneCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.copyPlaneRequest(SrcDrawable, DstDrawable, Gc, SrcX, SrcY, DstX, DstY, Width, Height, BitPlane), cookie) - return CopyPlaneCookie{cookie} -} - -func (c *Conn) CopyPlaneChecked(SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16, BitPlane uint32) CopyPlaneCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.copyPlaneRequest(SrcDrawable, DstDrawable, Gc, SrcX, SrcY, DstX, DstY, Width, Height, BitPlane), cookie) - return CopyPlaneCookie{cookie} -} - -func (cook CopyPlaneCookie) Check() error { - return cook.check() -} - -// Write request to wire for CopyPlane -func (c *Conn) copyPlaneRequest(SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16, BitPlane uint32) []byte { - size := 32 - b := 0 - buf := make([]byte, size) - - buf[b] = 63 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(SrcDrawable)) - b += 4 - - Put32(buf[b:], uint32(DstDrawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - Put16(buf[b:], uint16(SrcX)) - b += 2 - - Put16(buf[b:], uint16(SrcY)) - b += 2 - - Put16(buf[b:], uint16(DstX)) - b += 2 - - Put16(buf[b:], uint16(DstY)) - b += 2 - - Put16(buf[b:], Width) - b += 2 - - Put16(buf[b:], Height) - b += 2 - - Put32(buf[b:], BitPlane) - b += 4 - - return buf -} - -// Request PolyPoint -// size: pad((12 + pad((len(Points) * 4)))) -type PolyPointCookie struct { - *cookie -} - -// Write request to wire for PolyPoint -func (c *Conn) PolyPoint(CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) PolyPointCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.polyPointRequest(CoordinateMode, Drawable, Gc, Points), cookie) - return PolyPointCookie{cookie} -} - -func (c *Conn) PolyPointChecked(CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) PolyPointCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.polyPointRequest(CoordinateMode, Drawable, Gc, Points), cookie) - return PolyPointCookie{cookie} -} - -func (cook PolyPointCookie) Check() error { - return cook.check() -} - -// Write request to wire for PolyPoint -func (c *Conn) polyPointRequest(CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) []byte { - size := pad((12 + pad((len(Points) * 4)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 64 // request opcode - b += 1 - - buf[b] = CoordinateMode - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - b += PointListBytes(buf[b:], Points) - - return buf -} - -// Request PolyLine -// size: pad((12 + pad((len(Points) * 4)))) -type PolyLineCookie struct { - *cookie -} - -// Write request to wire for PolyLine -func (c *Conn) PolyLine(CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) PolyLineCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.polyLineRequest(CoordinateMode, Drawable, Gc, Points), cookie) - return PolyLineCookie{cookie} -} - -func (c *Conn) PolyLineChecked(CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) PolyLineCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.polyLineRequest(CoordinateMode, Drawable, Gc, Points), cookie) - return PolyLineCookie{cookie} -} - -func (cook PolyLineCookie) Check() error { - return cook.check() -} - -// Write request to wire for PolyLine -func (c *Conn) polyLineRequest(CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) []byte { - size := pad((12 + pad((len(Points) * 4)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 65 // request opcode - b += 1 - - buf[b] = CoordinateMode - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - b += PointListBytes(buf[b:], Points) - - return buf -} - -// Request PolySegment -// size: pad((12 + pad((len(Segments) * 8)))) -type PolySegmentCookie struct { - *cookie -} - -// Write request to wire for PolySegment -func (c *Conn) PolySegment(Drawable Drawable, Gc Gcontext, Segments []Segment) PolySegmentCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.polySegmentRequest(Drawable, Gc, Segments), cookie) - return PolySegmentCookie{cookie} -} - -func (c *Conn) PolySegmentChecked(Drawable Drawable, Gc Gcontext, Segments []Segment) PolySegmentCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.polySegmentRequest(Drawable, Gc, Segments), cookie) - return PolySegmentCookie{cookie} -} - -func (cook PolySegmentCookie) Check() error { - return cook.check() -} - -// Write request to wire for PolySegment -func (c *Conn) polySegmentRequest(Drawable Drawable, Gc Gcontext, Segments []Segment) []byte { - size := pad((12 + pad((len(Segments) * 8)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 66 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - b += SegmentListBytes(buf[b:], Segments) - - return buf -} - -// Request PolyRectangle -// size: pad((12 + pad((len(Rectangles) * 8)))) -type PolyRectangleCookie struct { - *cookie -} - -// Write request to wire for PolyRectangle -func (c *Conn) PolyRectangle(Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) PolyRectangleCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.polyRectangleRequest(Drawable, Gc, Rectangles), cookie) - return PolyRectangleCookie{cookie} -} - -func (c *Conn) PolyRectangleChecked(Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) PolyRectangleCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.polyRectangleRequest(Drawable, Gc, Rectangles), cookie) - return PolyRectangleCookie{cookie} -} - -func (cook PolyRectangleCookie) Check() error { - return cook.check() -} - -// Write request to wire for PolyRectangle -func (c *Conn) polyRectangleRequest(Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) []byte { - size := pad((12 + pad((len(Rectangles) * 8)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 67 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - b += RectangleListBytes(buf[b:], Rectangles) - - return buf -} - -// Request PolyArc -// size: pad((12 + pad((len(Arcs) * 12)))) -type PolyArcCookie struct { - *cookie -} - -// Write request to wire for PolyArc -func (c *Conn) PolyArc(Drawable Drawable, Gc Gcontext, Arcs []Arc) PolyArcCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.polyArcRequest(Drawable, Gc, Arcs), cookie) - return PolyArcCookie{cookie} -} - -func (c *Conn) PolyArcChecked(Drawable Drawable, Gc Gcontext, Arcs []Arc) PolyArcCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.polyArcRequest(Drawable, Gc, Arcs), cookie) - return PolyArcCookie{cookie} -} - -func (cook PolyArcCookie) Check() error { - return cook.check() -} - -// Write request to wire for PolyArc -func (c *Conn) polyArcRequest(Drawable Drawable, Gc Gcontext, Arcs []Arc) []byte { - size := pad((12 + pad((len(Arcs) * 12)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 68 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - b += ArcListBytes(buf[b:], Arcs) - - return buf -} - -// Request FillPoly -// size: pad((16 + pad((len(Points) * 4)))) -type FillPolyCookie struct { - *cookie -} - -// Write request to wire for FillPoly -func (c *Conn) FillPoly(Drawable Drawable, Gc Gcontext, Shape byte, CoordinateMode byte, Points []Point) FillPolyCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.fillPolyRequest(Drawable, Gc, Shape, CoordinateMode, Points), cookie) - return FillPolyCookie{cookie} -} - -func (c *Conn) FillPolyChecked(Drawable Drawable, Gc Gcontext, Shape byte, CoordinateMode byte, Points []Point) FillPolyCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.fillPolyRequest(Drawable, Gc, Shape, CoordinateMode, Points), cookie) - return FillPolyCookie{cookie} -} - -func (cook FillPolyCookie) Check() error { - return cook.check() -} - -// Write request to wire for FillPoly -func (c *Conn) fillPolyRequest(Drawable Drawable, Gc Gcontext, Shape byte, CoordinateMode byte, Points []Point) []byte { - size := pad((16 + pad((len(Points) * 4)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 69 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - buf[b] = Shape - b += 1 - - buf[b] = CoordinateMode - b += 1 - - b += 2 // padding - - b += PointListBytes(buf[b:], Points) - - return buf -} - -// Request PolyFillRectangle -// size: pad((12 + pad((len(Rectangles) * 8)))) -type PolyFillRectangleCookie struct { - *cookie -} - -// Write request to wire for PolyFillRectangle -func (c *Conn) PolyFillRectangle(Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) PolyFillRectangleCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.polyFillRectangleRequest(Drawable, Gc, Rectangles), cookie) - return PolyFillRectangleCookie{cookie} -} - -func (c *Conn) PolyFillRectangleChecked(Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) PolyFillRectangleCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.polyFillRectangleRequest(Drawable, Gc, Rectangles), cookie) - return PolyFillRectangleCookie{cookie} -} - -func (cook PolyFillRectangleCookie) Check() error { - return cook.check() -} - -// Write request to wire for PolyFillRectangle -func (c *Conn) polyFillRectangleRequest(Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) []byte { - size := pad((12 + pad((len(Rectangles) * 8)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 70 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - b += RectangleListBytes(buf[b:], Rectangles) - - return buf -} - -// Request PolyFillArc -// size: pad((12 + pad((len(Arcs) * 12)))) -type PolyFillArcCookie struct { - *cookie -} - -// Write request to wire for PolyFillArc -func (c *Conn) PolyFillArc(Drawable Drawable, Gc Gcontext, Arcs []Arc) PolyFillArcCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.polyFillArcRequest(Drawable, Gc, Arcs), cookie) - return PolyFillArcCookie{cookie} -} - -func (c *Conn) PolyFillArcChecked(Drawable Drawable, Gc Gcontext, Arcs []Arc) PolyFillArcCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.polyFillArcRequest(Drawable, Gc, Arcs), cookie) - return PolyFillArcCookie{cookie} -} - -func (cook PolyFillArcCookie) Check() error { - return cook.check() -} - -// Write request to wire for PolyFillArc -func (c *Conn) polyFillArcRequest(Drawable Drawable, Gc Gcontext, Arcs []Arc) []byte { - size := pad((12 + pad((len(Arcs) * 12)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 71 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - b += ArcListBytes(buf[b:], Arcs) - - return buf -} - -// Request PutImage -// size: pad((24 + pad((len(Data) * 1)))) -type PutImageCookie struct { - *cookie -} - -// Write request to wire for PutImage -func (c *Conn) PutImage(Format byte, Drawable Drawable, Gc Gcontext, Width uint16, Height uint16, DstX int16, DstY int16, LeftPad byte, Depth byte, Data []byte) PutImageCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.putImageRequest(Format, Drawable, Gc, Width, Height, DstX, DstY, LeftPad, Depth, Data), cookie) - return PutImageCookie{cookie} -} - -func (c *Conn) PutImageChecked(Format byte, Drawable Drawable, Gc Gcontext, Width uint16, Height uint16, DstX int16, DstY int16, LeftPad byte, Depth byte, Data []byte) PutImageCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.putImageRequest(Format, Drawable, Gc, Width, Height, DstX, DstY, LeftPad, Depth, Data), cookie) - return PutImageCookie{cookie} -} - -func (cook PutImageCookie) Check() error { - return cook.check() -} - -// Write request to wire for PutImage -func (c *Conn) putImageRequest(Format byte, Drawable Drawable, Gc Gcontext, Width uint16, Height uint16, DstX int16, DstY int16, LeftPad byte, Depth byte, Data []byte) []byte { - size := pad((24 + pad((len(Data) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 72 // request opcode - b += 1 - - buf[b] = Format - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - Put16(buf[b:], Width) - b += 2 - - Put16(buf[b:], Height) - b += 2 - - Put16(buf[b:], uint16(DstX)) - b += 2 - - Put16(buf[b:], uint16(DstY)) - b += 2 - - buf[b] = LeftPad - b += 1 - - buf[b] = Depth - b += 1 - - b += 2 // padding - - copy(buf[b:], Data[:len(Data)]) - b += pad(int(len(Data))) - - return buf -} - -// Request GetImage -// size: 20 -type GetImageCookie struct { - *cookie -} - -func (c *Conn) GetImage(Format byte, Drawable Drawable, X int16, Y int16, Width uint16, Height uint16, PlaneMask uint32) GetImageCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getImageRequest(Format, Drawable, X, Y, Width, Height, PlaneMask), cookie) - return GetImageCookie{cookie} -} - -func (c *Conn) GetImageUnchecked(Format byte, Drawable Drawable, X int16, Y int16, Width uint16, Height uint16, PlaneMask uint32) GetImageCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getImageRequest(Format, Drawable, X, Y, Width, Height, PlaneMask), cookie) - return GetImageCookie{cookie} -} - -// Request reply for GetImage -// size: (32 + pad(((int(Length) * 4) * 1))) -type GetImageReply struct { - Sequence uint16 - Length uint32 - Depth byte - Visual Visualid - // padding: 20 bytes - Data []byte // size: pad(((int(Length) * 4) * 1)) -} - -// Waits and reads reply data from request GetImage -func (cook GetImageCookie) Reply() (*GetImageReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getImageReply(buf), nil -} - -// Read reply into structure from buffer for GetImage -func getImageReply(buf []byte) *GetImageReply { - v := new(GetImageReply) - b := 1 // skip reply determinant - - v.Depth = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Visual = Visualid(Get32(buf[b:])) - b += 4 - - b += 20 // padding - - v.Data = make([]byte, (int(v.Length) * 4)) - copy(v.Data[:(int(v.Length)*4)], buf[b:]) - b += pad(int((int(v.Length) * 4))) - - return v -} - -func (cook GetImageCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetImage -func (c *Conn) getImageRequest(Format byte, Drawable Drawable, X int16, Y int16, Width uint16, Height uint16, PlaneMask uint32) []byte { - size := 20 - b := 0 - buf := make([]byte, size) - - buf[b] = 73 // request opcode - b += 1 - - buf[b] = Format - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put16(buf[b:], uint16(X)) - b += 2 - - Put16(buf[b:], uint16(Y)) - b += 2 - - Put16(buf[b:], Width) - b += 2 - - Put16(buf[b:], Height) - b += 2 - - Put32(buf[b:], PlaneMask) - b += 4 - - return buf -} - -// Request PolyText8 -// size: pad((16 + pad((len(Items) * 1)))) -type PolyText8Cookie struct { - *cookie -} - -// Write request to wire for PolyText8 -func (c *Conn) PolyText8(Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) PolyText8Cookie { - cookie := c.newCookie(false, false) - c.newRequest(c.polyText8Request(Drawable, Gc, X, Y, Items), cookie) - return PolyText8Cookie{cookie} -} - -func (c *Conn) PolyText8Checked(Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) PolyText8Cookie { - cookie := c.newCookie(true, false) - c.newRequest(c.polyText8Request(Drawable, Gc, X, Y, Items), cookie) - return PolyText8Cookie{cookie} -} - -func (cook PolyText8Cookie) Check() error { - return cook.check() -} - -// Write request to wire for PolyText8 -func (c *Conn) polyText8Request(Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) []byte { - size := pad((16 + pad((len(Items) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 74 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - Put16(buf[b:], uint16(X)) - b += 2 - - Put16(buf[b:], uint16(Y)) - b += 2 - - copy(buf[b:], Items[:len(Items)]) - b += pad(int(len(Items))) - - return buf -} - -// Request PolyText16 -// size: pad((16 + pad((len(Items) * 1)))) -type PolyText16Cookie struct { - *cookie -} - -// Write request to wire for PolyText16 -func (c *Conn) PolyText16(Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) PolyText16Cookie { - cookie := c.newCookie(false, false) - c.newRequest(c.polyText16Request(Drawable, Gc, X, Y, Items), cookie) - return PolyText16Cookie{cookie} -} - -func (c *Conn) PolyText16Checked(Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) PolyText16Cookie { - cookie := c.newCookie(true, false) - c.newRequest(c.polyText16Request(Drawable, Gc, X, Y, Items), cookie) - return PolyText16Cookie{cookie} -} - -func (cook PolyText16Cookie) Check() error { - return cook.check() -} - -// Write request to wire for PolyText16 -func (c *Conn) polyText16Request(Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) []byte { - size := pad((16 + pad((len(Items) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 75 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - Put16(buf[b:], uint16(X)) - b += 2 - - Put16(buf[b:], uint16(Y)) - b += 2 - - copy(buf[b:], Items[:len(Items)]) - b += pad(int(len(Items))) - - return buf -} - -// Request ImageText8 -// size: pad((16 + pad((int(StringLen) * 1)))) -type ImageText8Cookie struct { - *cookie -} - -// Write request to wire for ImageText8 -func (c *Conn) ImageText8(StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String string) ImageText8Cookie { - cookie := c.newCookie(false, false) - c.newRequest(c.imageText8Request(StringLen, Drawable, Gc, X, Y, String), cookie) - return ImageText8Cookie{cookie} -} - -func (c *Conn) ImageText8Checked(StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String string) ImageText8Cookie { - cookie := c.newCookie(true, false) - c.newRequest(c.imageText8Request(StringLen, Drawable, Gc, X, Y, String), cookie) - return ImageText8Cookie{cookie} -} - -func (cook ImageText8Cookie) Check() error { - return cook.check() -} - -// Write request to wire for ImageText8 -func (c *Conn) imageText8Request(StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String string) []byte { - size := pad((16 + pad((int(StringLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 76 // request opcode - b += 1 - - buf[b] = StringLen - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - Put16(buf[b:], uint16(X)) - b += 2 - - Put16(buf[b:], uint16(Y)) - b += 2 - - copy(buf[b:], String[:StringLen]) - b += pad(int(StringLen)) - - return buf -} - -// Request ImageText16 -// size: pad((16 + pad((int(StringLen) * 2)))) -type ImageText16Cookie struct { - *cookie -} - -// Write request to wire for ImageText16 -func (c *Conn) ImageText16(StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String []Char2b) ImageText16Cookie { - cookie := c.newCookie(false, false) - c.newRequest(c.imageText16Request(StringLen, Drawable, Gc, X, Y, String), cookie) - return ImageText16Cookie{cookie} -} - -func (c *Conn) ImageText16Checked(StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String []Char2b) ImageText16Cookie { - cookie := c.newCookie(true, false) - c.newRequest(c.imageText16Request(StringLen, Drawable, Gc, X, Y, String), cookie) - return ImageText16Cookie{cookie} -} - -func (cook ImageText16Cookie) Check() error { - return cook.check() -} - -// Write request to wire for ImageText16 -func (c *Conn) imageText16Request(StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String []Char2b) []byte { - size := pad((16 + pad((int(StringLen) * 2)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 77 // request opcode - b += 1 - - buf[b] = StringLen - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put32(buf[b:], uint32(Gc)) - b += 4 - - Put16(buf[b:], uint16(X)) - b += 2 - - Put16(buf[b:], uint16(Y)) - b += 2 - - b += Char2bListBytes(buf[b:], String) - - return buf -} - -// Request CreateColormap -// size: 16 -type CreateColormapCookie struct { - *cookie -} - -// Write request to wire for CreateColormap -func (c *Conn) CreateColormap(Alloc byte, Mid Colormap, Window Window, Visual Visualid) CreateColormapCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.createColormapRequest(Alloc, Mid, Window, Visual), cookie) - return CreateColormapCookie{cookie} -} - -func (c *Conn) CreateColormapChecked(Alloc byte, Mid Colormap, Window Window, Visual Visualid) CreateColormapCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.createColormapRequest(Alloc, Mid, Window, Visual), cookie) - return CreateColormapCookie{cookie} -} - -func (cook CreateColormapCookie) Check() error { - return cook.check() -} - -// Write request to wire for CreateColormap -func (c *Conn) createColormapRequest(Alloc byte, Mid Colormap, Window Window, Visual Visualid) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 78 // request opcode - b += 1 - - buf[b] = Alloc - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Mid)) - b += 4 - - Put32(buf[b:], uint32(Window)) - b += 4 - - Put32(buf[b:], uint32(Visual)) - b += 4 - - return buf -} - -// Request FreeColormap -// size: 8 -type FreeColormapCookie struct { - *cookie -} - -// Write request to wire for FreeColormap -func (c *Conn) FreeColormap(Cmap Colormap) FreeColormapCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.freeColormapRequest(Cmap), cookie) - return FreeColormapCookie{cookie} -} - -func (c *Conn) FreeColormapChecked(Cmap Colormap) FreeColormapCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.freeColormapRequest(Cmap), cookie) - return FreeColormapCookie{cookie} -} - -func (cook FreeColormapCookie) Check() error { - return cook.check() -} - -// Write request to wire for FreeColormap -func (c *Conn) freeColormapRequest(Cmap Colormap) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 79 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - return buf -} - -// Request CopyColormapAndFree -// size: 12 -type CopyColormapAndFreeCookie struct { - *cookie -} - -// Write request to wire for CopyColormapAndFree -func (c *Conn) CopyColormapAndFree(Mid Colormap, SrcCmap Colormap) CopyColormapAndFreeCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.copyColormapAndFreeRequest(Mid, SrcCmap), cookie) - return CopyColormapAndFreeCookie{cookie} -} - -func (c *Conn) CopyColormapAndFreeChecked(Mid Colormap, SrcCmap Colormap) CopyColormapAndFreeCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.copyColormapAndFreeRequest(Mid, SrcCmap), cookie) - return CopyColormapAndFreeCookie{cookie} -} - -func (cook CopyColormapAndFreeCookie) Check() error { - return cook.check() -} - -// Write request to wire for CopyColormapAndFree -func (c *Conn) copyColormapAndFreeRequest(Mid Colormap, SrcCmap Colormap) []byte { - size := 12 - b := 0 - buf := make([]byte, size) - - buf[b] = 80 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Mid)) - b += 4 - - Put32(buf[b:], uint32(SrcCmap)) - b += 4 - - return buf -} - -// Request InstallColormap -// size: 8 -type InstallColormapCookie struct { - *cookie -} - -// Write request to wire for InstallColormap -func (c *Conn) InstallColormap(Cmap Colormap) InstallColormapCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.installColormapRequest(Cmap), cookie) - return InstallColormapCookie{cookie} -} - -func (c *Conn) InstallColormapChecked(Cmap Colormap) InstallColormapCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.installColormapRequest(Cmap), cookie) - return InstallColormapCookie{cookie} -} - -func (cook InstallColormapCookie) Check() error { - return cook.check() -} - -// Write request to wire for InstallColormap -func (c *Conn) installColormapRequest(Cmap Colormap) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 81 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - return buf -} - -// Request UninstallColormap -// size: 8 -type UninstallColormapCookie struct { - *cookie -} - -// Write request to wire for UninstallColormap -func (c *Conn) UninstallColormap(Cmap Colormap) UninstallColormapCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.uninstallColormapRequest(Cmap), cookie) - return UninstallColormapCookie{cookie} -} - -func (c *Conn) UninstallColormapChecked(Cmap Colormap) UninstallColormapCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.uninstallColormapRequest(Cmap), cookie) - return UninstallColormapCookie{cookie} -} - -func (cook UninstallColormapCookie) Check() error { - return cook.check() -} - -// Write request to wire for UninstallColormap -func (c *Conn) uninstallColormapRequest(Cmap Colormap) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 82 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - return buf -} - -// Request ListInstalledColormaps -// size: 8 -type ListInstalledColormapsCookie struct { - *cookie -} - -func (c *Conn) ListInstalledColormaps(Window Window) ListInstalledColormapsCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.listInstalledColormapsRequest(Window), cookie) - return ListInstalledColormapsCookie{cookie} -} - -func (c *Conn) ListInstalledColormapsUnchecked(Window Window) ListInstalledColormapsCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.listInstalledColormapsRequest(Window), cookie) - return ListInstalledColormapsCookie{cookie} -} - -// Request reply for ListInstalledColormaps -// size: (32 + pad((int(CmapsLen) * 4))) -type ListInstalledColormapsReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - CmapsLen uint16 - // padding: 22 bytes - Cmaps []Colormap // size: pad((int(CmapsLen) * 4)) -} - -// Waits and reads reply data from request ListInstalledColormaps -func (cook ListInstalledColormapsCookie) Reply() (*ListInstalledColormapsReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return listInstalledColormapsReply(buf), nil -} - -// Read reply into structure from buffer for ListInstalledColormaps -func listInstalledColormapsReply(buf []byte) *ListInstalledColormapsReply { - v := new(ListInstalledColormapsReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.CmapsLen = Get16(buf[b:]) - b += 2 - - b += 22 // padding - - v.Cmaps = make([]Colormap, v.CmapsLen) - for i := 0; i < int(v.CmapsLen); i++ { - v.Cmaps[i] = Colormap(Get32(buf[b:])) - b += 4 - } - b = pad(b) - - return v -} - -func (cook ListInstalledColormapsCookie) Check() error { - return cook.check() -} - -// Write request to wire for ListInstalledColormaps -func (c *Conn) listInstalledColormapsRequest(Window Window) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 83 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - return buf -} - -// Request AllocColor -// size: 16 -type AllocColorCookie struct { - *cookie -} - -func (c *Conn) AllocColor(Cmap Colormap, Red uint16, Green uint16, Blue uint16) AllocColorCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.allocColorRequest(Cmap, Red, Green, Blue), cookie) - return AllocColorCookie{cookie} -} - -func (c *Conn) AllocColorUnchecked(Cmap Colormap, Red uint16, Green uint16, Blue uint16) AllocColorCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.allocColorRequest(Cmap, Red, Green, Blue), cookie) - return AllocColorCookie{cookie} -} - -// Request reply for AllocColor -// size: 20 -type AllocColorReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - Red uint16 - Green uint16 - Blue uint16 - // padding: 2 bytes - Pixel uint32 -} - -// Waits and reads reply data from request AllocColor -func (cook AllocColorCookie) Reply() (*AllocColorReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return allocColorReply(buf), nil -} - -// Read reply into structure from buffer for AllocColor -func allocColorReply(buf []byte) *AllocColorReply { - v := new(AllocColorReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Red = Get16(buf[b:]) - b += 2 - - v.Green = Get16(buf[b:]) - b += 2 - - v.Blue = Get16(buf[b:]) - b += 2 - - b += 2 // padding - - v.Pixel = Get32(buf[b:]) - b += 4 - - return v -} - -func (cook AllocColorCookie) Check() error { - return cook.check() -} - -// Write request to wire for AllocColor -func (c *Conn) allocColorRequest(Cmap Colormap, Red uint16, Green uint16, Blue uint16) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 84 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - Put16(buf[b:], Red) - b += 2 - - Put16(buf[b:], Green) - b += 2 - - Put16(buf[b:], Blue) - b += 2 - - b += 2 // padding - - return buf -} - -// Request AllocNamedColor -// size: pad((12 + pad((int(NameLen) * 1)))) -type AllocNamedColorCookie struct { - *cookie -} - -func (c *Conn) AllocNamedColor(Cmap Colormap, NameLen uint16, Name string) AllocNamedColorCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.allocNamedColorRequest(Cmap, NameLen, Name), cookie) - return AllocNamedColorCookie{cookie} -} - -func (c *Conn) AllocNamedColorUnchecked(Cmap Colormap, NameLen uint16, Name string) AllocNamedColorCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.allocNamedColorRequest(Cmap, NameLen, Name), cookie) - return AllocNamedColorCookie{cookie} -} - -// Request reply for AllocNamedColor -// size: 24 -type AllocNamedColorReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - Pixel uint32 - ExactRed uint16 - ExactGreen uint16 - ExactBlue uint16 - VisualRed uint16 - VisualGreen uint16 - VisualBlue uint16 -} - -// Waits and reads reply data from request AllocNamedColor -func (cook AllocNamedColorCookie) Reply() (*AllocNamedColorReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return allocNamedColorReply(buf), nil -} - -// Read reply into structure from buffer for AllocNamedColor -func allocNamedColorReply(buf []byte) *AllocNamedColorReply { - v := new(AllocNamedColorReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Pixel = Get32(buf[b:]) - b += 4 - - v.ExactRed = Get16(buf[b:]) - b += 2 - - v.ExactGreen = Get16(buf[b:]) - b += 2 - - v.ExactBlue = Get16(buf[b:]) - b += 2 - - v.VisualRed = Get16(buf[b:]) - b += 2 - - v.VisualGreen = Get16(buf[b:]) - b += 2 - - v.VisualBlue = Get16(buf[b:]) - b += 2 - - return v -} - -func (cook AllocNamedColorCookie) Check() error { - return cook.check() -} - -// Write request to wire for AllocNamedColor -func (c *Conn) allocNamedColorRequest(Cmap Colormap, NameLen uint16, Name string) []byte { - size := pad((12 + pad((int(NameLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 85 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - Put16(buf[b:], NameLen) - b += 2 - - b += 2 // padding - - copy(buf[b:], Name[:NameLen]) - b += pad(int(NameLen)) - - return buf -} - -// Request AllocColorCells -// size: 12 -type AllocColorCellsCookie struct { - *cookie -} - -func (c *Conn) AllocColorCells(Contiguous bool, Cmap Colormap, Colors uint16, Planes uint16) AllocColorCellsCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.allocColorCellsRequest(Contiguous, Cmap, Colors, Planes), cookie) - return AllocColorCellsCookie{cookie} -} - -func (c *Conn) AllocColorCellsUnchecked(Contiguous bool, Cmap Colormap, Colors uint16, Planes uint16) AllocColorCellsCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.allocColorCellsRequest(Contiguous, Cmap, Colors, Planes), cookie) - return AllocColorCellsCookie{cookie} -} - -// Request reply for AllocColorCells -// size: ((32 + pad((int(PixelsLen) * 4))) + pad((int(MasksLen) * 4))) -type AllocColorCellsReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - PixelsLen uint16 - MasksLen uint16 - // padding: 20 bytes - Pixels []uint32 // size: pad((int(PixelsLen) * 4)) - Masks []uint32 // size: pad((int(MasksLen) * 4)) -} - -// Waits and reads reply data from request AllocColorCells -func (cook AllocColorCellsCookie) Reply() (*AllocColorCellsReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return allocColorCellsReply(buf), nil -} - -// Read reply into structure from buffer for AllocColorCells -func allocColorCellsReply(buf []byte) *AllocColorCellsReply { - v := new(AllocColorCellsReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.PixelsLen = Get16(buf[b:]) - b += 2 - - v.MasksLen = Get16(buf[b:]) - b += 2 - - b += 20 // padding - - v.Pixels = make([]uint32, v.PixelsLen) - for i := 0; i < int(v.PixelsLen); i++ { - v.Pixels[i] = Get32(buf[b:]) - b += 4 - } - b = pad(b) - - v.Masks = make([]uint32, v.MasksLen) - for i := 0; i < int(v.MasksLen); i++ { - v.Masks[i] = Get32(buf[b:]) - b += 4 - } - b = pad(b) - - return v -} - -func (cook AllocColorCellsCookie) Check() error { - return cook.check() -} - -// Write request to wire for AllocColorCells -func (c *Conn) allocColorCellsRequest(Contiguous bool, Cmap Colormap, Colors uint16, Planes uint16) []byte { - size := 12 - b := 0 - buf := make([]byte, size) - - buf[b] = 86 // request opcode - b += 1 - - if Contiguous { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - Put16(buf[b:], Colors) - b += 2 - - Put16(buf[b:], Planes) - b += 2 - - return buf -} - -// Request AllocColorPlanes -// size: 16 -type AllocColorPlanesCookie struct { - *cookie -} - -func (c *Conn) AllocColorPlanes(Contiguous bool, Cmap Colormap, Colors uint16, Reds uint16, Greens uint16, Blues uint16) AllocColorPlanesCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.allocColorPlanesRequest(Contiguous, Cmap, Colors, Reds, Greens, Blues), cookie) - return AllocColorPlanesCookie{cookie} -} - -func (c *Conn) AllocColorPlanesUnchecked(Contiguous bool, Cmap Colormap, Colors uint16, Reds uint16, Greens uint16, Blues uint16) AllocColorPlanesCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.allocColorPlanesRequest(Contiguous, Cmap, Colors, Reds, Greens, Blues), cookie) - return AllocColorPlanesCookie{cookie} -} - -// Request reply for AllocColorPlanes -// size: (32 + pad((int(PixelsLen) * 4))) -type AllocColorPlanesReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - PixelsLen uint16 - // padding: 2 bytes - RedMask uint32 - GreenMask uint32 - BlueMask uint32 - // padding: 8 bytes - Pixels []uint32 // size: pad((int(PixelsLen) * 4)) -} - -// Waits and reads reply data from request AllocColorPlanes -func (cook AllocColorPlanesCookie) Reply() (*AllocColorPlanesReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return allocColorPlanesReply(buf), nil -} - -// Read reply into structure from buffer for AllocColorPlanes -func allocColorPlanesReply(buf []byte) *AllocColorPlanesReply { - v := new(AllocColorPlanesReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.PixelsLen = Get16(buf[b:]) - b += 2 - - b += 2 // padding - - v.RedMask = Get32(buf[b:]) - b += 4 - - v.GreenMask = Get32(buf[b:]) - b += 4 - - v.BlueMask = Get32(buf[b:]) - b += 4 - - b += 8 // padding - - v.Pixels = make([]uint32, v.PixelsLen) - for i := 0; i < int(v.PixelsLen); i++ { - v.Pixels[i] = Get32(buf[b:]) - b += 4 - } - b = pad(b) - - return v -} - -func (cook AllocColorPlanesCookie) Check() error { - return cook.check() -} - -// Write request to wire for AllocColorPlanes -func (c *Conn) allocColorPlanesRequest(Contiguous bool, Cmap Colormap, Colors uint16, Reds uint16, Greens uint16, Blues uint16) []byte { - size := 16 - b := 0 - buf := make([]byte, size) - - buf[b] = 87 // request opcode - b += 1 - - if Contiguous { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - Put16(buf[b:], Colors) - b += 2 - - Put16(buf[b:], Reds) - b += 2 - - Put16(buf[b:], Greens) - b += 2 - - Put16(buf[b:], Blues) - b += 2 - - return buf -} - -// Request FreeColors -// size: pad((12 + pad((len(Pixels) * 4)))) -type FreeColorsCookie struct { - *cookie -} - -// Write request to wire for FreeColors -func (c *Conn) FreeColors(Cmap Colormap, PlaneMask uint32, Pixels []uint32) FreeColorsCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.freeColorsRequest(Cmap, PlaneMask, Pixels), cookie) - return FreeColorsCookie{cookie} -} - -func (c *Conn) FreeColorsChecked(Cmap Colormap, PlaneMask uint32, Pixels []uint32) FreeColorsCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.freeColorsRequest(Cmap, PlaneMask, Pixels), cookie) - return FreeColorsCookie{cookie} -} - -func (cook FreeColorsCookie) Check() error { - return cook.check() -} - -// Write request to wire for FreeColors -func (c *Conn) freeColorsRequest(Cmap Colormap, PlaneMask uint32, Pixels []uint32) []byte { - size := pad((12 + pad((len(Pixels) * 4)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 88 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - Put32(buf[b:], PlaneMask) - b += 4 - - for i := 0; i < int(len(Pixels)); i++ { - Put32(buf[b:], Pixels[i]) - b += 4 - } - b = pad(b) - - return buf -} - -// Request StoreColors -// size: pad((8 + pad((len(Items) * 12)))) -type StoreColorsCookie struct { - *cookie -} - -// Write request to wire for StoreColors -func (c *Conn) StoreColors(Cmap Colormap, Items []Coloritem) StoreColorsCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.storeColorsRequest(Cmap, Items), cookie) - return StoreColorsCookie{cookie} -} - -func (c *Conn) StoreColorsChecked(Cmap Colormap, Items []Coloritem) StoreColorsCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.storeColorsRequest(Cmap, Items), cookie) - return StoreColorsCookie{cookie} -} - -func (cook StoreColorsCookie) Check() error { - return cook.check() -} - -// Write request to wire for StoreColors -func (c *Conn) storeColorsRequest(Cmap Colormap, Items []Coloritem) []byte { - size := pad((8 + pad((len(Items) * 12)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 89 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - b += ColoritemListBytes(buf[b:], Items) - - return buf -} - -// Request StoreNamedColor -// size: pad((16 + pad((int(NameLen) * 1)))) -type StoreNamedColorCookie struct { - *cookie -} - -// Write request to wire for StoreNamedColor -func (c *Conn) StoreNamedColor(Flags byte, Cmap Colormap, Pixel uint32, NameLen uint16, Name string) StoreNamedColorCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.storeNamedColorRequest(Flags, Cmap, Pixel, NameLen, Name), cookie) - return StoreNamedColorCookie{cookie} -} - -func (c *Conn) StoreNamedColorChecked(Flags byte, Cmap Colormap, Pixel uint32, NameLen uint16, Name string) StoreNamedColorCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.storeNamedColorRequest(Flags, Cmap, Pixel, NameLen, Name), cookie) - return StoreNamedColorCookie{cookie} -} - -func (cook StoreNamedColorCookie) Check() error { - return cook.check() -} - -// Write request to wire for StoreNamedColor -func (c *Conn) storeNamedColorRequest(Flags byte, Cmap Colormap, Pixel uint32, NameLen uint16, Name string) []byte { - size := pad((16 + pad((int(NameLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 90 // request opcode - b += 1 - - buf[b] = Flags - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - Put32(buf[b:], Pixel) - b += 4 - - Put16(buf[b:], NameLen) - b += 2 - - b += 2 // padding - - copy(buf[b:], Name[:NameLen]) - b += pad(int(NameLen)) - - return buf -} - -// Request QueryColors -// size: pad((8 + pad((len(Pixels) * 4)))) -type QueryColorsCookie struct { - *cookie -} - -func (c *Conn) QueryColors(Cmap Colormap, Pixels []uint32) QueryColorsCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.queryColorsRequest(Cmap, Pixels), cookie) - return QueryColorsCookie{cookie} -} - -func (c *Conn) QueryColorsUnchecked(Cmap Colormap, Pixels []uint32) QueryColorsCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.queryColorsRequest(Cmap, Pixels), cookie) - return QueryColorsCookie{cookie} -} - -// Request reply for QueryColors -// size: (32 + pad((int(ColorsLen) * 8))) -type QueryColorsReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - ColorsLen uint16 - // padding: 22 bytes - Colors []Rgb // size: pad((int(ColorsLen) * 8)) -} - -// Waits and reads reply data from request QueryColors -func (cook QueryColorsCookie) Reply() (*QueryColorsReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return queryColorsReply(buf), nil -} - -// Read reply into structure from buffer for QueryColors -func queryColorsReply(buf []byte) *QueryColorsReply { - v := new(QueryColorsReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.ColorsLen = Get16(buf[b:]) - b += 2 - - b += 22 // padding - - v.Colors = make([]Rgb, v.ColorsLen) - b += ReadRgbList(buf[b:], v.Colors) - - return v -} - -func (cook QueryColorsCookie) Check() error { - return cook.check() -} - -// Write request to wire for QueryColors -func (c *Conn) queryColorsRequest(Cmap Colormap, Pixels []uint32) []byte { - size := pad((8 + pad((len(Pixels) * 4)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 91 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - for i := 0; i < int(len(Pixels)); i++ { - Put32(buf[b:], Pixels[i]) - b += 4 - } - b = pad(b) - - return buf -} - -// Request LookupColor -// size: pad((12 + pad((int(NameLen) * 1)))) -type LookupColorCookie struct { - *cookie -} - -func (c *Conn) LookupColor(Cmap Colormap, NameLen uint16, Name string) LookupColorCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.lookupColorRequest(Cmap, NameLen, Name), cookie) - return LookupColorCookie{cookie} -} - -func (c *Conn) LookupColorUnchecked(Cmap Colormap, NameLen uint16, Name string) LookupColorCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.lookupColorRequest(Cmap, NameLen, Name), cookie) - return LookupColorCookie{cookie} -} - -// Request reply for LookupColor -// size: 20 -type LookupColorReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - ExactRed uint16 - ExactGreen uint16 - ExactBlue uint16 - VisualRed uint16 - VisualGreen uint16 - VisualBlue uint16 -} - -// Waits and reads reply data from request LookupColor -func (cook LookupColorCookie) Reply() (*LookupColorReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return lookupColorReply(buf), nil -} - -// Read reply into structure from buffer for LookupColor -func lookupColorReply(buf []byte) *LookupColorReply { - v := new(LookupColorReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.ExactRed = Get16(buf[b:]) - b += 2 - - v.ExactGreen = Get16(buf[b:]) - b += 2 - - v.ExactBlue = Get16(buf[b:]) - b += 2 - - v.VisualRed = Get16(buf[b:]) - b += 2 - - v.VisualGreen = Get16(buf[b:]) - b += 2 - - v.VisualBlue = Get16(buf[b:]) - b += 2 - - return v -} - -func (cook LookupColorCookie) Check() error { - return cook.check() -} - -// Write request to wire for LookupColor -func (c *Conn) lookupColorRequest(Cmap Colormap, NameLen uint16, Name string) []byte { - size := pad((12 + pad((int(NameLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 92 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cmap)) - b += 4 - - Put16(buf[b:], NameLen) - b += 2 - - b += 2 // padding - - copy(buf[b:], Name[:NameLen]) - b += pad(int(NameLen)) - - return buf -} - -// Request CreateCursor -// size: 32 -type CreateCursorCookie struct { - *cookie -} - -// Write request to wire for CreateCursor -func (c *Conn) CreateCursor(Cid Cursor, Source Pixmap, Mask Pixmap, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16, X uint16, Y uint16) CreateCursorCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.createCursorRequest(Cid, Source, Mask, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue, X, Y), cookie) - return CreateCursorCookie{cookie} -} - -func (c *Conn) CreateCursorChecked(Cid Cursor, Source Pixmap, Mask Pixmap, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16, X uint16, Y uint16) CreateCursorCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.createCursorRequest(Cid, Source, Mask, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue, X, Y), cookie) - return CreateCursorCookie{cookie} -} - -func (cook CreateCursorCookie) Check() error { - return cook.check() -} - -// Write request to wire for CreateCursor -func (c *Conn) createCursorRequest(Cid Cursor, Source Pixmap, Mask Pixmap, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16, X uint16, Y uint16) []byte { - size := 32 - b := 0 - buf := make([]byte, size) - - buf[b] = 93 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cid)) - b += 4 - - Put32(buf[b:], uint32(Source)) - b += 4 - - Put32(buf[b:], uint32(Mask)) - b += 4 - - Put16(buf[b:], ForeRed) - b += 2 - - Put16(buf[b:], ForeGreen) - b += 2 - - Put16(buf[b:], ForeBlue) - b += 2 - - Put16(buf[b:], BackRed) - b += 2 - - Put16(buf[b:], BackGreen) - b += 2 - - Put16(buf[b:], BackBlue) - b += 2 - - Put16(buf[b:], X) - b += 2 - - Put16(buf[b:], Y) - b += 2 - - return buf -} - -// Request CreateGlyphCursor -// size: 32 -type CreateGlyphCursorCookie struct { - *cookie -} - -// Write request to wire for CreateGlyphCursor -func (c *Conn) CreateGlyphCursor(Cid Cursor, SourceFont Font, MaskFont Font, SourceChar uint16, MaskChar uint16, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) CreateGlyphCursorCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.createGlyphCursorRequest(Cid, SourceFont, MaskFont, SourceChar, MaskChar, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue), cookie) - return CreateGlyphCursorCookie{cookie} -} - -func (c *Conn) CreateGlyphCursorChecked(Cid Cursor, SourceFont Font, MaskFont Font, SourceChar uint16, MaskChar uint16, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) CreateGlyphCursorCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.createGlyphCursorRequest(Cid, SourceFont, MaskFont, SourceChar, MaskChar, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue), cookie) - return CreateGlyphCursorCookie{cookie} -} - -func (cook CreateGlyphCursorCookie) Check() error { - return cook.check() -} - -// Write request to wire for CreateGlyphCursor -func (c *Conn) createGlyphCursorRequest(Cid Cursor, SourceFont Font, MaskFont Font, SourceChar uint16, MaskChar uint16, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) []byte { - size := 32 - b := 0 - buf := make([]byte, size) - - buf[b] = 94 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cid)) - b += 4 - - Put32(buf[b:], uint32(SourceFont)) - b += 4 - - Put32(buf[b:], uint32(MaskFont)) - b += 4 - - Put16(buf[b:], SourceChar) - b += 2 - - Put16(buf[b:], MaskChar) - b += 2 - - Put16(buf[b:], ForeRed) - b += 2 - - Put16(buf[b:], ForeGreen) - b += 2 - - Put16(buf[b:], ForeBlue) - b += 2 - - Put16(buf[b:], BackRed) - b += 2 - - Put16(buf[b:], BackGreen) - b += 2 - - Put16(buf[b:], BackBlue) - b += 2 - - return buf -} - -// Request FreeCursor -// size: 8 -type FreeCursorCookie struct { - *cookie -} - -// Write request to wire for FreeCursor -func (c *Conn) FreeCursor(Cursor Cursor) FreeCursorCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.freeCursorRequest(Cursor), cookie) - return FreeCursorCookie{cookie} -} - -func (c *Conn) FreeCursorChecked(Cursor Cursor) FreeCursorCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.freeCursorRequest(Cursor), cookie) - return FreeCursorCookie{cookie} -} - -func (cook FreeCursorCookie) Check() error { - return cook.check() -} - -// Write request to wire for FreeCursor -func (c *Conn) freeCursorRequest(Cursor Cursor) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 95 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cursor)) - b += 4 - - return buf -} - -// Request RecolorCursor -// size: 20 -type RecolorCursorCookie struct { - *cookie -} - -// Write request to wire for RecolorCursor -func (c *Conn) RecolorCursor(Cursor Cursor, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) RecolorCursorCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.recolorCursorRequest(Cursor, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue), cookie) - return RecolorCursorCookie{cookie} -} - -func (c *Conn) RecolorCursorChecked(Cursor Cursor, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) RecolorCursorCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.recolorCursorRequest(Cursor, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue), cookie) - return RecolorCursorCookie{cookie} -} - -func (cook RecolorCursorCookie) Check() error { - return cook.check() -} - -// Write request to wire for RecolorCursor -func (c *Conn) recolorCursorRequest(Cursor Cursor, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) []byte { - size := 20 - b := 0 - buf := make([]byte, size) - - buf[b] = 96 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Cursor)) - b += 4 - - Put16(buf[b:], ForeRed) - b += 2 - - Put16(buf[b:], ForeGreen) - b += 2 - - Put16(buf[b:], ForeBlue) - b += 2 - - Put16(buf[b:], BackRed) - b += 2 - - Put16(buf[b:], BackGreen) - b += 2 - - Put16(buf[b:], BackBlue) - b += 2 - - return buf -} - -// Request QueryBestSize -// size: 12 -type QueryBestSizeCookie struct { - *cookie -} - -func (c *Conn) QueryBestSize(Class byte, Drawable Drawable, Width uint16, Height uint16) QueryBestSizeCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.queryBestSizeRequest(Class, Drawable, Width, Height), cookie) - return QueryBestSizeCookie{cookie} -} - -func (c *Conn) QueryBestSizeUnchecked(Class byte, Drawable Drawable, Width uint16, Height uint16) QueryBestSizeCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.queryBestSizeRequest(Class, Drawable, Width, Height), cookie) - return QueryBestSizeCookie{cookie} -} - -// Request reply for QueryBestSize -// size: 12 -type QueryBestSizeReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - Width uint16 - Height uint16 -} - -// Waits and reads reply data from request QueryBestSize -func (cook QueryBestSizeCookie) Reply() (*QueryBestSizeReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return queryBestSizeReply(buf), nil -} - -// Read reply into structure from buffer for QueryBestSize -func queryBestSizeReply(buf []byte) *QueryBestSizeReply { - v := new(QueryBestSizeReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Width = Get16(buf[b:]) - b += 2 - - v.Height = Get16(buf[b:]) - b += 2 - - return v -} - -func (cook QueryBestSizeCookie) Check() error { - return cook.check() -} - -// Write request to wire for QueryBestSize -func (c *Conn) queryBestSizeRequest(Class byte, Drawable Drawable, Width uint16, Height uint16) []byte { - size := 12 - b := 0 - buf := make([]byte, size) - - buf[b] = 97 // request opcode - b += 1 - - buf[b] = Class - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Drawable)) - b += 4 - - Put16(buf[b:], Width) - b += 2 - - Put16(buf[b:], Height) - b += 2 - - return buf -} - -// Request QueryExtension -// size: pad((8 + pad((int(NameLen) * 1)))) -type QueryExtensionCookie struct { - *cookie -} - -func (c *Conn) QueryExtension(NameLen uint16, Name string) QueryExtensionCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.queryExtensionRequest(NameLen, Name), cookie) - return QueryExtensionCookie{cookie} -} - -func (c *Conn) QueryExtensionUnchecked(NameLen uint16, Name string) QueryExtensionCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.queryExtensionRequest(NameLen, Name), cookie) - return QueryExtensionCookie{cookie} -} - -// Request reply for QueryExtension -// size: 12 -type QueryExtensionReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - Present bool - MajorOpcode byte - FirstEvent byte - FirstError byte -} - -// Waits and reads reply data from request QueryExtension -func (cook QueryExtensionCookie) Reply() (*QueryExtensionReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return queryExtensionReply(buf), nil -} - -// Read reply into structure from buffer for QueryExtension -func queryExtensionReply(buf []byte) *QueryExtensionReply { - v := new(QueryExtensionReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - if buf[b] == 1 { - v.Present = true - } else { - v.Present = false - } - b += 1 - - v.MajorOpcode = buf[b] - b += 1 - - v.FirstEvent = buf[b] - b += 1 - - v.FirstError = buf[b] - b += 1 - - return v -} - -func (cook QueryExtensionCookie) Check() error { - return cook.check() -} - -// Write request to wire for QueryExtension -func (c *Conn) queryExtensionRequest(NameLen uint16, Name string) []byte { - size := pad((8 + pad((int(NameLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 98 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put16(buf[b:], NameLen) - b += 2 - - b += 2 // padding - - copy(buf[b:], Name[:NameLen]) - b += pad(int(NameLen)) - - return buf -} - -// Request ListExtensions -// size: 4 -type ListExtensionsCookie struct { - *cookie -} - -func (c *Conn) ListExtensions() ListExtensionsCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.listExtensionsRequest(), cookie) - return ListExtensionsCookie{cookie} -} - -func (c *Conn) ListExtensionsUnchecked() ListExtensionsCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.listExtensionsRequest(), cookie) - return ListExtensionsCookie{cookie} -} - -// Request reply for ListExtensions -// size: (32 + StrListSize(Names)) -type ListExtensionsReply struct { - Sequence uint16 - Length uint32 - NamesLen byte - // padding: 24 bytes - Names []Str // size: StrListSize(Names) -} - -// Waits and reads reply data from request ListExtensions -func (cook ListExtensionsCookie) Reply() (*ListExtensionsReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return listExtensionsReply(buf), nil -} - -// Read reply into structure from buffer for ListExtensions -func listExtensionsReply(buf []byte) *ListExtensionsReply { - v := new(ListExtensionsReply) - b := 1 // skip reply determinant - - v.NamesLen = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - b += 24 // padding - - v.Names = make([]Str, v.NamesLen) - b += ReadStrList(buf[b:], v.Names) - - return v -} - -func (cook ListExtensionsCookie) Check() error { - return cook.check() -} - -// Write request to wire for ListExtensions -func (c *Conn) listExtensionsRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 99 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request ChangeKeyboardMapping -// size: pad((8 + pad(((int(KeycodeCount) * int(KeysymsPerKeycode)) * 4)))) -type ChangeKeyboardMappingCookie struct { - *cookie -} - -// Write request to wire for ChangeKeyboardMapping -func (c *Conn) ChangeKeyboardMapping(KeycodeCount byte, FirstKeycode Keycode, KeysymsPerKeycode byte, Keysyms []Keysym) ChangeKeyboardMappingCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.changeKeyboardMappingRequest(KeycodeCount, FirstKeycode, KeysymsPerKeycode, Keysyms), cookie) - return ChangeKeyboardMappingCookie{cookie} -} - -func (c *Conn) ChangeKeyboardMappingChecked(KeycodeCount byte, FirstKeycode Keycode, KeysymsPerKeycode byte, Keysyms []Keysym) ChangeKeyboardMappingCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.changeKeyboardMappingRequest(KeycodeCount, FirstKeycode, KeysymsPerKeycode, Keysyms), cookie) - return ChangeKeyboardMappingCookie{cookie} -} - -func (cook ChangeKeyboardMappingCookie) Check() error { - return cook.check() -} - -// Write request to wire for ChangeKeyboardMapping -func (c *Conn) changeKeyboardMappingRequest(KeycodeCount byte, FirstKeycode Keycode, KeysymsPerKeycode byte, Keysyms []Keysym) []byte { - size := pad((8 + pad(((int(KeycodeCount) * int(KeysymsPerKeycode)) * 4)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 100 // request opcode - b += 1 - - buf[b] = KeycodeCount - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - buf[b] = byte(FirstKeycode) - b += 1 - - buf[b] = KeysymsPerKeycode - b += 1 - - b += 2 // padding - - for i := 0; i < int((int(KeycodeCount) * int(KeysymsPerKeycode))); i++ { - Put32(buf[b:], uint32(Keysyms[i])) - b += 4 - } - b = pad(b) - - return buf -} - -// Request GetKeyboardMapping -// size: 8 -type GetKeyboardMappingCookie struct { - *cookie -} - -func (c *Conn) GetKeyboardMapping(FirstKeycode Keycode, Count byte) GetKeyboardMappingCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getKeyboardMappingRequest(FirstKeycode, Count), cookie) - return GetKeyboardMappingCookie{cookie} -} - -func (c *Conn) GetKeyboardMappingUnchecked(FirstKeycode Keycode, Count byte) GetKeyboardMappingCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getKeyboardMappingRequest(FirstKeycode, Count), cookie) - return GetKeyboardMappingCookie{cookie} -} - -// Request reply for GetKeyboardMapping -// size: (32 + pad((int(Length) * 4))) -type GetKeyboardMappingReply struct { - Sequence uint16 - Length uint32 - KeysymsPerKeycode byte - // padding: 24 bytes - Keysyms []Keysym // size: pad((int(Length) * 4)) -} - -// Waits and reads reply data from request GetKeyboardMapping -func (cook GetKeyboardMappingCookie) Reply() (*GetKeyboardMappingReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getKeyboardMappingReply(buf), nil -} - -// Read reply into structure from buffer for GetKeyboardMapping -func getKeyboardMappingReply(buf []byte) *GetKeyboardMappingReply { - v := new(GetKeyboardMappingReply) - b := 1 // skip reply determinant - - v.KeysymsPerKeycode = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - b += 24 // padding - - v.Keysyms = make([]Keysym, v.Length) - for i := 0; i < int(v.Length); i++ { - v.Keysyms[i] = Keysym(Get32(buf[b:])) - b += 4 - } - b = pad(b) - - return v -} - -func (cook GetKeyboardMappingCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetKeyboardMapping -func (c *Conn) getKeyboardMappingRequest(FirstKeycode Keycode, Count byte) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 101 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - buf[b] = byte(FirstKeycode) - b += 1 - - buf[b] = Count - b += 1 - - return buf -} - -// Request ChangeKeyboardControl -// size: pad((4 + (4 + pad((4 * popCount(int(ValueMask))))))) -type ChangeKeyboardControlCookie struct { - *cookie -} - -// Write request to wire for ChangeKeyboardControl -func (c *Conn) ChangeKeyboardControl(ValueMask uint32, ValueList []uint32) ChangeKeyboardControlCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.changeKeyboardControlRequest(ValueMask, ValueList), cookie) - return ChangeKeyboardControlCookie{cookie} -} - -func (c *Conn) ChangeKeyboardControlChecked(ValueMask uint32, ValueList []uint32) ChangeKeyboardControlCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.changeKeyboardControlRequest(ValueMask, ValueList), cookie) - return ChangeKeyboardControlCookie{cookie} -} - -func (cook ChangeKeyboardControlCookie) Check() error { - return cook.check() -} - -// Write request to wire for ChangeKeyboardControl -func (c *Conn) changeKeyboardControlRequest(ValueMask uint32, ValueList []uint32) []byte { - size := pad((4 + (4 + pad((4 * popCount(int(ValueMask))))))) - b := 0 - buf := make([]byte, size) - - buf[b] = 102 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], ValueMask) - b += 4 - for i := 0; i < popCount(int(ValueMask)); i++ { - Put32(buf[b:], ValueList[i]) - b += 4 - } - b = pad(b) - - return buf -} - -// Request GetKeyboardControl -// size: 4 -type GetKeyboardControlCookie struct { - *cookie -} - -func (c *Conn) GetKeyboardControl() GetKeyboardControlCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getKeyboardControlRequest(), cookie) - return GetKeyboardControlCookie{cookie} -} - -func (c *Conn) GetKeyboardControlUnchecked() GetKeyboardControlCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getKeyboardControlRequest(), cookie) - return GetKeyboardControlCookie{cookie} -} - -// Request reply for GetKeyboardControl -// size: 52 -type GetKeyboardControlReply struct { - Sequence uint16 - Length uint32 - GlobalAutoRepeat byte - LedMask uint32 - KeyClickPercent byte - BellPercent byte - BellPitch uint16 - BellDuration uint16 - // padding: 2 bytes - AutoRepeats []byte // size: 32 -} - -// Waits and reads reply data from request GetKeyboardControl -func (cook GetKeyboardControlCookie) Reply() (*GetKeyboardControlReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getKeyboardControlReply(buf), nil -} - -// Read reply into structure from buffer for GetKeyboardControl -func getKeyboardControlReply(buf []byte) *GetKeyboardControlReply { - v := new(GetKeyboardControlReply) - b := 1 // skip reply determinant - - v.GlobalAutoRepeat = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.LedMask = Get32(buf[b:]) - b += 4 - - v.KeyClickPercent = buf[b] - b += 1 - - v.BellPercent = buf[b] - b += 1 - - v.BellPitch = Get16(buf[b:]) - b += 2 - - v.BellDuration = Get16(buf[b:]) - b += 2 - - b += 2 // padding - - v.AutoRepeats = make([]byte, 32) - copy(v.AutoRepeats[:32], buf[b:]) - b += pad(int(32)) - - return v -} - -func (cook GetKeyboardControlCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetKeyboardControl -func (c *Conn) getKeyboardControlRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 103 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request Bell -// size: 4 -type BellCookie struct { - *cookie -} - -// Write request to wire for Bell -func (c *Conn) Bell(Percent int8) BellCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.bellRequest(Percent), cookie) - return BellCookie{cookie} -} - -func (c *Conn) BellChecked(Percent int8) BellCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.bellRequest(Percent), cookie) - return BellCookie{cookie} -} - -func (cook BellCookie) Check() error { - return cook.check() -} - -// Write request to wire for Bell -func (c *Conn) bellRequest(Percent int8) []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 104 // request opcode - b += 1 - - buf[b] = byte(Percent) - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request ChangePointerControl -// size: 12 -type ChangePointerControlCookie struct { - *cookie -} - -// Write request to wire for ChangePointerControl -func (c *Conn) ChangePointerControl(AccelerationNumerator int16, AccelerationDenominator int16, Threshold int16, DoAcceleration bool, DoThreshold bool) ChangePointerControlCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.changePointerControlRequest(AccelerationNumerator, AccelerationDenominator, Threshold, DoAcceleration, DoThreshold), cookie) - return ChangePointerControlCookie{cookie} -} - -func (c *Conn) ChangePointerControlChecked(AccelerationNumerator int16, AccelerationDenominator int16, Threshold int16, DoAcceleration bool, DoThreshold bool) ChangePointerControlCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.changePointerControlRequest(AccelerationNumerator, AccelerationDenominator, Threshold, DoAcceleration, DoThreshold), cookie) - return ChangePointerControlCookie{cookie} -} - -func (cook ChangePointerControlCookie) Check() error { - return cook.check() -} - -// Write request to wire for ChangePointerControl -func (c *Conn) changePointerControlRequest(AccelerationNumerator int16, AccelerationDenominator int16, Threshold int16, DoAcceleration bool, DoThreshold bool) []byte { - size := 12 - b := 0 - buf := make([]byte, size) - - buf[b] = 105 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put16(buf[b:], uint16(AccelerationNumerator)) - b += 2 - - Put16(buf[b:], uint16(AccelerationDenominator)) - b += 2 - - Put16(buf[b:], uint16(Threshold)) - b += 2 - - if DoAcceleration { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - if DoThreshold { - buf[b] = 1 - } else { - buf[b] = 0 - } - b += 1 - - return buf -} - -// Request GetPointerControl -// size: 4 -type GetPointerControlCookie struct { - *cookie -} - -func (c *Conn) GetPointerControl() GetPointerControlCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getPointerControlRequest(), cookie) - return GetPointerControlCookie{cookie} -} - -func (c *Conn) GetPointerControlUnchecked() GetPointerControlCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getPointerControlRequest(), cookie) - return GetPointerControlCookie{cookie} -} - -// Request reply for GetPointerControl -// size: 32 -type GetPointerControlReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - AccelerationNumerator uint16 - AccelerationDenominator uint16 - Threshold uint16 - // padding: 18 bytes -} - -// Waits and reads reply data from request GetPointerControl -func (cook GetPointerControlCookie) Reply() (*GetPointerControlReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getPointerControlReply(buf), nil -} - -// Read reply into structure from buffer for GetPointerControl -func getPointerControlReply(buf []byte) *GetPointerControlReply { - v := new(GetPointerControlReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.AccelerationNumerator = Get16(buf[b:]) - b += 2 - - v.AccelerationDenominator = Get16(buf[b:]) - b += 2 - - v.Threshold = Get16(buf[b:]) - b += 2 - - b += 18 // padding - - return v -} - -func (cook GetPointerControlCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetPointerControl -func (c *Conn) getPointerControlRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 106 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request SetScreenSaver -// size: 12 -type SetScreenSaverCookie struct { - *cookie -} - -// Write request to wire for SetScreenSaver -func (c *Conn) SetScreenSaver(Timeout int16, Interval int16, PreferBlanking byte, AllowExposures byte) SetScreenSaverCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.setScreenSaverRequest(Timeout, Interval, PreferBlanking, AllowExposures), cookie) - return SetScreenSaverCookie{cookie} -} - -func (c *Conn) SetScreenSaverChecked(Timeout int16, Interval int16, PreferBlanking byte, AllowExposures byte) SetScreenSaverCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.setScreenSaverRequest(Timeout, Interval, PreferBlanking, AllowExposures), cookie) - return SetScreenSaverCookie{cookie} -} - -func (cook SetScreenSaverCookie) Check() error { - return cook.check() -} - -// Write request to wire for SetScreenSaver -func (c *Conn) setScreenSaverRequest(Timeout int16, Interval int16, PreferBlanking byte, AllowExposures byte) []byte { - size := 12 - b := 0 - buf := make([]byte, size) - - buf[b] = 107 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put16(buf[b:], uint16(Timeout)) - b += 2 - - Put16(buf[b:], uint16(Interval)) - b += 2 - - buf[b] = PreferBlanking - b += 1 - - buf[b] = AllowExposures - b += 1 - - return buf -} - -// Request GetScreenSaver -// size: 4 -type GetScreenSaverCookie struct { - *cookie -} - -func (c *Conn) GetScreenSaver() GetScreenSaverCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getScreenSaverRequest(), cookie) - return GetScreenSaverCookie{cookie} -} - -func (c *Conn) GetScreenSaverUnchecked() GetScreenSaverCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getScreenSaverRequest(), cookie) - return GetScreenSaverCookie{cookie} -} - -// Request reply for GetScreenSaver -// size: 32 -type GetScreenSaverReply struct { - Sequence uint16 - Length uint32 - // padding: 1 bytes - Timeout uint16 - Interval uint16 - PreferBlanking byte - AllowExposures byte - // padding: 18 bytes -} - -// Waits and reads reply data from request GetScreenSaver -func (cook GetScreenSaverCookie) Reply() (*GetScreenSaverReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getScreenSaverReply(buf), nil -} - -// Read reply into structure from buffer for GetScreenSaver -func getScreenSaverReply(buf []byte) *GetScreenSaverReply { - v := new(GetScreenSaverReply) - b := 1 // skip reply determinant - - b += 1 // padding - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.Timeout = Get16(buf[b:]) - b += 2 - - v.Interval = Get16(buf[b:]) - b += 2 - - v.PreferBlanking = buf[b] - b += 1 - - v.AllowExposures = buf[b] - b += 1 - - b += 18 // padding - - return v -} - -func (cook GetScreenSaverCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetScreenSaver -func (c *Conn) getScreenSaverRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 108 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request ChangeHosts -// size: pad((8 + pad((int(AddressLen) * 1)))) -type ChangeHostsCookie struct { - *cookie -} - -// Write request to wire for ChangeHosts -func (c *Conn) ChangeHosts(Mode byte, Family byte, AddressLen uint16, Address []byte) ChangeHostsCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.changeHostsRequest(Mode, Family, AddressLen, Address), cookie) - return ChangeHostsCookie{cookie} -} - -func (c *Conn) ChangeHostsChecked(Mode byte, Family byte, AddressLen uint16, Address []byte) ChangeHostsCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.changeHostsRequest(Mode, Family, AddressLen, Address), cookie) - return ChangeHostsCookie{cookie} -} - -func (cook ChangeHostsCookie) Check() error { - return cook.check() -} - -// Write request to wire for ChangeHosts -func (c *Conn) changeHostsRequest(Mode byte, Family byte, AddressLen uint16, Address []byte) []byte { - size := pad((8 + pad((int(AddressLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 109 // request opcode - b += 1 - - buf[b] = Mode - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - buf[b] = Family - b += 1 - - b += 1 // padding - - Put16(buf[b:], AddressLen) - b += 2 - - copy(buf[b:], Address[:AddressLen]) - b += pad(int(AddressLen)) - - return buf -} - -// Request ListHosts -// size: 4 -type ListHostsCookie struct { - *cookie -} - -func (c *Conn) ListHosts() ListHostsCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.listHostsRequest(), cookie) - return ListHostsCookie{cookie} -} - -func (c *Conn) ListHostsUnchecked() ListHostsCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.listHostsRequest(), cookie) - return ListHostsCookie{cookie} -} - -// Request reply for ListHosts -// size: (32 + HostListSize(Hosts)) -type ListHostsReply struct { - Sequence uint16 - Length uint32 - Mode byte - HostsLen uint16 - // padding: 22 bytes - Hosts []Host // size: HostListSize(Hosts) -} - -// Waits and reads reply data from request ListHosts -func (cook ListHostsCookie) Reply() (*ListHostsReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return listHostsReply(buf), nil -} - -// Read reply into structure from buffer for ListHosts -func listHostsReply(buf []byte) *ListHostsReply { - v := new(ListHostsReply) - b := 1 // skip reply determinant - - v.Mode = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - v.HostsLen = Get16(buf[b:]) - b += 2 - - b += 22 // padding - - v.Hosts = make([]Host, v.HostsLen) - b += ReadHostList(buf[b:], v.Hosts) - - return v -} - -func (cook ListHostsCookie) Check() error { - return cook.check() -} - -// Write request to wire for ListHosts -func (c *Conn) listHostsRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 110 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request SetAccessControl -// size: 4 -type SetAccessControlCookie struct { - *cookie -} - -// Write request to wire for SetAccessControl -func (c *Conn) SetAccessControl(Mode byte) SetAccessControlCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.setAccessControlRequest(Mode), cookie) - return SetAccessControlCookie{cookie} -} - -func (c *Conn) SetAccessControlChecked(Mode byte) SetAccessControlCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.setAccessControlRequest(Mode), cookie) - return SetAccessControlCookie{cookie} -} - -func (cook SetAccessControlCookie) Check() error { - return cook.check() -} - -// Write request to wire for SetAccessControl -func (c *Conn) setAccessControlRequest(Mode byte) []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 111 // request opcode - b += 1 - - buf[b] = Mode - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request SetCloseDownMode -// size: 4 -type SetCloseDownModeCookie struct { - *cookie -} - -// Write request to wire for SetCloseDownMode -func (c *Conn) SetCloseDownMode(Mode byte) SetCloseDownModeCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.setCloseDownModeRequest(Mode), cookie) - return SetCloseDownModeCookie{cookie} -} - -func (c *Conn) SetCloseDownModeChecked(Mode byte) SetCloseDownModeCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.setCloseDownModeRequest(Mode), cookie) - return SetCloseDownModeCookie{cookie} -} - -func (cook SetCloseDownModeCookie) Check() error { - return cook.check() -} - -// Write request to wire for SetCloseDownMode -func (c *Conn) setCloseDownModeRequest(Mode byte) []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 112 // request opcode - b += 1 - - buf[b] = Mode - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request KillClient -// size: 8 -type KillClientCookie struct { - *cookie -} - -// Write request to wire for KillClient -func (c *Conn) KillClient(Resource uint32) KillClientCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.killClientRequest(Resource), cookie) - return KillClientCookie{cookie} -} - -func (c *Conn) KillClientChecked(Resource uint32) KillClientCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.killClientRequest(Resource), cookie) - return KillClientCookie{cookie} -} - -func (cook KillClientCookie) Check() error { - return cook.check() -} - -// Write request to wire for KillClient -func (c *Conn) killClientRequest(Resource uint32) []byte { - size := 8 - b := 0 - buf := make([]byte, size) - - buf[b] = 113 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], Resource) - b += 4 - - return buf -} - -// Request RotateProperties -// size: pad((12 + pad((int(AtomsLen) * 4)))) -type RotatePropertiesCookie struct { - *cookie -} - -// Write request to wire for RotateProperties -func (c *Conn) RotateProperties(Window Window, AtomsLen uint16, Delta int16, Atoms []Atom) RotatePropertiesCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.rotatePropertiesRequest(Window, AtomsLen, Delta, Atoms), cookie) - return RotatePropertiesCookie{cookie} -} - -func (c *Conn) RotatePropertiesChecked(Window Window, AtomsLen uint16, Delta int16, Atoms []Atom) RotatePropertiesCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.rotatePropertiesRequest(Window, AtomsLen, Delta, Atoms), cookie) - return RotatePropertiesCookie{cookie} -} - -func (cook RotatePropertiesCookie) Check() error { - return cook.check() -} - -// Write request to wire for RotateProperties -func (c *Conn) rotatePropertiesRequest(Window Window, AtomsLen uint16, Delta int16, Atoms []Atom) []byte { - size := pad((12 + pad((int(AtomsLen) * 4)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 114 // request opcode - b += 1 - - b += 1 // padding - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - Put32(buf[b:], uint32(Window)) - b += 4 - - Put16(buf[b:], AtomsLen) - b += 2 - - Put16(buf[b:], uint16(Delta)) - b += 2 - - for i := 0; i < int(AtomsLen); i++ { - Put32(buf[b:], uint32(Atoms[i])) - b += 4 - } - b = pad(b) - - return buf -} - -// Request ForceScreenSaver -// size: 4 -type ForceScreenSaverCookie struct { - *cookie -} - -// Write request to wire for ForceScreenSaver -func (c *Conn) ForceScreenSaver(Mode byte) ForceScreenSaverCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.forceScreenSaverRequest(Mode), cookie) - return ForceScreenSaverCookie{cookie} -} - -func (c *Conn) ForceScreenSaverChecked(Mode byte) ForceScreenSaverCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.forceScreenSaverRequest(Mode), cookie) - return ForceScreenSaverCookie{cookie} -} - -func (cook ForceScreenSaverCookie) Check() error { - return cook.check() -} - -// Write request to wire for ForceScreenSaver -func (c *Conn) forceScreenSaverRequest(Mode byte) []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 115 // request opcode - b += 1 - - buf[b] = Mode - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request SetPointerMapping -// size: pad((4 + pad((int(MapLen) * 1)))) -type SetPointerMappingCookie struct { - *cookie -} - -func (c *Conn) SetPointerMapping(MapLen byte, Map []byte) SetPointerMappingCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.setPointerMappingRequest(MapLen, Map), cookie) - return SetPointerMappingCookie{cookie} -} - -func (c *Conn) SetPointerMappingUnchecked(MapLen byte, Map []byte) SetPointerMappingCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.setPointerMappingRequest(MapLen, Map), cookie) - return SetPointerMappingCookie{cookie} -} - -// Request reply for SetPointerMapping -// size: 8 -type SetPointerMappingReply struct { - Sequence uint16 - Length uint32 - Status byte -} - -// Waits and reads reply data from request SetPointerMapping -func (cook SetPointerMappingCookie) Reply() (*SetPointerMappingReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return setPointerMappingReply(buf), nil -} - -// Read reply into structure from buffer for SetPointerMapping -func setPointerMappingReply(buf []byte) *SetPointerMappingReply { - v := new(SetPointerMappingReply) - b := 1 // skip reply determinant - - v.Status = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - return v -} - -func (cook SetPointerMappingCookie) Check() error { - return cook.check() -} - -// Write request to wire for SetPointerMapping -func (c *Conn) setPointerMappingRequest(MapLen byte, Map []byte) []byte { - size := pad((4 + pad((int(MapLen) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 116 // request opcode - b += 1 - - buf[b] = MapLen - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - copy(buf[b:], Map[:MapLen]) - b += pad(int(MapLen)) - - return buf -} - -// Request GetPointerMapping -// size: 4 -type GetPointerMappingCookie struct { - *cookie -} - -func (c *Conn) GetPointerMapping() GetPointerMappingCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getPointerMappingRequest(), cookie) - return GetPointerMappingCookie{cookie} -} - -func (c *Conn) GetPointerMappingUnchecked() GetPointerMappingCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getPointerMappingRequest(), cookie) - return GetPointerMappingCookie{cookie} -} - -// Request reply for GetPointerMapping -// size: (32 + pad((int(MapLen) * 1))) -type GetPointerMappingReply struct { - Sequence uint16 - Length uint32 - MapLen byte - // padding: 24 bytes - Map []byte // size: pad((int(MapLen) * 1)) -} - -// Waits and reads reply data from request GetPointerMapping -func (cook GetPointerMappingCookie) Reply() (*GetPointerMappingReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getPointerMappingReply(buf), nil -} - -// Read reply into structure from buffer for GetPointerMapping -func getPointerMappingReply(buf []byte) *GetPointerMappingReply { - v := new(GetPointerMappingReply) - b := 1 // skip reply determinant - - v.MapLen = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - b += 24 // padding - - v.Map = make([]byte, v.MapLen) - copy(v.Map[:v.MapLen], buf[b:]) - b += pad(int(v.MapLen)) - - return v -} - -func (cook GetPointerMappingCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetPointerMapping -func (c *Conn) getPointerMappingRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 117 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request SetModifierMapping -// size: pad((4 + pad(((int(KeycodesPerModifier) * 8) * 1)))) -type SetModifierMappingCookie struct { - *cookie -} - -func (c *Conn) SetModifierMapping(KeycodesPerModifier byte, Keycodes []Keycode) SetModifierMappingCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.setModifierMappingRequest(KeycodesPerModifier, Keycodes), cookie) - return SetModifierMappingCookie{cookie} -} - -func (c *Conn) SetModifierMappingUnchecked(KeycodesPerModifier byte, Keycodes []Keycode) SetModifierMappingCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.setModifierMappingRequest(KeycodesPerModifier, Keycodes), cookie) - return SetModifierMappingCookie{cookie} -} - -// Request reply for SetModifierMapping -// size: 8 -type SetModifierMappingReply struct { - Sequence uint16 - Length uint32 - Status byte -} - -// Waits and reads reply data from request SetModifierMapping -func (cook SetModifierMappingCookie) Reply() (*SetModifierMappingReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return setModifierMappingReply(buf), nil -} - -// Read reply into structure from buffer for SetModifierMapping -func setModifierMappingReply(buf []byte) *SetModifierMappingReply { - v := new(SetModifierMappingReply) - b := 1 // skip reply determinant - - v.Status = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - return v -} - -func (cook SetModifierMappingCookie) Check() error { - return cook.check() -} - -// Write request to wire for SetModifierMapping -func (c *Conn) setModifierMappingRequest(KeycodesPerModifier byte, Keycodes []Keycode) []byte { - size := pad((4 + pad(((int(KeycodesPerModifier) * 8) * 1)))) - b := 0 - buf := make([]byte, size) - - buf[b] = 118 // request opcode - b += 1 - - buf[b] = KeycodesPerModifier - b += 1 - - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - for i := 0; i < int((int(KeycodesPerModifier) * 8)); i++ { - buf[b] = byte(Keycodes[i]) - b += 1 - } - b = pad(b) - - return buf -} - -// Request GetModifierMapping -// size: 4 -type GetModifierMappingCookie struct { - *cookie -} - -func (c *Conn) GetModifierMapping() GetModifierMappingCookie { - cookie := c.newCookie(true, true) - c.newRequest(c.getModifierMappingRequest(), cookie) - return GetModifierMappingCookie{cookie} -} - -func (c *Conn) GetModifierMappingUnchecked() GetModifierMappingCookie { - cookie := c.newCookie(false, true) - c.newRequest(c.getModifierMappingRequest(), cookie) - return GetModifierMappingCookie{cookie} -} - -// Request reply for GetModifierMapping -// size: (32 + pad(((int(KeycodesPerModifier) * 8) * 1))) -type GetModifierMappingReply struct { - Sequence uint16 - Length uint32 - KeycodesPerModifier byte - // padding: 24 bytes - Keycodes []Keycode // size: pad(((int(KeycodesPerModifier) * 8) * 1)) -} - -// Waits and reads reply data from request GetModifierMapping -func (cook GetModifierMappingCookie) Reply() (*GetModifierMappingReply, error) { - buf, err := cook.reply() - if err != nil { - return nil, err - } - if buf == nil { - return nil, nil - } - return getModifierMappingReply(buf), nil -} - -// Read reply into structure from buffer for GetModifierMapping -func getModifierMappingReply(buf []byte) *GetModifierMappingReply { - v := new(GetModifierMappingReply) - b := 1 // skip reply determinant - - v.KeycodesPerModifier = buf[b] - b += 1 - - v.Sequence = Get16(buf[b:]) - b += 2 - - v.Length = Get32(buf[b:]) // 4-byte units - b += 4 - - b += 24 // padding - - v.Keycodes = make([]Keycode, (int(v.KeycodesPerModifier) * 8)) - for i := 0; i < int((int(v.KeycodesPerModifier) * 8)); i++ { - v.Keycodes[i] = Keycode(buf[b]) - b += 1 - } - b = pad(b) - - return v -} - -func (cook GetModifierMappingCookie) Check() error { - return cook.check() -} - -// Write request to wire for GetModifierMapping -func (c *Conn) getModifierMappingRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 119 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} - -// Request NoOperation -// size: 4 -type NoOperationCookie struct { - *cookie -} - -// Write request to wire for NoOperation -func (c *Conn) NoOperation() NoOperationCookie { - cookie := c.newCookie(false, false) - c.newRequest(c.noOperationRequest(), cookie) - return NoOperationCookie{cookie} -} - -func (c *Conn) NoOperationChecked() NoOperationCookie { - cookie := c.newCookie(true, false) - c.newRequest(c.noOperationRequest(), cookie) - return NoOperationCookie{cookie} -} - -func (cook NoOperationCookie) Check() error { - return cook.check() -} - -// Write request to wire for NoOperation -func (c *Conn) noOperationRequest() []byte { - size := 4 - b := 0 - buf := make([]byte, size) - - buf[b] = 127 // request opcode - b += 1 - - b += 1 // padding - Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units - b += 2 - - return buf -} |
