Example #1
0
        static nfloat LuminanceForColor(UIColor color)
        {
            CGColor cgcolor    = color.CGColor;
            var     components = cgcolor.Components;
            nfloat  luminance  = 0;

            switch (cgcolor.ColorSpace.Model)
            {
            case CGColorSpaceModel.Monochrome:
                // For grayscale colors, the luminance is the color value
                luminance = components[0];
                break;

            case CGColorSpaceModel.RGB:
                // For RGB colors, we calculate luminance assuming sRGB Primaries as per
                // http://en.wikipedia.org/wiki/Luminance_(relative)
                luminance = 0.2126f * components[0] + 0.7152f * components[1] + 0.0722f * components[2];
                break;

            default:
                // We don't implement support for non-gray, non-rgb colors at this time.
                // Since our only consumer is colorSortByLuminance, we return a larger than normal
                // value to ensure that these types of colors are sorted to the end of the list.
                luminance = 2.0f;
                break;
            }
            return(luminance);
        }
Example #2
0
        void UpdateColors()
        {
            CGColor[] gradientColors;
            if (_Gradient != null && !Outline)
            {
                gradientColors = new CGColor[] { _Gradient.Start.ToUIColor().CGColor, _Gradient.End.ToUIColor().CGColor };
            }
            else
            {
                gradientColors = new CGColor[] { UIColor.Clear.CGColor, UIColor.Clear.CGColor };
            }

            CATransaction.Begin();
            CATransaction.DisableActions = true;
            if (Outline)
            {
                Layer.BorderWidth = 1;
                Layer.BorderColor = OutlineColor.CGColor;
                if (Label != null)
                {
                    Label.TextColor = OutlineColor;
                }
            }
            else
            {
                Layer.BorderWidth = 0;
                Layer.BorderColor = UIColor.Clear.CGColor;
                if (Label != null)
                {
                    Label.TextColor = UIColor.White;
                }
            }
            GradientLayer.Colors = gradientColors;
            CATransaction.Commit();
        }
        public static CGColor GetPixelColour(this UIImage image, CGPoint point)
        {
            var     rawData     = new byte[4];
            var     handle      = GCHandle.Alloc(rawData);
            CGColor resultColor = null;

            try
            {
                using (var colorSpace = CGColorSpace.CreateDeviceRGB())
                {
                    using (var context = new CGBitmapContext(rawData, 1, 1, 8, 4, colorSpace, CGImageAlphaInfo.PremultipliedLast))
                    {
                        context.DrawImage(new CGRect(-point.X, point.Y - image.Size.Height, image.Size.Width, image.Size.Height), image.CGImage);
                        float red   = (rawData[0]) / 255.0f;
                        float green = (rawData[1]) / 255.0f;
                        float blue  = (rawData[2]) / 255.0f;
                        float alpha = (rawData[3]) / 255.0f;
                        resultColor = new CGColor(red, green, blue, alpha);
                    }
                }
            }
            finally
            {
                handle.Free();
            }

            return(resultColor);
        }
Example #4
0
        public override void Draw(RectangleF area)
        {
            if (this.data == null || this.data.Count() == 0)
            {
                base.Draw (area);
                return;
            }

            var color = LineColor.CGColor;
            if (color == null)
                color = new CGColor (255, 255, 255);

            CGContext context = UIGraphics.GetCurrentContext();

            context.BeginPath();
            context.SetStrokeColor (color);

            var d = this.data;

            float mx = this.max;
            float yscale = Bounds.Height / (mx - this.min);
            float xscale = Bounds.Width/60;
            context.MoveTo (0, (mx - d[0].Value) * yscale);

            for (int i = 0; i < d.Count(); i++)
            {
                var telemetry = d[i];
                var x = ((float)(telemetry.Timestamp - DateTime.UtcNow).TotalSeconds * xscale) + Bounds.Width;
                var y = (mx - telemetry.Value) * yscale;
                //Console.WriteLine("X:{0} , Y:{1}",x,y);
                context.AddLineToPoint (x,y );
            }

            context.DrawPath (CGPathDrawingMode.Stroke);
        }
Example #5
0
 public void ColorSpace()
 {
     using (var c = new CGColor(0.5f, 0.5f, 0.5f, 0.5f)) {
         using (var spc = c.ColorSpace)
             Assert.IsNotNull(spc, "ColorSpace");
     }
 }
Example #6
0
 public ProgressButtonLayer(int drawProgress) : base()
 {
     _drawProgress = drawProgress;
     StateChanged();
     _state       = ProgressButtonState.Active;
     _buttonColor = ProgressButtonColors.ButtonColor.AsCgColor();
 }
Example #7
0
        protected override bool Validating()
        {
            if (_defaultColor == null)
            {
                var firstRelationship = _sourceBindingRelationships.FirstOrDefault();
                if (firstRelationship.Value != null)
                {
                    var firstView = firstRelationship.Value.FirstOrDefault();
                    if (firstView != null)
                    {
                        _defaultColor = firstView.Layer.BorderColor;
                        _defaultWidth = firstView.Layer.BorderWidth;
                    }
                }
            }

            if (_sourceBindingRelationships == null)
            {
                return(false);
            }
            foreach (var textView in _sourceBindingRelationships.SelectMany(sourceBindingRelationship => sourceBindingRelationship.Value))
            {
                textView.Layer.BorderColor = _defaultColor;
                textView.Layer.BorderWidth = _defaultWidth.GetValueOrDefault();
            }
            return(true);
        }
Example #8
0
        static CTLine GetLabel(string label, CGColor foregroundColor, out CGSize bounds)
        {
            // I seriously have no idea what this is other than 8388608/1024/1024=8 -abock
            const int undocumentedKennethConstantOnlyHeUnderstands = 8388608;

            var typesetter = new CTTypesetter(
                new NSAttributedString(
                    label,
                    new CTStringAttributes {
                Font            = new CTFont(LabelFontBold.FontName, LabelFontBold.PointSize),
                ForegroundColor = foregroundColor
            }.Dictionary
                    )
                );

            var lineRange = new NSRange(0, typesetter.SuggestLineBreak(0,
                                                                       undocumentedKennethConstantOnlyHeUnderstands));
            var line = typesetter.GetLine(lineRange);

            nfloat ascent;
            nfloat descent;
            nfloat leading;
            var    lineWidth = line.GetTypographicBounds(out ascent, out descent, out leading);

            bounds = new CGSize(
                // +1 matches best to CTFramesetter's behavior
                (nfloat)Math.Ceiling(ascent + descent + leading + 1),
                (nfloat)lineWidth
                );

            return(line);
        }
Example #9
0
        internal void StateChanged(ProgressButtonState state, string customtext, CGColor animationColor, bool reDrawOptimized = true)
        {
            if (StateUpdated != null)
            {
                StateUpdated();
            }

            if (State != state)
            {
                _colorAnimationRing.RemoveAllAnimations();
            }
            _progressButtonLayer.CurText = customtext;
            _progressButtonLayer.State   = state;
            if (state == ProgressButtonState.Cleaned)
            {
                _colorAnimationRing.AddAnimation(DrawAnimationWithColor(ProgressButtonColors.CleanedStateProgress.AsResourceCgColor()), PARAMs.Animation);
            }
            else if (animationColor != null && state != ProgressButtonState.Disabled && (state != State || !reDrawOptimized))
            {
                _colorAnimationRing.AddAnimation(DrawAnimationWithColor(animationColor), PARAMs.Animation);
            }
            if (state == ProgressButtonState.Active && _animationColor != animationColor)
            {
                _colorAnimationRing.RemoveAllAnimations();
                _colorAnimationRing.AddAnimation(DrawAnimationWithColor(animationColor), PARAMs.Animation);
            }
            _state          = state;
            _animationColor = animationColor;
        }
        private UIView AddShadowToView(UIView view, bool left)
        {
            // create a view with the same frame
            var viewWithShadow = new UIView(view.Frame);

            // create a shadow
            var shadowView = new UIView(viewWithShadow.Bounds);

            var colors = new CGColor[] {
                UIColor.FromWhiteAlpha(0f, 0f).CGColor,
                UIColor.FromWhiteAlpha(0f, 1f).CGColor
            };

            var gradient = new CAGradientLayer()
            {
                Frame  = shadowView.Bounds,
                Colors = colors
            };

            gradient.StartPoint = new CGPoint(Reverse ? 0f : 1f, Reverse ? 0.2f : 0f);
            gradient.EndPoint   = new CGPoint(Reverse ? 1f : 0f, Reverse ? 0f : 1f);
            shadowView.Layer.InsertSublayer(gradient, 1);

            // add the original view into our new view
            view.Frame = view.Bounds;
            viewWithShadow.AddSubview(view);

            // place the shadow on top
            viewWithShadow.AddSubview(shadowView);

            return(viewWithShadow);
        }
Example #11
0
        internal static bool IsColorDark(this CGColor color)
        {
            var components = color.Components;
            var brightness = ((components[0] * 299) + (components[1] * 587) + (components[2] * 144)) / 1000;

            return(brightness <= 0.5);
        }
