X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fgraph3dview.cpp;h=7d08275fb45e47a1775c98e7181bfce6cfc5ebfd;hb=ab78de6e33fff94c37847621458db3ad430a8bb3;hp=1e9f0bb2eb9ba9226031f11c40fab331923fbfb8;hpb=f68afdf6eee93eb1080b6f85a2bb66610cfff5be;p=ctsim.git diff --git a/src/graph3dview.cpp b/src/graph3dview.cpp index 1e9f0bb..7d08275 100644 --- a/src/graph3dview.cpp +++ b/src/graph3dview.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: graph3dview.cpp,v 1.27 2002/06/03 03:58:07 kevin Exp $ +** $Id: graph3dview.cpp,v 1.29 2002/06/27 03:19:23 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -65,7 +65,7 @@ #include #endif -void +inline void Graph3dFileView::intensityToColor (double dIntensity, GLfloat* vecColor) { if (dIntensity < 0 || dIntensity > 1) { @@ -147,11 +147,12 @@ EVT_MENU(GRAPH3D_VIEW_SCALE_FULL, Graph3dFileView::OnScaleFull) END_EVENT_TABLE() Graph3dFileView::Graph3dFileView () - : m_pFileMenu(NULL), m_pViewMenu(NULL), m_pCanvas(NULL), m_pFrame(NULL), + : m_pFileMenu(NULL), m_pViewMenu(NULL), m_pStatusBar(NULL), m_pCanvas(NULL), + m_dXRotate(-180), m_dYRotate(-210), m_dZRotate(195), m_bDoubleBuffer(true), m_bSmooth(true), m_bWireframe(false), - m_bLighting(true), m_bColor(true), m_dXRotate(-180), - m_dYRotate(-210), m_dZRotate(195), m_bColorScaleMinSet(false), - m_bColorScaleMaxSet(false) + m_bLighting(true), m_bColor(true), m_bUseVertexArrays(false), + m_bColorScaleMinSet(false), m_bColorScaleMaxSet(false), + m_pFrame(NULL) {} @@ -167,8 +168,8 @@ Graph3dFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) ) m_pFrame = CreateChildFrame(doc, this); m_pCanvas = CreateCanvas (m_pFrame); - SetFrame (m_pFrame); m_pFrame->SetClientSize (m_pCanvas->GetBestSize()); + SetFrame (m_pFrame); m_pCanvas->SetClientSize (m_pCanvas->GetBestSize()); m_pFrame->SetTitle("Graph3dFileView"); @@ -192,10 +193,9 @@ Graph3dFileView::CreateCanvas (wxFrame* parent) { Graph3dFileCanvas* pCanvas; - pCanvas = new Graph3dFileCanvas (this, parent, wxPoint(-1,-1), wxSize(-1,-1), - 0); + pCanvas = new Graph3dFileCanvas (this, parent, wxPoint(-1,-1), wxSize(-1,-1), 0); - pCanvas->SetBackgroundColour(*wxBLACK); + pCanvas->SetBackgroundColour(*wxWHITE); pCanvas->Clear(); return pCanvas; @@ -286,7 +286,7 @@ Graph3dFileView::CreateDisplayList() p3[0] = dXPos; p3[1] = actScale * (v[ix][1] + actOffset); p3[2] = dYPos + 1; CalculateVectorNormal (p1, p2, p3, &n1[0], &n1[1], &n1[2]); - double dIntensity1, dIntensity2; + double dIntensity1 = 0., dIntensity2 = 0.; if (m_bColor) { dIntensity1 = (v[ix][0] - dMin) / dIntensityScale; dIntensity2 = (v[ix+1][0] - dMin) / dIntensityScale; @@ -296,12 +296,13 @@ Graph3dFileView::CreateDisplayList() intensityToColor (dIntensity1, vecColor); glColor3fv (vecColor); } - glVertex3dv (p1); - glNormal3dv (n1); + glVertex3dv (p1); glNormal3dv (n1); + if (m_bColor) { intensityToColor (dIntensity2, vecColor); glColor3fv (vecColor); - glVertex3dv (p2); - glNormal3dv (n1); + } + glVertex3dv (p2); glNormal3dv (n1); + double lastP[3]; lastP[0] = ix; lastP[1] = actScale * (v[ix][0] + actOffset); lastP[2] = 0; for (unsigned int iy = 1; iy < ny - 1; iy++, dYPos++) { @@ -309,14 +310,18 @@ Graph3dFileView::CreateDisplayList() p2[0] = dXPos+1; p2[1] = actScale * (v[ix+1][iy] + actOffset); p2[2] = dYPos; CalculateVectorNormal (p1, p2, lastP, &n1[0], &n1[1], &n1[2]); lastP[0] = p1[0]; lastP[1] = p1[1]; lastP[2] = p1[2]; - dIntensity1 = (v[ix][iy] - dMin) / dIntensityScale; - dIntensity2 = (v[ix+1][iy] - dMin) / dIntensityScale; - intensityToColor (dIntensity1, vecColor); - glColor3fv (vecColor); - glVertex3dv (p1); glNormal3dv (n1); - intensityToColor (dIntensity2, vecColor); - glColor3fv (vecColor); - glVertex3dv (p2); glNormal3dv (n1); + if (m_bColor) { + dIntensity1 = (v[ix][iy] - dMin) / dIntensityScale; + dIntensity2 = (v[ix+1][iy] - dMin) / dIntensityScale; + intensityToColor (dIntensity1, vecColor); + glColor3fv (vecColor); + } + glVertex3dv (p1); glNormal3dv (n1); + if (m_bColor) { + intensityToColor (dIntensity2, vecColor); + glColor3fv (vecColor); + } + glVertex3dv (p2); glNormal3dv (n1); } glEnd(); // QUAD_STRIP } @@ -359,7 +364,8 @@ Graph3dFileView::OnProperties (wxCommandEvent& event) { std::ostringstream os; *theApp->getLog() << ">>>>\n" << os.str().c_str() << "<<<<\n"; - wxMessageDialog dialogMsg (getFrameForChild(), os.str().c_str(), "Imagefile Properties", wxOK | wxICON_INFORMATION); + wxMessageDialog dialogMsg (getFrameForChild(), os.str().c_str(), + "Imagefile Properties", wxOK | wxICON_INFORMATION); dialogMsg.ShowModal(); } @@ -368,7 +374,6 @@ Graph3dFileView::OnLighting (wxCommandEvent& event) { m_bLighting = ! m_bLighting; m_pViewMenu->Check (GRAPH3D_VIEW_LIGHTING, m_bLighting); - m_pCanvas->Refresh(); } @@ -403,13 +408,15 @@ Graph3dFileView::OnDraw (wxDC* dc) { if (m_pCanvas) { m_pCanvas->SetCurrent(); - Draw(); + m_pCanvas->SwapBuffers(); + } + + if (m_pStatusBar) { std::ostringstream os; - os << "Xangle=" << m_dXRotate << ", Yangle=" << m_dYRotate << ", Zangle=" - << m_dZRotate; + os << "Xangle=" << m_dXRotate << ", Yangle=" << m_dYRotate + << ", Zangle=" << m_dZRotate; m_pStatusBar->SetStatusText (os.str().c_str()); - m_pCanvas->SwapBuffers(); } } @@ -680,7 +687,7 @@ Graph3dFileView::OnScaleSet (wxCommandEvent& event) unsigned int nx = GetDocument()->nx(); unsigned int ny = GetDocument()->ny(); const ImageFileArrayConst v = GetDocument()->getArray(); - double dMin, dMax; + double dMin = 0., dMax = 0.; if (! m_bColorScaleMinSet && ! m_bColorScaleMaxSet) { dMax = dMin = v[0][0]; for (unsigned ix = 0; ix < nx; ix++) @@ -730,9 +737,13 @@ Graph3dFileView::CreateChildFrame (wxDocument *doc, wxView *view) #endif theApp->setIconForFrame (subframe); +// status bar text not showing tested with enlightenment. disabling for now... +#if 0 m_pStatusBar = new wxStatusBar (subframe, -1); subframe->SetStatusBar (m_pStatusBar); - + m_pStatusBar->Show(true); +#endif + m_pFileMenu = new wxMenu; m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...\tCtrl-P");