Пример #1
0
        private NSColor ColorForTextType(TextType type, int level)
        {
            NSColor color = null;

            switch (type)
            {
            case TextType.Subtitle:
                color = NSColor.FromDeviceRgba(160.0f / 255.0f, 182.0f / 255.0f, 203.0f / 255.0f, 1);
                break;

            case TextType.Code:
                color = level == 0 ? NSColor.White : NSColor.FromDeviceRgba(242.0f / 255.0f, 173.0f / 255.0f, 24.0f / 255.0f, 1);
                break;

            case TextType.Body:
                if (level == 2)
                {
                    color = NSColor.FromDeviceRgba(115.0f / 255.0f, 170.0f / 255.0f, 230.0f / 255.0f, 1);
                }
                break;

            default:
                color = NSColor.White;
                break;
            }
            return(color);
        }
Пример #2
0
        public override void SetupSlide(PresentationViewController presentationViewController)
        {
            TextManager.SetTitle("Scene Kit");
            TextManager.SetSubtitle("Introduction");
            TextManager.AddBulletAtLevel("High level API for 3D integration", 0);
            TextManager.AddBulletAtLevel("Data visualization", 1);
            TextManager.AddBulletAtLevel("User Interface", 1);
            TextManager.AddBulletAtLevel("Casual Games", 1);

            var redColor    = NSColor.FromDeviceRgba(168.0f / 255.0f, 21.0f / 255.0f, 1.0f / 255.0f, 1);
            var grayColor   = NSColor.Gray;
            var greenColor  = NSColor.FromDeviceRgba(105.0f / 255.0f, 145.0f / 255.0f, 14.0f / 255.0f, 1);
            var orangeColor = NSColor.Orange;
            var purpleColor = NSColor.FromDeviceRgba(152.0f / 255.0f, 57.0f / 255.0f, 189.0f / 255.0f, 1);

            Boxes = new List <SCNNode> ();

            AddBox("Cocoa", new CGRect(0, 0, 500, 70), 3, grayColor);
            AddBox("Core Image", new CGRect(0, 0, 100, 70), 2, greenColor);
            AddBox("Core Animation", new CGRect(390, 0, 110, 70), 2, greenColor);
            AddBox("Sprite Kit", new CGRect(250, 0, 135, 70), 2, greenColor);
            AddBox("Scene Kit", new CGRect(105, 0, 140, 70), 2, orangeColor);
            AddBox("OpenGL / OpenGL ES", new CGRect(0, 0, 500, 70), 1, purpleColor);
            AddBox("Graphics Hardware", new CGRect(0, 0, 500, 70), 0, redColor);
        }
Пример #3
0
        public void SetColor(object backend, Xwt.Drawing.Color color)
        {
            NSColor col = NSColor.FromDeviceRgba((float)color.Red, (float)color.Green, (float)color.Blue, (float)color.Alpha);

            col.Set();
            col.SetFill();
        }
Пример #4
0
        private SCNMaterial WallMaterial()
        {
            var material = SCNMaterial.Create();

            material.Diffuse.Contents = NSColor.FromDeviceRgba(0.11f, 0.70f, 0.88f, 1.0f);
            return(material);
        }
Пример #5
0
        public override void DrawRect(CGRect dirtyRect)
        {
            bool isSelected = owner.TreeView.IsRowSelected(owner.TreeView.RowForItem(node));
            var  paintInfo  = owner.EventsHandler.OnPaintNode(node.ToNodeInfo(), false);

            if (isSelected)
            {
                NSColor.SelectedMenuItem.SetFill();
            }
            else
            {
                switch (paintInfo.Coloring)
                {
                case NodeColoring.Alive:
                    NSColor.FromDeviceRgba(0.74f, 0.93f, 0.74f, 1f).SetFill();
                    break;

                case NodeColoring.Deleted:
                    NSColor.FromDeviceRgba(0.90f, 0.90f, 0.98f, 1f).SetFill();
                    break;

                default:
                    NSColor.White.SetFill();
                    break;
                }
            }
            NSBezierPath.FillRect(dirtyRect);
            // paintInfo.DrawFocusedMsgMark todo
        }
