예제 #1
0
        //Negativ
        private Android.Graphics.Bitmap createInverse(Android.Graphics.Bitmap src)
        {
            float[] colorMatrix_Negative =
            {
                -1.0f,     0,     0,    0, 255,          //red
                0,     -1.0f,     0,    0, 255,          //green
                0,         0, -1.0f,    0, 255,          //blue
                0,         0,     0, 1.0f, 0             //alpha
            };

            Android.Graphics.Paint       MyPaint_Normal       = new Android.Graphics.Paint();
            Android.Graphics.Paint       MyPaint_Negative     = new Android.Graphics.Paint();
            Android.Graphics.ColorFilter colorFilter_Negative = new Android.Graphics.ColorMatrixColorFilter(colorMatrix_Negative);
            MyPaint_Negative.SetColorFilter(colorFilter_Negative);

            Android.Graphics.Bitmap bitmap = Android.Graphics.Bitmap.CreateBitmap(src.Width, src.Height,
                                                                                  Android.Graphics.Bitmap.Config.Argb8888);
            Android.Graphics.Canvas canvas = new Android.Graphics.Canvas(bitmap);

            MyPaint_Negative.SetColorFilter(colorFilter_Negative);
            canvas.DrawBitmap(src, 0, 0, MyPaint_Negative);

            return(bitmap);

            return(bitmap);
        }
 public void Capture()
 {
 var screenshotPath = 
 Android.OS.Environment.GetExternalStoragePublicDirectory("Pictures").AbsolutePath +
 Java.IO.File.Separator + 
 "screenshot.png";
 var rootView = ((Android.App.Activity)MainActivity.Context).Window.DecorView.RootView;
 
     using (var screenshot = Android.Graphics.Bitmap.CreateBitmap(
             rootView.Width, 
             rootView.Height, 
             Android.Graphics.Bitmap.Config.Argb8888))
     {
         var canvas = new Android.Graphics.Canvas(screenshot);
         rootView.Draw(canvas);
 
         using (var screenshotOutputStream = new System.IO.FileStream(
                     screenshotPath, 
                     System.IO.FileMode.Create))
         {
             screenshot.Compress(Android.Graphics.Bitmap.CompressFormat.Png, 90, screenshotOutputStream);
             screenshotOutputStream.Flush();
             screenshotOutputStream.Close();
         }
     }
 }
예제 #3
0
        protected override void OnDraw(Android.Graphics.Canvas canvas)
        {
            canvas.Rotate(-90);
            canvas.Translate(-Height, 0);

            base.OnDraw(canvas);
        }
예제 #4
0
 protected override void OnDraw(Android.Graphics.Canvas canvas)
 {
     if (initialized)
     {
         DrawFrame();
     }
 }
예제 #5
0
        /// <Docs>The Canvas to which the View is rendered.</Docs>
        /// <summary>
        /// Draw the specified canvas.
        /// </summary>
        /// <param name="canvas">Canvas.</param>
        public override void Draw(Android.Graphics.Canvas canvas)
        {
            if (Element == null)
            {
                base.Draw(canvas);
                return;
            }

            // Draws the background and default android setup. Children will also be redrawn here
            // base.Draw(canvas);

            // Set up clipping
            if (Element.IsClippedToBounds)
            {
                canvas.ClipRect(new Android.Graphics.Rect(0, 0, Width, Height));
            }

            // Perform custom drawing from the NGraphics subsystems
            var ncanvas = new CanvasCanvas(canvas);

            var rect = new NGraphics.Rect(0, 0, Width, Height);

            // Fill background
            ncanvas.FillRectangle(rect, new NGraphics.Color(Element.BackgroundColor.R, Element.BackgroundColor.G, Element.BackgroundColor.B, Element.BackgroundColor.A));

            // Custom drawing
            Element.Draw(ncanvas, rect);

            // Redraw children - since we might have a composite control containing both children
            // and custom drawing code, we want children to be drawn last. The reason for this double-
            // drawing is that the base.Draw(canvas) call will handle background which is needed before
            // doing NGraphics drawing - but unfortunately it also draws children - which then will
            // be drawn below NGraphics drawings.
            base.Draw(canvas);
        }
        protected override void Draw(Canvas canvas, Rect bounds)
        {
            int saveCount = canvas.Save();

            RectF arcBounds = mCurrentBounds;

            arcBounds.Set(bounds);
            //draw bottle
            mPaint.SetStyle(Paint.Style.Stroke);
            mPaint.Color = new Color(mBottleColor);
            canvas.DrawPath(CreateBottlePath(mBottleBounds), mPaint);

            //draw water
            mPaint.SetStyle(Paint.Style.FillAndStroke);
            mPaint.Color = new Color(mWaterColor);
            canvas.DrawPath(CreateWaterPath(mWaterBounds, mProgress), mPaint);

            //draw water drop
            mPaint.SetStyle(Paint.Style.Fill);
            mPaint.Color = new Color(mWaterColor);
            foreach (WaterDropHolder waterDropHolder in mWaterDropHolders)
            {
                if (waterDropHolder.mNeedDraw)
                {
                    canvas.DrawCircle(waterDropHolder.mInitX, waterDropHolder.mCurrentY, waterDropHolder.mRadius, mPaint);
                }
            }

            //draw loading text
            mPaint.Color = new Color(mBottleColor);
            canvas.DrawText(LOADING_TEXT, mBottleBounds.CenterX() - mLoadingBounds.Width() / 2.0f, mBottleBounds.Bottom + mBottleBounds.Height() * 0.2f, mPaint);
            canvas.RestoreToCount(saveCount);
        }
예제 #7
0
        public override bool OnCreateThumbnail(Android.Graphics.Bitmap outBitmap, Android.Graphics.Canvas canvas)
        {
            // ライフサイクルメソッド調査
            Util.Trace.WriteMethod();

            return(base.OnCreateThumbnail(outBitmap, canvas));
        }
예제 #8
0
 public Android.Graphics.Canvas GetCanvas()
 {
     if (this.canvas == null)
     {
         this.canvas = new Android.Graphics.Canvas(this.bmp);
     }
     return(this.canvas);
 }
