public void LoadList(ScatteringPiecesObservable <CA, LI> mod, string tagUsed)
        {
            EventAggregator thisE = Resolve <EventAggregator>();

            thisE.Subscribe(this);
            SetBinding(TextProperty, nameof(ScatteringPiecesObservable <CA, LI> .TextToAppear));
            SetBinding(IsEnabledProperty, nameof(ScatteringPiecesObservable <CA, LI> .IsEnabled));
            _thisMod    = mod;
            DataContext = _thisMod; // so it can do the text and isenabled.
            _tagUsed    = tagUsed;
            _objectList = mod.RemainingList;
            _objectList.CollectionChanged += ObjectList_CollectionChanged;
            _thisCanvas        = new Canvas();
            _thisCanvas.Height = _thisMod.MaxSize.Height;
            _thisCanvas.Width  = _thisMod.MaxSize.Width;
            Grid tirstGrid = new Grid();

            tirstGrid.Children.Add(ThisDraw);
            ScrollViewer thisScroll = new ScrollViewer();

            thisScroll.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
            thisScroll.VerticalScrollBarVisibility   = ScrollBarVisibility.Auto;
            thisScroll.Content = _thisCanvas;
            tirstGrid.Children.Add(thisScroll);
            if (Text == "" && _thisMod.TextToAppear != "")
            {
                throw new BasicBlankException("The bindings did not even work for text");
            }
            var thisRect = ThisFrame.GetControlArea();

            thisScroll.Margin = new Thickness(thisRect.Left + 3, thisRect.Top + 3, 3, 5); // try this way.
            PopulateCards();
            MouseUp += BoneYardWPF_MouseUp;
            Content  = tirstGrid;
        }
        protected override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            _BackgroundCanvas         = (Canvas)GetTemplateChild(BackgroundCanvasName);
            _TextOverlaysCanvas       = (CanvasControl)GetTemplateChild(TextOverlaysCanvasName);
            _SelectionHighlightBorder = (Border)GetTemplateChild(SelectionHighlightBorderName);
            _CursorIndicatorRectangle = (Rectangle)GetTemplateChild(CursorIndicatorRectangleName);
            _SyntaxErrorToolTip       = (TeachingTip)GetTemplateChild(SyntaxErrorToolTipName);
            ContentScroller           = (ScrollViewer)GetTemplateChild(ContentScrollerName);
            ContentElement            = (ContentPresenter)GetTemplateChild(ContentElementName);

            Guard.IsNotNull(_BackgroundCanvas, nameof(BackgroundCanvasName));
            Guard.IsNotNull(_TextOverlaysCanvas, nameof(TextOverlaysCanvasName));
            Guard.IsNotNull(_SelectionHighlightBorder, nameof(SelectionHighlightBorderName));
            Guard.IsNotNull(_CursorIndicatorRectangle, nameof(CursorIndicatorRectangleName));
            Guard.IsNotNull(_SyntaxErrorToolTip, SyntaxErrorToolTipName);
            Guard.IsNotNull(ContentScroller, ContentScrollerName);
            Guard.IsNotNull(ContentElement, ContentElementName);

            _BackgroundCanvas.SizeChanged       += BackgroundCanvas_SizeChanged;
            _TextOverlaysCanvas.CreateResources += _TextOverlaysCanvas_CreateResources;
            _TextOverlaysCanvas.Draw            += TextOverlaysCanvas_Draw;
            _SyntaxErrorToolTip.Closed          += delegate { ContentScroller.IsHitTestVisible = true; };
            ContentScroller.Loaded     += ContentElement_Loaded;
            ContentElement.SizeChanged += ContentElement_SizeChanged;

            ContentScroller.StartExpressionAnimation(_TextOverlaysCanvas, Axis.X, VisualProperty.Offset);
            ContentScroller.StartExpressionAnimation(_TextOverlaysCanvas, Axis.Y, VisualProperty.Offset);
            ContentScroller.StartExpressionAnimation(_SelectionHighlightBorder, Axis.Y, VisualProperty.Offset);
            ContentScroller.StartExpressionAnimation(_CursorIndicatorRectangle, Axis.X, VisualProperty.Offset);
            ContentScroller.StartExpressionAnimation(_CursorIndicatorRectangle, Axis.Y, VisualProperty.Offset);

            UpdateVisualElementsOnThemeChanged(SyntaxHighlightTheme);
        }
