/// <summary> /// Setup /// </summary> /// <param name="view"></param> /// <param name="colorBy"></param> public void Setup( ViewManager view, ShapeDimension shapeBy, ContextMenuStrip shapeMenu) { InSetup = true; View = view; ShapeBy = shapeBy; ShapeTypeMenu = shapeMenu; SetupFixedShapeButton(); ShapeColumnSelector.Setup(View.BaseQuery, shapeBy.QueryColumn); // setup fieldSelector SetupShapeSchemeGrid(); if (ShapeColumnSelector.QueryColumn != null) { ShapeByColumn.Checked = true; } else { ShapeByFixedShape.Checked = true; } InSetup = false; return; }
/// <summary> /// Constructs an N-dimensional array /// </summary> /// <param name="lengths">The number of elements in each dimension</param> /// <param name="offset">The offset in elements of the base array where data starts</param> /// <param name="strides">The number of elements in each dimension, can be null</param> public Shape(long[] lengths, long offset = 0, long[] strides = null) { if (lengths == null) { throw new ArgumentNullException("dimensionsizes"); } if (lengths.LongLength <= 0 || lengths.Any(x => x <= 0)) { throw new ArgumentOutOfRangeException("dimensionsizes", string.Format("The lengths have a zero size element: {0}", lengths)); } if (offset < 0) { throw new ArgumentOutOfRangeException("offset", string.Format("The offset cannot be negative: {0}", offset)); } if (strides == null) { strides = new long[lengths.LongLength]; strides[lengths.LongLength - 1] = 1; for (long i = strides.LongLength - 2; i >= 0; i--) { strides[i] = strides[i + 1] * lengths[i + 1]; } } else if (lengths.LongLength != strides.LongLength || strides.Any(x => x < 0)) { throw new ArgumentException("strides"); } this.Offset = offset; m_dimensions = new ShapeDimension[lengths.LongLength]; for (long i = lengths.LongLength - 1; i >= 0; i--) { m_dimensions[i] = new ShapeDimension(lengths[i], strides[i]); } //Calculate how much space is required Length = CalculateSpaceRequired() + this.Offset; }
/// <summary> /// Constructs an N-dimensional array /// </summary> /// <param name="dimensions">The length and stride for each dimension</param> /// <param name="offset">The offset in elements of the base array where data starts</param> public Shape(ShapeDimension[] dimensions, long offset = 0) { if (dimensions == null) throw new ArgumentNullException("dimensions"); if (dimensions.LongLength <= 0 || dimensions.Any(x => x.Length <= 0 || x.Stride < 0)) throw new ArgumentOutOfRangeException("dimensions"); if (offset < 0) throw new ArgumentOutOfRangeException("offset"); this.Offset = offset; m_dimensions = dimensions; Length = CalculateSpaceRequired() + this.Offset; }
/// <summary> /// Constructs an N-dimensional array /// </summary> /// <param name="lengths">The number of elements in each dimension</param> /// <param name="offset">The offset in elements of the base array where data starts</param> /// <param name="strides">The number of elements in each dimension, can be null</param> public Shape(long[] lengths, long offset = 0, long[] strides = null) { if (lengths == null) throw new ArgumentNullException("dimensionsizes"); if (lengths.LongLength <= 0 || lengths.Any(x => x <= 0)) throw new ArgumentOutOfRangeException("dimensionsizes", string.Format("The lengths have a zero size element: {0}", lengths)); if (offset < 0) throw new ArgumentOutOfRangeException("offset", string.Format("The offset cannot be negative: {0}", offset)); if (strides == null) { strides = new long[lengths.LongLength]; strides[lengths.LongLength - 1] = 1; for (long i = strides.LongLength - 2; i >= 0; i--) strides[i] = strides[i + 1] * lengths[i + 1]; } else if (lengths.LongLength != strides.LongLength || strides.Any(x => x < 0)) throw new ArgumentException("strides"); this.Offset = offset; m_dimensions = new ShapeDimension[lengths.LongLength]; for (long i = lengths.LongLength - 1; i >= 0; i--) m_dimensions[i] = new ShapeDimension(lengths[i], strides[i]); //Calculate how much space is required Length = CalculateSpaceRequired() + this.Offset; }
/// <summary> /// Deserialize /// </summary> /// <param name="vertexName"></param> /// <param name="q"></param> /// <param name="tr"></param> /// <returns></returns> internal static VertexMx Deserialize( string name, Query q, XmlTextReader tr) { Enum iEnum = null; VertexMx v = new VertexMx(); if (XmlUtil.GetEnumAttribute(tr, "ShowLabels", typeof(ShowLabels), ref iEnum)) { v.ShowLabels = (ShowLabels)iEnum; } while (true) // loop through elements of network { tr.Read(); tr.MoveToContent(); if (Lex.Eq(tr.Name, name + "Column")) { v.QueryColumn = ResultsViewProps.DeserializeQueryColumn(q, tr); //tr.Read(); tr.MoveToContent(); } else if (Lex.Eq(tr.Name, "Color")) { v.Color = ColorDimension.Deserialize("Color", q, tr); //tr.Read(); tr.MoveToContent(); } else if (Lex.Eq(tr.Name, "Size")) { v.Size = SizeDimension.Deserialize("Size", q, tr); //tr.Read(); tr.MoveToContent(); } else if (Lex.Eq(tr.Name, "Shape")) { v.Shape = ShapeDimension.Deserialize("Shape", q, tr); //tr.Read(); tr.MoveToContent(); } else if (Lex.Eq(tr.Name, "TooltipFields")) { v.TooltipFields = TooltipDimensionDef.Deserialize("TooltipFields", q, tr); //tr.Read(); tr.MoveToContent(); } else if (tr.NodeType == XmlNodeType.EndElement && // end of props Lex.Eq(tr.Name, name)) { break; } else { throw new Exception("Unexpected element: " + tr.Name); } } return(v); }
/// <summary> /// Deserialize Chart Properties /// </summary> /// <param name="q"></param> /// <param name="tr"></param> /// <param name="view"></param> public static bool DeserializeChartProperties( Query q, XmlTextReader tr, ResultsViewProps view) { AxisMx ax; Enum iEnum = null; string txt; if (!Lex.Eq(tr.Name, "ChartProperties")) { return(false); } if (XmlUtil.GetEnumAttribute(tr, "ShapeRenderingMode", typeof(ShapeRenderingMode), ref iEnum)) { view.ShapeRenderingMode = (ShapeRenderingMode)iEnum; } //XmlUtil.GetStringAttribute(tr, "BackgroundImageFile", ref view.BackgroundImageFile); XmlUtil.GetIntAttribute(tr, "Jitter", ref view.JitterX); XmlUtil.GetBoolAttribute(tr, "ChartStretch", ref view.JitterTheSameForXandY); XmlUtil.GetBoolAttribute(tr, "ShowLegend", ref view.ShowLegend); if (tr.GetAttribute("LegendAlignmentHorizontal") != null) { view.LegendAlignmentHorizontal = (LegendAlignmentHorizontal)EnumUtil.Parse(typeof(LegendAlignmentHorizontal), tr.GetAttribute("LegendAlignmentHorizontal")); } if (tr.GetAttribute("LegendAlignmentVertical") != null) { view.LegendAlignmentVertical = (LegendAlignmentVertical)EnumUtil.Parse(typeof(LegendAlignmentVertical), tr.GetAttribute("LegendAlignmentVertical")); } XmlUtil.GetIntAttribute(tr, "LegendMaxHorizontalPercentage", ref view.LegendMaxHorizontalPercentage); XmlUtil.GetIntAttribute(tr, "LegendMaxVerticalPercentage", ref view.LegendMaxVerticalPercentage); if (tr.GetAttribute("LegendItemOrder") != null) { view.LegendItemOrder = (LegendDirection)EnumUtil.Parse(typeof(LegendDirection), tr.GetAttribute("LegendItemOrder")); } XmlUtil.GetBoolAttribute(tr, "MainChartAreaMaximized", ref view.MainViewPanelMaximized); XmlUtil.GetBoolAttribute(tr, "ShowFilters", ref view.ShowFilters); XmlUtil.GetBoolAttribute(tr, "ShowSelectedDataRows", ref view.ShowSelectedDataRows); XmlUtil.GetBoolAttribute(tr, "ShowAxesTitles", ref view.ShowAxesTitles); XmlUtil.GetBoolAttribute(tr, "ShowAxesScaleLabels", ref view.ShowAxesScaleLabels); XmlUtil.GetBoolAttribute(tr, "RotateAxes", ref view.RotateAxes); XmlUtil.GetBoolAttribute(tr, "UseExistingCondFormatting", ref view.UseExistingCondFormatting); XmlUtil.GetBoolAttribute(tr, "PivotedData", ref view.PivotedData); while (true) // loop through elements of chart { tr.Read(); tr.MoveToContent(); if (Lex.Eq(tr.Name, "XAxis")) { view.XAxisMx = AxisMx.DeserializeAxis("XAxis", q, tr); } else if (Lex.Eq(tr.Name, "YAxis")) { view.YAxisMx = AxisMx.DeserializeAxis("YAxis", q, tr); } else if (Lex.Eq(tr.Name, "ZAxis")) { view.ZAxisMx = AxisMx.DeserializeAxis("ZAxis", q, tr); } else if (Lex.Eq(tr.Name, "Axis")) { ax = AxisMx.DeserializeAxis("Axis", q, tr); view.AxesMx.Add(ax); } else if (Lex.Eq(tr.Name, "MarkerColor")) { view.MarkerColor = ColorDimension.Deserialize("MarkerColor", q, tr); } else if (Lex.Eq(tr.Name, "MarkerSize")) { view.MarkerSize = SizeDimension.Deserialize("MarkerSize", q, tr); } else if (Lex.Eq(tr.Name, "MarkerShape")) { view.MarkerShape = ShapeDimension.Deserialize("MarkerShape", q, tr); } else if (Lex.Eq(tr.Name, "MarkerLabel")) { view.MarkerLabel = LabelDimensionDef.Deserialize("MarkerLabel", q, tr); } else if (Lex.Eq(tr.Name, "Labels")) // obsolete label tag { view.MarkerLabel = LabelDimensionDef.Deserialize("Labels", q, tr); } else if (Lex.Eq(tr.Name, "TooltipFields")) { view.MarkerTooltip = TooltipDimensionDef.Deserialize("TooltipFields", q, tr); } else if (Lex.Eq(tr.Name, "Surface")) { txt = tr.GetAttribute("FillMode"); if (txt != null) { view.SurfaceFillMode = (SurfaceFillMode)EnumUtil.Parse(typeof(SurfaceFillMode), txt); } XmlUtil.GetBoolAttribute(tr, "SmoothPalette", ref view.SmoothPalette); XmlUtil.GetBoolAttribute(tr, "SmoothShading", ref view.SmoothShading); XmlUtil.GetBoolAttribute(tr, "SemiTransparent", ref view.SemiTransparent); XmlUtil.GetBoolAttribute(tr, "DrawFlat", ref view.DrawFlat); txt = tr.GetAttribute("FrameMode"); if (txt != null) { view.SurfaceFrameMode = (SurfaceFrameMode)EnumUtil.Parse(typeof(SurfaceFrameMode), txt); } if (tr.IsEmptyElement) { continue; // may be just attributes } tr.Read(); tr.MoveToContent(); if (!Lex.Eq(tr.Name, "Surface")) { throw new Exception("Expected Surface end element"); } } else if (Lex.Eq(tr.Name, "Trellis")) { if (tr.IsEmptyElement) { continue; // may be just attributes } XmlUtil.GetBoolAttribute(tr, "ByRowCol", ref view.TrellisByRowCol); XmlUtil.GetBoolAttribute(tr, "Manual", ref view.TrellisManual); XmlUtil.GetIntAttribute(tr, "MaxRows", ref view.TrellisMaxRows); XmlUtil.GetIntAttribute(tr, "MaxCols", ref view.TrellisMaxCols); while (true) { tr.Read(); tr.MoveToContent(); if (Lex.Eq(tr.Name, "ColumnQc")) { view.TrellisColQc = DeserializeQueryColumnRef(q, tr); } else if (Lex.Eq(tr.Name, "RowQc")) { view.TrellisRowQc = DeserializeQueryColumnRef(q, tr); } else if (Lex.Eq(tr.Name, "PageQc")) { view.TrellisPageQc = DeserializeQueryColumnRef(q, tr); } else if (Lex.Eq(tr.Name, "FlowQc")) { view.TrellisFlowQc = DeserializeQueryColumnRef(q, tr); } else if (tr.NodeType == XmlNodeType.EndElement && // end of trellis definition Lex.Eq(tr.Name, "Trellis")) { break; } else { throw new Exception("Unexpected element: " + tr.Name); } } } else if (tr.NodeType == XmlNodeType.EndElement && // end of chart props Lex.Eq(tr.Name, "ChartProperties")) { break; } else { throw new Exception("Unexpected element: " + tr.Name); } } return(true); }