Example #1
0
 protected override void Awake()
 {
     base.Awake();
     DamageModifiers  = new ModifierGroup <object, float>();
     HealingModifiers = new ModifierGroup <object, float>();
     Type             = DamageType.Percent;
 }
Example #2
0
        public SciChartInteractionToolbar()
        {
            DefaultStyleKey = typeof(SciChartInteractionToolbar);

            ExtraContent         = new List <ContentControl>();
            _modifiersInDevMode  = new ModifierGroup();
            _modifiersInUserMode = new ModifierGroup();
            _modifiersInAllMode  = new ModifierGroup();
        }
Example #3
0
        protected override void OnCreateModifiers(SciChartInteractionToolbar toolbar, ISciChartSurface scs)
        {
            var rbzm = new RubberBandXyZoomModifier {
                IsXAxisOnly = false
            };
            var mouseWheelZoomPanModifier = new MouseWheelZoomModifier();

            var mGroup = new ModifierGroup();

            mGroup.ChildModifiers.Add(rbzm);
            mGroup.ChildModifiers.Add(mouseWheelZoomPanModifier);
            mGroup.ChildModifiers.Add(new ZoomExtentsModifier());
            scs.ChartModifier = mGroup;
        }
Example #4
0
        /// <summary>
        /// Awake is called when the script instance is being loaded.
        /// </summary>
        protected override void Awake()
        {
            base.Awake();
            PhysicsState             = this.SafeGetComponent <PhysicsState>();
            DamageState              = this.SafeGetComponent <DamageState>();
            Modifiers                = new ModifierGroup <object, Vector2>();
            KnockbackDamageModifiers = new ModifierList <object, float>();

            // Knockback Resistance
            KnockbackDamageModifiers.Add((src, damage) => {
                if (Character == null || CurrentState == null)
                {
                    return(damage);
                }
                return(Mathf.Max(0f, damage - CurrentState.Data.KnockbackResistance));
            });
        }
Example #5
0
        public void ApplyAdjustmentNullGroupModifierDefinitionsDoNotCrash()
        {
            _data.Setup();

            var m = new ModifierGroup {
                definition   = null,
                operatorType = OperatorType.Add,
                value        = new StatValueSelector {
                    type = StatValueType.Int
                }
            };

            _adjustment.Adjustments.Add(m);

            _adjustment.ApplyAdjustment(_data, 0);

            Assert.AreEqual(10, _data.GetStatInt(_health));
        }
Example #6
0
        public void ApplyAdjustment()
        {
            _data.Setup();

            var m = new ModifierGroup {
                definition   = _health,
                operatorType = OperatorType.Add,
                value        = new StatValueSelector {
                    type = StatValueType.Int
                }
            };

            m.value.GetValue().SetInt(3);

            _adjustment.Adjustments.Add(m);

            _adjustment.ApplyAdjustment(_data, 0);

            Assert.AreEqual(13, _data.GetStatInt(_health));
        }
Example #7
0
        /// <summary>
        /// Creates a <see cref="ModifierCollection" /> object with the given <see cref="Unit" /> as the owner.
        /// </summary>
        /// <param name="unit">the <see cref="Unit" /> that this collection belongs to</param>
        public ModifierCollection(Unit unit)
        {
            m_owner = unit;

            m_modifiers = new ModifierDictionary();

            foreach (ModifierCategory colType in Enum.GetValues(typeof(ModifierCategory)))
            {
                ModifierGroup tempDict = new ModifierGroup();

                foreach (ModifierType statType in Enum.GetValues(typeof(ModifierType)))
                {
                    tempDict.Add(statType, 0.0);
                }

                m_modifiers.Add(colType, tempDict);
            }

            m_changes = new LinkedList <ModifierType>();

            m_changeLock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
        }
Example #8
0
		/// <summary>
		/// Creates a <see cref="ModifierCollection" /> object with the given <see cref="Unit" /> as the owner.
		/// </summary>
		/// <param name="unit">the <see cref="Unit" /> that this collection belongs to</param>
		public ModifierCollection(Unit unit)
		{
			m_owner = unit;

            m_modifiers = new ModifierDictionary();

			foreach(ModifierCategory colType in Enum.GetValues(typeof(ModifierCategory)))
			{
                ModifierGroup tempDict = new ModifierGroup();

				foreach(ModifierType statType in Enum.GetValues(typeof(ModifierType)))
				{
					tempDict.Add(statType, 0.0);
				}

                m_modifiers.Add(colType, tempDict);
			}

            m_changes = new LinkedList<ModifierType>();

			m_changeLock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
		}