Beispiel #3
0
        private void Awake()
        {
            var time = IPA.Utilities.Utils.CanUseDateTimeNowSafely ? DateTime.Now : DateTime.UtcNow;

            _jokeTime = (time.Day == 18 && time.Month == 6) || (time.Day == 1 && time.Month == 4);

            gameObject.transform.position = Position;
            gameObject.transform.eulerAngles = Rotation;
            gameObject.transform.localScale = Scale;

            _canvas = gameObject.AddComponent<Canvas>();
            _canvas.renderMode = RenderMode.WorldSpace;
            _canvas.enabled = false;
            var rectTransform = _canvas.transform as RectTransform;
            rectTransform.sizeDelta = CanvasSize;

            _authorNameText = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(_canvas.transform as RectTransform, AuthorNameText, AuthorNamePosition);
            rectTransform = _authorNameText.transform as RectTransform;
            rectTransform.SetParent(_canvas.transform, false);
            rectTransform.anchoredPosition = AuthorNamePosition;
            rectTransform.sizeDelta = HeaderSize;
            _authorNameText.text = AuthorNameText;
            _authorNameText.fontSize = AuthorNameFontSize;

            var pluginText = _jokeTime ? "SongCore Cleaner" : PluginNameText;
            _pluginNameText = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(_canvas.transform as RectTransform, pluginText, PluginNamePosition);
            rectTransform = _pluginNameText.transform as RectTransform;
            rectTransform.SetParent(_canvas.transform, false);
            rectTransform.sizeDelta = HeaderSize;
            rectTransform.anchoredPosition = PluginNamePosition;
            _pluginNameText.text = pluginText;
            _pluginNameText.fontSize = PluginNameFontSize;

            _headerText = BeatSaberMarkupLanguage.BeatSaberUI.CreateText(_canvas.transform as RectTransform, HeaderText, HeaderPosition);
            rectTransform = _headerText.transform as RectTransform;
            rectTransform.SetParent(_canvas.transform, false);
            rectTransform.anchoredPosition = HeaderPosition;
            rectTransform.sizeDelta = HeaderSize;
            _headerText.text = HeaderText;
            _headerText.fontSize = HeaderFontSize;

            _loadingBackg = new GameObject("Background").AddComponent<Image>();
            rectTransform = _loadingBackg.transform as RectTransform;
            rectTransform.SetParent(_canvas.transform, false);
            rectTransform.sizeDelta = LoadingBarSize;
            _loadingBackg.color = BackgroundColor;

            _loadingBar = new GameObject("Loading Bar").AddComponent<Image>();
            rectTransform = _loadingBar.transform as RectTransform;
            rectTransform.SetParent(_canvas.transform, false);
            rectTransform.sizeDelta = LoadingBarSize;
            var tex = Texture2D.whiteTexture;
            var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), Vector2.one * 0.5f, 100, 1);
            _loadingBar.sprite = sprite;
            _loadingBar.type = Image.Type.Filled;
            _loadingBar.fillMethod = Image.FillMethod.Horizontal;
            _loadingBar.color = new Color(1, 1, 1, 0.5f);

            DontDestroyOnLoad(gameObject);
        }
Beispiel #4
0
        protected override void OnDraw(Canvas?canvas)
        {
            base.OnDraw(canvas);

            canvas?.DrawBitmap(canvasBitmap !, 0, 0, canvasPaint);
            canvas?.DrawPath(drawPath, drawPaint);
        }
        public Canvas BeginRecording(Rect cullRect)
        {
            CullRect = cullRect;

            RecordingCanvas = new Canvas();

            return(RecordingCanvas);
        }
Beispiel #6
0
        protected override void DispatchDraw(Canvas?canvas)
        {
            if (Clip != null)
            {
                ClipChild(canvas);
            }

            base.DispatchDraw(canvas);
        }
        protected override void OnDraw(Shape?shape, Canvas?canvas, global::Android.Graphics.Paint?paint)
        {
            if (paint != null && _backgroundColor != null)
            {
                paint.Color = _backgroundColor.Value;
            }

            base.OnDraw(shape, canvas, paint);
        }
