Пример #1
0
        private void commitState()
        {
            if (_on)
            {
                toolRegister |= (1 << toolID);
            }
            else
            {
                toolRegister &= ~(1 << toolID);
            }



            ToolChangedEventArgs e = new ToolChangedEventArgs //haha don't mess with this
            {
                button = toolID
            };

            ToolChanged?.Invoke(null, e);
        }
Пример #2
0
 private void OnToolChanged(ToolChangedEventArgs e)
 {
     ToolChanged?.Invoke(this, e);
 }
Пример #3
0
 public void TriggerToolChanged()
 {
     ToolChanged?.Invoke();
 }
Пример #4
0
 private void line_CheckedChanged(object sender, EventArgs e)
 {
     currentDrawingTool = line.Checked ? DrawingTool.Line : currentDrawingTool;
     ToolChanged?.Invoke(currentDrawingTool);
 }
        /// <inheritdoc />
        protected override void DataAvailable(object sender, DataAvailableEventArgs <EvEvent> e)
        {
            var data = e.Data;

            var eventType = (DigitizerEventType)data.Type;

            switch (eventType)
            {
            case DigitizerEventType.Syn:
                State = new StylusState(_currentTool, _currentPosition, _currentPressure, _currentDistance, _currentTilt);
                StylusUpdate?.Invoke(null, State);
                break;

            case DigitizerEventType.Key:
                var key   = (DigitizerEventKeyCode)data.Code;
                var state = (ButtonState)data.Value;

                ButtonStates[key] = state;

                switch (key)
                {
                case DigitizerEventKeyCode.BtnToolPen:
                    _currentTool = StylusTool.Pen;
                    ToolChanged?.Invoke(null, _currentTool);
                    break;

                case DigitizerEventKeyCode.BtnToolRubber:
                    _currentTool = StylusTool.Eraser;
                    ToolChanged?.Invoke(null, _currentTool);
                    break;

                case DigitizerEventKeyCode.BtnTouch:
                case DigitizerEventKeyCode.BtnStylus:
                case DigitizerEventKeyCode.BtnStylus2:
                    if (state == ButtonState.Pressed)
                    {
                        Pressed?.Invoke(null, key);
                    }
                    else
                    {
                        Released?.Invoke(null, key);
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(key), key, key.GetType().Name);
                }

                break;

            case DigitizerEventType.Abs:
                var eventCode = (DigitizerEventAbsCode)data.Code;

                switch (eventCode)
                {
                case DigitizerEventAbsCode.AbsX:
                    _currentPosition.X = data.Value;
                    break;

                case DigitizerEventAbsCode.AbsY:
                    _currentPosition.Y = data.Value;
                    break;

                case DigitizerEventAbsCode.AbsPressure:
                    _currentPressure = data.Value;
                    break;

                case DigitizerEventAbsCode.AbsDistance:
                    _currentDistance = data.Value;
                    break;

                case DigitizerEventAbsCode.AbsTiltX:
                    _currentTilt.X = data.Value;
                    break;

                case DigitizerEventAbsCode.AbsTiltY:
                    _currentTilt.Y = data.Value;
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(eventCode), eventCode, eventCode.GetType().Name);
                }

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(eventType), eventType, eventType.GetType().Name);
            }
        }
Пример #6
0
 private void circle_CheckedChanged(object sender, EventArgs e)
 {
     currentDrawingTool = circle.Checked ? DrawingTool.Circle : currentDrawingTool;
     ToolChanged?.Invoke(currentDrawingTool);
 }
Пример #7
0
 private void path_CheckedChanged(object sender, EventArgs e)
 {
     currentDrawingTool = path.Checked ? DrawingTool.Pen : currentDrawingTool;
     ToolChanged?.Invoke(currentDrawingTool);
 }
Пример #8
0
 private void arrow_CheckedChanged(object sender, EventArgs e)
 {
     currentDrawingTool = arrow.Checked ? DrawingTool.Arrow : currentDrawingTool;
     ToolChanged?.Invoke(currentDrawingTool);
 }
Пример #9
0
 private void text_CheckedChanged(object sender, EventArgs e)
 {
     currentDrawingTool = text.Checked ? DrawingTool.Text : currentDrawingTool;
     ToolChanged?.Invoke(currentDrawingTool);
 }
Пример #10
0
        /// <inheritdoc />
        protected override void DataAvailable(object sender, DataAvailableEventArgs <EvEvent> e)
        {
            var data = e.Data;

            var eventType = (DigitizerEventType)data.Type;

            switch (eventType)
            {
            case DigitizerEventType.Syn:
                State = new StylusState(_currentTool, _currentPosition, _currentPressure, _currentDistance,
                                        _currentTilt);
                StylusUpdate?.Invoke(null, State);

                if (_currentTool == StylusTool.None)
                {
                    _currentDistance = 255;
                    _currentPressure = 0;
                    _currentPosition = Point.Empty;
                    _currentTilt     = Point.Empty;
                }
                else if (_currentDistance > 0)
                {
                    _currentPressure = 0;
                }
                else if (_currentPressure > 0)
                {
                    _currentDistance = 0;
                }

                break;

            case DigitizerEventType.Key:
                var key   = (DigitizerEventKeyCode)data.Code;
                var state = (ButtonState)data.Value;

                ButtonStates[key] = state;

                switch (key)
                {
                case DigitizerEventKeyCode.ToolPen:
                    _currentTool = state == ButtonState.Pressed ? StylusTool.Pen : StylusTool.None;
                    ToolChanged?.Invoke(null, _currentTool);
                    break;

                case DigitizerEventKeyCode.ToolRubber:
                    _currentTool = state == ButtonState.Pressed ? StylusTool.Eraser : StylusTool.None;
                    ToolChanged?.Invoke(null, _currentTool);
                    break;

                case DigitizerEventKeyCode.Touch:
                    // Stylus touch input unreliable, but data is redundant
                    // because of ABS_PRESSURE
                    break;

                case DigitizerEventKeyCode.Stylus:
                case DigitizerEventKeyCode.Stylus2:
                    if (state == ButtonState.Pressed)
                    {
                        Pressed?.Invoke(null, key);
                    }
                    else
                    {
                        Released?.Invoke(null, key);
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(key), key, key.GetType().Name);
                }

                break;

            case DigitizerEventType.Abs:
                var eventCode = (DigitizerEventAbsCode)data.Code;

                switch (eventCode)
                {
                case DigitizerEventAbsCode.AbsX:
                    _currentPosition.X = data.Value;
                    break;

                case DigitizerEventAbsCode.AbsY:
                    _currentPosition.Y = data.Value;
                    break;

                case DigitizerEventAbsCode.AbsPressure:
                    _currentPressure = data.Value;
                    break;

                case DigitizerEventAbsCode.AbsDistance:
                    _currentDistance = data.Value;
                    break;

                case DigitizerEventAbsCode.AbsTiltX:
                    _currentTilt.X = data.Value;
                    break;

                case DigitizerEventAbsCode.AbsTiltY:
                    _currentTilt.Y = data.Value;
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(eventCode), eventCode,
                                                          eventCode.GetType().Name);
                }

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(eventType), eventType, eventType.GetType().Name);
            }
        }