Example #9
0
        protected virtual void OnCreateModifiers(SciChartInteractionToolbar toolbar, ISciChartSurface scs)
        {
            var listMod = new List <ToolbarItem>();

            var surface = scs as SciChartSurface;
            var isPolar = surface != null && (surface.IsPolarChart || surface.XAxes.Any(x => x.IsPolarAxis) || surface.YAxes.Any(x => x.IsPolarAxis));

            // RubberBandXyZoomModifier
            var rbzm = new RubberBandXyZoomModifier {
                IsXAxisOnly = IsZoomXAxisOnly
            };

            _modifiersInAllMode.ChildModifiers.Add(rbzm);
            _modifiersInDevMode.ChildModifiers.Add(rbzm);

            if (!isPolar)
            {
                // ZoomPanModifier
                var zpm = new ZoomPanModifier {
                    ClipModeX = ClipMode.None, IsEnabled = false
                };
                _modifiersInAllMode.ChildModifiers.Add(zpm);
                _modifiersInDevMode.ChildModifiers.Add(zpm);
            }

            // ZoomExtentsModifier
            var zoomExtents = new ZoomExtentsModifier {
                ExecuteOn = ExecuteOn.MouseDoubleClick
            };

            _modifiersInAllMode.ChildModifiers.Add(zoomExtents);
            _modifiersInDevMode.ChildModifiers.Add(zoomExtents);

            // SeriesSelectionModifier
            var selStyle = new Style(typeof(BaseRenderableSeries));

            selStyle.Setters.Add(new Setter(BaseRenderableSeries.StrokeProperty, Colors.Red));
            selStyle.Setters.Add(new Setter(BaseRenderableSeries.StrokeThicknessProperty, 2));
            selStyle.Seal();

            var seriesSelection = new SeriesSelectionModifier
            {
                SelectedSeriesStyle  = selStyle,
                ReceiveHandledEvents = true,
                IsEnabled            = false
            };

            _modifiersInDevMode.ChildModifiers.Add(seriesSelection);

            // AnnotationCreationModifier
            var annotationMod = new CustomAnnotationCreationModifier();

            annotationMod.AnnotationCreated += (sender, args) =>
            {
                var modifier = (CustomAnnotationCreationModifier)sender;
                if (modifier != null)
                {
                    foreach (var annotation in scs.Annotations)
                    {
                        var newAnnotation = (annotation as AnnotationBase);
                        if (newAnnotation != null)
                        {
                            newAnnotation.IsEditable  = true;
                            newAnnotation.CanEditText = true;
                        }
                    }

                    modifier.IsEnabled = false;
                }
            };
            annotationMod.IsEnabled = false;
            _modifiersInDevMode.ChildModifiers.Add(annotationMod);

            // CustomRotateChartModifier
            var rotate = new CustomRotateChartModifier();

            var propertyPath = new PropertyPath(CustomRotateChartModifier.IsRotationEnabledProperty);
            var binding      = new Binding()
            {
                Source = this, Path = propertyPath
            };

            rotate.SetBinding(ChartModifierBase.IsEnabledProperty, binding);

            _modifiersInDevMode.ChildModifiers.Add(rotate);

            // Custom Export Modifier
            var export = new CustomExportModifier();

            _modifiersInDevMode.ChildModifiers.Add(export);

            // CustomThemeChangeModifier
            var theme = new CustomThemeChangeModifier();

            _modifiersInDevMode.ChildModifiers.Add(theme);

            // LegendModifier
            var legend = new LegendModifier
            {
                UseInterpolation         = true,
                ShowLegend               = false,
                ShowVisibilityCheckboxes = true,
                ShowSeriesMarkers        = true
            };

            _modifiersInDevMode.ChildModifiers.Add(legend);

            // MouseWheelZoomModifier
            var mouseWheel = new MouseWheelZoomModifier();

            _modifiersInAllMode.ChildModifiers.Add(mouseWheel);
            _modifiersInDevMode.ChildModifiers.Add(mouseWheel);

            // CustomFlipModifier
            var flip = new CustomFlipModifier();

            _modifiersInDevMode.ChildModifiers.Add(flip);

            // RolloverModifier
            var rollover = new RolloverModifier
            {
                IsEnabled            = false,
                UseInterpolation     = true,
                DrawVerticalLine     = true,
                ReceiveHandledEvents = true,
                ShowAxisLabels       = true,
                ShowTooltipOn        = ShowTooltipOptions.Always
            };

            _modifiersInDevMode.ChildModifiers.Add(rollover);

            // CursorModifier
            var cursorMod = new CursorModifier
            {
                IsEnabled            = false,
                ShowTooltipOn        = ShowTooltipOptions.MouseOver,
                ReceiveHandledEvents = true,
                ShowAxisLabels       = false,
                ShowTooltip          = true
            };

            _modifiersInDevMode.ChildModifiers.Add(cursorMod);

            // TooltipModifier
            var toolTipMod = new TooltipModifier
            {
                ReceiveHandledEvents = true,
                IsEnabled            = false,
                UseInterpolation     = true
            };

            _modifiersInDevMode.ChildModifiers.Add(toolTipMod);

            if (!isPolar)
            {
                // YAxisDragModifier
                var yAxisDrag = new YAxisDragModifier();
                _modifiersInDevMode.ChildModifiers.Add(yAxisDrag);

                // XAxisDragModifier
                var xAxisDrag = new XAxisDragModifier();
                _modifiersInDevMode.ChildModifiers.Add(xAxisDrag);
            }

            var exampleModifiers = (scs.ChartModifier as ModifierGroup);

            if (exampleModifiers == null)
            {
                exampleModifiers = new ModifierGroup();

                if (scs.ChartModifier != null)
                {
                    exampleModifiers.ChildModifiers.Add(scs.ChartModifier);
                }
            }

            var devMods  = new ModifierGroup();
            var userMods = new ModifierGroup();

            foreach (var devMod in _modifiersInDevMode.ChildModifiers)
            {
                var devModName = devMod.ModifierName;

                if (devMod is CustomAnnotationCreationModifier)
                {
                    devModName = "AnnotationCreationModifier";
                }

                if (!(exampleModifiers.ChildModifiers.Any(x => x.ModifierName == devModName)))
                {
                    devMods.ChildModifiers.Add(devMod);
                }
                else
                {
                    if (exampleModifiers.ChildModifiers.Count(x => x.ModifierName == devModName) == 1)
                    {
                        var exampleMod = exampleModifiers.ChildModifiers.Single(x => x.ModifierName == devModName);

                        if (!GetAppearceInToolbar((ChartModifierBase)exampleMod))
                        {
                            continue;
                        }

                        devMods.ChildModifiers.Add(exampleMod);
                    }
                    else
                    {
                        foreach (var exampleMod in exampleModifiers.ChildModifiers.Where(x => x.ModifierName == devModName && GetAppearceInToolbar((ChartModifierBase)x)))
                        {
                            devMods.ChildModifiers.Add(exampleMod);
                        }
                    }
                }
            }

            foreach (var inAllMod in _modifiersInAllMode.ChildModifiers)
            {
                var modName = inAllMod.ModifierName;

                if (!(exampleModifiers.ChildModifiers.Any(x => x.ModifierName == modName)))
                {
                    userMods.ChildModifiers.Add(inAllMod);
                }
                else
                {
                    if (exampleModifiers.ChildModifiers.Count(x => x.ModifierName == modName) == 1)
                    {
                        var exampleMod = exampleModifiers.ChildModifiers.Single(x => x.ModifierName == modName);

                        if (!GetAppearceInToolbar((ChartModifierBase)exampleMod))
                        {
                            continue;
                        }

                        userMods.ChildModifiers.Add(exampleMod);
                    }
                    else
                    {
                        foreach (var exampleMod in exampleModifiers.ChildModifiers.Where(x => x.ModifierName == modName && GetAppearceInToolbar((ChartModifierBase)x)))
                        {
                            userMods.ChildModifiers.Add(exampleMod);
                        }
                    }
                }
            }

            foreach (var exampleMod in exampleModifiers.ChildModifiers.Where(x => GetAppearceInToolbar((ChartModifierBase)x)))
            {
                if (!devMods.ChildModifiers.Any(x => x.ModifierName == exampleMod.ModifierName))
                {
                    devMods.ChildModifiers.Add(exampleMod);
                }

                if (!userMods.ChildModifiers.Any(x => x.ModifierName == exampleMod.ModifierName))
                {
                    userMods.ChildModifiers.Add(exampleMod);
                }
            }

            _modifiersInDevMode  = devMods;
            _modifiersInUserMode = userMods;

            // Set modifiers to the chart
            scs.ChartModifier = IsDeveloperMode ? _modifiersInDevMode : _modifiersInUserMode;

            var wrappers = WrapModifiers(toolbar.IsDeveloperMode
                ? toolbar._modifiersInDevMode.ChildModifiers
                : toolbar._modifiersInUserMode.ChildModifiers);

            // Set modifiers to the ItemSource for ItemsControl
            listMod.AddRange(wrappers);

            if (listMod.Any(x => x.Modifier.ModifierName == "AnnotationCreationModifier" || x.Modifier is VerticalSliceModifier))
            {
                listMod.Remove(listMod.FirstOrDefault(x => x.Modifier.ModifierName == "AnnotationCreationModifier"));
                listMod.Remove(listMod.FirstOrDefault(x => x.Modifier is VerticalSliceModifier));
            }

            ModifiersSource = listMod;
        }