Beispiel #8
0
        protected override void OnDraw(Canvas?canvas)
        {
            base.OnDraw(canvas);

            if (canvas is not null && canvasBitmap is not null)
            {
                canvas.DrawBitmap(canvasBitmap, 0, 0, canvasPaint);
                canvas.DrawPath(drawPath, drawPaint);
            }
        }
Beispiel #9
0
        void RemoveBackgroundLayer()
        {
            if (_backgroundLayer == null)
            {
                return;
            }

            Children.Remove(_backgroundLayer);
            _backgroundLayer = null;
        }
 public void Init(TriangleObservable thisMod)
 {
     _thisMod  = thisMod;
     _cardList = thisMod.CardList;
     _cardList.CollectionChanged += CollectionChange;
     _thisCanvas         = new Canvas();
     _thisMod.PositionUI = this;
     PopulateCards();
     Content = _thisCanvas;
 }
Beispiel #11
0
 private void MoveThumb(Canvas?canvas, Thumb?thumb, double x, double y)
 {
     if (canvas != null && thumb != null)
     {
         double left = Clamp(x, 0, canvas.Bounds.Width);
         double top  = Clamp(y, 0, canvas.Bounds.Height);
         Canvas.SetLeft(thumb, left);
         Canvas.SetTop(thumb, top);
     }
 }
 public void LoadControls(ClockObservable thisMod)
 {
     _thisMod           = thisMod;
     _thisCanvas        = new Canvas();
     thisMod.PositionUI = this;
     Content            = _thisCanvas;
     if (_thisMod.ClockList != null && _thisMod.ClockList.Count > 0)
     {
         PrivateReposition();
     }
 }
Beispiel #13
0
        protected override void OnDraw(Canvas?canvas)
        {
            base.OnDraw(canvas);

            if (canvas is not null)
            {
                Draw(Element.Lines, canvas);

                canvas.DrawBitmap(canvasBitmap !, 0, 0, canvasPaint);
                canvas.DrawPath(drawPath, drawPaint);
            }
        }
Beispiel #14
0
 public void EnsureFocusVisualRoot()
 {
     if (FocusVisualRoot == null)
     {
         FocusVisualRoot = new Canvas()
         {
             Background       = null,
             IsHitTestVisible = false
         };
         Canvas.SetZIndex(FocusVisualRoot, FocusVisualZIndex);
     }
 }
Beispiel #15
0
        protected override void OnDraw(Canvas?canvas)
        {
            //System.Diagnostics.Debug.WriteLine("[OKYN] AndroidPaintView->OnDraw( " + canvas + ")");

            if (canvas == null)
            {
                return;
            }

            _renderContext.Canvas = canvas;
            _renderContext.DrawMainElement(_view,
                                           _targetRect, _viewState);
        }
Beispiel #16
0
        protected override void OnSizeChanged(int w, int h, int oldw, int oldh)
        {
            const int minW = 1;
            const int minH = 1;

            w = w < minW ? minW : w;
            h = h < minH ? minH : h;
            base.OnSizeChanged(w, h, oldw, oldh);

            canvasBitmap = Bitmap.CreateBitmap(w, h, Bitmap.Config.Argb8888 !) !;
            drawCanvas   = new Canvas(canvasBitmap);
            LoadPoints();
        }
        public Picture EndRecording()
        {
            var picture = new Picture
            {
                CullRect = CullRect,
                Commands = RecordingCanvas?.Commands
            };

            CullRect        = Rect.Empty;
            RecordingCanvas = null;

            return(picture);
        }
