private void glControl1_MouseUp(object sender, MouseEventArgs e)
        {
            prevUpLoc = mouseUpLoc;
            Point actualGL_pos = new Point(e.Location.X - (int)xWCS, e.Location.Y - (int)yWCS);
            mouseUpLoc = actualGL_pos;
            if (userLine)
            {
                line temp = new line(mouseDownLoc, mouseUpLoc);
                temp.propColor = Color.GreenYellow;
                ds.Add(temp);
                ds.useDrawProgress = false;
                mouseDownLoc = new Point();
            }
            if (userPoly)
            {
                //userPolyPts.Add(mouseDownLoc);
                userPolyPts.Add(mouseUpLoc);
                polygon temp = new polygon(userPolyPts);
                ds.Add(temp);
                ds.useDrawProgress = false;
                mouseDownLoc = new Point();
                //mouseUpLoc = mouseDownLoc;
            }
            if (userQuad && (mouseDownLoc != new Point()))
            {
                quad temp = new quad(mouseDownLoc, mouseUpLoc);
                ds.Add(temp);
                ds.useDrawProgress = false;

                prevDownLoc = mouseDownLoc;
                mouseDownLoc = new Point();
                mouseUpLoc = new Point();
            }
            if (userLoopLine && (mouseDownLoc != new Point()))
            {
                userPoints.Add(mouseDownLoc);
                userPoints.Add(mouseUpLoc);

                loopline temp = new loopline(userPoints);
                ds.Add(temp);
                ds.useDrawProgress = false;
            }

            refreshListView1();
        }
        private void buttonOkay_Click(object sender, EventArgs e)
        {
            //Gather up the information and set it
            output = new glPrimitives();
            output = input;

            switch (_Type)
            {
                case "TRIANGLE":
                    _aTri = (triangle)input;
                    _aTri.showVerts = checkBox_showVerts.Checked;
                    _aTri.lineColor = button_VertexColor.BackColor;
                    _aTri.vertSize = (float)Convert.ToDecimal(UpDown_VertextSize.Text.ToString());

                    _aTri.showLines = checkBox_showLines.Checked;
                    _aTri.lineColor = button_LineColor.BackColor;
                    _aTri.lineWidth = (float)Convert.ToDecimal(UpDown_LineWidth.Text.ToString());
                    output = _aTri;
                    break;
                case "LINE":
                    _aLine = (line)input;
                    _aLine.showVerts = checkBox_showVerts.Checked;
                    _aLine.propColor = button_ObjectColor.BackColor;
                    _aLine.vertColor = button_VertexColor.BackColor;
                    _aLine.vertSize = (float)Convert.ToDecimal(UpDown_VertextSize.Text.ToString());
                    output = _aLine;
                    break;
                case "POINT":
                    _aPoint = (point)input;
                    output = _aPoint;
                    break;
                case "POLYGON":
                    _aPoly = (polygon)input;
                    output = _aPoly;
                    break;
                case "QUAD":
                    _aQuad = (quad)input;
                    _aQuad.showVerts = checkBox_showVerts.Checked;
                    _aQuad.lineColor = button_VertexColor.BackColor;
                    _aQuad.vertSize = (float)Convert.ToDecimal(UpDown_VertextSize.Text.ToString());

                    _aQuad.showLines = checkBox_showLines.Checked;
                    _aQuad.lineColor = button_LineColor.BackColor;
                    _aQuad.lineWidth = (float)Convert.ToDecimal(UpDown_LineWidth.Text.ToString());

                    _aQuad.propColor = button_ObjectColor.BackColor;
                    output = _aQuad;
                    break;
                case "LOOPLINE":
                    _aLoopLine = (loopline)input;
                    output = _aLoopLine;
                    break;
                default:

                    break;
            }

            this.Close();
        }
        private void glControl1_MouseMove(object sender, MouseEventArgs e)
        {
            actualGL_pos = new Point(e.Location.X - (int)xWCS, e.Location.Y - (int)yWCS);
            label3.Text = "X: " + actualGL_pos.X.ToString() + " Y: " + actualGL_pos.Y.ToString();

            if (ds.useMoveProgress)
                Render();
            else
            {
                if (cb_vertexSnap.Checked)
                    if (!bgw_vertexSnap.IsBusy)
                        bgw_vertexSnap.RunWorkerAsync(actualGL_pos);

                if (userLine && (mouseDownLoc != new Point()))
                {
                    line temp = new line(mouseDownLoc, actualGL_pos);
                    ds.setProgressObj(temp);
                    ds.useDrawProgress = true;

                }
                if (userPoly && userPolyPts.Count > 0 && mouseDownLoc != new Point())
                {
                    userPolyPts.Add(actualGL_pos); // mouse current location
                    polygon temp = new polygon(userPolyPts);
                    ds.setProgressObj(temp);
                    ds.useDrawProgress = true;
                }
                if (userPoint)
                {
                    point temp = new point(actualGL_pos);
                    temp.size = 5;
                    temp.propColor = Color.Azure;
                    ds.setProgressObj(temp);
                    ds.useDrawProgress = true;
                }
                if (userQuad && (mouseDownLoc != new Point()))
                {
                    quad temp = new quad(mouseDownLoc, actualGL_pos); // use the two point method
                    ds.setProgressObj(temp);
                    ds.useDrawProgress = true;
                    prevDownLoc = mouseDownLoc;
                }
                if (userLoopLine && (mouseDownLoc != new Point()) && (userPoints.Count() > 0))
                {
                    userPoints.Add(actualGL_pos);
                    loopline temp = new loopline(userPoints);
                    userPoints.RemoveAt(userPoints.Count() - 1);
                    ds.setProgressObj(temp);
                    ds.useDrawProgress = true;
                }
            }
        }
        private void glPrimitiveDialog_Load(object sender, EventArgs e)
        {
            this.Text = _Type + " properties";
            _isOpen = true;

            switch (_Type)
            {
                case "TRIANGLE":
                    _aTri = (triangle)input;
                    enableControls(true, true, true);

                    checkBox_showVerts.Checked = _aTri.showVerts;
                    button_VertexColor.BackColor = _aTri.lineColor;
                    UpDown_VertextSize.Text = _aTri.vertSize.ToString();

                    checkBox_showLines.Checked = _aTri.showLines;
                    button_LineColor.BackColor = _aTri.lineColor;
                    UpDown_LineWidth.Text = _aTri.lineWidth.ToString();

                    break;
                case "LINE":
                    _aLine = (line)input;
                    enableControls(true, true, false);
                    checkBox_showVerts.Checked = _aLine.showVerts;
                    UpDown_VertextSize.Text = _aLine.vertSize.ToString();
                    break;
                case "POINT":
                    _aPoint = (point)input;
                    enableControls(true, false, false);
                    break;
                case "POLYGON":
                    _aPoly = (polygon)input;
                    enableControls(true, true, true);
                    break;
                case "QUAD":
                    _aQuad = (quad)input;
                    enableControls(true, true, true);
                    checkBox_showVerts.Checked = _aQuad.showVerts;
                    button_VertexColor.BackColor = _aQuad.lineColor;
                    UpDown_VertextSize.Text = _aQuad.vertSize.ToString();

                    checkBox_showLines.Checked = _aQuad.showLines;
                    button_LineColor.BackColor = _aQuad.lineColor;
                    UpDown_LineWidth.Text = _aQuad.lineWidth.ToString();

                    button_ObjectColor.BackColor = _aQuad.propColor;
                    break;
                case "LOOPLINE":
                    _aLoopLine = (loopline)input;
                    enableControls(true, true, true);
                    break;
                default:

                    break;
            }
        }