MonoTouch.Dialog.ImageElement.GetCell C# (CSharp) Method

GetCell() public method

public GetCell ( UITableView tv ) : UITableViewCell
tv UITableView
return UITableViewCell
        public override UITableViewCell GetCell(UITableView tv)
        {
            var cell = tv.DequeueReusableCell (ikey);
            if (cell == null){
                cell = new UITableViewCell (UITableViewCellStyle.Default, ikey);
            }

            if (scaled == null)
                return cell;

            Section psection = Parent as Section;
            bool roundTop = psection.Elements [0] == this;
            bool roundBottom = psection.Elements [psection.Elements.Count-1] == this;

            using (var cs = CGColorSpace.CreateDeviceRGB ()){
                using (var bit = new CGBitmapContext (IntPtr.Zero, dimx, dimy, 8, 0, cs, CGImageAlphaInfo.PremultipliedFirst)){
                    // Clipping path for the image, different on top, middle and bottom.
                    if (roundBottom){
                        bit.AddArc (rad, rad, rad, (float) Math.PI, (float) (3*Math.PI/2), false);
                    } else {
                        bit.MoveTo (0, rad);
                        bit.AddLineToPoint (0, 0);
                    }
                    bit.AddLineToPoint (dimx, 0);
                    bit.AddLineToPoint (dimx, dimy);

                    if (roundTop){
                        bit.AddArc (rad, dimy-rad, rad, (float) (Math.PI/2), (float) Math.PI, false);
                        bit.AddLineToPoint (0, rad);
                    } else {
                        bit.AddLineToPoint (0, dimy);
                    }
                    bit.Clip ();
                    bit.DrawImage (rect, scaled.CGImage);

                    cell.ImageView.Image = UIImage.FromImage (bit.ToImage ());
                }
            }
            return cell;
        }