protected override Cursor CreateCursorImpl(CursorRequest cursorReq) { MyCursor myCursor = new MyCursor(); //load cursor from input file //assume cursor is square //resolve if (cursorReq.Url.StartsWith("system:")) { System.Windows.Forms.Cursor selectedCursor = System.Windows.Forms.Cursors.Default; switch (cursorReq.Url.Substring(7)) { case "Arrow": selectedCursor = System.Windows.Forms.Cursors.Arrow; break; case "Pointer": selectedCursor = System.Windows.Forms.Cursors.Hand; break; case "IBeam": selectedCursor = System.Windows.Forms.Cursors.IBeam; break; } myCursor.LoadSystemCursor(selectedCursor); } else { myCursor.LoadFromFile(cursorReq.Url, cursorReq.Width); } return(myCursor); }
public void SendCursorRequest(bool doSet, int ownerId, int shapeId, int topicId) { if (peer == null || peer.PeerState != PeerStateValue.Connected) { return; } peer.OpCustom((byte)DiscussionOpCode.CursorRequest, CursorRequest.Write(doSet, ownerId, shapeId, topicId), true); }
//user U can take cursor on shape S <=> (U doesn't have other cursors && S is free) public void HandleCursorRequest(LitePeer peer, OperationRequest operationRequest, SendParameters sendParameters) { var req = CursorRequest.Read(operationRequest.Parameters); var changes = false; if (req.doSet) { if (_doc.UserHasCursor(req.ownerId)) { return; //already holds another cursor } var sh = _doc.TryGetShape(req.shapeId); if (sh == null) { return; //no such shape } if (sh.GetCursor() != null) { return; // shape is busy } //ok, lock shape _doc.LockShape(sh, req.ownerId); changes = true; } else { //cursor remove operation is always ok var sh = _doc.TryGetShape(req.shapeId); if (sh == null) { return; //no such shape } _doc.UnlockShape(sh, req.ownerId); changes = true; } if (changes) { _room.Broadcast(peer, CursorEvent.Write(req.doSet, req.ownerId, req.shapeId, _topicId), sendParameters, (byte)DiscussionEventCode.CursorEvent, BroadcastTo.RoomAll); //include self } }
protected override Cursor CreateCursorImpl(CursorRequest curReq) => new GlfwCursor();
public static Cursor CreateCursor(CursorRequest curReq) => s_ui_platform.CreateCursorImpl(curReq);
//---------------------------------------------------------------- //cursor protected abstract Cursor CreateCursorImpl(CursorRequest curReq);