Example #12
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            CGColor[] colors = new CGColor[] { UIColor.FromRGB(98, 107, 186).CGColor,
                                               UIColor.FromRGB(57, 122, 193).CGColor };
            CAGradientLayer gradientLayer = new CAGradientLayer();

            gradientLayer.Frame  = this.View.Bounds;
            gradientLayer.Colors = colors;
            this.View.Layer.InsertSublayer(gradientLayer, 0);

            btnBack.SetImage(UIImage.FromFile("back_icon.png"), UIControlState.Normal);

            borderPhoneNumber.Layer.BorderWidth = 2;
            borderPhoneNumber.Layer.BorderColor = UIColor.White.CGColor;

            txtPhoneNumber.AttributedPlaceholder = new NSAttributedString("Phone number", null, UIColor.White);
            txtPhoneNumber.ClearButtonMode       = UITextFieldViewMode.WhileEditing;

            btnBack.TouchUpInside += (sender, e) =>
            {
                this.NavigationController.PopViewController(true);
            };

            btnSubmit.TouchUpInside += (sender, e) =>
            {
                MainViewController mainViewController = this.Storyboard.InstantiateViewController("MainViewController") as MainViewController;
                if (mainViewController != null)
                {
                    this.NavigationController.PushViewController(mainViewController, true);
                }
            };
        }
        public override void Draw(CGRect rect)
        {
            base.Draw(rect);

            var step      = 1f / 6f;
            var locations = new nfloat[]
            {
                0.0f,
                step * 1f,
                step * 2f,
                step * 3f,
                step * 4f,
                step * 5f,
                1.0f
            };
            var colors = new CGColor[]
            {
                UIColor.Red.CGColor,
                new CGColor(1, 0, 1, 1),
                UIColor.Blue.CGColor,
                new CGColor(0, 1, 1, 1),
                UIColor.Green.CGColor,
                new CGColor(1, 1, 0, 1),
                UIColor.Red.CGColor
            };

            using (var colorSpace = CGColorSpace.CreateDeviceRGB())
                using (var gradiend = new CGGradient(colorSpace, colors, locations))
                {
                    var context = UIGraphics.GetCurrentContext();
                    context.DrawLinearGradient(gradiend, new CGPoint(rect.Size.Width, 0), new CGPoint(0, 0), CGGradientDrawingOptions.DrawsBeforeStartLocation);
                }
        }
Example #14
0
        public static CALayer RenderMultiPolygonOnLayer(MultiPolygon multiPolygon, IStyle style, IViewport viewport)
        {
            var tile = new CAShapeLayer();

            if (!(style is VectorStyle))
            {
                throw new ArgumentException("Style is not of type VectorStyle");
            }
            var vectorStyle = style as VectorStyle;

            var strokeAlpha = (float)vectorStyle.Outline.Color.A / 255;
            var fillAlpha   = (float)vectorStyle.Fill.Color.A / 255;

            var strokeColor = new CGColor(new CGColor(vectorStyle.Outline.Color.R, vectorStyle.Outline.Color.G,
                                                      vectorStyle.Outline.Color.B), strokeAlpha);
            var fillColor = new CGColor(new CGColor(vectorStyle.Fill.Color.R, vectorStyle.Fill.Color.G,
                                                    vectorStyle.Fill.Color.B), fillAlpha);

            var path = multiPolygon.ToUIKit(viewport);

            tile.StrokeColor = strokeColor;
            tile.FillColor   = fillColor;
            tile.LineWidth   = (float)vectorStyle.Outline.Width;
            tile.Path        = path.CGPath;

            return(tile);
        }
Example #15
0
        public async Task DeleteCalendarAsync()
        {
            try
            {
                using (await _PushMeetingsToCalendarAsyncLock.LockAsync())
                {
                    // pas de résultat
                    if (!(await _eventStore.RequestAccessAsync(EKEntityType.Event)).Item1)
                    {
                        return;
                    }

                    var     calendar   = _eventStore.GetCalendar(AcraCalendarIdentifier);
                    CGColor colorToUse = null;
                    if (calendar != null)
                    {
                        colorToUse = calendar.CGColor;
                        NSError errorToDelete;;
                        _eventStore.RemoveCalendar(calendar, true, out errorToDelete);
                    }
                }
            }
            catch (Exception e)
            {
                await App.Instance.AlertService.ShowExceptionMessageAsync(e, "Impossible de renseigner votre calendrier iOS");
            }
        }
Example #16
0
 public void GetAXName()
 {
     TestRuntime.AssertXcodeVersion(12, TestRuntime.MinorXcode12APIMismatch);
     using (var c = new CGColor(CGConstantColor.Black)) {
         Assert.IsNotNull(c.AXName, "AXName");
     }
 }
Example #17
0
        public void SetupViewStyle()
        {
            var profile = SL.Profile;

            ScoreFill             = profile != null ? (float)profile.OverallSLScore / 100.0f : 0.0f;
            CornerRadius          = 5.0f;
            LabelTitles           = new List <string>();
            ScoreValueProportions = new List <nfloat>();

            BackgroundColor = UIColor.Clear;
            Layer.ZPosition = 1;

            ScoreBackgroundColor = UIColor.FromRGBA(229.0f / 255.0f, 229.0f / 255.0f, 229.0f / 255.0f, 1.0f);
            ScoreFillColor       = UIColor.FromRGBA(51.0f / 255.0f, 171.0f / 255.0f, 151.0f / 255.0f, 1.0f).CGColor;
            LinesBackgroundColor = UIColor.White.CGColor;
            LinesFillColor       = new CGColor(0, 0, 0, 0.2f);

            byte[] textColor = CodeBehindUIConstants.PointsViewGrayTextColor;
            LabelTextColor = UIColor.FromRGBA(textColor[0], textColor[1], textColor[2], textColor[3]);

            LabelTitles.Add("Fan");
            LabelTitles.Add("Superfan");
            LabelTitles.Add("Ambassador");
            LabelTitles.Add("Champion");

            ScoreValueProportions.Add(28f / 347f);
            ScoreValueProportions.Add(122f / 347f);
            ScoreValueProportions.Add(244f / 347f);
            ScoreValueProportions.Add(347f / 347f);
        }
        public override void Draw(CGRect rect)
        {
            //Stopwatch s = new Stopwatch();
            //s.Start();

            //Console.WriteLine (" ----- SatBrightPickerView Draw");

            CGContext context = UIGraphics.GetCurrentContext ();

            CGColor[] gradColors = new CGColor[] {UIColor.FromHSBA(hue,1,1,1).CGColor,new CGColor(1,1,1,1)};
            nfloat[] gradLocations = new nfloat[] { 0.0f, 1.0f };

            var colorSpace = CGColorSpace.CreateDeviceRGB ();

            CGGradient gradient = new CGGradient (colorSpace, gradColors, gradLocations);
             context.DrawLinearGradient(gradient,new CGPoint(rect.Size.Width,0),new CGPoint(0,0),CGGradientDrawingOptions.DrawsBeforeStartLocation);

            gradColors = new CGColor[] {new CGColor(0,0,0,0), new CGColor(0,0,0,1)};

            gradient = new CGGradient(colorSpace,gradColors, gradLocations);
             context.DrawLinearGradient(gradient,new CGPoint(0,0),new CGPoint(0,rect.Size.Height),CGGradientDrawingOptions.DrawsBeforeStartLocation);

            gradient.Dispose();
            colorSpace.Dispose();

            //s.Stop();
            //Console.WriteLine("-----> SatBright Draw time: " + s.Elapsed.ToString());
        }
        public virtual void SetHasShadow(UINavigationController controller, bool hasShadow)
        {
            var navigationBar = controller.NavigationBar;

            if (_shadowOpacity == float.MinValue)
            {
                // Don't do anything if user hasn't changed the shadow to true
                if (!hasShadow)
                {
                    return;
                }

                _shadowOpacity = navigationBar.Layer.ShadowOpacity;
                _shadowColor   = navigationBar.Layer.ShadowColor;
            }

            if (hasShadow)
            {
                navigationBar.Layer.ShadowColor   = UIColor.Black.CGColor;
                navigationBar.Layer.ShadowOpacity = 1.0f;
            }
            else
            {
                navigationBar.Layer.ShadowColor   = _shadowColor;
                navigationBar.Layer.ShadowOpacity = _shadowOpacity;
            }
        }
 private void UpdateProperties(BorderedEntry borderedElement)
 {
     _borderColor       = borderedElement.BorderColor.ToCGColor();
     _borderColorActive = borderedElement.BorderColorActive.ToCGColor();
     _hasBorder         = borderedElement.HasBorder;
     _borderHeight      = borderedElement.BorderHeight;
 }
        public static void RenderGradientBackground(this CALayer layer, string color)
        {
            CAGradientLayer gradientLayer;

            if (layer.Sublayers != null && layer.Sublayers.Length > 0)
            {
                gradientLayer = layer.Sublayers[0] as CAGradientLayer;
                if (gradientLayer != null)
                {
                    gradientLayer.RemoveFromSuperLayer();
                    gradientLayer = null;
                }
            }

            gradientLayer = new CAGradientLayer();
            var gradientArray = color.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries);

            NSNumber[] offsetColor = new NSNumber[gradientArray.Length];
            CGColor[]  colorList   = new CGColor[gradientArray.Length];
            for (int i = 0; i < gradientArray.Length; i++)
            {
                var gradientColorOffset = gradientArray[i].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                colorList[i] = Xamarin.Forms.Color.FromHex(gradientColorOffset[0]).ToCGColor();
                int   offsetInt   = Int32.Parse(gradientColorOffset[1].Replace("%", ""));
                float offsetFloat = offsetInt / 100f;
                offsetColor[i] = offsetFloat;
            }
            gradientLayer.Colors        = colorList;
            gradientLayer.Locations     = offsetColor;
            gradientLayer.Frame         = layer.Bounds;
            gradientLayer.CornerRadius  = layer.CornerRadius;
            gradientLayer.MasksToBounds = false;

            layer.InsertSublayer(gradientLayer, 0);
        }