예제 #9
0
 protected override void OnDraw(Android.Graphics.Canvas canvas)
 {
     base.OnDraw(canvas);
     canvas.Save();
     canvas.Translate(_posX, _posY);
     canvas.Scale(_scaleFactor, _scaleFactor);
     canvas.Restore();
 }
        protected override void OnDraw(Android.Graphics.Canvas canvas)
        {
            base.OnDraw(canvas);

            var bounds = formsControl.Bounds;

            progressView.Layout(System.Convert.ToInt32(formsControl.X), System.Convert.ToInt32(bounds.Y), System.Convert.ToInt32(bounds.Width), System.Convert.ToInt32(bounds.Height));
        }
        public override void drawProgress(Android.Graphics.Canvas canvas)
        {
            float scale           = (float)getProgress() / (float)getMaxProgress();
            float indicatorHeight = (float)MeasuredHeight * scale;

            getProgressDrawable().SetBounds(0, 0, MeasuredWidth, (int)indicatorHeight);
            getProgressDrawable().Draw(canvas);
        }
예제 #12
0
        protected override void DispatchDraw(Android.Graphics.Canvas canvas)
        {
            base.DispatchDraw(canvas);

            var myNav = (RenderersEServices.CustomNavigationPage) this.Element;

            ((Activity)Context).ActionBar.SetIcon(ResourceIdFromString(myNav.ImageName));
        }
예제 #13
0
        protected override void OnDraw(Android.Graphics.Canvas canvasDroid)
        {
            base.OnDraw(canvasDroid);

            var canvas = new CanvasCanvas(canvasDroid);
            var rect   = new NGraphics.Rect(GetX(), GetY(), Width, Height);

            this.Draw(canvas, rect);
        }
예제 #14
0
        protected override void OnDraw(Android.Graphics.Canvas canvas)
        {
            if (this.Orientation == Orientation.Vertical)
            {
                canvas.Rotate(-90);
                canvas.Translate(-Height, 0);
            }

            base.OnDraw(canvas);
        }
        protected override bool DrawChild(Android.Graphics.Canvas canvas, Android.Views.View child, long drawingTime)
        {
            if (child is ImageView)
            {
                CustomImage custom = (CustomImage)this.Element;
                custom.ImgView = (ImageView)child;
            }

            return(base.DrawChild(canvas, child, drawingTime));
        }
예제 #16
0
 protected override void OnDraw(Android.Graphics.Canvas canvas)
 {
     animationOnGoing = false;
     base.OnDraw(canvas);
     if (!animationOnGoing && snapNeeded)
     {
         snapNeeded = false;
         handler.PostDelayed(ApplySnappingRule, 100);
     }
 }
        protected override void OnDraw(Android.Graphics.Canvas canvas)
        {
            var sw = new Stopwatch();

            sw.Start();
            base.OnDraw(canvas);
            sw.Stop();
            TimeToLayoutRequests += sw.ElapsedMilliseconds;
            LayoutRequested++;
        }
        protected override void DispatchDraw(Android.Graphics.Canvas canvas)
        {
            base.DispatchDraw(canvas);

            // Draw gradients on-top of others
            if (fadeDrawable != null)
            {
                fadeDrawable.Draw(canvas);
            }
        }
예제 #19
0
        protected override void Draw(Canvas canvas, Rect bounds)
        {
            int saveCount = canvas.Save();

            RectF arcBounds = mTempBounds;

            arcBounds.Set(bounds);

            mPaint.Alpha = MAX_ALPHA;
            mPaint.SetStyle(Paint.Style.Stroke);
            mPaint.Color = new Color(mCurrentColor);

            if (mSunCoordinateY < mInitSun_MoonCoordinateY)
            {
                canvas.DrawCircle(arcBounds.CenterX(), mSunCoordinateY, mSun_MoonRadius, mPaint);
            }

            if (mMoonCoordinateY < mInitSun_MoonCoordinateY)
            {
                int moonSaveCount = canvas.Save();
                canvas.Rotate(mMoonRotation, arcBounds.CenterX(), mMoonCoordinateY);
                canvas.DrawPath(CreateMoonPath(arcBounds.CenterX(), mMoonCoordinateY), mPaint);
                canvas.RestoreToCount(moonSaveCount);
            }

            for (int i = 0; i < mSunRayCount; i++)
            {
                int sunRaySaveCount = canvas.Save();
                //rotate 45 degrees can change the direction of 0 degrees to 1:30 clock
                //-mSunRayRotation means reverse rotation
                canvas.Rotate(45 - mSunRayRotation + (mIsExpandSunRay ? i : MAX_SUN_RAY_COUNT - i) * DEGREE_360 / MAX_SUN_RAY_COUNT, arcBounds.CenterX(), mSunCoordinateY);

                canvas.DrawLine(arcBounds.CenterX(), mSunRayStartCoordinateY, arcBounds.CenterX(), mSunRayEndCoordinateY, mPaint);
                canvas.RestoreToCount(sunRaySaveCount);
            }

            if (mShowStar)
            {
                if (mStarHolders.Count == 0)
                {
                    InitStarHolders(arcBounds);
                }

                for (int i = 0; i < mStarHolders.Count; i++)
                {
                    mPaint.SetStyle(Paint.Style.Fill);
                    mPaint.Alpha = mStarHolders[i].mAlpha;
                    canvas.DrawCircle(mStarHolders[i].mCurrentPoint.X, mStarHolders[i].mCurrentPoint.Y, mStarRadius, mPaint);
                }
            }

            canvas.RestoreToCount(saveCount);
        }
예제 #20
0
        protected override void DispatchDraw(Android.Graphics.Canvas canvas)
        {
            var gradients = new Android.Graphics.LinearGradient(0, 0, 0, Height, this.StarColor.ToAndroid(), this.EndColor.ToAndroid(), Android.Graphics.Shader.TileMode.Mirror);
            var paint     = new Android.Graphics.Paint()
            {
                Dither = true
            };

            paint.SetShader(gradients);
            canvas.DrawPaint(paint);
            base.DispatchDraw(canvas);
        }
예제 #21
0
 protected override void OnDraw(Android.Graphics.Canvas canvas)
 {
     base.OnDraw(canvas);
     if (_Selected)
     {
         canvas.DrawARGB(255, 255, 0, 0);
     }
     else
     {
         canvas.DrawARGB(255, 0, 255, 0);
     }
 }
