summaryrefslogtreecommitdiffhomepage
path: root/Magic2/SurfacePropertiesDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Magic2/SurfacePropertiesDialog.cpp')
-rw-r--r--Magic2/SurfacePropertiesDialog.cpp119
1 files changed, 119 insertions, 0 deletions
diff --git a/Magic2/SurfacePropertiesDialog.cpp b/Magic2/SurfacePropertiesDialog.cpp
new file mode 100644
index 0000000..a4a845c
--- /dev/null
+++ b/Magic2/SurfacePropertiesDialog.cpp
@@ -0,0 +1,119 @@
+/* Starshatter OpenSource Distribution
+ Copyright (c) 1997-2004, Destroyer Studios LLC.
+ All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name "Destroyer Studios" nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "stdafx.h"
+#include "Magic.h"
+#include "MagicDoc.h"
+#include "MagicView.h"
+#include "Solid.h"
+#include "SurfacePropertiesDialog.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// SurfacePropertiesDialog dialog
+
+
+SurfacePropertiesDialog::SurfacePropertiesDialog(MagicView* pParent /*=NULL*/)
+ : CDialog(SurfacePropertiesDialog::IDD, pParent), doc(0)
+{
+ //{{AFX_DATA_INIT(SurfacePropertiesDialog)
+ mSurfaceName = _T("");
+ mNumPolys = _T("");
+ mNumVerts = _T("");
+ mSurfaceHeight = _T("");
+ mSurfaceLength = _T("");
+ mSurfaceRadius = _T("");
+ mSurfaceWidth = _T("");
+ //}}AFX_DATA_INIT
+
+ if (pParent) {
+ doc = pParent->GetDocument();
+
+ if (doc && doc->GetSolid()) {
+ Model* model = doc->GetSolid()->GetModel();
+ Surface* surface = model->GetSurfaces().first();
+ Point plus;
+ Point minus;
+
+ surface->GetVertexSet()->CalcExtents(plus, minus);
+
+ char buffer[256];
+ strcpy_s(buffer, surface->Name());
+ mSurfaceName = buffer;
+
+ sprintf_s(buffer, "%d", surface->NumPolys());
+ mNumPolys = buffer;
+
+ sprintf_s(buffer, "%d", surface->NumVerts());
+ mNumVerts = buffer;
+
+ sprintf_s(buffer, "%.1f", surface->Radius());
+ mSurfaceRadius = buffer;
+
+ sprintf_s(buffer, "%.1f (%.1f - %.1f)", plus.z-minus.z, minus.z, plus.z);
+ mSurfaceLength = buffer;
+
+ sprintf_s(buffer, "%.1f (%.1f - %.1f)", plus.x-minus.x, minus.x, plus.x);
+ mSurfaceWidth = buffer;
+
+ sprintf_s(buffer, "%.1f (%.1f - %.1f)", plus.y-minus.y, minus.y, plus.y);
+ mSurfaceHeight = buffer;
+ }
+ }
+}
+
+
+void SurfacePropertiesDialog::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(SurfacePropertiesDialog)
+ DDX_CBString(pDX, IDC_SURFACE_NAME, mSurfaceName);
+ DDX_Text(pDX, IDC_SURFACE_NPOLYS, mNumPolys);
+ DDX_Text(pDX, IDC_SURFACE_NVERTS, mNumVerts);
+ DDX_Text(pDX, IDC_SURFACE_HEIGHT, mSurfaceHeight);
+ DDX_Text(pDX, IDC_SURFACE_LENGTH, mSurfaceLength);
+ DDX_Text(pDX, IDC_SURFACE_RADIUS, mSurfaceRadius);
+ DDX_Text(pDX, IDC_SURFACE_WIDTH, mSurfaceWidth);
+ //}}AFX_DATA_MAP
+}
+
+
+BEGIN_MESSAGE_MAP(SurfacePropertiesDialog, CDialog)
+ //{{AFX_MSG_MAP(SurfacePropertiesDialog)
+ // NOTE: the ClassWizard will add message map macros here
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// SurfacePropertiesDialog message handlers