Example #22
0
        /// <summary>
        /// Returns an RGB array
        /// </summary>
        /// <param name="color"></param>
        /// <returns></returns>
        public static byte[] ToColorBytes(CGColor color)
        {
            if (color == null)
            {
                return(new byte[3]);
            }

            if (color.NumberOfComponents == 1)
            {
                return(new byte[]
                {
                    (byte)(color.Components[0] * 255),
                    (byte)(color.Components[0] * 255),
                    (byte)(color.Components[0] * 255)
                });
            }

            // We always just want RGB
            return(new byte[]
            {
                (byte)(color.Components[0] * 255),
                (byte)(color.Components[1] * 255),
                (byte)(color.Components[2] * 255)
            });
        }
Example #23
0
        protected override void OnElementChanged(ElementChangedEventArgs <Button> e)
        {
            base.OnElementChanged(e);
            UpdatePadding();

            var button = Element as GradientButton;

            if (e.OldElement == null)
            {
                var gradient = new CAGradientLayer()
                {
                    StartPoint = new CGPoint(0, 0.5),
                    EndPoint   = new CGPoint(1, 0.5)
                };
                gradient.Locations    = new NSNumber[] { .0f, 1f };
                gradient.CornerRadius = Element.CornerRadius;
                gradient.NeedsDisplayOnBoundsChange = true;
                gradient.MasksToBounds = true;

                CGColor startColor = button?.StartColor.ToCGColor();
                CGColor endColor   = button?.EndColor.ToCGColor();
                gradient.Colors = new CGColor[] { startColor, endColor };

                var layer = Control?.Layer.Sublayers.FirstOrDefault();
                Control?.Layer.InsertSublayerBelow(gradient, layer);
            }
        }
        private UIView AddShadowToView(UIView view, bool reverse)
        {
            UIView containerView = view.Superview;

            var viewWithShadow = new UIView(view.Frame);

            containerView.InsertSubviewAbove(viewWithShadow, view);
            view.RemoveFromSuperview();

            var shadowView = new UIView(viewWithShadow.Bounds);

            var colors = new CGColor[] {
                UIColor.FromWhiteAlpha(0f, 0f).CGColor,
                UIColor.FromWhiteAlpha(0f, 0.5f).CGColor
            };

            var gradient = new CAGradientLayer()
            {
                Frame  = shadowView.Bounds,
                Colors = colors
            };

            gradient.StartPoint = new CGPoint(reverse ? 0f : 1f, 0f);
            gradient.EndPoint   = new CGPoint(reverse ? 1f : 0f, 0f);
            shadowView.Layer.InsertSublayer(gradient, 1);

            view.Frame = view.Bounds;
            viewWithShadow.AddSubview(view);

            viewWithShadow.AddSubview(shadowView);
            return(viewWithShadow);
        }
        //Generated with PaintCode 2.2
        public override void Draw(CGRect rect)
        {
            base.Draw(rect);

            // General Declarations
            var colorSpace = CGColorSpace.CreateDeviceRGB();
            var context = UIGraphics.GetCurrentContext();

            // Color Declarations
            var darkBlue = UIColor.FromRGBA(0.053f, 0.123f, 0.198f, 1.000f);
            var lightBlue = UIColor.FromRGBA(0.191f, 0.619f, 0.845f, 1.000f);

            // Gradient Declarations
            var backgroundGradientColors = new CGColor [] {lightBlue.CGColor, darkBlue.CGColor};
            var backgroundGradientLocations = new nfloat [] {0.0f, 1.0f};
            var backgroundGradient = new CGGradient(colorSpace, backgroundGradientColors, backgroundGradientLocations);

            // Rectangle Drawing
            var rectangleRect = new CGRect(rect.GetMinX() + (float)Math.Floor(rect.Width * -0.12917f + 0.5f), rect.GetMinY() + (float)Math.Floor(rect.Height * 0.00000f + 0.5f), (float)Math.Floor(rect.Width * 1.00000f + 0.5f) - (float)Math.Floor(rect.Width * -0.12917f + 0.5f), (float)Math.Floor(rect.Height * 1.00000f + 0.5f) - (float)Math.Floor(rect.Height * 0.00000f + 0.5f));
            var rectanglePath = UIBezierPath.FromRect(rectangleRect);
            context.SaveState();
            rectanglePath.AddClip();
            context.DrawLinearGradient(backgroundGradient,
                new PointF((float)rectangleRect.GetMidX(), (float)rectangleRect.GetMinY()),
                new PointF((float)rectangleRect.GetMidX(), (float)rectangleRect.GetMaxY()),
                0);
            context.RestoreState();
        }
Example #26
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            CGColor[] colors = new CGColor[] { UIColor.FromRGB(98, 107, 186).CGColor,
                                               UIColor.FromRGB(57, 122, 193).CGColor };
            CAGradientLayer gradientLayer = new CAGradientLayer();

            gradientLayer.Frame  = this.View.Bounds;
            gradientLayer.Colors = colors;
            this.View.Layer.InsertSublayer(gradientLayer, 0);

            borderNewPassword.Layer.BorderWidth = 1.5f;
            borderNewPassword.Layer.BorderColor = UIColor.White.CGColor;

            borderConfirmPassword.Layer.BorderWidth = 1.5f;
            borderConfirmPassword.Layer.BorderColor = UIColor.White.CGColor;

            txtNewPassword.AttributedPlaceholder = new NSAttributedString("New password", null, UIColor.White);
            txtNewPassword.ClearButtonMode       = UITextFieldViewMode.WhileEditing;

            txtConfirmPassword.AttributedPlaceholder = new NSAttributedString("Confirm password", null, UIColor.White);
            txtConfirmPassword.ClearButtonMode       = UITextFieldViewMode.WhileEditing;

            btnBack.TouchUpInside += (sender, e) =>
            {
                this.NavigationController.PopViewController(true);
            };
        }
Example #27
0
        private void drawString(IBrush brush, float x, float y)
        {
            using (NSMutableAttributedString str = new NSMutableAttributedString(_text))
            {
                NSRange range = new NSRange(0, _text.Length);

                var foreColor = brush.Color;
                using (CGColor color = new CGColor(foreColor.R / 255f, foreColor.G / 255f, foreColor.B / 255f, foreColor.A / 255f))
                {
                    str.SetAttributes(new CTStringAttributes
                    {
                        Font            = ((IOSFont)_config.Font).InnerFont,
                        ForegroundColor = color
                    }, range);

                    using (CTFramesetter frameSetter = new CTFramesetter(str))
                        using (CGPath path = new CGPath())
                        {
                            NSRange fitRange;
                            CGSize  size = frameSetter.SuggestFrameSize(range, null, new CGSize(_maxWidth, _height), out fitRange);
                            path.AddRect(new CGRect(x, y, size.Width, size.Height));
                            using (var frame = frameSetter.GetFrame(fitRange, path, null))
                            {
                                frame.Draw(_context);
                            }
                        }
                }
            }
        }
Example #28
0
        public static UIImage MakeBlueSea()
        {
            UIGraphics.BeginImageContext(new System.Drawing.SizeF(640,1136));
            //BEGIN PAINTCODE

            //// General Declarations
            var colorSpace = CGColorSpace.CreateDeviceRGB();
            var context = UIGraphics.GetCurrentContext();

            //// Color Declarations
            UIColor color = UIColor.FromRGBA(0.114f, 0.705f, 1.000f, 1.000f);
            UIColor gradientColor = UIColor.FromRGBA(0.088f, 0.606f, 0.676f, 1.000f);
            UIColor gradientColor2 = UIColor.FromRGBA(0.018f, 0.509f, 0.675f, 1.000f);

            //// Gradient Declarations
            var gradientColors = new CGColor [] {color.CGColor, UIColor.FromRGBA(0.066f, 0.607f, 0.837f, 1.000f).CGColor, gradientColor2.CGColor, gradientColor.CGColor};
            var gradientLocations = new float [] {0, 0.21f, 0.46f, 1};
            var gradient = new CGGradient(colorSpace, gradientColors, gradientLocations);

            //// Rectangle Drawing
            var rectanglePath = UIBezierPath.FromRect(new RectangleF(-46.5f, -35.5f, 728, 1192));
            context.SaveState();
            rectanglePath.AddClip();
            context.DrawLinearGradient(gradient, new PointF(317.5f, -35.5f), new PointF(317.5f, 1156.5f), 0);
            context.RestoreState();
            UIColor.Black.SetStroke();
            rectanglePath.LineWidth = 1;
            rectanglePath.Stroke();

            //END PAINTCODE

            var converted = UIGraphics.GetImageFromCurrentImageContext ();
            UIGraphics.EndImageContext ();
            return converted;
        }
Example #29
0
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();

            CGColor LightChartBackground   = ColorFromArgb(248, 248, 248);
            CGColor LightChartGrid         = ColorFromArgb(211, 211, 211);
            CGColor LightChartAxis         = ColorFromArgb(128, 128, 128);
            CGColor LightChartMouse        = ColorFromArgb(32, 92, 166);
            CGColor LightChartLegend       = ColorFromArgb(64, 145, 255);
            CGColor LightChartLineDownload = ColorFromArgb(38, 22, 255);
            CGColor LightChartLineUpload   = ColorFromArgb(0, 90, 0);
            CGColor LightChartWhite        = ColorFromArgb(255, 255, 255);

            m_colorBackground    = LightChartBackground;
            m_colorGrid          = LightChartGrid;
            m_colorAxis          = LightChartAxis;
            m_colorMouse         = LightChartMouse;
            m_colorDownloadGraph = LightChartLineDownload;
            m_colorDownloadLine  = LightChartLineDownload;
            m_colorUploadGraph   = LightChartLineUpload;
            m_colorUploadLine    = LightChartLineUpload;
            //m_colorLegendText = LightChartLegend;
            m_colorDownloadText = LightChartLineDownload;
            m_colorUploadText   = LightChartLineUpload;
            m_colorWhite        = LightChartWhite;

            m_font = new CoreText.CTFont("Menlo", 10);

            m_chart = Engine.Instance.Stats.Charts.ChartsList[m_chartIndex];

            Engine.Instance.Stats.Charts.UpdateEvent += new Core.UI.Charts.UpdateHandler(Charts_UpdateEvent);
        }
