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

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // 3dPageDisk.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. // C3dObjectTorus
  28. IMPLEMENT_DYNCREATE(C3dPageDisk, CPropertyPage)
  29. /////////////////////////////////////////////////////////////////////////////
  30. // C3dPageDisk dialog construction
  31. C3dPageDisk::C3dPageDisk()
  32. : CPropertyPage(C3dPageDisk::IDD)
  33. {
  34. m_bInitVertices = FALSE;
  35. //{{AFX_DATA_INIT(C3dPageDisk)
  36. m_fInnerRadius = 0.0f;
  37. m_fOuterRadius = 0.0f;
  38. m_iSegments = 0;
  39. m_szName = _T("");
  40. m_fSweepAngle = 0.0f;
  41. //}}AFX_DATA_INIT
  42. }
  43. /////////////////////////////////////////////////////////////////////////////
  44. // C3dPageDisk Destructor
  45. C3dPageDisk::~C3dPageDisk()
  46. {
  47. }
  48. void C3dPageDisk::DoDataExchange(CDataExchange* pDX)
  49. {
  50. CPropertyPage::DoDataExchange(pDX);
  51. //{{AFX_DATA_MAP(C3dPageDisk)
  52. DDX_Text(pDX, IDC_INNER_RADIUS, m_fInnerRadius);
  53. DDX_Text(pDX, IDC_OUTER_RADIUS, m_fOuterRadius);
  54. DDX_Text(pDX, IDC_SEGMENTS, m_iSegments);
  55. DDX_Text(pDX, IDC_NAME, m_szName);
  56. DDV_MaxChars(pDX, m_szName, 40);
  57. DDX_Text(pDX, IDC_SWEEP_ANGLE, m_fSweepAngle);
  58. DDV_MinMaxFloat(pDX, m_fSweepAngle, 1.f, 360.f);
  59. //}}AFX_DATA_MAP
  60. }
  61. BEGIN_MESSAGE_MAP(C3dPageDisk, CPropertyPage)
  62. //{{AFX_MSG_MAP(C3dPageDisk)
  63. ON_EN_CHANGE(IDC_INNER_RADIUS, OnChangeInnerRadius)
  64. ON_EN_CHANGE(IDC_OUTER_RADIUS, OnChangeOuterRadius)
  65. ON_EN_CHANGE(IDC_SEGMENTS, OnChangeSegments)
  66. ON_EN_CHANGE(IDC_SWEEP_ANGLE, OnChangeSweepAngle)
  67. //}}AFX_MSG_MAP
  68. END_MESSAGE_MAP()
  69. /////////////////////////////////////////////////////////////////////////////
  70. // C3dPageDisk message handlers
  71. BOOL C3dPageDisk::OnInitDialog() 
  72. {
  73. // Set our local values to the Objects' values
  74. m_szName = m_pObject->m_szName;
  75. m_fInnerRadius = m_pObject->m_fInnerRadius;
  76. m_fOuterRadius = m_pObject->m_fOuterRadius;
  77. m_iSegments    = m_pObject->m_iSegments;
  78. m_fSweepAngle  = m_pObject->m_fSweepAngle;
  79. CPropertyPage::OnInitDialog();  // let the base class do the default work
  80. return TRUE;  // return TRUE unless you set the focus to a control
  81.               // EXCEPTION: OCX Property Pages should return FALSE
  82. }
  83. void C3dPageDisk::OnOK() 
  84. {
  85. // Dialog box is being initialized (FALSE)
  86. // or data is being retrieved (TRUE).
  87. UpdateData(TRUE);
  88. // Set our Objects' values to the local values
  89. m_pObject->m_szName = m_szName; 
  90. m_pObject->m_fInnerRadius = m_fInnerRadius;
  91. m_pObject->m_fOuterRadius = m_fOuterRadius;
  92. m_pObject->m_iSegments    = m_iSegments;
  93. m_pObject->m_fSweepAngle  = m_fSweepAngle;
  94. // Force the object to rebuild its' display list
  95. m_pObject->m_bBuildLists = TRUE;
  96. // Rebuild our objects vertices?
  97. if(m_bInitVertices)
  98. m_pObject->InitVertices();
  99. CPropertyPage::OnOK();
  100. }
  101. void C3dPageDisk::OnChangeInnerRadius() 
  102. {
  103. // User has modified the disks inner radius, so set our vertice
  104. // initialization flag
  105. m_bInitVertices = TRUE;
  106. }
  107. void C3dPageDisk::OnChangeOuterRadius() 
  108. {
  109. // User has modified the disks outer radius, so set our vertice
  110. // initialization flag
  111. m_bInitVertices = TRUE;
  112. }
  113. void C3dPageDisk::OnChangeSegments() 
  114. {
  115. // User has modified the number of disk segments, so set our vertice
  116. // initialization flag
  117. m_bInitVertices = TRUE;
  118. }
  119. void C3dPageDisk::OnChangeSweepAngle() 
  120. {
  121. // User has modified the number of disk segments, so set our vertice
  122. // initialization flag
  123. m_bInitVertices = TRUE;
  124. }