Example #10
0
        private ModifierGroupDto ModifierGrouptoModifierGroupDto(string key, ModifierGroup mg, MenuDoc menu, bool cancel)
        {
            if (mg.MaximumSelection == 0)
            {
                mg.MaximumSelection = null;
            }

            if (mg.MaximumSelection.HasValue && mg.MinimumSelection.HasValue && mg.MaximumSelection.Value < mg.MinimumSelection.Value)
            {
                mg.MaximumSelection = mg.MinimumSelection;
            }

            var mgDto = new ModifierGroupDto
            {
                ID               = key,
                DisplayOrder     = mg.DisplayOrder,
                IsAutoSel        = mg.IsAutoSel,
                IsForceSel       = mg.IsForceSel,
                IsSingleSel      = mg.IsSingleSel,
                IsCollapsed      = mg.IsCollapsed.HasValue ? mg.IsCollapsed.Value : false,
                Name             = mg.Name,
                IsPromptSel      = mg.IsPromptSel.HasValue ? mg.IsPromptSel.Value : false,
                MaximumSelection = mg.MaximumSelection,
                MinimumSelection = mg.MinimumSelection,
                IncludeQuantity  = mg.IncludeQuantity,
            };

            foreach (var mod in mg.Modifiers.OrderBy(o => o.DisplayOrder))
            {
                var mDto = new ModifierDto
                {
                    Code            = mod.Code,
                    DisplayName     = mod.DisplayName,
                    DisplayOrder    = mod.DisplayOrder,
                    ID              = mod.ID,
                    MaxQty          = mod.MaxQty,
                    MinQty          = mod.MinQty,
                    Name            = mod.Name,
                    Status          = mod.Status,
                    OldState        = mod.Status,
                    PhotoUrl        = mod.PhotoURL,
                    Price           = mod.Price,
                    TaxRate         = mod.TaxRate,
                    LinkedProductID = mod.LinkedProductId,
                    ModifierGroupId = int.Parse(mgDto.ID),
                    ModifierGroup   = mgDto,
                };
                if (!string.IsNullOrEmpty(mod.LinkedProductId))
                {
                    var linkedProduct = menu.Products.Where(p => p.Key == mod.LinkedProductId).FirstOrDefault();
                    if (linkedProduct.Key != null)
                    {
                        mDto.Status   = linkedProduct.Value.Status ?? 0;
                        mDto.OldState = linkedProduct.Value.Status == 3 ? 0 : linkedProduct.Value.Status;
                        if (!cancel)
                        {
                            var linkedModifierGroups = menu.ModifierGroups.Where(group => linkedProduct.Value.ModifierGroups.Contains(group.Key)).OrderBy(o => o.Value.DisplayOrder);
                            foreach (var linkedGroup in linkedModifierGroups)
                            {
                                var currentMdg = ModifierGrouptoModifierGroupDto(linkedGroup.Key, linkedGroup.Value, menu, true);
                                mDto.SubModifiers.Add(currentMdg);
                                currentMdg.ParentModifier = mDto;
                            }
                        }
                    }
                }

                mgDto.ModifiersList.Add(mDto);
            }

            return(mgDto);
        }
        private void InitSecondChart()
        {
            WvlLogger.Log(LogType.TraceAll, "InitSecondChart()");

            var xAxis = new NumericAxis(this)
            {
                AutoRange          = AutoRange.Always,
                DrawMajorBands     = false,
                DrawLabels         = false,
                DrawMajorTicks     = false,
                DrawMinorTicks     = false,
                DrawMajorGridLines = false,
                DrawMinorGridLines = false,
                FlipCoordinates    = true,
                AxisAlignment      = AxisAlignment.Left
            };

            var yAxis = new NumericAxis(this)
            {
                DrawMajorBands     = false,
                DrawLabels         = false,
                DrawMajorTicks     = false,
                DrawMinorTicks     = false,
                DrawMajorGridLines = false,
                DrawMinorGridLines = false,
                FlipCoordinates    = true,
                AxisAlignment      = AxisAlignment.Bottom
            };

            // from XF sample

            /*
             * var rs = new FastUniformHeatmapRenderableSeries
             * {
             *  DataSeries = heatmapSeries,
             *  ColorMap = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
             *      new int[] { Color.Transparent, Color.DarkBlue, Color.Purple, Color.Red, Color.Yellow, Color.White },
             *      new float[] { 0f, 0.2f, 0.4f, 0.6f, 0.8f, 1f }
             *  )
             * };
             */

            // from Android sample
            var rs = new FastUniformHeatmapRenderableSeries
            {
                DataSeries = heatmapSeries,
                Maximum    = 70,
                Minimum    = -30,
                ColorMap   = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
                    new int[] { Color.Transparent, Color.DarkBlue, Color.Purple, Color.Red, Color.Yellow, Color.White },
                    new float[] { 0f, 0.0001f, 0.25f, 0.50f, 0.75f, 1f }
                    )
            };

            #region Zoom and Pan

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();
            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();
            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();
            zoomExtentsModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();
            yAxisDragModifier.SetReceiveHandledEvents(true);

            // Create modifier group from declared modifiers
            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, yAxisDragModifier);

            #endregion

            using (HeatmapSurface.SuspendUpdates())
            {
                HeatmapSurface.XAxes.Add(xAxis);
                HeatmapSurface.YAxes.Add(yAxis);
                HeatmapSurface.RenderableSeries.Add(rs);
                HeatmapSurface.ChartModifiers.Add(modifiers);
            }
        }
 public CustomModifierNode(string customToken, ModifierGroup group) : base(ModifierToken.Custom, group)
 {
     CustomToken = customToken;
 }