Example #30
0
        public override void Draw(CGRect rect)
        {
            base.Draw(rect);
            GradientColorStack stack      = (GradientColorStack)this.Element;
            CGColor            startColor = stack.StartColor.ToCGColor();

            CGColor endColor = stack.EndColor.ToCGColor();

            #region for Vertical Gradient

            var gradientLayer = new CAGradientLayer();

            #endregion

            #region for Horizontal Gradient

            //var gradientLayer = new CAGradientLayer()
            //{
            //  StartPoint = new CGPoint(0, 0.5),
            //  EndPoint = new CGPoint(1, 0.5)
            //};

            #endregion



            gradientLayer.Frame  = rect;
            gradientLayer.Colors = new CGColor[] { startColor, endColor };

            NativeView.Layer.InsertSublayer(gradientLayer, 0);
        }
Example #31
0
            public override void DrawInContext(CGContext ctx)
            {
                base.DrawInContext(ctx);
                //Debug.WriteLine($"---{this.Radius}");

                //每四个一组 表示一个颜色 {r,g,b,a ,r,g,b,a}
                //var components = new nfloat[] { 1, 1, 1, 1, 1, 1, 1, 0 };
                var colors = new CGColor[]
                {
                    new CGColor(0.49f, 0.49f, 0.49f, 0.5f),
                    new CGColor(0.78f, 0.78f, 0.78f, 0.2f),
                };

                //表示渐变的开始位置
                var locations = new nfloat[] { 0f, 1f };

                var startCenter = this.Center;//new CGPoint(100, 100);

                var endCenter = this.Center;//new CGPoint(100, 100);

                nfloat startRadius = 0f;
                //nfloat endRadius = (nfloat)Math.Min(this.Frame.Width, this.Frame.Height) / 1.3f;
                nfloat endRadius = this.Radius;

                using (var colorSpace = CGColorSpace.CreateDeviceRGB())
                using (var gradient = new CGGradient(colorSpace, colors, locations))
                {
                    ctx.DrawRadialGradient(gradient,
                                           startCenter,
                                           startRadius,
                                           endCenter,
                                           endRadius,
                                           CGGradientDrawingOptions.DrawsAfterEndLocation);
                }
            }
        private void MakeCircularPath(
            double width,
            double height,
            CGColor trackColor,
            CGColor progressColor,
            double progress)
        {
            BackgroundColor    = UIColor.Clear;
            Layer.CornerRadius = (nfloat)(width / 2);

            var circlePath = new UIBezierPath();

            circlePath.AddArc(
                center: new CGPoint(x: width / 2, y: height / 2),
                radius: (nfloat)((width - 1.5) / 2),
                startAngle: (nfloat)(-0.5 * Math.PI),
                endAngle: (nfloat)(1.5 * Math.PI),
                clockWise: true
                );

            _trackLayer.Path        = circlePath.CGPath;
            _trackLayer.FillColor   = UIColor.Clear.CGColor;
            _trackLayer.StrokeColor = trackColor;
            _trackLayer.LineWidth   = (nfloat)8.0;
            _trackLayer.StrokeEnd   = (nfloat)1.0;
            Layer.AddSublayer(_trackLayer);

            _progressLayer.Path        = circlePath.CGPath;
            _progressLayer.FillColor   = UIColor.Clear.CGColor;
            _progressLayer.StrokeColor = progressColor;
            _progressLayer.LineWidth   = (nfloat)8.0;
            _progressLayer.StrokeEnd   = (nfloat)progress;
            Layer.AddSublayer(_progressLayer);
        }
Example #33
0
        public override void Draw(CGRect rect)
        {
            try
            {
                base.Draw(rect);
                var     stack      = (CustomStackLayout)this.Element;
                CGColor startColor = stack.StartColor.ToCGColor();

                CGColor endColor = stack.EndColor.ToCGColor();

                if (stack.StartColor != Color.Transparent && stack.EndColor != Color.Transparent)
                {
                    #region for Vertical Gradient

                    var gradientLayer = new CAGradientLayer();

                    #endregion

                    #region for Horizontal Gradient

                    //var gradientLayer = new CAGradientLayer()
                    //{
                    //  StartPoint = new CGPoint(0, 0.5),
                    //  EndPoint = new CGPoint(1, 0.5)
                    //};

                    #endregion

                    gradientLayer.Frame  = rect;
                    gradientLayer.Colors = new CGColor[] { startColor, endColor };
                    NativeView.Layer.InsertSublayer(gradientLayer, 0);
                }
            }catch (Exception e) {
            }
        }
Example #34
0
        private static CAShapeLayer ApplyBorder(UIBezierPath maskPath, UIView view, CGColor color = null, float lineWidth = 2f)
        {
            const string name = "___borderlayer___";

            var borderLayer = new CAShapeLayer
            {
                Frame       = view.Bounds,
                Path        = maskPath.CGPath,
                LineWidth   = lineWidth,
                StrokeColor = color ?? UIColor.FromRGB(61, 71, 82).CGColor,
                FillColor   = UIColor.Clear.CGColor,
                Name        = name
            };

            var maskLayer = new CAShapeLayer
            {
                Frame = view.Bounds,
                Path  = maskPath.CGPath
            };

            borderLayer.Mask = maskLayer;

            if (view.Layer.Sublayers != null && view.Layer.Sublayers.Any(x => x.Name == name))
            {
                CALayer layer = view.Layer.Sublayers.FirstOrDefault(x => x.Name == name);
                view.Layer.ReplaceSublayer(layer, borderLayer);
            }
            else
            {
                view.Layer.AddSublayer(borderLayer);
            }

            return(borderLayer);
        }
		public CheckBoxLayer ()
		{
			TintColor = new CGColor (CGColorSpace.CreateDeviceRGB (), components);

			StrokeFactor = 0.07f;
			InsetFactor = 0.17f;
			MarkInsetFactor = 0.34f;
		}
 CAGradientLayer CreateHorizontalLayer(CGColor[] colors)
 {
     return new CAGradientLayer {
         StartPoint = new PointF(0, 0.5f),
         EndPoint = new PointF(1, 0.5f),
         Colors = colors
     };
 }
 CAGradientLayer CreateVerticalLayer(CGColor[] colors)
 {
     return new CAGradientLayer {
         StartPoint = new PointF(0.5f, 0),
         EndPoint = new PointF(0.5f, 1),
         Colors = colors
     };
 }
Example #38
0
 protected override void Dispose(bool disposing)
 {
     color = null;
     color2 = null;
     color3 = null;
     shadow = null;
     go = null;
     base.Dispose (disposing);
 }
Example #39
0
 public static void FillRect(CGContext context, RectangleF rect, CGColor color)
 {
     context.SaveState();
     context.AddRect(rect);
     context.Clip();
     context.SetFillColor(color);
     context.FillRect(rect);
     context.RestoreState();
 }
Example #40
0
 public static void DrawEllipsis(CGContext context, RectangleF rect, CGColor color, float lineWidth)
 {
     context.SaveState();
     context.SetStrokeColor(color);
     context.SetLineWidth(lineWidth);
     context.AddEllipseInRect(rect);
     context.StrokePath();
     context.RestoreState();
 }
Example #41
0
 public RectangleInfo(RectangleF rect, string name, CGColor color)
 {
     this.X = rect.X;
     this.Y = rect.Y;
     this.Width = rect.Width;
     this.Height = rect.Height;
     this.Color = color;
     this.Name = name;
 }
Example #42
0
 private void WriteColorXml(XmlWriter writer, CGColor color)
 {
     writer.WriteStartElement("Color");
     writer.WriteElementString("R", color.Components[0].ToString());
     writer.WriteElementString("G", color.Components[1].ToString());
     writer.WriteElementString("B", color.Components[2].ToString());
     writer.WriteElementString("A", color.Alpha.ToString());
     writer.WriteEndElement();
 }
 private LayoutInfo(UIView view)
 {
     var layer = view.Layer;
     if (layer == null)
     {
         _isEmpty = true;
         return;
     }
     _borderWidth = layer.BorderWidth;
     _cornerRadius = layer.CornerRadius;
     _borderColor = layer.BorderColor;
     _clipsToBounds = view.ClipsToBounds;
 }
Example #44
0
		CALayer SetupBackgroundLayer() 
		{
			backgroundLayer = new CAGradientLayer ();
			
			CGColor gradColor1 = new CGColor (13.0f / 255.0f, 116.0f / 255.0f, 1.0f,1.0f);
			CGColor gradColor2 = new CGColor (0.0f, 53.0f / 255.0f, 126.0f / 255.0f,1.0f);
			
			((CAGradientLayer)backgroundLayer).Colors = new CGColor[2] { gradColor1, gradColor2 };
			backgroundLayer.CornerRadius = 12.0f;
			CAConstraintLayoutManager layout = CAConstraintLayoutManager.LayoutManager;
			backgroundLayer.LayoutManager = layout;
			
			return backgroundLayer;
		}
