MyCoordPageScale.cpp
上传用户:cding2008
上传日期:2007-01-03
资源大小:1812k
文件大小:4k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // MyCoordPageScale.cpp : implementation file
  3. //
  4. // ModelMagic 3D and 'glOOP' (OpenGL Object Oriented Programming library)
  5. // Copyright (c) Craig Fahrnbach 1997, 1999
  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. /////////////////////////////////////////////////////////////////////////////
  17. #include "stdafx.h"
  18. #include "ModelMagic3D.h"
  19. #ifdef _DEBUG
  20. #define new DEBUG_NEW
  21. #undef THIS_FILE
  22. static char THIS_FILE[] = __FILE__;
  23. #endif
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CMyCoordPageScale property page
  26. IMPLEMENT_DYNCREATE(CMyCoordPageScale, CPropertyPage)
  27. CMyCoordPageScale::CMyCoordPageScale() : CPropertyPage(CMyCoordPageScale::IDD)
  28. {
  29. //{{AFX_DATA_INIT(CMyCoordPageScale)
  30. m_fScaleX = 0.0f;
  31. m_fScaleY = 0.0f;
  32. m_fScaleZ = 0.0f;
  33. //}}AFX_DATA_INIT
  34. }
  35. CMyCoordPageScale::~CMyCoordPageScale()
  36. {
  37. }
  38. void CMyCoordPageScale::DoDataExchange(CDataExchange* pDX)
  39. {
  40. CPropertyPage::DoDataExchange(pDX);
  41. //{{AFX_DATA_MAP(CMyCoordPageScale)
  42. DDX_Text(pDX, IDC_X, m_fScaleX);
  43. DDX_Text(pDX, IDC_Y, m_fScaleY);
  44. DDX_Text(pDX, IDC_Z, m_fScaleZ);
  45. //}}AFX_DATA_MAP
  46. }
  47. BEGIN_MESSAGE_MAP(CMyCoordPageScale, CPropertyPage)
  48. //{{AFX_MSG_MAP(CMyCoordPageScale)
  49. ON_EN_CHANGE(IDC_X, OnChangeX)
  50. ON_EN_CHANGE(IDC_Y, OnChangeY)
  51. ON_EN_CHANGE(IDC_Z, OnChangeZ)
  52. //}}AFX_MSG_MAP
  53. END_MESSAGE_MAP()
  54. /////////////////////////////////////////////////////////////////////////////
  55. // CMyCoordPageScale implementation
  56. void CMyCoordPageScale::UpdateDialogData()
  57. {
  58. // Get a pointer to our Main Frame
  59. CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
  60. ASSERT_VALID(pFrame);
  61. // Get a pointer to our view's document
  62. CMyglDoc* pDoc = (CMyglDoc*)pFrame->m_pActiveView->GetDocument();
  63. ASSERT_VALID(pDoc);
  64. // Get a pointer to our document's 3dWorld
  65. C3dWorld* pWorld = pDoc->m_pWorld;
  66. ASSERT_VALID(pWorld);
  67. // Get the appropriate object data
  68. // (The Camera and Points do NOT have a Scale data member)
  69. if(pDoc->m_bSelectCamera || pDoc->m_bSelectObjPoints)
  70. ResetDialogData();
  71. if(pDoc->m_bSelectParentObj || pDoc->m_bSelectChildObj)
  72. {
  73. if(pWorld->m_pSelectedObj)
  74. pWorld->m_pSelectedObj->GetScale(&m_fScaleX, &m_fScaleY, &m_fScaleZ);
  75. else
  76. ResetDialogData();
  77. }
  78. // Dialog box is being initialized (FALSE)
  79. // or data is being retrieved (TRUE).
  80. UpdateData(FALSE);
  81. }
  82. void CMyCoordPageScale::GetDialogData()
  83. {
  84. // Dialog box is being initialized (FALSE)
  85. // or data is being retrieved (TRUE).
  86. UpdateData(TRUE);
  87. // Get a pointer to our Main Frame
  88. CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
  89. ASSERT_VALID(pFrame);
  90. // Get a pointer to our view's document
  91. CMyglDoc* pDoc = (CMyglDoc*)pFrame->m_pActiveView->GetDocument();
  92. ASSERT_VALID(pDoc);
  93. // Get a pointer to our document's 3dWorld
  94. C3dWorld* pWorld = pDoc->m_pWorld;
  95. ASSERT_VALID(pWorld);
  96. // Now that we have the dialog data, copy to the selected Object.
  97. // (The Camera and Points do NOT have a Scale data member)
  98. if(pDoc->m_bSelectCamera)
  99. {
  100. // Do nothing
  101. }
  102. if(pDoc->m_bSelectParentObj || pDoc->m_bSelectChildObj)
  103. {
  104. if(pWorld->m_pSelectedObj)
  105. pWorld->m_pSelectedObj->SetScale(m_fScaleX, m_fScaleY, m_fScaleZ);
  106. }
  107. if(pDoc->m_bSelectObjPoints)
  108. {
  109. // Do nothing
  110. }
  111. }
  112. void CMyCoordPageScale::ResetDialogData()
  113. {
  114. m_fScaleX = 0.0f;
  115. m_fScaleY = 0.0f;
  116. m_fScaleZ = 0.0f;
  117. }
  118. /////////////////////////////////////////////////////////////////////////////
  119. // CMyCoordPageScale message handlers
  120. BOOL CMyCoordPageScale::OnInitDialog() 
  121. {
  122. CPropertyPage::OnInitDialog();
  123. // Update the dialog data
  124. UpdateDialogData();
  125. return TRUE;  // return TRUE unless you set the focus to a control
  126.               // EXCEPTION: OCX Property Pages should return FALSE
  127. }
  128. void CMyCoordPageScale::OnChangeX() 
  129. {
  130. // Enable the Apply Now button
  131. SetModified(TRUE);
  132. }
  133. void CMyCoordPageScale::OnChangeY() 
  134. {
  135. // Enable the Apply Now button
  136. SetModified(TRUE);
  137. }
  138. void CMyCoordPageScale::OnChangeZ() 
  139. {
  140. // Enable the Apply Now button
  141. SetModified(TRUE);
  142. }