예제 #22
0
		public static void RenderBishop (RenderTarget c, Color main, Color alternate, Color white, Color black)
		{
			SetFillColor (main);
			SetStrokeColor (black);
			MoveTo (9f, 36f);
			AddCurveToPoint (12.39f, 35.03f, 19.11f, 36.43f, 22.5f, 34f);
			AddCurveToPoint (25.89f, 36.43f, 32.61f, 35.03f, 36f, 36f);
			AddCurveToPoint (36f, 36f, 37.65f, 36.54f, 39f, 38f);
			AddCurveToPoint (38.32f, 38.97f, 37.35f, 38.99f, 36f, 38.5f);
			AddCurveToPoint (32.61f, 37.53f, 25.89f, 38.96f, 22.5f, 37.5f);
			AddCurveToPoint (19.11f, 38.96f, 12.39f, 37.53f, 9f, 38.5f);
			AddCurveToPoint (7.646f, 38.99f, 6.677f, 38.97f, 6f, 38f);
			AddCurveToPoint (7.354f, 36.06f, 9f, 36f, 9f, 36f);
			ClosePath ();
			MoveTo (9f, 36f);
			FillAndStrokePath ();
			
			SetFillColor (main);
			SetStrokeColor (black);
			MoveTo (15f, 32f);
			AddCurveToPoint (17.5f, 34.5f, 27.5f, 34.5f, 30f, 32f);
			AddCurveToPoint (30.5f, 30.5f, 30f, 30f, 30f, 30f);
			AddCurveToPoint (30f, 27.5f, 27.5f, 26f, 27.5f, 26f);
			AddCurveToPoint (33f, 24.5f, 33.5f, 14.5f, 22.5f, 10.5f);
			AddCurveToPoint (11.5f, 14.5f, 12f, 24.5f, 17.5f, 26f);
			AddCurveToPoint (17.5f, 26f, 15f, 27.5f, 15f, 30f);
			AddCurveToPoint (15f, 30f, 14.5f, 30.5f, 15f, 32f);
			ClosePath ();
			MoveTo (15f, 32f);
			FillAndStrokePath ();
			
			SetFillColor (main);
			SetStrokeColor (black);
			MoveTo (25f, 8f);
			AddCurveToPoint (25f, 9.380712f, 23.88071f, 10.5f, 22.5f, 10.5f);
			AddCurveToPoint (21.11929f, 10.5f, 20f, 9.380712f, 20f, 8f);
			AddCurveToPoint (20f, 6.619288f, 21.11929f, 5.5f, 22.5f, 5.5f);
			AddCurveToPoint (23.88071f, 5.5f, 25f, 6.619288f, 25f, 8f);
			ClosePath ();
			MoveTo (25f, 8f);
			FillAndStrokePath ();
			
			SetStrokeColor (alternate);
			MoveTo (17.5f, 26f);
			AddLineToPoint (27.5f, 26f);
			MoveTo (15f, 30f);
			AddLineToPoint (30f, 30f);
			MoveTo (22.5f, 15.5f);
			AddLineToPoint (22.5f, 20.5f);
			MoveTo (20f, 18f);
			AddLineToPoint (25f, 18f);
			StrokePath ();
		}
예제 #23
0
        public override void Draw(Android.Graphics.Canvas canvas)
        {
            base.Draw(canvas);

            if (_formsControl != null)
            {
                var outputSize  = new Size(canvas.Width, canvas.Height);
                var finalCanvas = _formsControl.RenderSvgToCanvas(outputSize, ScreenScale, CreatePlatformImageCanvas);
                var image       = (BitmapImage)finalCanvas.GetImage();

                Control.SetImageBitmap(image.Bitmap);
            }
        }
예제 #24
0
 protected override void OnDraw(Android.Graphics.Canvas canvas)
 {
     base.OnDraw(canvas);
     for (int i = 0; i < snow_flake_count; i++)
     {
         using (var drawable = drawables[i]) {
             canvas.Save();
             canvas.Translate(coords[i][0], coords [i] [1]);
             drawable.Draw(canvas);
             canvas.Restore();
         }
     }
     Invalidate();
 }
예제 #25
0
 protected override void DispatchDraw(Android.Graphics.Canvas canvas)
 {
     canvas.Save();
     if (_scaleFactor == 1.0f)
     {
         _posX = 0.0f;
         _posY = 0.0f;
     }
     canvas.Translate(_posX, _posY);
     canvas.Scale(_scaleFactor, _scaleFactor);
     base.DispatchDraw(canvas);
     canvas.Restore();
     Invalidate();
 }
예제 #26
0
        public override void OnDrawOver(Android.Graphics.Canvas cValue, RecyclerView parent, RecyclerView.State state)
        {
            int left  = parent.PaddingLeft;
            int right = parent.Width - parent.PaddingRight;

            for (int i = 0; i < parent.ChildCount; i++)
            {
                View child  = parent.GetChildAt(i);
                var  param  = (RecyclerView.LayoutParams)child.LayoutParameters;
                int  top    = child.Bottom + param.BottomMargin;
                int  bottom = top + divider.IntrinsicHeight;
                divider.SetBounds(left, top, right, bottom);
                divider.Draw(cValue);
            }
        }
예제 #27
0
        protected override void DispatchDraw(Android.Graphics.Canvas canvas)
        {
            base.DispatchDraw(canvas);

            if (Header == null && Divider != null)
            {
                //Drawable.setbounds does not work on pre honeycomb, so you have to do a little work around
                //for anything pre-HC.
                if ((int)Build.VERSION.SdkInt < 11)
                {
                    canvas.ClipRect(0, 0, Width, DividerHeight);
                }
                Divider.Draw(canvas);
            }
        }
