private static SKSize GetActualSize(SKSize size_Current, TempPosition thisTemp)
        {
            float int_Width;
            float int_Height;

            int_Width  = ((thisTemp.ActualWidth / thisTemp.OriginalSize.Width) * size_Current.Width);
            int_Height = ((thisTemp.ActualHeight / thisTemp.OriginalSize.Height) * size_Current.Height);
            return(new SKSize(int_Width, int_Height));
        }
        private static TempPosition GetTempRect(SKRect thisRect)
        {
            TempPosition output = new TempPosition();

            output.Location     = thisRect.Location;
            output.ActualHeight = thisRect.Height;
            output.ActualWidth  = thisRect.Width;
            return(output);
        }
        private static SKPoint GetActualPoint(SKPoint pt_Current, TempPosition thisTemp)
        {
            float int_X;
            float int_Y;

            int_X = ((thisTemp.ActualWidth / thisTemp.OriginalSize.Width) * pt_Current.X);
            int_Y = ((thisTemp.ActualHeight / thisTemp.OriginalSize.Height) * pt_Current.Y);
            return(new SKPoint(int_X + thisTemp.Location.X, int_Y + thisTemp.Location.Y));
        }
        private static SKRect GetActualRectangle(SKRect originalRectangle, TempPosition thisTemp)
        {
            SKPoint oldPoint;

            oldPoint = new SKPoint(originalRectangle.Left, originalRectangle.Top);
            SKSize oldSize;

            oldSize = new SKSize(originalRectangle.Width, originalRectangle.Height);
            SKPoint newPoint;
            SKSize  newSize;

            newPoint = GetActualPoint(oldPoint, thisTemp);
            newSize  = GetActualSize(oldSize, thisTemp);
            return(SKRect.Create(newPoint, newSize));
        }
        public static void DrawStar(this SKCanvas thisCanvas, SKRect thisRect, SKPaint solidPaint, SKPaint borderPaint) // done
        {
            TempPosition temps = GetTempRect(thisRect);

            if (solidPaint == null == true && borderPaint == null == true)
            {
                throw new BasicBlankException("Must send at least pen or solid brush.  Otherwise, nothing will draw obviously");
            }
            SKPath thisPath    = new SKPath();
            var    firstPoint  = GetActualPoint(200, 2, temps);
            var    secondPoint = GetActualPoint(245, 138, temps); // done now maybe.

            thisPath.AddLine(firstPoint, secondPoint, true);
            var thirdPoint = GetActualPoint(390, 138, temps); // done now.

            thisPath.AddLine(secondPoint, thirdPoint);
            var fourthPoint = GetActualPoint(270, 223, temps); // could be fine now.

            thisPath.AddLine(thirdPoint, fourthPoint);
            var fifthPoint = GetActualPoint(317, 361, temps); // done

            thisPath.AddLine(fourthPoint, fifthPoint);
            var sixthPoint = GetActualPoint(200, 280, temps); // could be fine now

            thisPath.AddLine(fifthPoint, sixthPoint);
            var seventhPoint = GetActualPoint(82, 361, temps); // done

            thisPath.AddLine(sixthPoint, seventhPoint);
            var eighthPoint = GetActualPoint(130, 223, temps);

            thisPath.AddLine(seventhPoint, eighthPoint);
            var ninthPoint = GetActualPoint(9, 138, temps); // done

            thisPath.AddLine(eighthPoint, ninthPoint);
            var tenthPoint = GetActualPoint(154, 138, temps); // done now maybe

            thisPath.AddLine(ninthPoint, tenthPoint);
            thisPath.Close();
            if (solidPaint == null == false)
            {
                thisCanvas.DrawPath(thisPath, solidPaint);
            }
            if (borderPaint == null == false)
            {
                thisCanvas.DrawPath(thisPath, borderPaint);
            }
        }
        public static void DrawLargerDiamond(this SKCanvas thisCanvas, SKRect thisRect, SKPaint solidPaint, SKPaint?borderPaint)
        {
            TempPosition temps = GetTempRect(thisRect);
            SKPoint      firstPoint;
            SKPoint      secondPoint;
            SKPoint      thirdPoint;
            SKPoint      fourthPoint;

            firstPoint  = GetActualPoint(200, 2, temps);
            secondPoint = GetActualPoint(398, 200, temps);
            thirdPoint  = GetActualPoint(200, 398, temps);
            fourthPoint = GetActualPoint(2, 200, temps);
            SKPoint[] pts      = new[] { firstPoint, secondPoint, thirdPoint, fourthPoint };
            SKPath    thisPath = new SKPath();

            thisPath.AddLines(pts, true);
            thisCanvas.DrawPath(thisPath, solidPaint);
            if (borderPaint != null)
            {
                thisCanvas.DrawPath(thisPath, borderPaint);
            }
        }
        public static void DrawCardSuit(this SKCanvas thisCanvas, EnumSuitList suitCategory, SKRect thisRect, SKPaint solidPaint, SKPaint?borderPaint)
        {
            TempPosition temps = GetTempRect(thisRect);

            if (solidPaint == null)
            {
                throw new BasicBlankException("All Cards Must Have Solid Brushes");
            }
            if (borderPaint != null && suitCategory == EnumSuitList.Clubs)
            {
                throw new BasicBlankException("Clubs can't have stroke paint currently");
            }
            if (borderPaint != null && suitCategory == EnumSuitList.Spades)
            {
                throw new BasicBlankException("Spades can't have stroke paint currently");
            }
            switch (suitCategory)
            {
            case EnumSuitList.Clubs:
            {
                SKPath thisPath  = new SKPath();        //used proportions here.  seemed to work great.
                var    firstRect = GetActualRectangle(125, 0, 150, 150, temps);
                thisPath.AddOval(firstRect, SKPathDirection.Clockwise);
                var secondRect = GetActualRectangle(0, 150, 150, 150, temps);
                thisPath.AddOval(secondRect, SKPathDirection.Clockwise);
                var thirdRect = GetActualRectangle(250, 150, 150, 150, temps);
                thisPath.AddOval(thirdRect, SKPathDirection.Clockwise);
                SKPoint point1;
                SKPoint point2;
                point1 = GetActualPoint(185, 150, temps);
                point2 = GetActualPoint(150, 200, temps);
                thisPath.MoveTo(point1);
                point1 = GetActualPoint(175, 180, temps);
                thisPath.QuadTo(point1, point2);
                point2 = GetActualPoint(150, 250, temps);
                thisPath.LineTo(point2);
                point1 = GetActualPoint(175, 270, temps);
                point2 = GetActualPoint(175, 280, temps);
                thisPath.QuadTo(point1, point2);
                point2 = GetActualPoint(150, 400, temps);
                thisPath.LineTo(point2);
                var tempLine = GetActualPoint(250, 400, temps);
                thisPath.LineTo(tempLine);
                point1 = GetActualPoint(225, 350, temps);
                point2 = GetActualPoint(225, 280, temps);
                thisPath.QuadTo(point1, point2);
                point1 = GetActualPoint(225, 270, temps);
                point2 = GetActualPoint(250, 250, temps);
                thisPath.QuadTo(point1, point2);
                point2 = GetActualPoint(250, 200, temps);
                thisPath.LineTo(point2);
                point1 = GetActualPoint(230, 180, temps);
                point2 = GetActualPoint(220, 150, temps);
                thisPath.QuadTo(point1, point2);
                thisPath.Close();
                thisCanvas.DrawPath(thisPath, solidPaint);
                break;
            }

            case EnumSuitList.Diamonds:
            {
                SKPoint[] pts = new SKPoint[4];
                pts[0] = new SKPoint(thisRect.Location.X + (thisRect.Width / 2), thisRect.Location.Y);
                pts[1] = new SKPoint(thisRect.Location.X + (thisRect.Width * 3 / 4), thisRect.Location.Y + (thisRect.Height / 2));
                pts[2] = new SKPoint(thisRect.Location.X + (thisRect.Width / 2), thisRect.Location.Y + thisRect.Height);
                pts[3] = new SKPoint(thisRect.Location.X + (thisRect.Width / 4), thisRect.Location.Y + (thisRect.Height / 2));
                SKPath ThisPath = new SKPath();
                ThisPath.AddLines(pts, true);
                thisCanvas.DrawPath(ThisPath, solidPaint);
                if (borderPaint == null == false)
                {
                    thisCanvas.DrawPath(ThisPath, borderPaint);
                }
                break;
            }

            case EnumSuitList.Hearts:
            {
                int avg;
                avg = System.Convert.ToInt32((thisRect.Width + thisRect.Height) / 2);
                int radius;
                radius = System.Convert.ToInt32(avg / (double)2);
                var topleftcorner  = new SKPoint(thisRect.Location.X, thisRect.Location.Y);
                var topleftsquare  = SKRect.Create(topleftcorner.X, topleftcorner.Y, radius, radius);
                var toprightsquare = SKRect.Create(topleftcorner.X + radius, topleftcorner.Y, radius, radius);
                var thisPath       = new SKPath();
                thisPath.ArcTo(topleftsquare, 135, 225, false);
                thisPath.ArcTo(toprightsquare, 180, 225, false);
                thisPath.LineTo(radius + thisRect.Location.X, avg + thisRect.Location.Y);
                thisPath.Close();
                thisCanvas.DrawPath(thisPath, solidPaint);
                if (borderPaint == null == false)
                {
                    thisCanvas.DrawPath(thisPath, borderPaint);
                }
                break;
            }

            case EnumSuitList.Spades:
            {
                var firstRect = GetActualRectangle(0, 100, 200, 200, temps);
                thisCanvas.DrawOval(firstRect, solidPaint);
                var secondRect = GetActualRectangle(200, 100, 200, 200, temps);
                thisCanvas.DrawOval(secondRect, solidPaint);
                var nextRect = GetActualRectangle(175, 175, 50, 200, temps);
                thisCanvas.DrawRect(nextRect, solidPaint);
                var tempRect = GetActualRectangle(0, 0, 400, 175, temps);
                thisCanvas.DrawTriangle(tempRect, solidPaint, null !);
                break;
            }

            default:
                throw new BasicBlankException("Must choose one of the 4 suits to draw");
            }
        }
 private static SKPoint GetActualPoint(int x, int y, TempPosition thisTemp)
 {
     return(GetActualPoint(new SKPoint(x, y), thisTemp));
 }
 private static SKRect GetActualRectangle(int x, int y, int width, int height, TempPosition thisTemp)
 {
     return(GetActualRectangle(SKRect.Create(x, y, width, height), thisTemp));
 }