Пример #6
0
        public override void DrawRect(CGRect dirtyRect)
        {
            base.DrawRect(dirtyRect);

            var  mainText   = new NSString(node.ToString());
            var  bounds     = this.Bounds.ToRectangleF();
            bool isSelected = node.IsSelected;

            var mainTextAttrs = new NSMutableDictionary();
            var mainTextPara  = new NSMutableParagraphStyle();

            mainTextPara.LineBreakMode = NSLineBreakMode.TruncatingTail;
            mainTextPara.TighteningFactorForTruncation = 0;
            mainTextAttrs.Add(NSStringAttributeKey.ParagraphStyle, mainTextPara);
            if (isSelected)
            {
                mainTextAttrs.Add(NSStringAttributeKey.ForegroundColor, NSColor.SelectedMenuItemText);
            }
            else
            {
                mainTextAttrs.Add(NSStringAttributeKey.ForegroundColor, NSColor.Text);
            }

            var   mainTextSz = mainText.StringSize(mainTextAttrs).ToSizeF();
            float nodeTextAndPrimaryPropHorzSpacing = 8;
            float spaceAvailableForDefaultPropValue =
                bounds.Width - mainTextSz.Width - nodeTextAndPrimaryPropHorzSpacing;

            var paintInfo = owner.ViewModel.PaintNode(node, spaceAvailableForDefaultPropValue > 30);

            if (paintInfo.PrimaryPropValue != null)
            {
                var r = new RectangleF(
                    bounds.Right - spaceAvailableForDefaultPropValue,
                    bounds.Y,
                    spaceAvailableForDefaultPropValue,
                    bounds.Height);

                // todo: move dict to a static field
                var dict = new NSMutableDictionary();
                var para = new NSMutableParagraphStyle();
                para.Alignment     = NSTextAlignment.Right;
                para.LineBreakMode = NSLineBreakMode.TruncatingTail;
                para.TighteningFactorForTruncation = 0;
                dict.Add(NSStringAttributeKey.ParagraphStyle, para);
                if (isSelected)
                {
                    dict.Add(NSStringAttributeKey.ForegroundColor, NSColor.FromDeviceRgba(0.9f, 0.9f, 0.9f, 1f));
                }
                else
                {
                    dict.Add(NSStringAttributeKey.ForegroundColor, NSColor.Gray);
                }

                new NSString(paintInfo.PrimaryPropValue).DrawString(r.ToCGRect(), dict);
            }

            mainText.DrawString(bounds.ToCGRect(), mainTextAttrs);
        }
Пример #7
0
        public static NSColor ToNSColor(this Color color)
        {
            if (color == null)
            {
                return(null);
            }

            return(NSColor.FromDeviceRgba(color.R, color.G, color.B, color.A));
        }
Пример #8
0
        private NSMutableAttributedString CreateAttributedString(string text, Font font, StringFormat format, Brush brush)
        {
            var range       = new NSRange(0, text.Length);
            var stringAttrs = new NSMutableAttributedString(text);

            stringAttrs.BeginEditing();

            stringAttrs.AddAttribute(NSStringAttributeKey.Font, font.font, range);

            if (brush != null)
            {
                var brushColor      = brush.color;
                var foregroundColor = NSColor.FromDeviceRgba(brushColor.R / 255f, brushColor.G / 255f, brushColor.B / 255f, brushColor.A / 255f);
                stringAttrs.AddAttribute(NSStringAttributeKey.ForegroundColor, foregroundColor, range);
            }

            if (format != null)
            {
                var para = new NSMutableParagraphStyle();
                if (format.horizontalAlignment == StringAlignment.Near)
                {
                    para.Alignment = NSTextAlignment.Left;
                }
                else if (format.horizontalAlignment == StringAlignment.Center)
                {
                    para.Alignment = NSTextAlignment.Center;
                }
                else if (format.horizontalAlignment == StringAlignment.Far)
                {
                    para.Alignment = NSTextAlignment.Right;
                }

                if (format.lineBreakMode == LineBreakMode.WrapWords)
                {
                    para.LineBreakMode = NSLineBreakMode.ByWordWrapping;
                }
                else if (format.lineBreakMode == LineBreakMode.WrapChars)
                {
                    para.LineBreakMode = NSLineBreakMode.CharWrapping;
                }
                else if (format.lineBreakMode == LineBreakMode.SingleLineEndEllipsis)
                {
                    para.LineBreakMode = NSLineBreakMode.TruncatingTail;
                    para.TighteningFactorForTruncation = 0;
                }

                stringAttrs.AddAttribute(NSStringAttributeKey.ParagraphStyle, para, range);
            }

            if ((font.style & FontStyle.Underline) != 0)
            {
                stringAttrs.AddAttribute(NSStringAttributeKey.UnderlineStyle, new NSNumber(1), range);
            }

            stringAttrs.EndEditing();
            return(stringAttrs);
        }