예제 #28
0
        //sepia si prietenii
        private Android.Graphics.Bitmap createSepia_and_RBG(Android.Graphics.Bitmap src, int choise)
        {
            Android.Graphics.ColorMatrix colorMatrix_Sepia = new Android.Graphics.ColorMatrix();
            colorMatrix_Sepia.SetSaturation(0);

            Android.Graphics.ColorMatrix colorScale = new Android.Graphics.ColorMatrix();


            if (choise == 1)
            {
                colorScale.SetScale(1, 1f, 0.7f, 1); //sepia
            }
            else
            if (choise == 2)
            {
                colorScale.SetScale(1, 1f, 2f, 1); //albastru
            }
            else
            if (choise == 3)
            {
                colorScale.SetScale(1, 2f, 1f, 1); //verde
            }
            else
            if (choise == 4)
            {
                colorScale.SetScale(2f, 1, 1f, 1); //rosu
            }
            //0.7 sepia ch =1
            //0.4 ceva verziu
            //2 albastru fain
            //5 albastru neon

            colorMatrix_Sepia.PostConcat(colorScale);

            Android.Graphics.ColorFilter ColorFilter_Sepia = new Android.Graphics.ColorMatrixColorFilter(
                colorMatrix_Sepia);

            Android.Graphics.Bitmap bitmap = Android.Graphics.Bitmap.CreateBitmap(src.Width, src.Height,
                                                                                  Android.Graphics.Bitmap.Config.Argb8888);
            Android.Graphics.Canvas canvas = new Android.Graphics.Canvas(bitmap);

            Android.Graphics.Paint paint = new Android.Graphics.Paint();

            paint.SetColorFilter(ColorFilter_Sepia);
            canvas.DrawBitmap(src, 0, 0, paint);

            return(bitmap);
        }
        public override VectorElement BuildClusterElement(MapPos pos, VectorElementVector elements)
        {
            MarkerStyle style = null;

            // Try to reuse existing marker styles
            if (markerStyles.ContainsKey(elements.Count))
            {
                style = markerStyles[elements.Count];
            }

            if (elements.Count == 1)
            {
                style = (elements[0] as Marker).Style;
            }

            if (style == null)
            {
                Android.Graphics.Bitmap canvasBitmap = markerBitmap.Copy(Android.Graphics.Bitmap.Config.Argb8888, true);
                Android.Graphics.Canvas canvas       = new Android.Graphics.Canvas(canvasBitmap);

                Android.Graphics.Paint paint = new Android.Graphics.Paint(Android.Graphics.PaintFlags.AntiAlias);

                paint.TextAlign = (Android.Graphics.Paint.Align.Center);
                paint.TextSize  = 12;
                paint.Color     = Android.Graphics.Color.Argb(255, 0, 0, 0);

                float x = markerBitmap.Width / 2;
                float y = markerBitmap.Height / 2 - 5;

                canvas.DrawText(elements.Count.ToString(), x, y, paint);

                MarkerStyleBuilder styleBuilder = new MarkerStyleBuilder();
                styleBuilder.Bitmap            = BitmapUtils.CreateBitmapFromAndroidBitmap(canvasBitmap);
                styleBuilder.Size              = 30;
                styleBuilder.PlacementPriority = -elements.Count;

                style = styleBuilder.BuildStyle();

                markerStyles.Add(elements.Count, style);
            }

            // Create marker for the cluster
            Marker marker = new Marker(pos, style);

            return(marker);
        }
예제 #30
0
        protected override void OnDraw(Android.Graphics.Canvas canvas)
        {
            base.OnDraw(canvas);

            // Use the blurred view’s draw() method to draw on a private canvas.
            //mBlurredView.Draw(mBlurringCanvas);

            //// Blur the bitmap backing the private canvas into mBlurredBitmap
            //blur();

            //// Draw mBlurredBitmap with transformations on the blurring view’s main canvas.
            //canvas.save();
            //canvas.translate(mBlurredView.getX() - getX(), mBlurredView.getY() - getY());
            //canvas.scale(DOWNSAMPLE_FACTOR, DOWNSAMPLE_FACTOR);
            //canvas.drawBitmap(mBlurredBitmap, 0, 0, null);
            //canvas.restore();
        }
        protected override void OnDraw(Android.Graphics.Canvas canvas)
        {
            if (_isTopDown)
            {
                canvas.Translate(Width, 0);
                canvas.Rotate(90);
            }
            else
            {
                canvas.Translate(0, Height);
                canvas.Rotate(-90);
            }

            canvas.Translate(CompoundPaddingLeft, ExtendedPaddingTop);

            Layout.Draw(canvas);
        }
예제 #32
0
		public static void Render (RenderTarget c, Player.PlayerColourNames player, Piece.PieceNames name)
		{
			target = c;

			var color = player == Player.PlayerColourNames.White ? White : Black;
			var main = color;
			var alternate = player != Player.PlayerColourNames.White ? White : Black;


			var white = White;
			var black = Black;

			switch (name) {
			case Piece.PieceNames.Bishop:
				RenderBishop (c, main, alternate, white, black);
				break;
			case Piece.PieceNames.King:
				if (player == Player.PlayerColourNames.White)
					RenderWhiteKing (c, main, alternate, white, black);
				else
					RenderBlackKing (c, main, alternate, white, black);
				break;
			case Piece.PieceNames.Knight:
				RenderKnight (c, player, main, alternate, white, black);
				break;
			case Piece.PieceNames.Pawn:
				RenderPawn (c, main, alternate, white, black);
				break;
			case Piece.PieceNames.Queen:
				if (player == Player.PlayerColourNames.White)
					RenderWhiteQueen (c, white, black);
				else
					RenderBlackQueen (c);
				break;
			case Piece.PieceNames.Rook:
				if (player == Player.PlayerColourNames.White)
					RenderWhiteRook (c, white, black);
				else
					RenderBlackRook (c);
				break;
			}
		}
예제 #33
0
		public static void RenderWhiteQueen (RenderTarget c, Color white, Color black)
		{
			SetFillColor (white);
			SetStrokeColor (black);

			MoveTo (9f, 26f);
			AddCurveToPoint (17.5f, 24.5f, 30f, 24.5f, 36f, 26f);
			AddLineToPoint (38f, 14f);
			AddLineToPoint (31f, 25f);
			AddLineToPoint (31f, 11f);
			AddLineToPoint (25.5f, 24.5f);
			AddLineToPoint (22.5f, 9.5f);
			AddLineToPoint (19.5f, 24.5f);
			AddLineToPoint (14f, 10.5f);
			AddLineToPoint (14f, 25f);
			AddLineToPoint (7f, 14f);
			AddLineToPoint (9f, 26f);
			ClosePath ();
			MoveTo (9f, 26f);
			FillAndStrokePath ();

			MoveTo (9f, 26f);
			AddCurveToPoint (9f, 28f, 10.5f, 28f, 11.5f, 30f);
			AddCurveToPoint (12.5f, 31.5f, 12.5f, 31f, 12f, 33.5f);
			AddCurveToPoint (10.5f, 34.5f, 10.5f, 36f, 10.5f, 36f);
			AddCurveToPoint (9f, 37.5f, 11f, 38.5f, 11f, 38.5f);
			AddCurveToPoint (17.5f, 39.5f, 27.5f, 39.5f, 34f, 38.5f);
			AddCurveToPoint (34f, 38.5f, 35.5f, 37.5f, 34f, 36f);
			AddCurveToPoint (34f, 36f, 34.5f, 34.5f, 33f, 33.5f);
			AddCurveToPoint (32.5f, 31f, 32.5f, 31.5f, 33.5f, 30f);
			AddCurveToPoint (34.5f, 28f, 36f, 28f, 36f, 26f);
			AddCurveToPoint (27.5f, 24.5f, 17.5f, 24.5f, 9f, 26f);
			ClosePath ();
			MoveTo (9f, 26f);
			FillAndStrokePath ();

			MoveTo (11.5f, 30f);
			AddCurveToPoint (15f, 29f, 30f, 29f, 33.5f, 30f);
			StrokePath ();

			MoveTo (12f, 33.5f);
			AddCurveToPoint (18f, 32.5f, 27f, 32.5f, 33f, 33.5f);
			StrokePath ();


			SetFillColor (White);
			SetStrokeColor (Black);

			AddCircle (6f, 12f, 2.0f);
			FillAndStrokePath ();

			AddCircle (14f, 9, 2.0f);
			FillAndStrokePath ();

			AddCircle (22.5f, 8, 2.0f);
			FillAndStrokePath ();

			AddCircle (31, 9, 2.0f);
			FillAndStrokePath ();

			AddCircle (39, 12, 2.0f);
			FillAndStrokePath ();
		}