Example #45
0
	    public static UIImage GetGradientImage(CGColor startColor, CGColor endColor, CGSize size)
	    {
            UIGraphics.BeginImageContext(size);
            var context = UIGraphics.GetCurrentContext();
			if (context != null) {
				var gradientLayer = new CAGradientLayer();
				gradientLayer.Frame = new CGRect(0, 0, size.Width, size.Height);
				gradientLayer.Colors = new CGColor[] { startColor, endColor };
				gradientLayer.RenderInContext(context);
				UIImage gradientImage = UIGraphics.GetImageFromCurrentImageContext();
				UIGraphics.EndImageContext();

				return gradientImage;
			}

			return null;
	    }
Example #46
0
		public static UIImage makeProgressImage(int width, int height, float progress, CGColor baseColor, CGColor topColor)
		{
		   //Create a CGBitmapContext object
		   CGBitmapContext ctx = new CGBitmapContext(IntPtr.Zero, width, height, 8, 4 * width, CGColorSpace.CreateDeviceRGB(), CGImageAlphaInfo.PremultipliedFirst);
		
		   //Draw a rectangle with the base color
		   ctx.SetFillColor(baseColor);
		   ctx.FillRect(new RectangleF(0,0, width, height));
		
		   //Calculate the width of the 2nd rectangle based on the progress
		   float percentWidth = width * progress;
		
		   //Draw the second rectangle with the top color
		   ctx.SetFillColor(topColor);
		   ctx.FillRect(new RectangleF(0, 0, percentWidth, height));
		
		   //return a UIImage object
		   return UIImage.FromImage(ctx.ToImage());
		}		
Example #47
0
        private static CALayer RenderImage(MultiPolygon multiPolygon, IStyle style, IViewport viewport)
        {
            var geom = new CAShapeLayer();

            if (!(style is VectorStyle)) throw new ArgumentException("Style is not of type VectorStyle");
            var vectorStyle = style as VectorStyle;

            float strokeAlpha = (float)vectorStyle.Outline.Color.A / 255;
            float fillAlpha = (float)vectorStyle.Fill.Color.A / 255;
            var strokeColor = new CGColor(new CGColor(vectorStyle.Outline.Color.R, vectorStyle.Outline.Color.G,
                                                      vectorStyle.Outline.Color.B), strokeAlpha);
            var fillColor = new CGColor(new CGColor(vectorStyle.Fill.Color.R, vectorStyle.Fill.Color.G,
                                                    vectorStyle.Fill.Color.B), fillAlpha);

            geom.StrokeColor = strokeColor;
            geom.FillColor = fillColor;
            geom.LineWidth = (float)vectorStyle.Outline.Width;

            var bbRect = GeometryRenderer.ConvertBoundingBox(multiPolygon.GetBoundingBox(), viewport);
            var offset = new CoreGraphics.CGPoint((int)bbRect.GetMinX(), (int)bbRect.GetMinY());

            GeometryExtension.OffSet = offset;

            var path = multiPolygon.ToUIKit(viewport);
            var frame = new CGRect(0, 0, (int)((float)bbRect.GetMaxX() - (float)bbRect.GetMinX()), (int)((float)bbRect.GetMaxY() - (float)bbRect.GetMinY()));
            var size = frame.Size;

            geom.Path = path.CGPath;

            UIGraphics.BeginImageContext((CGSize)size);

            var context = UIGraphics.GetCurrentContext();

            context.SetBlendMode(CGBlendMode.Multiply);
            geom.RenderInContext(context);

            var image = UIGraphics.GetImageFromCurrentImageContext();
            var imageTile = new CALayer { Contents = image.CGImage, Frame = frame };

            return imageTile;
        }
Example #48
0
        public static void DrawLine(CGContext context, List<PointF> points, CGColor color, float lineWidth, bool closePath, bool dashed)
        {
            if (points == null)
                throw new NullReferenceException();

            if (points.Count == 0)
                throw new ArgumentException("The line must have at least one point.");

            context.SaveState();
            context.SetStrokeColor(color);
            context.SetLineWidth(lineWidth);
            context.MoveTo(points[0].X, points[0].Y);
            for(int a = 1; a < points.Count; a++)
                context.AddLineToPoint(points[a].X, points[a].Y);
            if (dashed)
                context.SetLineDash(0, new float[2] { 1, 2 }, 2);
            if (closePath)
                context.ClosePath();
            context.StrokePath();
            context.RestoreState();
        }
        public override void Draw(RectangleF rect)
        {
            base.Draw (rect);

            CGContext context = UIGraphics.GetCurrentContext();

            CGColorSpace colorSpace = CGColorSpace.CreateDeviceRGB();

            float step=0.166666666666667f;

            float[] locations = new float[] {
                0.00f,
                step,
                step*2,
                step*3,
                step*4,
                step*5,
                1.0f
            };

            CGColor c1 = new CGColor(1,0,1,1);
            CGColor c2 = new CGColor(1,1,0,1);
            CGColor c3 = new CGColor(0,1,1,1);

            CGColor[] colors = new CGColor[] {
                UIColor.Red.CGColor,
                c1,
                UIColor.Blue.CGColor,
                c3,
                UIColor.Green.CGColor,
                c2,
                UIColor.Red.CGColor
            };

            CGGradient gradiend = new CGGradient(colorSpace,colors, locations);
            context.DrawLinearGradient(gradiend,new PointF(rect.Size.Width,0),new PointF(0,0),CGGradientDrawingOptions.DrawsBeforeStartLocation);
            gradiend.Dispose();
            colorSpace.Dispose();
        }