Пример #9
0
        public static NSColor ToNSColor(this Color color, float opacity = -1)
        {
            if (color.R == 0 && color.G == 0 && color.B == 0 && color.A == 0)
            {
                return(NSColor.Clear);
            }
            var alpha = (opacity == -1 ? color.A : opacity);

            return(NSColor.FromDeviceRgba((nfloat)color.R, (nfloat)color.G, (nfloat)color.B, (nfloat)alpha));
        }
Пример #10
0
        public override void SetupSlide(PresentationViewController presentationViewController)
        {
            RedColor    = NSColor.FromDeviceRgba(168.0f / 255.0f, 21.0f / 255.0f, 0.0f / 255.0f, 1);
            GreenColor  = NSColor.FromDeviceRgba(154.0f / 255.0f, 197.0f / 255.0f, 58.0f / 255.0f, 1);
            BlueColor   = NSColor.FromDeviceRgba(49.0f / 255.0f, 80.0f / 255.0f, 201.0f / 255.0f, 1);
            PurpleColor = NSColor.FromDeviceRgba(190.0f / 255.0f, 56.0f / 255.0f, 243.0f / 255.0f, 1);

            // Create the diagram but hide it
            DiagramNode         = CloningDiagramNode();
            DiagramNode.Opacity = 0.0f;
            ContentNode.AddChildNode(DiagramNode);
        }
Пример #11
0
 public static NSColor ToNSUI(this Color color)
 {
     if (color.ControlObject is NSColor nscolor)
     {
         return(nscolor);
     }
     if (color.ControlObject is CGColor cgcolor && MacVersion.IsAtLeast(10, 8))
     {
         return(NSColor.FromCGColor(cgcolor));
     }
     return(NSColor.FromDeviceRgba(color.R, color.G, color.B, color.A));
 }
Пример #12
0
        /// <summary>
        /// Converts a DSColor to a UIColor object
        /// </summary>
        /// <returns>The color from DS color.</returns>
        /// <param name="aColor">A color.</param>
        public static NSColor ToNSColor(this DSColor aColor)
        {
            // if a pattern image has been set then create a pattern color from it
            if (aColor.PatternImage != null)
            {
                return(NSColor.FromPatternImage(aColor.PatternImage.ToUIImage()));
            }

            var aRed   = (nfloat)aColor.RedValue / 255.0f;
            var aGreen = (nfloat)aColor.GreenValue / 255.0f;
            var aBlue  = (nfloat)aColor.BlueValue / 255.0f;
            var aAlpha = (nfloat)aColor.AlphaValue / 255.0f;

            return(NSColor.FromDeviceRgba(aRed, aGreen, aBlue, aAlpha));
        }
Пример #13
0
        public static NSColor GetNSColor(this Color c)
        {
            var t = c.Tag as ColorTag;

            if (t == null)
            {
                t     = new ColorTag();
                c.Tag = t;
            }
            if (t.NSColor == null)
            {
                t.NSColor = NSColor.FromDeviceRgba(c.Red / 255.0f, c.Green / 255.0f, c.Blue / 255.0f, c.Alpha / 255.0f);
            }
            return(t.NSColor);
        }
Пример #14
0
        public override void DrawRect(CGRect dirtyRect)
        {
            if (progressValue != null)
            {
                var r = Bounds;
                r.Inflate(-0.5f, -0.5f);

                var cl = NSColor.FromDeviceRgba(0f, 0.3f, 1f, 0.20f);
                cl.SetStroke();
                NSBezierPath.StrokeRect(r);

                cl.SetFill();
                r.Width = (int)(r.Width * progressValue.Value);
                NSBezierPath.FillRect(r);
            }
            base.DrawRect(dirtyRect);
        }