Beispiel #18
0
        public void OnApplyTemplate()
        {
            if (TopCanvas != null ||
                BottomCanvas != null ||
                _scrollBar.Template.FindName("PART_TopCanvas", _scrollBar) is not Canvas topCanvas ||
                _scrollBar.Template.FindName("PART_BottomCanvas", _scrollBar) is not Canvas bottomCanvas)
            {
                return;
            }

            TopCanvas    = topCanvas;
            BottomCanvas = bottomCanvas;

            _scrollBar.SizeChanged += (_, _) => DrawSegmentBoundaries();
        }
            /// <inheritdoc />
            protected override void OnDraw(Canvas?canvas)
            {
                if (canvas is null)
                {
                    return;
                }

                float size        = MeasuredWidth > MeasuredHeight ? MeasuredHeight : MeasuredWidth;
                var   strokeWidth = Compass.CalculateScreenDimension(1.5f, ComplexUnitType.Dip, Context);
                float c           = size * .5f;
                float l           = (MeasuredWidth - size) * .5f;
                float t           = (MeasuredHeight - size) * .5f;

                Paint paint = new Paint(PaintFlags.AntiAlias);

                paint.SetStyle(Paint.Style.Fill);
                paint.SetARGB(255, 51, 51, 51);
                canvas.DrawCircle(c + l, c + t, size * .5f, paint);
                paint.SetStyle(Paint.Style.Stroke);
                paint.StrokeWidth = strokeWidth;
                paint.SetARGB(255, 255, 255, 255);
                canvas.DrawCircle(c + l, c + t, (size * .5f) - (strokeWidth / 2f), paint);

                // Draw north arrow
                paint.SetStyle(Paint.Style.Fill);
                paint.SetARGB(255, 199, 85, 46);
                var path = new Path();

                path.MoveTo(c - (size * .14f) + l, c + t);
                path.LineTo(c + (size * .14f) + l, c + t);
                path.LineTo(c + l, c - (size * .34f) + t);
                path.Close();
                canvas.DrawPath(path, paint);

                // Draw south arrow
                paint.SetARGB(255, 255, 255, 255);
                path = new Path();
                path.MoveTo(c - (size * .14f) + l, c + t);
                path.LineTo(c + (size * .14f) + l, c + t);
                path.LineTo(c + l, c + (size * .34f) + t);
                path.Close();
                canvas.DrawPath(path, paint);

                PivotX = (size / 2) + l;
                PivotY = (size / 2) + t;

                base.OnDraw(canvas);
            }
Beispiel #20
0
        /// <summary>
        /// Подготавливает дисплей к отрисовке нового содержимого.
        /// </summary>
        private void Swap()
        {
            var width  = Console.WindowWidth;
            var height = Console.WindowHeight;

            if (prev != null && prev.Size == (width, height))
            {
                (CurrentScreen, prev) = (prev, CurrentScreen);
                CurrentScreen.Clear();
            }
            else
            {
                prev          = null;
                CurrentScreen = new Canvas(width, height);
            }
        }
Beispiel #21
0
        protected override void OnSizeChanged(int w, int h, int oldw, int oldh)
        {
            const int minW = 1;
            const int minH = 1;

            w = w < minW ? minW : w;
            h = h < minH ? minH : h;

            base.OnSizeChanged(w, h, oldw, oldh);

            canvasBitmap = Bitmap.CreateBitmap(w, h, Bitmap.Config.Argb8888 ?? throw new NullReferenceException("Unable to create Bitmap config"));
            if (canvasBitmap is not null)
            {
                drawCanvas = new Canvas(canvasBitmap);
                LoadLines();
            }
        }
Beispiel #22
0
        /// <summary>
        /// Executes the draw action.
        /// </summary>
        ///
        /// <param name="canvas"> The canvas. </param>
        protected override void OnDraw(Canvas?canvas)
        {
            var frame = (ExtendedFrame)this.Element;

            using var firstPaint      = new Paint();
            using var secondPaint     = new Paint();
            using var backgroundPaint = new Paint();

            firstPaint.AntiAlias = true;
            firstPaint.SetStyle(Paint.Style.Stroke);
            firstPaint.StrokeWidth = frame.BorderWidth + 2;
            firstPaint.Color       = frame.BorderColor.ToAndroid();

            secondPaint.AntiAlias = true;
            secondPaint.SetStyle(Paint.Style.Stroke);
            secondPaint.StrokeWidth = frame.BorderWidth;
            secondPaint.Color       = frame.BackgroundColor.ToAndroid();

            backgroundPaint.SetStyle(Paint.Style.Stroke);
            backgroundPaint.StrokeWidth = 4;
            backgroundPaint.Color       = frame.BackgroundColor.ToAndroid();

            using Rect oldBounds = new ();
            if (canvas != null)
            {
                canvas.GetClipBounds(oldBounds);

                using RectF oldOutlineBounds = new ();
                oldOutlineBounds.Set(oldBounds);

                using RectF myOutlineBounds = new ();
                myOutlineBounds.Set(oldBounds);
                myOutlineBounds.Top    += (int)secondPaint.StrokeWidth + 3;
                myOutlineBounds.Bottom -= (int)secondPaint.StrokeWidth + 3;
                myOutlineBounds.Left   += (int)secondPaint.StrokeWidth + 3;
                myOutlineBounds.Right  -= (int)secondPaint.StrokeWidth + 3;

                canvas.DrawRoundRect(oldOutlineBounds, 10, 10, backgroundPaint); // to "hide" old outline
                canvas.DrawRoundRect(myOutlineBounds, frame.CornerRadius, frame.CornerRadius, firstPaint);
                canvas.DrawRoundRect(myOutlineBounds, frame.CornerRadius, frame.CornerRadius, secondPaint);

                base.OnDraw(canvas);
            }
        }
