3dPageNURB.cpp
上传用户:shxiangxiu
上传日期:2007-01-03
资源大小:1101k
文件大小:6k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // 3dPageNURB.cpp : implementation file
  3. //
  4. // glOOP (OpenGL Object Oriented Programming library)
  5. // Copyright (c) Craig Fahrnbach 1997, 1998
  6. //
  7. // OpenGL is a registered trademark of Silicon Graphics
  8. //
  9. //
  10. // This program is provided for educational and personal use only and
  11. // is provided without guarantee or warrantee expressed or implied.
  12. //
  13. // Commercial use is strickly prohibited without written permission
  14. // from ImageWare Development.
  15. //
  16. // This program is -not- in the public domain.
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #include "stdafx.h"
  20. #include "glOOP.h"
  21. #include "3dObjectDialog.h"
  22. #ifdef _DEBUG
  23. #undef THIS_FILE
  24. static char BASED_CODE THIS_FILE[] = __FILE__;
  25. #endif
  26. //////////////////////////////////////////////////////////////////
  27. // C3dPageNURB
  28. IMPLEMENT_DYNCREATE(C3dPageNURB, CPropertyPage)
  29. /////////////////////////////////////////////////////////////////////////////
  30. // C3dPageNURB dialog construction
  31. C3dPageNURB::C3dPageNURB()
  32. : CPropertyPage(C3dPageNURB::IDD)
  33. {
  34. m_bInitVertices = FALSE;
  35. //{{AFX_DATA_INIT(C3dPageNURB)
  36. m_fDepth = 0.0f;
  37. m_fWidth = 0.0f;
  38. m_szName = _T("");
  39. m_iNumUCtrlPoints = 0;
  40. m_iNumVCtrlPoints = 0;
  41. m_iUSegments = 0;
  42. m_iVSegments = 0;
  43. //}}AFX_DATA_INIT
  44. }
  45. /////////////////////////////////////////////////////////////////////////////
  46. // C3dPageNURB Destructor
  47. C3dPageNURB::~C3dPageNURB()
  48. {
  49. }
  50. void C3dPageNURB::DoDataExchange(CDataExchange* pDX)
  51. {
  52. CPropertyPage::DoDataExchange(pDX);
  53. //{{AFX_DATA_MAP(C3dPageNURB)
  54. DDX_Text(pDX, IDC_DEPTH, m_fDepth);
  55. DDX_Text(pDX, IDC_WIDTH, m_fWidth);
  56. DDX_Text(pDX, IDC_NAME, m_szName);
  57. DDV_MaxChars(pDX, m_szName, 40);
  58. DDX_Text(pDX, IDC_GRID_POINTS_X, m_iNumUCtrlPoints);
  59. DDV_MinMaxInt(pDX, m_iNumUCtrlPoints, 3, 10000);
  60. DDX_Text(pDX, IDC_GRID_POINTS_Y, m_iNumVCtrlPoints);
  61. DDV_MinMaxInt(pDX, m_iNumVCtrlPoints, 3, 10000);
  62. DDX_Text(pDX, IDC_SEGMENTS_X, m_iUSegments);
  63. DDV_MinMaxInt(pDX, m_iUSegments, 3, 10000);
  64. DDX_Text(pDX, IDC_SEGMENTS_Y, m_iVSegments);
  65. DDV_MinMaxInt(pDX, m_iVSegments, 3, 10000);
  66. //}}AFX_DATA_MAP
  67. }
  68. BEGIN_MESSAGE_MAP(C3dPageNURB, CPropertyPage)
  69. //{{AFX_MSG_MAP(C3dPageNURB)
  70. ON_EN_CHANGE(IDC_DEPTH, OnChangeDepth)
  71. ON_EN_CHANGE(IDC_WIDTH, OnChangeWidth)
  72. ON_EN_CHANGE(IDC_GRID_POINTS_X, OnChangeGridPointsX)
  73. ON_EN_CHANGE(IDC_GRID_POINTS_Y, OnChangeGridPointsY)
  74. ON_EN_CHANGE(IDC_SEGMENTS_X, OnChangeSegmentsX)
  75. ON_EN_CHANGE(IDC_SEGMENTS_Y, OnChangeSegmentsY)
  76. //}}AFX_MSG_MAP
  77. END_MESSAGE_MAP()
  78. /////////////////////////////////////////////////////////////////////////////
  79. // C3dPageNURB message handlers
  80. BOOL C3dPageNURB::OnInitDialog() 
  81. {
  82. // Set our local values to the Objects' values
  83. m_szName = m_pObject->m_szName;
  84. m_fDepth = m_pObject->m_fDepth;
  85. m_fWidth = m_pObject->m_fWidth;
  86. m_iUSegments = m_pObject->m_iUSegments;
  87. m_iVSegments = m_pObject->m_iVSegments;
  88. m_iNumUCtrlPoints = m_pObject->m_iNumUCtrlPoints;
  89. m_iNumVCtrlPoints = m_pObject->m_iNumVCtrlPoints;
  90. CPropertyPage::OnInitDialog();  // let the base class do the default work
  91. return TRUE;  // return TRUE unless you set the focus to a control
  92.               // EXCEPTION: OCX Property Pages should return FALSE
  93. }
  94. BOOL C3dPageNURB::OnApply() 
  95. {
  96. // Dialog box is being initialized (FALSE)
  97. // or data is being retrieved (TRUE).
  98. UpdateData(TRUE);
  99. // Set the Objects member variables
  100. m_pObject->m_szName = m_szName; 
  101. m_pObject->m_fDepth = m_fDepth;
  102. m_pObject->m_fWidth = m_fWidth;
  103. m_pObject->m_iUSegments = m_iUSegments;
  104. m_pObject->m_iVSegments = m_iVSegments;
  105. m_pObject->m_iNumUCtrlPoints = m_iNumUCtrlPoints;
  106. m_pObject->m_iNumVCtrlPoints = m_iNumVCtrlPoints;
  107. // Force the object to rebuild its' display list
  108. m_pObject->m_bBuildLists = TRUE;
  109. // Rebuild our objects vertices?
  110. if(m_bInitVertices)
  111. m_pObject->InitVertices();
  112. return CPropertyPage::OnApply();
  113. }
  114. void C3dPageNURB::OnOK() 
  115. {
  116. // Call the OnApply function to set our objects data
  117. // members
  118. // OnApply();
  119. CPropertyPage::OnOK();
  120. }
  121. void C3dPageNURB::OnChangeDepth() 
  122. {
  123. // User has modified the planes depth, so set our vertice
  124. // initialization flag
  125. m_bInitVertices = TRUE;
  126. // The property page settings have been modified, so 
  127. // Enable (TRUE) or disable (FALSE) the Apply Now button
  128. SetModified(TRUE);
  129. }
  130. void C3dPageNURB::OnChangeWidth() 
  131. {
  132. // User has modified the planes width depth, so set our vertice
  133. // initialization flag
  134. m_bInitVertices = TRUE;
  135. // The property page settings have been modified, so 
  136. // Enable (TRUE) or disable (FALSE) the Apply Now button
  137. SetModified(TRUE);
  138. }
  139. void C3dPageNURB::OnChangeGridPointsX() 
  140. {
  141. // User has modified the planes width depth, so set our vertice
  142. // initialization flag
  143. m_bInitVertices = TRUE;
  144. // The property page settings have been modified, so 
  145. // Enable (TRUE) or disable (FALSE) the Apply Now button
  146. SetModified(TRUE);
  147. }
  148. void C3dPageNURB::OnChangeGridPointsY() 
  149. {
  150. // User has modified the planes width depth, so set our vertice
  151. // initialization flag
  152. m_bInitVertices = TRUE;
  153. // The property page settings have been modified, so 
  154. // Enable (TRUE) or disable (FALSE) the Apply Now button
  155. SetModified(TRUE);
  156. }
  157. void C3dPageNURB::OnChangeSegmentsX() 
  158. {
  159. // The property page settings have been modified, so 
  160. // Enable (TRUE) or disable (FALSE) the Apply Now button
  161. SetModified(TRUE);
  162. }
  163. void C3dPageNURB::OnChangeSegmentsY() 
  164. {
  165. // The property page settings have been modified, so 
  166. // Enable (TRUE) or disable (FALSE) the Apply Now button
  167. SetModified(TRUE);
  168. }