예제 #34
0
 public Graphics(Android.Graphics.Canvas canvas)
 {
     ACanvas = canvas;
     Init ();
 }
        public override Carto.Graphics.Bitmap OnDrawPopup(PopupDrawInfo popupDrawInfo)
        {
            PopupStyle style = popupDrawInfo.Popup.Style;

            // Calculate scaled dimensions
            float DPToPX = popupDrawInfo.DPToPX;
            float PXTODP = 1 / DPToPX;

            if (style.ScaleWithDPI)
            {
                DPToPX = 1;
            }
            else
            {
                PXTODP = 1;
            }

            float screenWidth = popupDrawInfo.ScreenBounds.GetWidth() * PXTODP;
            float screenHeight = popupDrawInfo.ScreenBounds.GetHeight() * PXTODP;

            // Update sizes based on scale (uses extension method, cf. Shared/Extensions
            int fontSize = FontSize.Update(DPToPX);

            int triangleWidth = TriangleSize.Update(DPToPX);
            int triangleHeight = TriangleSize.Update(DPToPX);

            int strokeWidth = StrokeWidth.Update(DPToPX);
            int screenPadding = ScreenPadding.Update(DPToPX);

            // Set font
            var font = Android.Graphics.Typeface.Create("HelveticaNeue-Light", Android.Graphics.TypefaceStyle.Normal);

            // Calculate the maximum popup size, adjust with dpi
            int maxPopupWidth = (int)(Math.Min(screenWidth, screenHeight));

            float halfStrokeWidth = strokeWidth * 0.5f;
            int maxTextWidth = maxPopupWidth - (2 * screenPadding + strokeWidth);

            // Measure text
            TextPaint textPaint = new TextPaint { Color = TextColor, TextSize = fontSize };
            textPaint.SetTypeface(font);

            var textLayout = new StaticLayout(text, textPaint, maxTextWidth, Layout.Alignment.AlignNormal, 1, 0, false);

            int textX = (int)Math.Min(textPaint.MeasureText(text), textLayout.Width);
            int textY = textLayout.Height;

            int popupWidth = textX + (2 * PopupPadding + strokeWidth + triangleWidth);
            int popupHeight = textY + (2 * PopupPadding + strokeWidth);

            var bitmap = Android.Graphics.Bitmap.CreateBitmap(popupWidth, popupHeight, Android.Graphics.Bitmap.Config.Argb8888);
            var canvas = new Android.Graphics.Canvas(bitmap);

            var trianglePath = new Android.Graphics.Path();
            trianglePath.MoveTo(triangleWidth, 0);
            trianglePath.LineTo(halfStrokeWidth, triangleHeight * 0.5f);
            trianglePath.LineTo(triangleWidth, triangleHeight);
            trianglePath.Close();

            int triangleOffsetX = 0;
            int triangleOffsetY = (popupHeight - triangleHeight) / 2;

            // Create paint object
            var paint = new Android.Graphics.Paint();
            paint.AntiAlias = true;
            paint.SetStyle(Android.Graphics.Paint.Style.Stroke);
            paint.StrokeWidth = strokeWidth;
            paint.Color = StrokeColor;

            // Stroke background
            var background = new Android.Graphics.RectF();
            background.Left = triangleWidth;
            background.Top = halfStrokeWidth;
            background.Right = popupWidth - strokeWidth;
            background.Bottom = popupHeight - strokeWidth;
            canvas.DrawRect(background, paint);

            // Stroke triangle
            canvas.Save();
            canvas.Translate(triangleOffsetX, triangleOffsetY);
            canvas.DrawPath(trianglePath, paint);
            canvas.Restore();

            // Fill background
            paint.SetStyle(Android.Graphics.Paint.Style.Fill);
            paint.Color = BackgroundColor;
            canvas.DrawRect(background, paint);

            // Fill triangle
            canvas.Save();
            canvas.Translate(triangleOffsetX, triangleOffsetY);
            canvas.DrawPath(trianglePath, paint);
            canvas.Restore();

            if (textLayout != null)
            {
                // Draw text
                canvas.Save();
                canvas.Translate(halfStrokeWidth + triangleWidth + PopupPadding, halfStrokeWidth + PopupPadding);
                textLayout.Draw(canvas);
                canvas.Restore();
            }

            return BitmapUtils.CreateBitmapFromAndroidBitmap(bitmap);
        }
예제 #36
0
 public static bool UseLargeTextures()
 {
     var c = new Android.Graphics.Canvas ();
     return c.MaximumBitmapWidth > 2048;
 }
예제 #37
0
		public static void RenderWhiteRook (RenderTarget c, Color white, Color black)
		{
			SetFillColor (white);
			SetStrokeColor (black);

			MoveTo (9f, 39f);
			AddLineToPoint (36f, 39f);
			AddLineToPoint (36f, 36f);
			AddLineToPoint (9f, 36f);
			AddLineToPoint (9f, 39f);
			ClosePath ();
			MoveTo (9f, 39f);
			FillAndStrokePath ();

			MoveTo (12f, 36f);
			AddLineToPoint (12f, 32f);
			AddLineToPoint (33f, 32f);
			AddLineToPoint (33f, 36f);
			AddLineToPoint (12f, 36f);
			ClosePath ();
			MoveTo (12f, 36f);
			FillAndStrokePath ();

			MoveTo (11f, 14f);
			AddLineToPoint (11f, 9f);
			AddLineToPoint (15f, 9f);
			AddLineToPoint (15f, 11f);
			AddLineToPoint (20f, 11f);
			AddLineToPoint (20f, 9f);
			AddLineToPoint (25f, 9f);
			AddLineToPoint (25f, 11f);
			AddLineToPoint (30f, 11f);
			AddLineToPoint (30f, 9f);
			AddLineToPoint (34f, 9f);
			AddLineToPoint (34f, 14f);
			FillAndStrokePath ();

			MoveTo (34f, 14f);
			AddLineToPoint (31f, 17f);
			AddLineToPoint (14f, 17f);
			AddLineToPoint (11f, 14f);
			FillAndStrokePath ();

			MoveTo (31f, 17f);
			AddLineToPoint (31f, 29.5f);
			AddLineToPoint (14f, 29.5f);
			AddLineToPoint (14f, 17f);
			FillAndStrokePath ();

			MoveTo (31f, 29.5f);
			AddLineToPoint (32.5f, 32f);
			AddLineToPoint (12.5f, 32f);
			AddLineToPoint (14f, 29.5f);
			FillAndStrokePath ();

			MoveTo (11f, 14f);
			AddLineToPoint (34f, 14f);
			StrokePath ();
		}