Beispiel #23
0
        public override void Draw(Canvas?canvas)
        {
            try
            {
                if (canvas != null)
                {
                    canvas.ClipRect(canvas.ClipBounds);
                }

                base.Draw(canvas);
            }
            catch (Java.Lang.NullPointerException)
            {
                // This will most likely never run since UpdateScrollBars is called
                // when the scrollbars visibilities are updated but I left it here
                // just in case there's an edge case that causes an exception
                this.HandleScrollBarVisibilityChange();
            }
        }
Beispiel #24
0
        protected override void OnDraw(Canvas?canvas)
        {
            base.OnDraw(canvas);

            foreach (var line in Element.Lines)
            {
                var path = new Path();
                path.MoveTo((float)line.Points[0].X, (float)line.Points[0].Y);
                foreach (var(x, y) in line.Points)
                {
                    path.LineTo((float)x, (float)y);
                }

                canvas?.DrawPath(path, drawPaint);
            }

            canvas?.DrawBitmap(canvasBitmap !, 0, 0, canvasPaint);
            canvas?.DrawPath(drawPath, drawPaint);
        }
Beispiel #25
0
        protected override void DispatchDraw(Canvas?canvas)
        {
            if (canvas != null && Clip != null)
            {
                var bounds = new RectangleF(0, 0, canvas.Width, canvas.Height);

                if (_lastPathSize != bounds.Size || _currentPath == null)
                {
                    var path = Clip.PathForBounds(bounds);
                    _currentPath  = path?.AsAndroidPath();
                    _lastPathSize = bounds.Size;
                }

                if (_currentPath != null)
                {
                    canvas.ClipPath(_currentPath);
                }
            }

            base.DispatchDraw(canvas);
        }
Beispiel #26
0
        void AddBackgroundLayer()
        {
            // In WinUI, once a control has hit testing disabled, all of its child controls
            // also have hit testing disabled. The exception is a Panel with its
            // Background Brush set to `null`; the Panel will be invisible to hit testing, but its
            // children will work just fine.

            // In order to handle the situation where we need the layout to be invisible to hit testing,
            // the child controls to be visible to hit testing, *and* we need to support non-null
            // background brushes, we insert another empty Panel which is invisible to hit testing; that
            // Panel will be our Background brush

            if (_backgroundLayer != null)
            {
                return;
            }

            _backgroundLayer = new Canvas {
                IsHitTestVisible = false
            };
            Children.Insert(0, _backgroundLayer);
        }
Beispiel #27
0
            ////////////////////////////////////////////////////////////////////////////////////////////////////
            /// <summary>   Removes the drop shadow. </summary>
            ////////////////////////////////////////////////////////////////////////////////////////////////////

            internal void RemoveDropShadow()
            {
                //Remove the elements that we added to the _parent.Children
                try
                {
                    if (_parent == null)
                    {
                        return;
                    }

                    //Hiding the shadow will take care of a few steps needed to completely remove
                    // the shadow.
                    HideDropShadow();

                    var childCollection = _parent.Children;

                    if (childCollection.Contains(_roundedRectMask))
                    {
                        childCollection.Remove(_roundedRectMask);
                    }

                    if (childCollection.Contains(_dropShadowHost))
                    {
                        childCollection.Remove(_dropShadowHost);
                    }

                    _roundedRectMask        = null;
                    _dropShadowHost         = null;
                    _elementsOriginalMargin = null;
                }
                //I would not want cleanup work to cause an exception.  There is nothing we need to do, but
                // we developers need to know if it is happening during development.
                catch (Exception e)
                {
                    Debug.WriteLine($"{nameof(RemoveDropShadow)} caused the following exception : {e}");
                }
            }