Example #50
0
        public static CALayer RenderPolygonOnLayer(Polygon polygon, IStyle style, IViewport viewport)
        {
            var tile = new CAShapeLayer();

            if (!(style is VectorStyle)) throw new ArgumentException("Style is not of type VectorStyle");
            var vectorStyle = style as VectorStyle;

            var strokeAlpha = (float)vectorStyle.Outline.Color.A / 255;
            var fillAlpha = (float)vectorStyle.Fill.Color.A / 255;

            var strokeColor = new CGColor(new CGColor(vectorStyle.Outline.Color.R, vectorStyle.Outline.Color.G,
                vectorStyle.Outline.Color.B), strokeAlpha);
            var fillColor = new CGColor(new CGColor(vectorStyle.Fill.Color.R, vectorStyle.Fill.Color.G,
                vectorStyle.Fill.Color.B), fillAlpha);

            tile.StrokeColor = strokeColor;
            tile.FillColor = fillColor;
            tile.LineWidth = (float)vectorStyle.Outline.Width;
            tile.Path = polygon.ToUIKit(viewport).CGPath;

            return tile;
        }
        protected override bool Validating()
        {
            if (_defaultColor == null)
            {
                var firstRelationship = _sourceBindingRelationships.FirstOrDefault();
                if (firstRelationship.Value != null)
                {
                    var firstView = firstRelationship.Value.FirstOrDefault();
                    if (firstView != null)
                    {
                        _defaultColor = firstView.Layer.BorderColor;
                        _defaultWidth = firstView.Layer.BorderWidth;
                    }
                }
            }

            if (_sourceBindingRelationships == null) return false;
            foreach (var textView in _sourceBindingRelationships.SelectMany(sourceBindingRelationship => sourceBindingRelationship.Value))
            {
                textView.Layer.BorderColor = _defaultColor;
                textView.Layer.BorderWidth = _defaultWidth.GetValueOrDefault();
            }
            return true;
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

               NavigationController.NavigationBar.BarStyle = UIBarStyle.Black;

               save = new UIBarButtonItem(UIBarButtonSystemItem.Save,
            async (sender, args) =>
               {
             ViewModel.FirstName = TextFirst.Text.Trim();
             ViewModel.LastName = TextLast.Text.Trim();
             ViewModel.Email = TextEmail.Text.Trim();
             ViewModel.Phone = TextPhone.Text.Trim();
             BigTed.BTProgressHUD.Show("Saving contact...");
             await ViewModel.SaveContact();
             BigTed.BTProgressHUD.Dismiss();
             NavigationController.PopToRootViewController(true);
               });

               TextEmail.ShouldReturn += ShouldReturn;
               TextFirst.ShouldReturn += ShouldReturn;
               TextPhone.ShouldReturn += ShouldReturn;
               TextLast.ShouldReturn += ShouldReturn;

               TextEmail.ValueChanged += (sender, args) =>
             {
               ImagePhoto.SetImage(
              url: new NSUrl(Gravatar.GetURL(TextEmail.Text, 172)),
              placeholder: UIImage.FromBundle("missing.png")
              );
             };

               var color = new CGColor(17.0F / 255.0F, 113.0F / 255.0F, 197.0F / 255F);
               TextEmail.Layer.BorderColor = color;
               TextFirst.Layer.BorderColor = color;
               TextPhone.Layer.BorderColor = color;
               TextLast.Layer.BorderColor = color;

               ButtonCall.Clicked += (sender, args) => PlaceCall();

               NSNotificationCenter.DefaultCenter.AddObserver
            (UIKeyboard.DidShowNotification, KeyBoardUpNotification);

               // Keyboard Down
               NSNotificationCenter.DefaultCenter.AddObserver
               (UIKeyboard.WillHideNotification, KeyBoardDownNotification);

               double min = Math.Min((float)ImagePhoto.Frame.Width, (float)ImagePhoto.Frame.Height);
               ImagePhoto.Layer.CornerRadius = (float)(min / 2.0);
               ImagePhoto.Layer.MasksToBounds = false;
               ImagePhoto.Layer.BorderColor = new CGColor(1, 1, 1);
               ImagePhoto.Layer.BorderWidth = 3;
               ImagePhoto.ClipsToBounds = true;
        }
		public override void Draw (RectangleF rect)
		{
			var context = UIGraphics.GetCurrentContext ();
			var bounds = Bounds;
			
			//UIColor background = Enabled ? isPressed ? HighlightedColor : NormalColor : DisabledColor;
			
			
			UIColor buttonColor = NormalColor; //UIColor.FromRGBA (0.00f, 0.37f, 0.89f, 1.00f);
			var buttonColorRGBA = new float[4];
			buttonColor.GetRGBA (
				out buttonColorRGBA [0],
				out buttonColorRGBA [1],
				out buttonColorRGBA [2],
				out buttonColorRGBA [3]
			);
			if (isPressed) {
				// Get the Hue Saturation Brightness Alpha copy of the color				
				var buttonColorHSBA = new float[4];
				buttonColor.GetHSBA (
					out buttonColorHSBA [0],
					out buttonColorHSBA [1],
					out buttonColorHSBA [2],
					out buttonColorHSBA [3]
				);
				// Change the brightness to a fixed value (0.5f)
				buttonColor = UIColor.FromHSBA (buttonColorHSBA [0], buttonColorHSBA [1], 0.5f, buttonColorHSBA [3]);
				// Re-set the base buttonColorRGBA because everything else is relative to it
				buttonColorRGBA = new float[4];
				buttonColor.GetRGBA (
					out buttonColorRGBA [0],
					out buttonColorRGBA [1],
					out buttonColorRGBA [2],
					out buttonColorRGBA [3]
				);
			}
			
				
			using (var colorSpace = CGColorSpace.CreateDeviceRGB ()) {
				
				
				//// Abstracted Graphic Attributes
				var textContent = this.Title (UIControlState.Normal); //"STOP";			
				var font = UIFont.SystemFontOfSize (18);
				// ------------- START PAINTCODE -------------



//// Color Declarations
				UIColor frameColorTop = UIColor.FromRGBA (0.20f, 0.20f, 0.20f, 1.00f);
				UIColor frameShadowColor = UIColor.FromRGBA (1.00f, 1.00f, 1.00f, 0.40f);

				UIColor glossyColorBottom = UIColor.FromRGBA (
					(buttonColorRGBA [0] * 0.6f + 0.4f),
					(buttonColorRGBA [1] * 0.6f + 0.4f),
					(buttonColorRGBA [2] * 0.6f + 0.4f),
					(buttonColorRGBA [3] * 0.6f + 0.4f)
				);
				UIColor glossyColorUp = UIColor.FromRGBA (
					(buttonColorRGBA [0] * 0.2f + 0.8f),
					(buttonColorRGBA [1] * 0.2f + 0.8f),
					(buttonColorRGBA [2] * 0.2f + 0.8f),
					(buttonColorRGBA [3] * 0.2f + 0.8f)
				);

//// Gradient Declarations
				var glossyGradientColors = new CGColor [] {glossyColorUp.CGColor, glossyColorBottom.CGColor};
				var glossyGradientLocations = new float [] {0, 1};
				var glossyGradient = new CGGradient (colorSpace, glossyGradientColors, glossyGradientLocations);

//// Shadow Declarations
				var frameInnerShadow = frameShadowColor.CGColor;
				var frameInnerShadowOffset = new SizeF (0, -0);
				var frameInnerShadowBlurRadius = 3;
				var buttonInnerShadow = UIColor.Black.CGColor;
				var buttonInnerShadowOffset = new SizeF (0, -0);
				var buttonInnerShadowBlurRadius = 12;
				var textShadow = UIColor.Black.CGColor;
				var textShadowOffset = new SizeF (0, -0);
				var textShadowBlurRadius = 1;
				var buttonShadow = UIColor.Black.CGColor;

				var buttonShadowOffset = new SizeF (0, isPressed ? 0 : 2);		// ADDED this code after PaintCode
				var buttonShadowBlurRadius = isPressed ? 2 : 3;					// ADDED this code after PaintCode




//// outerFrame Drawing
var outerFramePath = UIBezierPath.FromRoundedRect(new RectangleF(2.5f, 1.5f, 120, 32), 8);
context.SaveState();
context.SetShadowWithColor(buttonShadowOffset, buttonShadowBlurRadius, buttonShadow);
frameColorTop.SetFill();
outerFramePath.Fill();
context.RestoreState();

UIColor.Black.SetStroke();
outerFramePath.LineWidth = 1;
outerFramePath.Stroke();


//// innerFrame Drawing
var innerFramePath = UIBezierPath.FromRoundedRect(new RectangleF(5.5f, 4.5f, 114, 26), 5);
context.SaveState();
context.SetShadowWithColor(frameInnerShadowOffset, frameInnerShadowBlurRadius, frameInnerShadow);
buttonColor.SetFill();
innerFramePath.Fill();

////// innerFrame Inner Shadow
var innerFrameBorderRect = innerFramePath.Bounds;
innerFrameBorderRect.Inflate(buttonInnerShadowBlurRadius, buttonInnerShadowBlurRadius);
innerFrameBorderRect.Offset(-buttonInnerShadowOffset.Width, -buttonInnerShadowOffset.Height);
innerFrameBorderRect = RectangleF.Union(innerFrameBorderRect, innerFramePath.Bounds);
innerFrameBorderRect.Inflate(1, 1);

var innerFrameNegativePath = UIBezierPath.FromRect(innerFrameBorderRect);
innerFrameNegativePath.AppendPath(innerFramePath);
innerFrameNegativePath.UsesEvenOddFillRule = true;

context.SaveState();
{
    var xOffset = buttonInnerShadowOffset.Width + (float)Math.Round(innerFrameBorderRect.Width);
    var yOffset = buttonInnerShadowOffset.Height;
    context.SetShadowWithColor(
        new SizeF(xOffset + (xOffset >= 0 ? 0.1f : -0.1f), yOffset + (yOffset >= 0 ? 0.1f : -0.1f)),
        buttonInnerShadowBlurRadius,
        buttonInnerShadow);

    innerFramePath.AddClip();
    var transform = CGAffineTransform.MakeTranslation(-(float)Math.Round(innerFrameBorderRect.Width), 0);
    innerFrameNegativePath.ApplyTransform(transform);
    UIColor.Gray.SetFill();
    innerFrameNegativePath.Fill();
}
context.RestoreState();

context.RestoreState();

UIColor.Black.SetStroke();
innerFramePath.LineWidth = 1;
innerFramePath.Stroke();


//// Rounded Rectangle Drawing
var roundedRectanglePath = UIBezierPath.FromRoundedRect(new RectangleF(8, 6, 109, 9), 4);
context.SaveState();
roundedRectanglePath.AddClip();
context.DrawLinearGradient(glossyGradient, new PointF(62.5f, 6), new PointF(62.5f, 15), 0);
context.RestoreState();



//// Text Drawing
var textRect = new RectangleF(18, 6, 90, 28);
context.SaveState();
context.SetShadowWithColor(textShadowOffset, textShadowBlurRadius, textShadow);
glossyColorUp.SetFill();

				// Use default button-drawn text
				//new NSString(textContent).DrawString(textRect, font, UILineBreakMode.WordWrap, UITextAlignment.Center);
context.RestoreState();


		

			// ------------- END PAINTCODE -------------

				
				
				
			}
		}