예제 #38
0
		public static void RenderPawn (RenderTarget c, Color main, Color alternate, Color white, Color black)
		{
			SetFillColor (main);
			SetStrokeColor (black);

			MoveTo (22f, 9f);
			AddCurveToPoint (19.79f, 9f, 18f, 10.79f, 18f, 13f);
			AddCurveToPoint (18f, 13.89f, 18.29f, 14.71f, 18.78f, 15.38f);
			AddCurveToPoint (16.83f, 16.5f, 15.5f, 18.59f, 15.5f, 21f);
			AddCurveToPoint (15.5f, 23.03f, 16.44f, 24.84f, 17.91f, 26.03f);
			AddCurveToPoint (14.91f, 27.09f, 10.5f, 31.58f, 10.5f, 39.5f);
			AddLineToPoint (33.5f, 39.5f);
			AddCurveToPoint (33.5f, 31.58f, 29.09f, 27.09f, 26.09f, 26.03f);
			AddCurveToPoint (27.56f, 24.84f, 28.5f, 23.03f, 28.5f, 21f);
			AddCurveToPoint (28.5f, 18.59f, 27.17f, 16.5f, 25.22f, 15.38f);
			AddCurveToPoint (25.71f, 14.71f, 26f, 13.89f, 26f, 13f);
			AddCurveToPoint (26f, 10.79f, 24.21f, 9f, 22f, 9f);

			ClosePath ();
			MoveTo (22f, 9f);
			FillAndStrokePath ();
		}
예제 #39
0
 public Graphics(Image image)
 {
     ACanvas = new Android.Graphics.Canvas((image as Bitmap).ABitmap);
     SourceBitmap = image as Bitmap;
     Init ();
 }
예제 #40
0
 /// <summary>
 /// Get OCR text and draw lines on original photo
 /// </summary>
 /// <param name="imageBytes"></param>
 /// <param name="threshhold"></param>
 private async void PerformOCR(byte[] imageBytes, double threshhold)
 {
     if (_api.Initialized)
     {
         string resultText = "";
         var result = await _api.SetImage(imageBytes);
         if (result)
         {
             resultText = _api.Text;
             bitmapWithBoxes = bitmap.Copy(bitmap.GetConfig(), true);
             Android.Graphics.Canvas canvas = new Android.Graphics.Canvas(bitmapWithBoxes);
             Android.Graphics.Color color = Android.Graphics.Color.IndianRed;
             Android.Graphics.Paint paint = new Android.Graphics.Paint();
             paint.SetStyle(Android.Graphics.Paint.Style.Stroke);
             paint.StrokeWidth = 2;
             foreach (Tesseract.Result r in _api.Results(Tesseract.PageIteratorLevel.Textline))
             {
                 if (r.Confidence > 50)
                 {
                     paint.Color = Android.Graphics.Color.GreenYellow;
                 }
                 else if (r.Confidence > 10)
                 {
                     paint.Color = Android.Graphics.Color.DarkOrange;
                 }
                 else
                 {
                     paint.Color = Android.Graphics.Color.DarkRed;
                 }
                 canvas.DrawRect(r.Box.X, r.Box.Y, r.Box.X + r.Box.Width, r.Box.Y + r.Box.Height, paint);
             }
             canvas.Dispose();
             Android.Util.Log.Info("tesseract result", resultText);
             PostProcessing pp = new PostProcessing();
             pp.ProcessString(resultText);
             _data = pp.processedList;
         }
     }
     else
     {
         Toast.MakeText(this, "OCR not initialized.", ToastLength.Long).Show();
     }
 }
예제 #41
0
        void ScreenshotTest(object sender,EventArgs EventArgs)
        {
            Android.Graphics.Bitmap b = Android.Graphics.Bitmap.CreateBitmap(RI.TL.Width,RI.TL.Height,Android.Graphics.Bitmap.Config.Argb8888);
            Android.Graphics.Canvas c = new Android.Graphics.Canvas (b);
            c.DrawColor (Android.Graphics.Color.White);
            RI.TL.Draw(c);

            using (System.IO.FileStream fs = new System.IO.FileStream (
                "/sdcard/screen.png", System.IO.FileMode.Create)) {
                b.Compress (Android.Graphics.Bitmap.CompressFormat.Png, 90, fs);}

            var uri = Android.Net.Uri.FromFile (new Java.IO.File("/sdcard/screen.png"));
            var email = new Intent (Android.Content.Intent.ActionSend);
            email.SetType ("message/rfc822");
            email.PutExtra (Android.Content.Intent.ExtraEmail, new string[]{"*****@*****.**"} );
            email.PutExtra (Android.Content.Intent.ExtraCc,	new string[]{"*****@*****.**"} );
            email.PutExtra (Android.Content.Intent.ExtraSubject, "[ModemListe]");
            email.PutExtra (Android.Content.Intent.ExtraText, "Hello from Xamarin.Android");
            email.PutExtra (Intent.ExtraStream,uri);
            StartActivity (Intent.CreateChooser(email,"send"));
        }
