contour.cpp
上传用户:ynjin1970
上传日期:2014-10-13
资源大小:6438k
文件大小:3k
源码类别:

中间件编程

开发平台:

Visual C++

  1. // contour.cpp : Implementation of Ccontour
  2. #include "stdafx.h"
  3. #include "Com_ex.h"
  4. #include "contour.h"
  5. /////////////////////////////////////////////////////////////////////////////
  6. // Ccontour
  7. STDMETHODIMP Ccontour::get_startZ(double *pVal)
  8. {
  9. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  10. // TODO: Add your implementation code here
  11. *pVal = startZ;
  12. return S_OK;
  13. }
  14. STDMETHODIMP Ccontour::put_startZ(double newVal)
  15. {
  16. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  17. // TODO: Add your implementation code here
  18. startZ = newVal;
  19. return S_OK;
  20. }
  21. STDMETHODIMP Ccontour::get_incZ(double *pVal)
  22. {
  23. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  24. // TODO: Add your implementation code here
  25. *pVal = incZ;
  26. return S_OK;
  27. }
  28. STDMETHODIMP Ccontour::put_incZ(double newVal)
  29. {
  30. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  31. // TODO: Add your implementation code here
  32. incZ = newVal;
  33. return S_OK;
  34. }
  35. STDMETHODIMP Ccontour::get_endZ(double *pVal)
  36. {
  37. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  38. // TODO: Add your implementation code here
  39. *pVal = endZ;
  40. return S_OK;
  41. }
  42. STDMETHODIMP Ccontour::put_endZ(double newVal)
  43. {
  44. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  45. // TODO: Add your implementation code here
  46. endZ = newVal;
  47. return S_OK;
  48. }
  49. STDMETHODIMP Ccontour::GetContourCount(long *nCount)
  50. {
  51. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  52. // TODO: Add your implementation code here
  53. *nCount = m_allcon.GetContourCount();
  54. return S_OK;
  55. }
  56. STDMETHODIMP Ccontour::GetContourValueOf(long nContourIndex, double *Z)
  57. {
  58. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  59. // TODO: Add your implementation code here
  60. *Z = m_allcon.GetContour()[nContourIndex].GetZValue();
  61. return S_OK;
  62. }
  63. STDMETHODIMP Ccontour::GetPointsCountOf(long nContourIndex, long nSegIndex, long *nPointsCount)
  64. {
  65. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  66. // TODO: Add your implementation code here
  67. *nPointsCount = m_allcon.GetContour()[nContourIndex].GetPointsCount()[nSegIndex];
  68. return S_OK;
  69. }
  70. STDMETHODIMP Ccontour::GetPointsOf(long nContourIndex, long nSegIndex, double *pPointsX, double *pPointsY)
  71. {
  72. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  73. // TODO: Add your implementation code here
  74. XYZ *pt;
  75. int count = m_allcon.GetContour()[nContourIndex].GetPointsCount()[nSegIndex];
  76. if (pPointsX && pPointsY)
  77. {
  78. pt = m_allcon.GetContour()[nContourIndex].GetPoints()[nSegIndex];
  79. for ( int i = 0; i< count; i++)
  80. {
  81. pPointsX[i] = pt[i].x;
  82. pPointsY[i] = pt[i].y;
  83. }
  84. }
  85. return S_OK;
  86. }
  87. STDMETHODIMP Ccontour::GetSegCountOf(long nContourIndex, long *nSegCount)
  88. {
  89. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  90. // TODO: Add your implementation code here
  91. *nSegCount = m_allcon.GetContour()[nContourIndex].GetSegCount();
  92. return S_OK;
  93. }
  94. STDMETHODIMP Ccontour::InitialContour(LPCSTR filename)
  95. {
  96. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  97. // TODO: Add your implementation code here
  98. char fn[1024];
  99. strcpy(fn, filename);
  100. if (! m_t.Initial(fn))
  101. return Error(_T("Error while read file."));
  102. m_t.CreateTriangle();
  103. if (startZ ==0 && endZ == 0 && incZ == 0)
  104. m_allcon.Initial(&m_t);
  105. else
  106. m_allcon.Initial(&m_t, startZ, endZ, incZ);
  107. m_allcon.CreateAllContour();
  108. return S_OK;
  109. }