Example #54
0
 public CustomCircleView(UIColor color,nfloat ang)
 {
     BackgroundColor =UIColor.Clear;
     this.color = color.CGColor;
     this.angle = ang;
 }
		public override void Draw (RectangleF rect)
		{
			base.Draw (rect);

			// ------------- START PAINTCODE ----------------
			
			
			//// General Declarations
			var colorSpace = CGColorSpace.CreateDeviceRGB ();
			var context = UIGraphics.GetCurrentContext ();

//// Color Declarations
			UIColor gold = UIColor.FromRGBA (1.00f, 0.95f, 0.57f, 1.00f);
			UIColor brown = UIColor.FromRGBA (0.79f, 0.75f, 0.18f, 1.00f);
			UIColor lightBrown = UIColor.FromRGBA (0.69f, 0.57f, 0.23f, 1.00f);
			UIColor darkishBlue = UIColor.FromRGBA (0.20f, 0.39f, 0.98f, 1.00f);
			UIColor bottomColorDown = UIColor.FromRGBA (0.21f, 0.21f, 0.21f, 1.00f);

//// Gradient Declarations
			var newGradientColors = new CGColor [] {UIColor.Black.CGColor, UIColor.White.CGColor};
			var newGradientLocations = new float [] {0, 1};
			var newGradient = new CGGradient (colorSpace, newGradientColors, newGradientLocations);
			var calendarGradientColors = new CGColor [] {
				UIColor.DarkGray.CGColor,
				UIColor.FromRGBA (0.72f, 0.72f, 0.72f, 1.00f).CGColor,
				UIColor.White.CGColor
			};
			var calendarGradientLocations = new float [] {0, 0.26f, 0.26f};
			var calendarGradient = new CGGradient (colorSpace, calendarGradientColors, calendarGradientLocations);

//// Shadow Declarations
			var shadow = UIColor.DarkGray.CGColor;
			var shadowOffset = new SizeF (2, 2);
			var shadowBlurRadius = 2;

//// Abstracted Graphic Attributes
			var monthContent = "MAR";
			var dayContent = "24";
			var dayFont = UIFont.FromName ("Helvetica-Bold", 24);
			var textContent = "News Headline";


//// Oval 11 Drawing
			var oval11Path = UIBezierPath.FromOval (new RectangleF (256.5f, 46.5f, 13, 14));
			lightBrown.SetFill ();
			oval11Path.Fill ();

			UIColor.Black.SetStroke ();
			oval11Path.LineWidth = 1;
			oval11Path.Stroke ();


//// Oval 12 Drawing
			var oval12Path = UIBezierPath.FromOval (new RectangleF (280.5f, 46.5f, 13, 14));
			lightBrown.SetFill ();
			oval12Path.Fill ();

			UIColor.Black.SetStroke ();
			oval12Path.LineWidth = 1;
			oval12Path.Stroke ();


//// Rounded Rectangle Drawing
			var roundedRectanglePath = UIBezierPath.FromRoundedRect (new RectangleF (8.5f, 60.5f, 37, 36), 4);
			context.SaveState ();
			context.SetShadowWithColor (shadowOffset, shadowBlurRadius, shadow);
			context.BeginTransparencyLayer (null);
			roundedRectanglePath.AddClip ();
			context.DrawLinearGradient (calendarGradient, new PointF (27, 96.5f), new PointF (27, 60.5f), 0);
			context.EndTransparencyLayer ();
			context.RestoreState ();

			UIColor.DarkGray.SetStroke ();
			roundedRectanglePath.LineWidth = 1;
			roundedRectanglePath.Stroke ();


//// Rounded Rectangle 3 Drawing
			UIBezierPath roundedRectangle3Path = new UIBezierPath ();
			roundedRectangle3Path.MoveTo (new PointF (9, 91.2f));
			roundedRectangle3Path.AddCurveToPoint (new PointF (12.56f, 95), new PointF (9, 93.3f), new PointF (10.32f, 95));
			roundedRectangle3Path.AddLineTo (new PointF (40.94f, 95));
			roundedRectangle3Path.AddCurveToPoint (new PointF (45, 91.2f), new PointF (43.18f, 95), new PointF (45, 93.3f));
			roundedRectangle3Path.AddLineTo (new PointF (45, 87));
			roundedRectangle3Path.AddCurveToPoint (new PointF (43.42f, 85.5f), new PointF (45, 84.9f), new PointF (45.66f, 85.5f));
			roundedRectangle3Path.AddLineTo (new PointF (10.94f, 85.5f));
			roundedRectangle3Path.AddCurveToPoint (new PointF (9, 87), new PointF (8.7f, 85.5f), new PointF (9, 84.9f));
			roundedRectangle3Path.AddLineTo (new PointF (9, 91.2f));
			roundedRectangle3Path.ClosePath ();
			UIColor.Red.SetFill ();
			roundedRectangle3Path.Fill ();



//// Month Drawing
			var monthRect = new RectangleF (10, 84, 34, 15);
			UIColor.White.SetFill ();
			new NSString (monthContent).DrawString (
				monthRect,
				UIFont.FromName("Helvetica-Bold", 9),
				UILineBreakMode.WordWrap,
				UITextAlignment.Center
			);


//// Day Drawing
			var dayRect = new RectangleF (0, 58, 54, 31);
			UIColor.Black.SetFill ();
			new NSString (dayContent).DrawString (dayRect, dayFont, UILineBreakMode.WordWrap, UITextAlignment.Center);


//// Text Drawing
			var textRect = new RectangleF (54, 60, 75, 38);
			UIColor.Black.SetFill ();
			new NSString (textContent).DrawString (
				textRect,
				UIFont.FromName("Helvetica", 16),
				UILineBreakMode.WordWrap,
				UITextAlignment.Left
			);


//// Star Drawing
			UIBezierPath starPath = new UIBezierPath ();
			starPath.MoveTo (new PointF (31, 14.5f));
			starPath.AddLineTo (new PointF (26.24f, 21.45f));
			starPath.AddLineTo (new PointF (18.16f, 23.83f));
			starPath.AddLineTo (new PointF (23.3f, 30.5f));
			starPath.AddLineTo (new PointF (23.06f, 38.92f));
			starPath.AddLineTo (new PointF (31, 36.1f));
			starPath.AddLineTo (new PointF (38.94f, 38.92f));
			starPath.AddLineTo (new PointF (38.7f, 30.5f));
			starPath.AddLineTo (new PointF (43.84f, 23.83f));
			starPath.AddLineTo (new PointF (35.76f, 21.45f));
			starPath.ClosePath ();
			gold.SetFill ();
			starPath.Fill ();

			brown.SetStroke ();
			starPath.LineWidth = 1;
			starPath.Stroke ();


//// Blue blob Drawing
			UIBezierPath blueBlobPath = new UIBezierPath ();
			blueBlobPath.MoveTo (new PointF (256.5f, 16.5f));
			blueBlobPath.AddCurveToPoint (new PointF (240.5f, 41.5f), new PointF (235.5f, 37.5f), new PointF (217.53f, 41.55f));
			blueBlobPath.AddCurveToPoint (new PointF (265.5f, 30.5f), new PointF (263.47f, 41.45f), new PointF (265.5f, 30.5f));
			blueBlobPath.AddCurveToPoint (new PointF (256.5f, 16.5f), new PointF (265.5f, 30.5f), new PointF (277.5f, -4.5f));
			blueBlobPath.ClosePath ();
			blueBlobPath.MiterLimit = 2;
			blueBlobPath.LineJoinStyle = CGLineJoin.Round;
			darkishBlue.SetFill ();
			blueBlobPath.Fill ();

			bottomColorDown.SetStroke ();
			blueBlobPath.LineWidth = 1;
			blueBlobPath.Stroke ();


//// Button Drawing
			var buttonPath = UIBezierPath.FromRoundedRect (new RectangleF (54.5f, 10.5f, 163, 31), 4);
			context.SaveState ();
			buttonPath.AddClip ();
			context.DrawRadialGradient (newGradient,
    new PointF (100.39f, 55.13f), 7.84f,
    new PointF (136, 26), 86.67f,
    CGGradientDrawingOptions.DrawsBeforeStartLocation | CGGradientDrawingOptions.DrawsAfterEndLocation);
			context.RestoreState ();

			UIColor.Black.SetStroke ();
			buttonPath.LineWidth = 1;
			buttonPath.Stroke ();


//// Smiley face Drawing
			var smileyFacePath = UIBezierPath.FromOval (new RectangleF (159.5f, 49.5f, 47, 47));
			gold.SetFill ();
			smileyFacePath.Fill ();

			UIColor.Black.SetStroke ();
			smileyFacePath.LineWidth = 1;
			smileyFacePath.Stroke ();


//// Oval 2 Drawing
			var oval2Path = UIBezierPath.FromOval (new RectangleF (169.5f, 64.5f, 8, 8));
			UIColor.Black.SetFill ();
			oval2Path.Fill ();

			UIColor.Black.SetStroke ();
			oval2Path.LineWidth = 1;
			oval2Path.Stroke ();


//// Oval 3 Drawing
			var oval3Path = UIBezierPath.FromOval (new RectangleF (188.5f, 64.5f, 8, 8));
			UIColor.Black.SetFill ();
			oval3Path.Fill ();

			UIColor.Black.SetStroke ();
			oval3Path.LineWidth = 1;
			oval3Path.Stroke ();


//// Bezier 2 Drawing
			UIBezierPath bezier2Path = new UIBezierPath ();
			bezier2Path.MoveTo (new PointF (172.5f, 80.5f));
			bezier2Path.AddCurveToPoint (new PointF (185.5f, 85.5f), new PointF (177.75f, 85), new PointF (182.04f, 86.03f));
			bezier2Path.AddCurveToPoint (new PointF (194.5f, 79.5f), new PointF (191.27f, 84.62f), new PointF (194.5f, 79.5f));
			UIColor.Black.SetStroke ();
			bezier2Path.LineWidth = 2;
			bezier2Path.Stroke ();


//// Oval 5 Drawing
			var oval5Path = UIBezierPath.FromOval (new RectangleF (256.5f, 52.5f, 36, 33));
			lightBrown.SetFill ();
			oval5Path.Fill ();

			UIColor.Black.SetStroke ();
			oval5Path.LineWidth = 1;
			oval5Path.Stroke ();


//// Oval 6 Drawing
			var oval6Path = UIBezierPath.FromOval (new RectangleF (262.5f, 59.5f, 10, 19));
			UIColor.White.SetFill ();
			oval6Path.Fill ();

			UIColor.Black.SetStroke ();
			oval6Path.LineWidth = 1;
			oval6Path.Stroke ();


//// Oval 7 Drawing
			var oval7Path = UIBezierPath.FromOval (new RectangleF (275.5f, 59.5f, 10, 19));
			UIColor.White.SetFill ();
			oval7Path.Fill ();

			UIColor.Black.SetStroke ();
			oval7Path.LineWidth = 1;
			oval7Path.Stroke ();


//// Oval 9 Drawing
			var oval9Path = UIBezierPath.FromOval (new RectangleF (264.5f, 68.5f, 6, 5));
			UIColor.Black.SetFill ();
			oval9Path.Fill ();

			UIColor.Black.SetStroke ();
			oval9Path.LineWidth = 1;
			oval9Path.Stroke ();


//// Oval 10 Drawing
			var oval10Path = UIBezierPath.FromOval (new RectangleF (277.5f, 68.5f, 6, 5));
			UIColor.Black.SetFill ();
			oval10Path.Fill ();

			UIColor.Black.SetStroke ();
			oval10Path.LineWidth = 1;
			oval10Path.Stroke ();


//// Oval 4 Drawing
			var oval4Path = UIBezierPath.FromOval (new RectangleF (250.5f, 70.5f, 47, 24));
			lightBrown.SetFill ();
			oval4Path.Fill ();

			UIColor.Black.SetStroke ();
			oval4Path.LineWidth = 1;
			oval4Path.Stroke ();


//// Oval 8 Drawing
			var oval8Path = UIBezierPath.FromOval (new RectangleF (267.5f, 77.5f, 9, 4));
			UIColor.Black.SetFill ();
			oval8Path.Fill ();

			UIColor.Black.SetStroke ();
			oval8Path.LineWidth = 1;
			oval8Path.Stroke ();


//// Bezier 5 Drawing
			UIBezierPath bezier5Path = new UIBezierPath ();
			bezier5Path.MoveTo (new PointF (270.5f, 81.5f));
			bezier5Path.AddCurveToPoint (new PointF (267.5f, 88.5f), new PointF (269.5f, 85.5f), new PointF (267.5f, 88.5f));
			UIColor.Black.SetStroke ();
			bezier5Path.LineWidth = 1;
			bezier5Path.Stroke ();


//// Bezier 6 Drawing
			UIBezierPath bezier6Path = new UIBezierPath ();
			bezier6Path.MoveTo (new PointF (272.5f, 81.5f));
			bezier6Path.AddLineTo (new PointF (274.5f, 87.5f));
			UIColor.Black.SetStroke ();
			bezier6Path.LineWidth = 1;
			bezier6Path.Stroke ();








			
			
			
			// ------------- END PAINTCODE ----------------
		}
        public override void Draw(CGRect rect)
        {
            base.Draw(rect);

            var step = 1f / 6f;
            var locations = new nfloat[]
            {
                0.0f,
                step * 1f,
                step * 2f,
                step * 3f,
                step * 4f,
                step * 5f,
                1.0f
            };
            var colors = new CGColor[]
            {
                UIColor.Red.CGColor,
                new CGColor(1, 0, 1, 1),
                UIColor.Blue.CGColor,
                new CGColor(0, 1, 1, 1),
                UIColor.Green.CGColor,
                new CGColor(1, 1, 0, 1),
                UIColor.Red.CGColor
            };

            using (var colorSpace = CGColorSpace.CreateDeviceRGB())
            using (var gradiend = new CGGradient(colorSpace, colors, locations))
            {
                var context = UIGraphics.GetCurrentContext();
                context.DrawLinearGradient(gradiend, new CGPoint(rect.Size.Width, 0), new CGPoint(0, 0), CGGradientDrawingOptions.DrawsBeforeStartLocation);
            }
        }
		private UIView AddShadowToView (UIView view, bool reverse)
		{
			UIView containerView = view.Superview;

			var viewWithShadow = new UIView (view.Frame);
			containerView.InsertSubviewAbove (viewWithShadow, view);
			view.RemoveFromSuperview ();

			var shadowView = new UIView (viewWithShadow.Bounds);

			var colors = new CGColor[] {
				UIColor.FromWhiteAlpha(0f, 0f).CGColor,
				UIColor.FromWhiteAlpha(0f, 0.5f).CGColor
			};

			var gradient = new CAGradientLayer () {
				Frame = shadowView.Bounds,
				Colors =  colors
			};

			gradient.StartPoint = new CGPoint (reverse ? 0f : 1f, 0f);
			gradient.EndPoint = new CGPoint (reverse ? 1f : 0f, 0f);
			shadowView.Layer.InsertSublayer (gradient, 1);

			view.Frame = view.Bounds;
			viewWithShadow.AddSubview (view);

			viewWithShadow.AddSubview (shadowView);
			return viewWithShadow;
		}
 public override NSObject TransformedValue(NSObject value)
 {
     CGColor cgColor = new CGColor(value.Handle);
     return NSColor.FromCGColor(cgColor);
 }
        //// Drawing Methods
        public static void DrawCellProto(float cellHeight, float cellWidth)
        {
            //// General Declarations
            var colorSpace = CGColorSpace.CreateDeviceRGB();
            var context = UIGraphics.GetCurrentContext();

            //// Color Declarations
            var cellBgGradientTop = UIColor.FromRGBA(0.753f, 0.725f, 0.702f, 1.000f);
            var cellBgGradientBottom = UIColor.FromRGBA(0.773f, 0.800f, 0.835f, 1.000f);
            var cellBgGradientBottomHSBA = new float[4];
            cellBgGradientBottom.GetHSBA(out cellBgGradientBottomHSBA[0], out cellBgGradientBottomHSBA[1], out cellBgGradientBottomHSBA[2], out cellBgGradientBottomHSBA[3]);

            var color = UIColor.FromHSBA(cellBgGradientBottomHSBA[0], cellBgGradientBottomHSBA[1], 0.95f, cellBgGradientBottomHSBA[3]);

            //// Gradient Declarations
            var cellBgGradientColors = new CGColor [] {cellBgGradientBottom.CGColor, color.CGColor, cellBgGradientTop.CGColor};
            var cellBgGradientLocations = new float [] {0.0f, 0.53f, 1.0f};
            var cellBgGradient = new CGGradient(colorSpace, cellBgGradientColors, cellBgGradientLocations);

            //// Rectangle Drawing
            context.SaveState();
            context.TranslateCTM(-71.17f, 0.0f);

            var rectanglePath = UIBezierPath.FromRect(new RectangleF(71.17f, 0.0f, cellWidth, cellHeight));
            context.SaveState();
            rectanglePath.AddClip();
            context.DrawLinearGradient(cellBgGradient, new PointF(391.17f, 190.0f), new PointF(391.17f, -0.0f), 0);
            context.RestoreState();

            context.RestoreState();
        }