Example #13
0
        public TrackToShow()
        {
            XAxisCollection = new AxisCollection();
            YAxis = new NumericAxis
            {
                DrawMajorTicks = false,
                AxisAlignment = AxisAlignment.Left,
                FlipCoordinates = true,
                MinimalZoomConstrain = 1,
                Name = "yAxisDesign",
            };

            HasCurves = false;
            ChartModifier = new ModifierGroup();

            SeriesModifier = new SeriesSelectionModifier
            {
                ReceiveHandledEvents = true
            };
            ScaleModifier = new ScaleFactorModifier
            {
                ReceiveHandledEvents = true
            };
            ZoomPanModifier = new ZoomPanModifierExtension
            {
                ReceiveHandledEvents = true,
                ClipModeX = ClipMode.None,
                ExecuteOn = ExecuteOn.MouseLeftButton,
                IsEnabled = true,
                XyDirection = XyDirection.YDirection,
                ZoomExtentsY = true
            };

            LegendModifier = new LegendModifier
            {
                GetLegendDataFor = SourceMode.AllSeries
            };
            MouseWheelModifier = new MouseWheelZoomModifier
            {
                ReceiveHandledEvents = true,
                XyDirection = XyDirection.YDirection
            };
            ZoomModifier = new ZoomExtentsModifier
            {
                ReceiveHandledEvents = true,
                XyDirection = XyDirection.YDirection
            };
            TooltipModifierObject = new TooltipModifier
            {
                UseInterpolation = true
            };

            TooltipModifierObject.TooltipLabelTemplate = GetTooltipLabelTemplate();

            ChartModifier.ChildModifiers.Add(SeriesModifier);
            ChartModifier.ChildModifiers.Add(ScaleModifier);
            ChartModifier.ChildModifiers.Add(ZoomPanModifier);
            ChartModifier.ChildModifiers.Add(LegendModifier);
            ChartModifier.ChildModifiers.Add(MouseWheelModifier);
            ChartModifier.ChildModifiers.Add(ZoomModifier);
            ChartModifier.ChildModifiers.Add(TooltipModifierObject);
            ChartModifier.ChildModifiers.Add(ExtendedTooltipModifier);
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our chart from the layout resource,
            var chart = FindViewById <SciChartSurface>(Resource.Id.Chart);

            // Create a numeric X axis
            var xAxis = new NumericAxis(this)
            {
                AxisTitle = "Number of Samples (per Series)"
            };

            // Create a numeric Y axis
            var yAxis = new NumericAxis(this)
            {
                AxisTitle    = "Value",
                VisibleRange = new DoubleRange(-1, 1)
            };

            // Add xAxis to the XAxes collection of the chart
            chart.XAxes.Add(xAxis);

            // Add yAxis to the YAxes collection of the chart
            chart.YAxes.Add(yAxis);

            // Create XyDataSeries to host data for our chart
            var lineData = new XyDataSeries <double, double>()
            {
                SeriesName = "Sin(x)"
            };
            var scatterData = new XyDataSeries <double, double>()
            {
                SeriesName = "Cos(x)"
            };

            // Append data which should be drawn
            for (var i = 0; i < 1000; i++)
            {
                lineData.Append(i, Math.Sin(i * 0.1));
                scatterData.Append(i, Math.Cos(i * 0.1));
            }

            var lineSeries = new FastLineRenderableSeries()
            {
                DataSeries  = lineData,
                StrokeStyle = new SolidPenStyle(Color.LightBlue, 2)
            };

            // Create scatter series with data appended into scatterData
            var scatterSeries = new XyScatterRenderableSeries()
            {
                DataSeries  = scatterData,
                PointMarker = new EllipsePointMarker()
                {
                    Width       = 10,
                    Height      = 10,
                    StrokeStyle = new SolidPenStyle(Color.Green, 2),
                    FillStyle   = new SolidBrushStyle(Color.LightBlue)
                }
            };

            // Add the renderable series to the RenderableSeries collection of the chart
            chart.RenderableSeries.Add(lineSeries);
            chart.RenderableSeries.Add(scatterSeries);

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();

            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();

            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();

            zoomExtentsModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();

            yAxisDragModifier.SetReceiveHandledEvents(true);

            // Create modifier group from declared modifiers
            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, yAxisDragModifier);

            // Add the interactions to the ChartModifiers collection of the chart
            chart.ChartModifiers.Add(modifiers);
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our chart from the layout resource,
            var chart = FindViewById <SciChartSurface>(Resource.Id.Chart);

            // Create a numeric X axis
            var xAxis = new NumericAxis(this)
            {
                AxisTitle = "Number of Samples (per Series)"
            };

            // Create a numeric Y axis
            var yAxis = new NumericAxis(this)
            {
                AxisTitle    = "Value",
                VisibleRange = new DoubleRange(-1, 1)
            };

            // Create a secondary numeric Y Axis
            var secondaryYAxis = new NumericAxis(this)
            {
                AxisTitle     = "Secondary",
                AxisId        = "SecondaryAxis",
                AxisAlignment = AxisAlignment.Left,
                VisibleRange  = new DoubleRange(-2, 2)
            };

            // Add xAxis to the XAxes collection of the chart
            chart.XAxes.Add(xAxis);

            // Add yAxis to the YAxes collection of the chart
            chart.YAxes.Add(yAxis);

            // Add secondaryYAxis to the YAxes collection of the chart
            chart.YAxes.Add(secondaryYAxis);

            const int fifoCapacity = 500;

            // Create XyDataSeries to host data for our chart
            var lineData =
                new XyDataSeries <double, double>()
            {
                SeriesName = "Sin(x)", FifoCapacity = new Integer(fifoCapacity)
            };
            var scatterData =
                new XyDataSeries <double, double>()
            {
                SeriesName = "Cos(x)", FifoCapacity = new Integer(fifoCapacity)
            };

            var timer = new Timer(30)
            {
                AutoReset = true
            };

            var x = lineData.Count;

            // Append on each tick of timer
            timer.Elapsed += (s, e) =>
            {
                using (chart.SuspendUpdates())
                {
                    lineData.Append(x, Math.Sin(x * 0.1));
                    scatterData.Append(x, Math.Cos(x * 0.1));

                    // add label every 100 data points
                    if (x % 100 == 0)
                    {
                        // create text annotation with label
                        var label = new TextAnnotation(this)
                        {
                            Text    = "N",
                            X1Value = x,
                            Y1Value = 0,
                            HorizontalAnchorPoint = HorizontalAnchorPoint.Center,
                            VerticalAnchorPoint   = VerticalAnchorPoint.Center,
                            FontStyle             = new FontStyle(20, Color.White),
                            Background            = new ColorDrawable(Color.DarkGreen),
                            ZIndex  = 1,
                            YAxisId = x % 200 == 0 ? AxisBase.DefaultAxisId : "SecondaryAxis"
                        };

                        // add label into annotation collection
                        chart.Annotations.Add(label);

                        // if we add annotation and x > fifoCapacity
                        // then we need to remove annotation which goes out of the screen
                        if (x > fifoCapacity)
                        {
                            chart.Annotations.Remove(0);
                        }
                    }

                    // zoom series to fit viewport size into XAxis direction
                    chart.ZoomExtentsX();
                    x++;
                }
            };

            timer.Start();

            // Create line series with data appended into lineData
            var lineSeries = new FastLineRenderableSeries()
            {
                DataSeries  = lineData,
                StrokeStyle = new SolidPenStyle(Color.LightBlue, 2)
            };

            // Create scatter series with data appended into scatterData
            var scatterSeries = new XyScatterRenderableSeries()
            {
                DataSeries  = scatterData,
                PointMarker = new EllipsePointMarker()
                {
                    Width       = 10,
                    Height      = 10,
                    StrokeStyle = new SolidPenStyle(Color.Green, 2),
                    FillStyle   = new SolidBrushStyle(Color.LightBlue)
                },
                YAxisId = "SecondaryAxis"
            };

            // Add the renderable series to the RenderableSeries collection of the chart
            chart.RenderableSeries.Add(lineSeries);
            chart.RenderableSeries.Add(scatterSeries);

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();

            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();

            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();

            zoomExtentsModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();

            yAxisDragModifier.SetReceiveHandledEvents(true);

            // Create and configure legend
            var legendModifier = new LegendModifier(this);

            legendModifier.SetLegendPosition(GravityFlags.Bottom | GravityFlags.CenterHorizontal, 10);
            legendModifier.SetOrientation(Orientation.Horizontal);

            // Create RolloverModifier to show tooltips
            var rolloverModifier = new RolloverModifier();

            rolloverModifier.SetReceiveHandledEvents(true);

            // Create modifier group from declared modifiers
            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, yAxisDragModifier, rolloverModifier, legendModifier);

            // Add the interactions to the ChartModifiers collection of the chart
            chart.ChartModifiers.Add(modifiers);
        }