Пример #15
0
        public override void DrawRect(RectangleF rect)
        {
            var xamarinBlue = NSColor.FromDeviceRgba(0.071f, 0.463f, 0.725f, 1.000f);

            NSBezierPath xamarinLogoPath = new NSBezierPath();

            xamarinLogoPath.MoveTo(new PointF(230.49f, 92.68f));
            xamarinLogoPath.LineTo(new PointF(200.74f, 92.68f));
            xamarinLogoPath.LineTo(new PointF(159.7f, 167.71f));
            xamarinLogoPath.LineTo(new PointF(200.74f, 242.73f));
            xamarinLogoPath.LineTo(new PointF(230.49f, 242.73f));
            xamarinLogoPath.LineTo(new PointF(191.23f, 167.71f));
            xamarinLogoPath.LineTo(new PointF(230.49f, 92.68f));
            xamarinLogoPath.ClosePath();
            xamarinLogoPath.MoveTo(new PointF(118.66f, 92.68f));
            xamarinLogoPath.LineTo(new PointF(88.92f, 92.68f));
            xamarinLogoPath.LineTo(new PointF(128.18f, 167.71f));
            xamarinLogoPath.LineTo(new PointF(88.92f, 242.73f));
            xamarinLogoPath.LineTo(new PointF(118.66f, 242.73f));
            xamarinLogoPath.LineTo(new PointF(159.7f, 167.71f));
            xamarinLogoPath.LineTo(new PointF(118.66f, 92.68f));
            xamarinLogoPath.ClosePath();
            xamarinLogoPath.MoveTo(new PointF(220.7f, 37.0f));
            xamarinLogoPath.CurveTo(new PointF(232.55f, 41.1f), new PointF(220.7f, 37.0f), new PointF(227.07f, 38.03f));
            xamarinLogoPath.CurveTo(new PointF(242.62f, 49.31f), new PointF(238.03f, 44.18f), new PointF(242.62f, 49.31f));
            xamarinLogoPath.LineTo(new PointF(304.22f, 152.47f));
            xamarinLogoPath.CurveTo(new PointF(308.95f, 170.05f), new PointF(304.22f, 152.47f), new PointF(309.55f, 163.02f));
            xamarinLogoPath.CurveTo(new PointF(304.22f, 183.53f), new PointF(308.36f, 177.09f), new PointF(304.22f, 183.53f));
            xamarinLogoPath.LineTo(new PointF(243.57f, 286.11f));
            xamarinLogoPath.CurveTo(new PointF(234.05f, 294.31f), new PointF(243.57f, 286.11f), new PointF(239.7f, 291.09f));
            xamarinLogoPath.CurveTo(new PointF(220.97f, 299.0f), new PointF(228.4f, 297.53f), new PointF(220.97f, 299.0f));
            xamarinLogoPath.LineTo(new PointF(97.25f, 299.0f));
            xamarinLogoPath.CurveTo(new PointF(84.16f, 294.31f), new PointF(97.25f, 299.0f), new PointF(89.51f, 297.53f));
            xamarinLogoPath.CurveTo(new PointF(75.83f, 286.11f), new PointF(78.81f, 291.09f), new PointF(75.83f, 286.11f));
            xamarinLogoPath.LineTo(new PointF(13.99f, 181.77f));
            xamarinLogoPath.CurveTo(new PointF(11.03f, 170.05f), new PointF(13.99f, 181.77f), new PointF(11.33f, 176.21f));
            xamarinLogoPath.CurveTo(new PointF(12.81f, 157.16f), new PointF(10.73f, 163.9f), new PointF(12.81f, 157.16f));
            xamarinLogoPath.LineTo(new PointF(75.59f, 49.31f));
            xamarinLogoPath.CurveTo(new PointF(85.07f, 41.1f), new PointF(75.59f, 49.31f), new PointF(79.59f, 44.18f));
            xamarinLogoPath.CurveTo(new PointF(97.5f, 37.0f), new PointF(90.54f, 38.03f), new PointF(97.5f, 37.0f));
            xamarinLogoPath.LineTo(new PointF(220.7f, 37.0f));
            xamarinLogoPath.LineTo(new PointF(220.7f, 37.0f));
            xamarinLogoPath.ClosePath();
            xamarinBlue.SetFill();
            xamarinLogoPath.Fill();
        }