예제 #42
0
		public static void RenderBlackRook (RenderTarget c)
		{
			SetFillColor (Black);
			SetStrokeColor (White);

			MoveTo (9f, 39f);
			AddLineToPoint (36f, 39f);
			AddLineToPoint (36f, 36f);
			AddLineToPoint (9f, 36f);
			AddLineToPoint (9f, 39f);
			ClosePath ();
			MoveTo (9f, 39f);
			FillPath ();

			MoveTo (12.5f, 32f);
			AddLineToPoint (14f, 29.5f);
			AddLineToPoint (31f, 29.5f);
			AddLineToPoint (32.5f, 32f);
			AddLineToPoint (12.5f, 32f);
			ClosePath ();
			MoveTo (12.5f, 32f);
			FillPath ();

			MoveTo (12f, 36f);
			AddLineToPoint (12f, 32f);
			AddLineToPoint (33f, 32f);
			AddLineToPoint (33f, 36f);
			AddLineToPoint (12f, 36f);
			ClosePath ();
			MoveTo (12f, 36f);
			FillPath ();

			MoveTo (14f, 29.5f);
			AddLineToPoint (14f, 16.5f);
			AddLineToPoint (31f, 16.5f);
			AddLineToPoint (31f, 29.5f);
			AddLineToPoint (14f, 29.5f);
			ClosePath ();
			MoveTo (14f, 29.5f);
			FillPath ();

			MoveTo (14f, 16.5f);
			AddLineToPoint (11f, 14f);
			AddLineToPoint (34f, 14f);
			AddLineToPoint (31f, 16.5f);
			AddLineToPoint (14f, 16.5f);
			ClosePath ();
			MoveTo (14f, 16.5f);
			FillPath ();

			MoveTo (11f, 14f);
			AddLineToPoint (11f, 9f);
			AddLineToPoint (15f, 9f);
			AddLineToPoint (15f, 11f);
			AddLineToPoint (20f, 11f);
			AddLineToPoint (20f, 9f);
			AddLineToPoint (25f, 9f);
			AddLineToPoint (25f, 11f);
			AddLineToPoint (30f, 11f);
			AddLineToPoint (30f, 9f);
			AddLineToPoint (34f, 9f);
			AddLineToPoint (34f, 14f);
			AddLineToPoint (11f, 14f);
			ClosePath ();
			MoveTo (11f, 14f);
			FillPath ();

			MoveTo (12f, 35.5f);
			AddLineToPoint (33f, 35.5f);
			AddLineToPoint (33f, 35.5f);
			StrokePath ();

			MoveTo (13f, 31.5f);
			AddLineToPoint (32f, 31.5f);
			StrokePath ();

			MoveTo (14f, 29.5f);
			AddLineToPoint (31f, 29.5f);
			StrokePath ();

			MoveTo (14f, 16.5f);
			AddLineToPoint (31f, 16.5f);
			StrokePath ();

			MoveTo (11f, 14f);
			AddLineToPoint (34f, 14f);
			StrokePath ();
		}
예제 #43
0
		public static void RenderBlackKing (RenderTarget c, Color main, Color alternate, Color white, Color black)
		{
			SetStrokeColor (black);
			MoveTo (22.5f, 11.63f);
			AddLineToPoint (22.5f, 6f);
			StrokePath ();
			
			SetFillColor (main);
			SetStrokeColor (alternate);
			MoveTo (22.5f, 25f);
			AddCurveToPoint (22.5f, 25f, 27f, 17.5f, 25.5f, 14.5f);
			AddCurveToPoint (25.5f, 14.5f, 24.5f, 12f, 22.5f, 12f);
			AddCurveToPoint (20.5f, 12f, 19.5f, 14.5f, 19.5f, 14.5f);
			AddCurveToPoint (18f, 17.5f, 22.5f, 25f, 22.5f, 25f);
			FillPath ();

			MoveTo (11.5f, 37f);
			AddCurveToPoint (17f, 40.5f, 27f, 40.5f, 32.5f, 37f);
			AddLineToPoint (32.5f, 30f);
			AddCurveToPoint (32.5f, 30f, 41.5f, 25.5f, 38.5f, 19.5f);
			AddCurveToPoint (34.5f, 13f, 25f, 16f, 22.5f, 23.5f);
			AddLineToPoint (22.5f, 27f);
			AddLineToPoint (22.5f, 23.5f);
			AddCurveToPoint (19f, 16f, 9.5f, 13f, 6.5f, 19.5f);
			AddCurveToPoint (3.5f, 25.5f, 11.5f, 29.5f, 11.5f, 29.5f);
			AddLineToPoint (11.5f, 37f);
			ClosePath ();
			MoveTo (11.5f, 37f);
			FillPath ();

			SetStrokeColor (black);
			MoveTo (20f, 8f);
			AddLineToPoint (25f, 8f);
			StrokePath ();

			SetStrokeColor (alternate);
			MoveTo (32f, 29.5f);
			AddCurveToPoint (32f, 29.5f, 40.5f, 25.5f, 38.03f, 19.85f);
			AddCurveToPoint (34.15f, 14f, 25f, 18f, 22.5f, 24.5f);
			AddLineToPoint (22.51f, 26.6f);
			AddLineToPoint (22.5f, 24.5f);
			AddCurveToPoint (20f, 18f, 9.906f, 14f, 6.997f, 19.85f);
			AddCurveToPoint (4.5f, 25.5f, 11.85f, 28.85f, 11.85f, 28.85f);
			StrokePath ();

			MoveTo (11.5f, 30f);
			AddCurveToPoint (17f, 27f, 27f, 27f, 32.5f, 30f);
			MoveTo (11.5f, 33.5f);
			AddCurveToPoint (17f, 30.5f, 27f, 30.5f, 32.5f, 33.5f);
			MoveTo (11.5f, 37f);
			AddCurveToPoint (17f, 34f, 27f, 34f, 32.5f, 37f);
			StrokePath ();
		}