Example #60
0
        public override void Draw(RectangleF rectB)
        {
            CGColorSpace cs = null;
            CGContext ctx = null;
            RectangleF bds;

            ctx = UIGraphics.GetCurrentContext ();
            cs = CGColorSpace.CreateDeviceRGB ();

            if (Vertical){
                ctx.TranslateCTM (0, Bounds.Height);
                ctx.ScaleCTM (1, -1);
                bds = Bounds;
            } else {
                ctx.TranslateCTM (0, Bounds.Height);
                ctx.RotateCTM ((float)Math.PI/2);
                bds = new RectangleF (0, 0, Bounds.Height, Bounds.Width);
            }

            ctx.SetFillColorSpace (cs);
            ctx.SetStrokeColorSpace (cs);

            if (NumLights == 0){
                float currentTop = 0;

                if (BgColor != null){
                    BgColor.SetColor ();
                    ctx.FillRect (bds);
                }

                foreach (var thisTresh in ColorThresholds){
                    var val = Math.Min (thisTresh.MaxValue, Level);

                    var rect = new RectangleF (0, bds.Height * currentTop, bds.Width, bds.Height * (val - currentTop));
                    thisTresh.Color.SetColor ();
                    ctx.FillRect (rect);

                    if (Level < thisTresh.MaxValue)
                        break;
                    currentTop = val;
                }

                if (BorderColor != null){
                    BorderColor.SetColor ();
                    bds.Inflate (-0.5f, -0.5f);
                    ctx.StrokeRect (bds);
                }
            } else {
                float lightMinVal = 0;
                float insetAmount, lightVSpace;
                int peakLight = -1;

                lightVSpace = bds.Height / (float) NumLights;
                if (lightVSpace < 4)
                    insetAmount = 0;
                else if (lightVSpace < 8)
                    insetAmount = 0.5f;
                else
                    insetAmount = 1;

                if (PeakLevel > 0){
                    peakLight = (int) PeakLevel * NumLights;
                    if (peakLight >= NumLights)
                        peakLight = NumLights-1;
                }

                for (int light_i = 0; light_i< NumLights; light_i++){
                    float lightMaxVal = (light_i + 1) / (float)NumLights;
                    float lightIntensity;
                    RectangleF lightRect;
                    UIColor lightColor;

                    if (light_i == peakLight){
                        lightIntensity = 1;
                    } else {
                        lightIntensity = (Level - lightMinVal) / (lightMaxVal - lightMinVal);
                        lightIntensity = Clamp (0, lightIntensity, 1);
                        if (!VariableLightIntensity && lightIntensity > 0)
                            lightIntensity = 1;
                    }

                    lightColor = ColorThresholds [0].Color;
                    int color_i = 0;
                    for (; color_i < ColorThresholds.Length-1; color_i++){
                        var thisTresh = ColorThresholds [color_i];
                        var nextTresh = ColorThresholds [color_i+1];
                        if (thisTresh.MaxValue < lightMaxVal)
                            lightColor = nextTresh.Color;
                    }

                    lightRect = new RectangleF (0, bds.Height * color_i / (float) NumLights,
                                                bds.Width, bds.Height * (1f / NumLights));
                    lightRect.Inflate (-insetAmount, -insetAmount);
                    if (BgColor != null){
                        BgColor.SetColor ();
                        ctx.FillRect (lightRect);
                    }
                    if (lightIntensity == 1){
                        lightColor.SetColor ();
                        ctx.FillRect (lightRect);
                    } else if (lightIntensity > 0){
                        using (var clr = new CGColor (lightColor.CGColor, lightIntensity)){
                            ctx.SetFillColorWithColor (clr);
                            ctx.FillRect (lightRect);
                        }
                    }

                    if (BorderColor != null){
                        BorderColor.SetColor ();
                        lightRect.Inflate (-0.5f, -0.5f);
                        ctx.StrokeRect (lightRect);
                    }

                    lightMinVal = lightMaxVal;
                }
            }
            cs.Dispose ();
        }