Пример #16
0
 protected void UpdateBackground(NSTableCellView tableViewCell, Cell cell)
 {
     if (TemplatedItemsList <ItemsView <Cell>, Cell> .GetIsGroupHeader((BindableObject)cell))
     {
         var color = NSColor.FromDeviceRgba((nfloat)0.9686275f, (nfloat)0.9686275f, (nfloat)0.9686275f, (nfloat)1);
         tableViewCell.SetBackgroundColor(color);
     }
     else
     {
         NSColor       uiColor       = NSColor.White;
         VisualElement visualElement = cell.Parent as VisualElement;
         if (visualElement != null)
         {
             uiColor = visualElement.BackgroundColor == Color.Default ? uiColor : ColorExtensions.ToUIColor(visualElement.BackgroundColor);
         }
         tableViewCell.SetBackgroundColor(uiColor);
     }
 }
Пример #17
0
        public override void DrawRect(CGRect dirtyRect)
        {
            bool isSelected = node.IsSelected;
            bool isDarkMode = owner.ViewModel.ColorTheme == Presenters.ColorThemeMode.Dark;
            var  paintInfo  = owner.ViewModel.PaintNode(node, false);

            if (isSelected)
            {
                NSColor.SelectedMenuItem.SetFill();
            }
            else
            {
                switch (paintInfo.Coloring)
                {
                case NodeColoring.Alive:
                    if (isDarkMode)
                    {
                        NSColor.FromDeviceRgba(0.0f, 0.20f, 0.0f, 1f).SetFill();
                    }
                    else
                    {
                        NSColor.FromDeviceRgba(0.74f, 0.93f, 0.74f, 1f).SetFill();
                    }
                    break;

                case NodeColoring.Deleted:
                    if (isDarkMode)
                    {
                        NSColor.FromDeviceRgba(0.30f, 0.30f, 0.30f, 1f).SetFill();
                    }
                    else
                    {
                        NSColor.FromDeviceRgba(0.90f, 0.90f, 0.98f, 1f).SetFill();
                    }
                    break;

                default:
                    NSColor.TextBackground.SetFill();
                    break;
                }
            }
            NSBezierPath.FillRect(dirtyRect);
            // paintInfo.DrawFocusedMsgMark todo
        }
Пример #18
0
        private SCNNode AddLabInfoNode(string title, float yPosition)
        {
            var labInfoNode = Utils.SCBoxNode(title, new CGRect(0, 0, 293.33f, 93.33f), NSColor.FromDeviceRgba(31 / 255, 31 / 255, 31 / 255, 1), 0.0f, false);

            labInfoNode.Scale    = new SCNVector3(0.015f, 0.015f, 0.015f);
            labInfoNode.Pivot    = SCNMatrix4.CreateTranslation(new SCNVector3(145.33f, 46.66f, 5));
            labInfoNode.Position = new SCNVector3(6.9f, yPosition, 10.0f);
            labInfoNode.Rotation = new SCNVector4(0, 1, 0, (float)(Math.PI));
            labInfoNode.Opacity  = 0.0f;

            var colorBox = Utils.SCBoxNode(null, new CGRect(293.33f, 0, 40, 93.33f), NSColor.FromDeviceRgba(1, 214 / 255, 37 / 255, 1), 0.0f, false);

            colorBox.Geometry.FirstMaterial.LightingModelName = SCNLightingModel.Constant;

            ContentNode.AddChildNode(labInfoNode);
            labInfoNode.AddChildNode(colorBox);

            return(labInfoNode);
        }
Пример #19
0
        public override void SetupSlide(PresentationViewController presentationViewController)
        {
            TextManager.SetTitle("Scene Kit");
            TextManager.AddBulletAtLevel("High level Objective-C API", 0);
            TextManager.AddBulletAtLevel("Scene graph", 0);

            var redColor    = NSColor.FromDeviceRgba(168.0f / 255.0f, 21.0f / 255.0f, 1.0f / 255.0f, 1);
            var grayColor   = NSColor.Gray;
            var greenColor  = NSColor.FromDeviceRgba(105.0f / 255.0f, 145.0f / 255.0f, 14.0f / 255.0f, 1);
            var orangeColor = NSColor.Orange;
            var purpleColor = NSColor.FromDeviceRgba(152.0f / 255.0f, 57.0f / 255.0f, 189.0f / 255.0f, 1);

            AddBox("Cocoa", new CGRect(0, 0, 500, 70), 3, grayColor);
            AddBox("Core Image", new CGRect(0, 0, 100, 70), 2, greenColor);
            AddBox("Core Animation", new CGRect(260, 0, 130, 70), 2, greenColor);
            AddBox("GL Kit", new CGRect(395, 0, 105, 70), 2, greenColor);
            AddBox("Scene Kit", new CGRect(105, 0, 150, 70), 2, orangeColor);
            AddBox("OpenGL", new CGRect(0, 0, 500, 70), 1, purpleColor);
            AddBox("Graphics Hardware", new CGRect(0, 0, 500, 70), 0, redColor);
        }