예제 #44
0
		public static void RenderBlackQueen (RenderTarget c)
		{
			SetFillColor (Black);
			SetStrokeColor (White);

			AddCircle (6f, 12f, 2.75f);
			FillPath ();

			AddCircle (14f, 9, 2.75f);
			FillPath ();

			AddCircle (22.5f, 8, 2.75f);
			FillPath ();

			AddCircle (31, 9, 2.75f);
			FillPath ();

			AddCircle (39, 12, 2.75f);
			FillPath ();

			MoveTo (9f, 26f);
			AddCurveToPoint (17.5f, 24.5f, 30f, 24.5f, 36f, 26f);
			AddLineToPoint (38.5f, 13.5f);
			AddLineToPoint (31f, 25f);
			AddLineToPoint (30.7f, 10.9f);
			AddLineToPoint (25.5f, 24.5f);
			AddLineToPoint (22.5f, 10f);
			AddLineToPoint (19.5f, 24.5f);
			AddLineToPoint (14.3f, 10.9f);
			AddLineToPoint (14f, 25f);
			AddLineToPoint (6.5f, 13.5f);
			AddLineToPoint (9f, 26f);
			ClosePath ();
			MoveTo (9f, 26f);
			FillPath ();

			MoveTo (9f, 26f);
			AddCurveToPoint (9f, 28f, 10.5f, 28f, 11.5f, 30f);
			AddCurveToPoint (12.5f, 31.5f, 12.5f, 31f, 12f, 33.5f);
			AddCurveToPoint (10.5f, 34.5f, 10.5f, 36f, 10.5f, 36f);
			AddCurveToPoint (9f, 37.5f, 11f, 38.5f, 11f, 38.5f);
			AddCurveToPoint (17.5f, 39.5f, 27.5f, 39.5f, 34f, 38.5f);
			AddCurveToPoint (34f, 38.5f, 35.5f, 37.5f, 34f, 36f);
			AddCurveToPoint (34f, 36f, 34.5f, 34.5f, 33f, 33.5f);
			AddCurveToPoint (32.5f, 31f, 32.5f, 31.5f, 33.5f, 30f);
			AddCurveToPoint (34.5f, 28f, 36f, 28f, 36f, 26f);
			AddCurveToPoint (27.5f, 24.5f, 17.5f, 24.5f, 9f, 26f);
			ClosePath ();
			MoveTo (9f, 26f);
			FillPath ();

			MoveTo (11f, 38.5f);
			AddCurveToPoint (18.44776f, 41.09097f, 26.55224f, 41.09097f, 34f, 38.5f);
			FillAndStrokePath ();

			MoveTo (11f, 29f);
			AddCurveToPoint (18.44776f, 26.40903f, 26.55224f, 26.40903f, 34f, 29f);
			FillAndStrokePath ();

			MoveTo (12.5f, 31.5f);
			AddLineToPoint (32.5f, 31.5f);
			FillAndStrokePath ();

			MoveTo (11.5f, 34.5f);
			AddCurveToPoint (18.64271f, 36.86467f, 26.35729f, 36.86467f, 33.5f, 34.5f);
			FillAndStrokePath ();

			MoveTo (10.5f, 37.5f);
			AddCurveToPoint (18.24997f, 40.32858f, 26.75003f, 40.32858f, 34.5f, 37.5f);
			FillAndStrokePath ();
		}
예제 #45
0
		public static void RenderKnight (RenderTarget c, Player.PlayerColourNames player, Color main, Color alternate, Color white, Color black)
		{	
			SetFillColor (main);
			SetStrokeColor (black);
			MoveTo (22f, 10f);
			AddCurveToPoint (32.5f, 11f, 38.5f, 18f, 38f, 39f);
			AddLineToPoint (15f, 39f);
			AddCurveToPoint (15f, 30f, 25f, 32.5f, 23f, 18f);
			FillAndStrokePath ();

			SetFillColor (main);
			SetStrokeColor (black);
			MoveTo (24f, 18f);
			AddCurveToPoint (24.38f, 20.91f, 18.45f, 25.37f, 16f, 27f);
			AddCurveToPoint (13f, 29f, 13.18f, 31.34f, 11f, 31f);
			AddCurveToPoint (9.958f, 30.06f, 12.41f, 27.96f, 11f, 28f);
			AddCurveToPoint (10f, 28f, 11.19f, 29.23f, 10f, 30f);
			AddCurveToPoint (9f, 30f, 5.997f, 31f, 6f, 26f);
			AddCurveToPoint (6f, 24f, 12f, 14f, 12f, 14f);
			AddCurveToPoint (12f, 14f, 13.89f, 12.1f, 14f, 10.5f);
			AddCurveToPoint (13.27f, 9.506f, 13.5f, 8.5f, 13.5f, 7.5f);
			AddCurveToPoint (14.5f, 6.5f, 16.5f, 10f, 16.5f, 10f);
			AddLineToPoint (18.5f, 10f);
			AddCurveToPoint (18.5f, 10f, 19.28f, 8.008f, 21f, 7f);
			AddCurveToPoint (22f, 7f, 22f, 10f, 22f, 10f);
			FillAndStrokePath ();

			SetFillColor (main);
			SetStrokeColor (alternate);
			MoveTo (9.5f, 25.5f);
			AddCurveToPoint (9.5f, 25.77614f, 9.276142f, 26f, 9f, 26f);
			AddCurveToPoint (8.723858f, 26f, 8.5f, 25.77614f, 8.5f, 25.5f);
			AddCurveToPoint (8.5f, 25.22386f, 8.723858f, 25f, 9f, 25f);
			AddCurveToPoint (9.276142f, 25f, 9.5f, 25.22386f, 9.5f, 25.5f);
			ClosePath ();
			MoveTo (9.5f, 25.5f);
			FillAndStrokePath ();

			SetMatrix (0.866f, 0.5f, -0.5f, 0.866f, 9.693f, -5.173f);
			SetFillColor (black);
			SetStrokeColor (alternate);
			MoveTo (15f, 15.5f);
			AddCurveToPoint (15f, 16.32843f, 14.77614f, 17f, 14.5f, 17f);
			AddCurveToPoint (14.22386f, 17f, 14f, 16.32843f, 14f, 15.5f);
			AddCurveToPoint (14f, 14.67157f, 14.22386f, 14f, 14.5f, 14f);
			AddCurveToPoint (14.77614f, 14f, 15f, 14.67157f, 15f, 15.5f);
			ClosePath ();
			MoveTo (15f, 15.5f);
			FillAndStrokePath ();

			if (player == Player.PlayerColourNames.Black) {
				SetFillColor (white);
				MoveTo (24.55f, 10.4f);
				AddLineToPoint (24.1f, 11.85f);
				AddLineToPoint (24.6f, 12f);
				AddCurveToPoint (27.75f, 13f, 30.25f, 14.49f, 32.5f, 18.75f);
				AddCurveToPoint (34.75f, 23.01f, 35.75f, 29.06f, 35.25f, 39f);
				AddLineToPoint (35.2f, 39.5f);
				AddLineToPoint (37.45f, 39.5f);
				AddLineToPoint (37.5f, 39f);
				AddCurveToPoint (38f, 28.94f, 36.62f, 22.15f, 34.25f, 17.66f);
				AddCurveToPoint (31.88f, 13.17f, 28.46f, 11.02f, 25.06f, 10.5f);
				AddLineToPoint (24.55f, 10.4f);
				ClosePath ();
				MoveTo (24.55f, 10.4f);
				FillPath ();
			}
		}