Beispiel #28
0
        protected override void OnTemplateApplied(TemplateAppliedEventArgs e)
        {
            if (_colorCanvas != null)
            {
                _colorCanvas.PointerPressed  -= ColorCanvas_PointerPressed;
                _colorCanvas.PointerReleased -= ColorCanvas_PointerReleased;
                _colorCanvas.PointerMoved    -= ColorCanvas_PointerMoved;
            }

            if (_colorThumb != null)
            {
                _colorThumb.DragDelta -= ColorThumb_DragDelta;
            }

            if (_hueCanvas != null)
            {
                _hueCanvas.PointerPressed  -= HueCanvas_PointerPressed;
                _hueCanvas.PointerReleased -= HueCanvas_PointerReleased;
                _hueCanvas.PointerMoved    -= HueCanvas_PointerMoved;
            }

            if (_hueThumb != null)
            {
                _hueThumb.DragDelta -= HueThumb_DragDelta;
            }

            if (_alphaCanvas != null)
            {
                _alphaCanvas.PointerPressed  -= AlphaCanvas_PointerPressed;
                _alphaCanvas.PointerReleased -= AlphaCanvas_PointerReleased;
                _alphaCanvas.PointerMoved    -= AlphaCanvas_PointerMoved;
            }

            if (_alphaThumb != null)
            {
                _alphaThumb.DragDelta -= AlphaThumb_DragDelta;
            }

            _colorCanvas = e.NameScope.Find <Canvas>("PART_ColorCanvas");
            _colorThumb  = e.NameScope.Find <Thumb>("PART_ColorThumb");
            _hueCanvas   = e.NameScope.Find <Canvas>("PART_HueCanvas");
            _hueThumb    = e.NameScope.Find <Thumb>("PART_HueThumb");
            _alphaCanvas = e.NameScope.Find <Canvas>("PART_AlphaCanvas");
            _alphaThumb  = e.NameScope.Find <Thumb>("PART_AlphaThumb");

            if (_colorCanvas != null)
            {
                _colorCanvas.PointerPressed  += ColorCanvas_PointerPressed;
                _colorCanvas.PointerReleased += ColorCanvas_PointerReleased;
                _colorCanvas.PointerMoved    += ColorCanvas_PointerMoved;
            }

            if (_colorThumb != null)
            {
                _colorThumb.DragDelta += ColorThumb_DragDelta;
            }

            if (_hueCanvas != null)
            {
                _hueCanvas.PointerPressed  += HueCanvas_PointerPressed;
                _hueCanvas.PointerReleased += HueCanvas_PointerReleased;
                _hueCanvas.PointerMoved    += HueCanvas_PointerMoved;
            }

            if (_hueThumb != null)
            {
                _hueThumb.DragDelta += HueThumb_DragDelta;
            }

            if (_alphaCanvas != null)
            {
                _alphaCanvas.PointerPressed  += AlphaCanvas_PointerPressed;
                _alphaCanvas.PointerReleased += AlphaCanvas_PointerReleased;
                _alphaCanvas.PointerMoved    += AlphaCanvas_PointerMoved;
            }

            if (_alphaThumb != null)
            {
                _alphaThumb.DragDelta += AlphaThumb_DragDelta;
            }
        }