Пример #20
0
        void IView.SetViewModel(IViewModel viewModel)
        {
            this.viewModel = viewModel;

            selectedBkColor = Selectors.Create(
                () => viewModel.Theme,
                theme => theme == Presenters.ColorThemeMode.Light ?
                NSColor.FromDeviceRgba(.77f, .80f, .90f, 1f) :
                NSColor.FromDeviceRgba(.37f, .40f, .60f, 1f)
                );

            var updateItems = Updaters.Create(
                () => viewModel.Items,
                viewItems =>
            {
                isUpdating = true;
                var items  = dataSource.items;
                items.Clear();
                items.AddRange(viewItems.Select((d, i) => new Item(this, d, i)));
                tableView.ReloadData();
                tableView.SelectRows(
                    NSIndexSet.FromArray(items.Where(i => i.Data.IsSelected).Select(i => i.Index).ToArray()),
                    byExtendingSelection: false
                    );
                UpdateTimeDeltasColumn();
                isUpdating = false;
            }
                );

            var updateFocusedMessageMark = Updaters.Create(
                () => viewModel.FocusedMessagePosition,
                (_) => {
                InvalidateTable();
            }
                );

            viewModel.ChangeNotification.CreateSubscription(() => {
                updateItems();
                updateFocusedMessageMark();
            });
        }
Пример #21
0
        public static SCNNode SCGaugeNode(string title, ref SCNNode progressNode)
        {
            var gaugeGroup = SCNNode.Create();

            SCNTransaction.Begin();
            SCNTransaction.AnimationDuration = 1;
            var gauge = SCNNode.Create();

            gauge.Geometry = SCNCapsule.Create(0.4f, 8);
            gauge.Geometry.FirstMaterial.LightingModelName = SCNLightingModel.Constant;
            gauge.Rotation = new SCNVector4(0, 0, 1, (float)(Math.PI / 2));
            gauge.Geometry.FirstMaterial.Diffuse.Contents = NSColor.White;
            gauge.Geometry.FirstMaterial.CullMode         = SCNCullMode.Front;

            var gaugeValue = SCNNode.Create();

            gaugeValue.Geometry = SCNCapsule.Create(0.3f, 7.8f);
            gaugeValue.Pivot    = SCNMatrix4.CreateTranslation(new SCNVector3(0, 3.8f, 0));
            gaugeValue.Position = new SCNVector3(0, 3.8f, 0);
            gaugeValue.Scale    = new SCNVector3(1, 0.01f, 1);
            gaugeValue.Opacity  = 0.0f;
            gaugeValue.Geometry.FirstMaterial.Diffuse.Contents  = NSColor.FromDeviceRgba(0, 1, 0, 1);
            gaugeValue.Geometry.FirstMaterial.LightingModelName = SCNLightingModel.Constant;
            gauge.AddChildNode(gaugeValue);

            if (progressNode != null)
            {
                progressNode = gaugeValue;
            }

            var titleNode = Utils.SCLabelNode(title, LabelSize.Normal, false);

            titleNode.Position = new SCNVector3(-8, -0.55f, 0);

            gaugeGroup.AddChildNode(titleNode);
            gaugeGroup.AddChildNode(gauge);
            SCNTransaction.Commit();

            return(gaugeGroup);
        }