Example #16
0
 public ModifierNode(ModifierToken token, ModifierGroup group)
 {
     Token = token;
 }
        private void InitSecondChart()
        {
            WvlLogger.Log(LogType.TraceAll, "InitFirstChart()");

            var xAxis = new NumericAxis(this)
            {
                AutoRange = AutoRange.Always,
                //AutoRange = AutoRange.Never,

                /*
                 * DrawMajorBands = false,
                 * DrawLabels = false,
                 * DrawMajorTicks = false,
                 * DrawMinorTicks = false,
                 * DrawMajorGridLines = false,
                 * DrawMinorGridLines = false,
                 */
                FlipCoordinates = true,
                AxisAlignment   = AxisAlignment.Left,

                //VisibleRange = new DoubleRange(900, 1000)
                //VisibleRange = new DoubleRange(0, 5)
                //VisibleRange = new DoubleRange(-200,2048)
                //VisibleRange = new DoubleRange(100, 110),
                //GrowBy = new DoubleRange(1, 1),
            };

            var yAxis = new NumericAxis(this)
            {
                //AutoRange = AutoRange.Always,
                //AutoRange = AutoRange.Never,

                /*
                 * DrawMajorBands = false,
                 * DrawLabels = false,
                 * DrawMajorTicks = false,
                 * DrawMinorTicks = false,
                 * DrawMajorGridLines = false,
                 * DrawMinorGridLines = false,
                 */
                FlipCoordinates = true,
                AxisAlignment   = AxisAlignment.Bottom,



                //VisibleRange = new DoubleRange(height-60, height),

                //VisibleRange = new DoubleRange(height-120, height),
                //VisibleRange = new DoubleRange(height - 10, height),
                VisibleRange = new DoubleRange(height / 2, height),
                //VisibleRange = new DoubleRange(-3000, 20000)
                //VisibleRange = new DoubleRange(-300,2048)
                //GrowBy = new DoubleRange(1, 1),
            };

            // from XF sample

            /*
             * var rs = new FastUniformHeatmapRenderableSeries
             * {
             *  DataSeries = heatmapSeries,
             *  ColorMap = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
             *      new int[] { Color.Transparent, Color.DarkBlue, Color.Purple, Color.Red, Color.Yellow, Color.White },
             *      new float[] { 0f, 0.2f, 0.4f, 0.6f, 0.8f, 1f }
             *      )
             * };
             */


            // from Android.Kotlin sample
            var rs = new FastUniformHeatmapRenderableSeries
            {
                DataSeries = heatmapSeries,

                //Maximum = 70,
                //Minimum = -30,

                //Maximum = 30,
                //Minimum = -40,

                Maximum = 40,
                Minimum = -40,

                /*
                 * CellTextStyle = new Font().
                 *
                 *        .withCellTextStyle(sciChartBuilder.newFont().withTextSize(8).withTextColor(ColorUtil.White).build())
                 * .withDrawTextInCell(true)
                 */

                //ColorMap = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
                //    new int[] { Color.Transparent, Color.DarkBlue, Color.Purple, Color.Red, Color.Yellow, Color.White },
                //    new float[] { 0f, 0.0001f, 0.25f, 0.50f, 0.75f, 1f })


                /*
                 * ColorMap = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
                 *      //new int[] {
                 *      //    Color.Transparent,
                 *      //    Color.White,
                 *      //    Color.LightYellow,
                 *      //    Color.Yellow,
                 *      //    Color.Orange,
                 *      //    Color.OrangeRed,
                 *      //    Color.Red,
                 *      //    Color.Pink,
                 *      //    Color.Purple,
                 *      //    Color.DarkBlue,
                 *      //    Color.Black },
                 *      new int[] {
                 *      Color.Black,
                 *      Color.DarkBlue,
                 *      Color.Purple,
                 *      Color.Pink,
                 *      Color.Red,
                 *      Color.OrangeRed,
                 *      Color.Orange,
                 *      Color.Yellow,
                 *      Color.LightYellow,
                 *      Color.White,
                 *      Color.Transparent },
                 *  new float[] {
                 *      0f,
                 *      0.10f,
                 *      0.20f,
                 *      0.30f,
                 *      0.40f,
                 *      0.50f,
                 *      0.60f,
                 *      0.70f,
                 *      0.80f,
                 *      0.90f,
                 *      1f }),
                 *  //new float[] {
                 *  //    0f,
                 *  //    0.55f,
                 *  //    0.60f,
                 *  //    0.65f,
                 *  //    0.70f,
                 *  //    0.75f,
                 *  //    0.80f,
                 *  //    0.85f,
                 *  //    0.90f,
                 *  //    0.95f,
                 *  //    1f }),
                 */



                ColorMap = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
                    new int[] {
                    Color.Black,
                    Color.Purple,
                    Color.Red,
                    Color.Orange,
                    Color.Yellow,
                    Color.White
                },
                    //new float[] {
                    //    0f,
                    //    0.20f,
                    //    0.40f,
                    //    0.60f,
                    //    0.80f,
                    //    1f }),
                    //new float[] {
                    //    0.50f,
                    //    0.60f,
                    //    0.70f,
                    //    0.80f,
                    //    0.90f,
                    //    1f }),
                    new float[] {
                    0.25f,
                    0.50f,
                    0.65f,
                    0.80f,
                    0.90f,
                    1f
                }),


                /*
                 * CellTextStyle = new SciChart.Drawing.Common.FontStyle(16, Color.White),
                 * DrawTextInCell = true,
                 */
            };


            #region Zoom and Pan

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();
            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();
            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();
            zoomExtentsModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();
            yAxisDragModifier.SetReceiveHandledEvents(true);

            var rollOverModifer = new RolloverModifier
            {
                ShowTooltip      = true,
                ShowAxisLabels   = true,
                DrawVerticalLine = true
            };

            // Create modifier group from declared modifiers
            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, yAxisDragModifier, rollOverModifer);

            #endregion

            using (HeatmapSurface.SuspendUpdates())
            {
                HeatmapSurface.XAxes.Add(xAxis);
                HeatmapSurface.YAxes.Add(yAxis);
                HeatmapSurface.RenderableSeries.Add(rs);
                //HeatmapSurface.ChartModifiers.Add(modifiers);
            }
        }