Beispiel #29
0
        protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
        {
            if (colorCanvas != null)
            {
                colorCanvas.PointerPressed  -= ColorCanvas_PointerPressed;
                colorCanvas.PointerReleased -= ColorCanvas_PointerReleased;
                colorCanvas.PointerMoved    -= ColorCanvas_PointerMoved;
            }

            if (colorThumb != null)
            {
                colorThumb.DragDelta -= ColorThumb_DragDelta;
            }

            if (hueCanvas != null)
            {
                hueCanvas.PointerPressed  -= HueCanvas_PointerPressed;
                hueCanvas.PointerReleased -= HueCanvas_PointerReleased;
                hueCanvas.PointerMoved    -= HueCanvas_PointerMoved;
            }

            if (hueThumb != null)
            {
                hueThumb.DragDelta -= HueThumb_DragDelta;
            }

            if (alphaCanvas != null)
            {
                alphaCanvas.PointerPressed  -= AlphaCanvas_PointerPressed;
                alphaCanvas.PointerReleased -= AlphaCanvas_PointerReleased;
                alphaCanvas.PointerMoved    -= AlphaCanvas_PointerMoved;
            }

            if (alphaThumb != null)
            {
                alphaThumb.DragDelta -= AlphaThumb_DragDelta;
            }

            colorCanvas = e.NameScope.Find <Canvas>("PART_ColorCanvas");
            colorThumb  = e.NameScope.Find <Thumb>("PART_ColorThumb");
            hueCanvas   = e.NameScope.Find <Canvas>("PART_HueCanvas");
            hueThumb    = e.NameScope.Find <Thumb>("PART_HueThumb");
            alphaCanvas = e.NameScope.Find <Canvas>("PART_AlphaCanvas");
            alphaThumb  = e.NameScope.Find <Thumb>("PART_AlphaThumb");

            if (colorCanvas != null)
            {
                colorCanvas.PointerPressed  += ColorCanvas_PointerPressed;
                colorCanvas.PointerReleased += ColorCanvas_PointerReleased;
                colorCanvas.PointerMoved    += ColorCanvas_PointerMoved;
            }

            if (colorThumb != null)
            {
                colorThumb.DragDelta += ColorThumb_DragDelta;
            }

            if (hueCanvas != null)
            {
                hueCanvas.PointerPressed  += HueCanvas_PointerPressed;
                hueCanvas.PointerReleased += HueCanvas_PointerReleased;
                hueCanvas.PointerMoved    += HueCanvas_PointerMoved;
            }

            if (hueThumb != null)
            {
                hueThumb.DragDelta += HueThumb_DragDelta;
            }

            if (alphaCanvas != null)
            {
                alphaCanvas.PointerPressed  += AlphaCanvas_PointerPressed;
                alphaCanvas.PointerReleased += AlphaCanvas_PointerReleased;
                alphaCanvas.PointerMoved    += AlphaCanvas_PointerMoved;
            }

            if (alphaThumb != null)
            {
                alphaThumb.DragDelta += AlphaThumb_DragDelta;
            }
        }
Beispiel #30
0
        protected override void OnDraw(Shape?shape, Canvas?canvas, APaint?paint)
        {
            if (_disposed)
            {
                return;
            }

            if (HasBorder())
            {
                if (Paint != null)
                {
                    SetBackground(Paint);
                }

                if (_borderPaint != null)
                {
                    _borderPaint.StrokeWidth = _strokeThickness;
                    _borderPaint.StrokeJoin  = _strokeLineJoin;
                    _borderPaint.StrokeCap   = _strokeLineCap;
                    _borderPaint.StrokeMiter = _strokeMiterLimit * 2;

                    if (_borderPathEffect != null)
                    {
                        _borderPaint.SetPathEffect(_borderPathEffect);
                    }

                    if (_borderColor != null)
                    {
                        _borderPaint.Color = _borderColor.Value;
                    }
                    else
                    {
                        if (_stroke != null)
                        {
                            SetPaint(_borderPaint, _stroke);
                        }
                    }
                }

                if (_invalidatePath)
                {
                    _invalidatePath = false;

                    if (_shape != null)
                    {
                        var bounds   = new Graphics.Rect(0, 0, _width, _height);
                        var path     = _shape.PathForBounds(bounds);
                        var clipPath = path?.AsAndroidPath();

                        if (clipPath == null)
                        {
                            return;
                        }

                        if (_clipPath != null)
                        {
                            _clipPath.Reset();
                            _clipPath.Set(clipPath);
                        }
                    }
                }

                if (canvas == null)
                {
                    return;
                }

                var saveCount = canvas.SaveLayer(0, 0, _width, _height, null);

                if (_clipPath != null && Paint != null)
                {
                    canvas.DrawPath(_clipPath, Paint);
                }

                if (_clipPath != null && _borderPaint != null)
                {
                    canvas.DrawPath(_clipPath, _borderPaint);
                }

                canvas.RestoreToCount(saveCount);
            }
            else
            {
                if (paint != null)
                {
                    SetBackground(paint);
                }

                base.OnDraw(shape, canvas, paint);
            }
        }