Пример #22
0
        public void rulerViewDidAddMarker(NSRulerView aRulerView, NSRulerMarker aMarker)
        {
            float      theOtherCoord;
            RectangleF newRect;
            NSColor    newColor;
            ColorRect  newColorRect;

            var visibleRect = VisibleRect();

            aMarker.Removable = true;

            if (aRulerView.Orientation == NSRulerOrientation.Horizontal)
            {
                theOtherCoord = MaxY(visibleRect) - 165.0f;
                newRect       = new RectangleF(aMarker.MarkerLocation, theOtherCoord, 115.0f, 115.0f);
            }
            else
            {
                if (IsFlipped)
                {
                    theOtherCoord = MinX(visibleRect) + 50.0f;
                    newRect       = new RectangleF(theOtherCoord, aMarker.MarkerLocation, 115.0f, 115.0f);
                }
                else
                {
                    theOtherCoord = MinX(visibleRect) + 50.0f;
                    newRect       = new RectangleF(theOtherCoord, aMarker.MarkerLocation - 115.0f, 115.0f, 115.0f);
                }
            }

            newColor = NSColor.FromDeviceRgba((float)rand.NextDouble(),
                                              (float)rand.NextDouble(),
                                              (float)rand.NextDouble(),
                                              1.0f);
            newColorRect = new ColorRect(newRect, newColor);
            rects.Add(newColorRect);
            selectRect(newColorRect);
        }
Пример #23
0
 public static NSColor ToNSUI(this Color color)
 {
     return(NSColor.FromDeviceRgba(color.R, color.G, color.B, color.A));
 }
Пример #24
0
        private SCNNode NodeWithText(string message, TextType type, int level)
        {
            var textNode = SCNNode.Create();

            // Bullet
            if (type == TextType.Bullet)
            {
                if (level == 0)
                {
                    message = "• " + message;
                }
                else
                {
                    var bullet = SCNNode.Create();
                    bullet.Geometry = SCNPlane.Create(10.0f, 10.0f);
                    bullet.Geometry.FirstMaterial.Diffuse.Contents = NSColor.FromDeviceRgba((float)(160 / 255.0), (float)(182 / 255.0), (float)(203 / 255.0), 1);
                    bullet.Position = new SCNVector3(80, 30, 0);
                    bullet.Geometry.FirstMaterial.LightingModelName   = SCNLightingModel.Constant;
                    bullet.Geometry.FirstMaterial.WritesToDepthBuffer = false;
                    bullet.RenderingOrder = 1;
                    textNode.AddChildNode(bullet);
                    message = "\t\t\t\t" + message;
                }
            }

            // Text attributes
            var extrusion = ExtrusionDepthForTextType(type);
            var text      = SCNText.Create(message, extrusion);

            textNode.Geometry  = text;
            text.Flatness      = TEXT_FLATNESS;
            text.ChamferRadius = (extrusion == 0 ? 0 : TEXT_CHAMFER);
            text.Font          = FontForTextType(type, level);

            // Layout
            var layoutManager = new NSLayoutManager();
            var leading       = layoutManager.DefaultLineHeightForFont(text.Font);
            var descender     = text.Font.Descender;
            int newlineCount  = ((string[])(((string)text.String.ToString()).Split('\n'))).Length;

            textNode.Pivot = SCNMatrix4.CreateTranslation(0, -descender + newlineCount * leading, 0);

            if (type == TextType.Chapter)
            {
                var min = new SCNVector3();
                var max = new SCNVector3();
                textNode.GetBoundingBox(ref min, ref max);
                textNode.Position = new SCNVector3(-11, (-min.Y + textNode.Pivot.M42) * TEXT_SCALE, 7);
                textNode.Scale    = new SCNVector3(TEXT_SCALE, TEXT_SCALE, TEXT_SCALE);
                textNode.Rotation = new SCNVector4(0, 1, 0, (float)(Math.PI / 270.0));
            }
            else
            {
                textNode.Position = new SCNVector3(-16, CurrentBaseline, 0);
                textNode.Scale    = new SCNVector3(TEXT_SCALE, TEXT_SCALE, TEXT_SCALE);
            }

            // Material
            if (type == TextType.Chapter)
            {
                var frontMaterial = SCNMaterial.Create();
                var sideMaterial  = SCNMaterial.Create();

                frontMaterial.Emission.Contents = NSColor.DarkGray;
                frontMaterial.Diffuse.Contents  = ColorForTextType(type, level);
                sideMaterial.Diffuse.Contents   = NSColor.LightGray;
                textNode.Geometry.Materials     = new SCNMaterial[] {
                    frontMaterial,
                    frontMaterial,
                    sideMaterial,
                    frontMaterial,
                    frontMaterial
                };
            }
            else
            {
                // Full white emissive material (visible even when there is no light)
                textNode.Geometry.FirstMaterial = SCNMaterial.Create();
                textNode.Geometry.FirstMaterial.Diffuse.Contents  = NSColor.Black;
                textNode.Geometry.FirstMaterial.Emission.Contents = ColorForTextType(type, level);

                // Don't write to the depth buffer because we don't want the text to be reflected
                textNode.Geometry.FirstMaterial.WritesToDepthBuffer = false;

                // Render last
                textNode.RenderingOrder = 1;
            }

            return(textNode);
        }
