/// /// This file is part of ILNumerics Community Edition. /// /// ILNumerics Community Edition - high performance computing for applications. /// Copyright (C) 2006 - 2012 Haymo Kutschbach, http://ilnumerics.net /// /// ILNumerics Community Edition is free software: you can redistribute it and/or modify /// it under the terms of the GNU General Public License version 3 as published by /// the Free Software Foundation. /// /// ILNumerics Community Edition is distributed in the hope that it will be useful, /// but WITHOUT ANY WARRANTY; without even the implied warranty of /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU General Public License for more details. /// /// You should have received a copy of the GNU General Public License /// along with ILNumerics Community Edition. See the file License.txt in the root /// of your distribution package. If not, see . /// /// In addition this software uses the following components and/or licenses: /// /// ================================================================================= /// The Open Toolkit Library License /// /// Copyright (c) 2006 - 2009 the Open Toolkit library. /// /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights to /// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of /// the Software, and to permit persons to whom the Software is furnished to do /// so, subject to the following conditions: /// /// The above copyright notice and this permission notice shall be included in all /// copies or substantial portions of the Software. /// /// ================================================================================= /// using System; using System.Drawing; namespace ILNumerics.Drawing.Shapes { public class ILLines : ILCompositeShape { #region attributes ILLineProperties m_properties; void m_properties_Changed(object sender, EventArgs e) { m_fillColor = m_properties.Color; OnChanged(); } #endregion #region properties /// /// all properties for the lines (in shading mode 'flat') /// public ILLineProperties Properties { get { return m_properties; } } /// /// determines, if the line is to be drawn antialiased (on width > 1 only) /// public bool Antialiasing { get { return m_properties.Antialiasing; } set { m_properties.Antialiasing = value; } } /// /// stipple pattern for the line, if Style is set to custom pattern /// public short Pattern { get { return m_properties.Pattern; } set { m_properties.Pattern = value; } } /// /// scaling for the stipple pattern /// public float PatternScale { get { return m_properties.PatternScale; } set { m_properties.PatternScale = value; } } /// /// line style, default: solid /// public LineStyle Style { get { return m_properties.Style; } set { m_properties.Style = value; } } /// /// line width (pixels) /// public int Width { get { return m_properties.Width; } set { m_properties.Width = value; } } /// /// color for the lines (in shading mode 'flat') /// public override Color FillColor { get { return m_properties.Color; } set { m_properties.Color = value; } } #endregion #region constructors /// /// Create new lines composite shapes, prepare memory for vertices only /// /// panel hosting the scene /// number of overall vertices in the shape public ILLines (ILPanel panel, int numVertices) : base(panel, numVertices, 2) { m_fillColor = Color.Blue; m_properties = new ILLineProperties(); m_properties.Color = Color.Blue; m_properties.Changed += new EventHandler(m_properties_Changed); } ///// ///// create new lines composite shape ///// ///// panel hosting the scene ///// x coordinates vector ///// y coordinates vector ///// z coordinates vector //public ILLines(ILPanel panel, ILBaseArray X, ILBaseArray Y, ILBaseArray Z) // : base (panel,2,X,Y,Z) { // m_fillColor = Color.Blue; // m_properties = new ILLineProperties(); // m_properties.Color = Color.Blue; // m_properties.Changed += new EventHandler(m_properties_Changed); //} ///// ///// create new lines composite shape ///// ///// panel hosting the scene ///// X coords vector ///// Y coords vector ///// Z coords vector ///// Mapping of shapes, composes shapes out of vertices. Matrix having ///// 2 rows. Every element in a column specifies the index of a vertex according to its position in X,Y,Z. ///// The 2 elements in a column therefore compose a single line. Vertices may get used arbitrary times ///// (or not at all). All elements must be positive integer values in range ///// 0...[-1]. //public ILLines(ILPanel panel, ILBaseArray X, ILBaseArray Y, ILBaseArray Z, ILBaseArray mapping) // : base(panel, 2, X, Y, Z, mapping) { // m_fillColor = Color.Blue; // m_properties = new ILLineProperties(); // m_properties.Color = Color.Blue; // m_properties.Changed += new EventHandler(m_properties_Changed); // ILColorEnumerator colors = new ILColorEnumerator(); // for (int i = 0; i < m_vertCount; i++) { // m_vertices[i].Color = colors.NextColor(); // } //} ///// ///// create lines composite shape ///// ///// hosting panel ///// x coordinates vector ///// y coordinates vector ///// z coordinates vector ///// matrix with ///// rows, 3 columns for (R,G,B) or 4 columns for ///// (A,R,G,B) for every vertex specified by X,Y,Z. Elements must range from 0..255. If colors ///// has 3 columns only, alpha values of 255 are used as default. ///// Mapping of shapes, composes shapes out of vertices. Matrix having ///// 2 rows. Every element in a column specifies the index of a vertex according to its position in X,Y,Z. ///// The 2 elements in a column therefore compose a single line. Vertices may get used arbitrary times ///// (or not at all). All elements must be positive integer values in range ///// 0...[-1]. //public ILLines(ILPanel panel, ILInArray X, ILInArray Y, ILInArray Z, ILInArray mapping, ILInArray colors) // : base(panel, 2, X, Y, Z,colors, mapping) { // m_fillColor = Color.Blue; // m_properties = new ILLineProperties(); // m_properties.Color = Color.Blue; // m_properties.Changed += new EventHandler(m_properties_Changed); //} #endregion } }