Example #18
0
        private bool HasToAddUserModifierToModifierGroup(IChartModifier userModifier, ModifierGroup modifierGroup)
        {
            AxisDragModifierBase axisModifier = userModifier as AxisDragModifierBase;

            if (axisModifier == null)
            {
                return(!modifierGroup.ChildModifiers.Any(x => x.ModifierName == userModifier.ModifierName));
            }

            foreach (var mod in modifierGroup.ChildModifiers.OfType <AxisDragModifierBase>())
            {
                if (mod.ModifierName == axisModifier.ModifierName && mod.AxisId == axisModifier.AxisId)
                {
                    return(false);
                }
            }

            return(true);
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our chart from the layout resource,
            var chart = FindViewById <SciChartSurface>(Resource.Id.Chart);

            // Create a numeric X axis
            var xAxis = new NumericAxis(this)
            {
                AxisTitle = "Number of Samples (per Series)"
            };

            // Create a numeric Y axis
            var yAxis = new NumericAxis(this)
            {
                AxisTitle    = "Value",
                VisibleRange = new DoubleRange(-1, 1)
            };

            // Add xAxis to the XAxes collection of the chart
            chart.XAxes.Add(xAxis);

            // Add yAxis to the YAxes collection of the chart
            chart.YAxes.Add(yAxis);

            // Create XyDataSeries to host data for our chart
            var lineData = new XyDataSeries <double, double>()
            {
                SeriesName = "Sin(x)"
            };
            var scatterData = new XyDataSeries <double, double>()
            {
                SeriesName = "Cos(x)"
            };

            // Append data which should be drawn
            for (var i = 0; i < 1000; i++)
            {
                lineData.Append(i, Math.Sin(i * 0.1));
                scatterData.Append(i, Math.Cos(i * 0.1));
            }

            double phase = 0;

            var timer = new Timer(30)
            {
                AutoReset = true
            };
            var lineBuffer    = new DoubleValues(1000);
            var scatterBuffer = new DoubleValues(1000);

            // Update on each tick of timer
            timer.Elapsed += (s, e) =>
            {
                lineBuffer.Clear();
                scatterBuffer.Clear();

                for (int i = 0; i < 1000; i++)
                {
                    lineBuffer.Add(Math.Sin(i * 0.1 + phase));
                    scatterBuffer.Add(Math.Cos(i * 0.1 + phase));
                }

                using (chart.SuspendUpdates())
                {
                    lineData.UpdateRangeYAt(0, lineBuffer);
                    scatterData.UpdateRangeYAt(0, scatterBuffer);
                }

                phase += 0.01;
            };

            timer.Start();

            var lineSeries = new FastLineRenderableSeries()
            {
                DataSeries  = lineData,
                StrokeStyle = new SolidPenStyle(Color.LightBlue, 2)
            };

            // Create scatter series with data appended into scatterData
            var scatterSeries = new XyScatterRenderableSeries()
            {
                DataSeries  = scatterData,
                PointMarker = new EllipsePointMarker()
                {
                    Width       = 10,
                    Height      = 10,
                    StrokeStyle = new SolidPenStyle(Color.Green, 2),
                    FillStyle   = new SolidBrushStyle(Color.LightBlue)
                }
            };

            // Add the renderable series to the RenderableSeries collection of the chart
            chart.RenderableSeries.Add(lineSeries);
            chart.RenderableSeries.Add(scatterSeries);

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();

            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();

            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();

            zoomExtentsModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();

            yAxisDragModifier.SetReceiveHandledEvents(true);

            // Create and configure legend
            var legendModifier = new LegendModifier(this);

            legendModifier.SetLegendPosition(GravityFlags.Bottom | GravityFlags.CenterHorizontal, 10);
            legendModifier.SetOrientation(Orientation.Horizontal);

            // Create RolloverModifier to show tooltips
            var rolloverModifier = new RolloverModifier();

            rolloverModifier.SetReceiveHandledEvents(true);

            // Create modifier group from declared modifiers
            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, yAxisDragModifier, rolloverModifier, legendModifier);

            // Add the interactions to the ChartModifiers collection of the chart
            chart.ChartModifiers.Add(modifiers);
        }
        private void InitChart(SciChartSurface chart)
        {
            // Create a numeric X axis
            var xAxis = new NumericAxis(this)
            {
                AxisTitle = "Number of Samples (per Series)"
            };

            // Create a numeric Y axis
            var yAxis = new NumericAxis(this)
            {
                AxisTitle    = "Value",
                VisibleRange = new DoubleRange(-1, 1)
            };

            // Create a secondary numeric Y Axis
            var secondaryYAxis = new NumericAxis(this)
            {
                AxisTitle     = "Secondary",
                AxisId        = "SecondaryAxis",
                AxisAlignment = AxisAlignment.Left,
                VisibleRange  = new DoubleRange(-2, 2)
            };

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();

            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();

            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();

            zoomExtentsModifier.SetReceiveHandledEvents(true);

            // Create RolloverModifier to show tooltips
            var rolloverModifier = new RolloverModifier();

            rolloverModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();

            yAxisDragModifier.SetReceiveHandledEvents(true);

            // Create and configure legend
            var legendModifier = new LegendModifier(this);

            legendModifier.SetLegendPosition(GravityFlags.Bottom | GravityFlags.CenterHorizontal, 10);
            legendModifier.SetOrientation(Orientation.Horizontal);

            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, rolloverModifier,
                                              legendModifier, yAxisDragModifier);

            modifiers.SetReceiveHandledEvents(true);
            modifiers.MotionEventGroup = "SharedEvents";

            // Add xAxis to the XAxes collection of the chart
            chart.XAxes.Add(xAxis);

            // Add yAxis to the YAxes collection of the chart
            chart.YAxes.Add(yAxis);

            // Add secondaryYAxis to the YAxes collection of the chart
            chart.YAxes.Add(secondaryYAxis);

            // Add the interactions to the ChartModifiers collection of the chart
            chart.ChartModifiers.Add(modifiers);
        }