Пример #25
0
 public static NSColor ToNSColor(this Color c)
 {
     return(NSColor.FromDeviceRgba(c.R / 255f, c.G / 255f, c.B / 255f, c.A / 255f));
 }
Пример #26
0
 public static NSColor ToNSColor(this int value)
 {
     value.ToArgb(out int a, out int r, out int g, out int b);
     return(NSColor.FromDeviceRgba(r, g, b, a));
 }
Пример #27
0
 public void ShowWarning(string warning)
 {
     ShowMessage(Stock.StatusWarning, warning, false, NSColor.FromDeviceRgba(235f / 255, 161f / 255, 7f / 255, 1));
 }
Пример #28
0
 public static NSColor ToNSColor(this Color col)
 {
     return(NSColor.FromDeviceRgba((float)col.Red, (float)col.Green, (float)col.Blue, (float)col.Alpha));
 }
Пример #29
0
        private static NSMutableAttributedString buildAttributedString(string text, CTFont font,
                                                                       Color?fontColor = null)
        {
            // Create a new attributed string from text
            NSMutableAttributedString atts =
                new NSMutableAttributedString(text);

            var attRange = new NSRange(0, atts.Length);
            var attsDic  = new NSMutableDictionary();

            // Font attribute
            NSObject fontObject = new NSObject(font.Handle);

            attsDic.Add(FontAttributedName, fontObject);
            // -- end font

            if (fontColor.HasValue)
            {
                // Font color
                var     fc    = fontColor.Value;
                NSColor color = NSColor.FromDeviceRgba(fc.R / 255f,
                                                       fc.G / 255f,
                                                       fc.B / 255f,
                                                       fc.A / 255f);
                NSObject colorObject = new NSObject(color.Handle);
                attsDic.Add(ForegroundColorAttributedName, colorObject);
                // -- end font Color
            }

            if (underLine)
            {
                // Underline
                int single          = (int)MonoMac.AppKit.NSUnderlineStyle.Single;
                int solid           = (int)MonoMac.AppKit.NSUnderlinePattern.Solid;
                var attss           = single | solid;
                var underlineObject = NSNumber.FromInt32(attss);
                //var under = NSAttributedString.UnderlineStyleAttributeName.ToString();
                attsDic.Add(UnderlineStyleAttributeName, underlineObject);
                // --- end underline
            }


            if (strikeThrough)
            {
                // StrikeThrough
                //				NSColor bcolor = NSColor.Blue;
                //				NSObject bcolorObject = new NSObject(bcolor.Handle);
                //				attsDic.Add(NSAttributedString.StrikethroughColorAttributeName, bcolorObject);
                int stsingle          = (int)MonoMac.AppKit.NSUnderlineStyle.Single;
                int stsolid           = (int)MonoMac.AppKit.NSUnderlinePattern.Solid;
                var stattss           = stsingle | stsolid;
                var stunderlineObject = NSNumber.FromInt32(stattss);

                attsDic.Add(StrikethroughStyleAttributeName, stunderlineObject);
                // --- end underline
            }


            // Text alignment
            var alignment         = CTTextAlignment.Left;
            var alignmentSettings = new CTParagraphStyleSettings();

            alignmentSettings.Alignment = alignment;
            var      paragraphStyle = new CTParagraphStyle(alignmentSettings);
            NSObject psObject       = new NSObject(paragraphStyle.Handle);

            // end text alignment

            attsDic.Add(ParagraphStyleAttributeName, psObject);

            atts.SetAttributes(attsDic, attRange);

            return(atts);
        }
Пример #30
0
 public void ShowError(string error)
 {
     ShowMessage(Stock.StatusError, error, false, NSColor.FromDeviceRgba(228f / 255, 84f / 255, 55f / 255, 1));
 }