MapRender.cpp
上传用户:bjslfz
上传日期:2022-07-25
资源大小:4430k
文件大小:3k
源码类别:

文件操作

开发平台:

C/C++

  1. #include "stdafx.h"
  2. #include "MapRender.h"
  3. //extern UINT MapRand1(UINT nMax);
  4. CMapRender::CMapRender()
  5. {
  6. m_SimpleRender.FillColor = RGB(MapRand(255),MapRand(255),MapRand(255));
  7. m_SimpleRender.OutlineColor = RGB(0,0,0);
  8. m_SimpleRender.iIndex = 0;
  9. m_RenderType = SIMPLE_RENDER;
  10. m_FieldIndex = -1;
  11. }
  12. UINT CMapRender::MapRand(UINT nMax)
  13. {
  14. int nRand = rand();
  15. float fMap = (float)(nMax)/RAND_MAX;
  16. float fRetVal = (float)nRand*fMap + 0.5F;
  17. return (UINT)fRetVal;
  18. }
  19. CMapRender::~CMapRender()
  20. {
  21. Clear();
  22. }
  23. void CMapRender::Add(RENDERINFO& rInfo )
  24. {
  25. int i;
  26. RENDERINFO* pInfo;
  27. for ( i = m_Render.GetSize() - 1 ; i >= 0 ; i--)
  28.     {
  29. pInfo = (RENDERINFO*)m_Render.GetAt(i);
  30.     if ( pInfo->csValue == rInfo.csValue )
  31. return;   
  32. pInfo = new RENDERINFO;
  33.     if ( pInfo == NULL )
  34. return;
  35. pInfo->csValue = rInfo.csValue; 
  36.     pInfo->clr =  rInfo.clr;
  37. m_Render.Add(pInfo); 
  38. }
  39. void  CMapRender::RemoveByValue(CString& csValue)
  40. {
  41. int i;
  42. RENDERINFO* pInfo;
  43. for ( i = m_Render.GetSize() - 1 ; i >= 0 ; i--)
  44.     {
  45. pInfo = (RENDERINFO*)m_Render.GetAt(i);
  46.     if ( pInfo->csValue == csValue )
  47.         {   
  48. delete pInfo;
  49. m_Render.RemoveAt(i);
  50. break;
  51.         }  
  52.     } 
  53. }
  54. void  CMapRender::RemoveByIndex(int iIndex )
  55. {
  56. RENDERINFO* pInfo;
  57. if ( iIndex < 0 || iIndex >= m_Render.GetSize())
  58. return ;
  59. pInfo = (RENDERINFO*)m_Render.GetAt(iIndex);
  60. delete pInfo;
  61. m_Render.RemoveAt(iIndex);
  62. }
  63. int  CMapRender::GetCount()
  64. {
  65. return m_Render.GetSize();
  66. }
  67. RENDERINFO* CMapRender::GetByValue(CString& csValue)
  68. {
  69. int i;
  70. RENDERINFO* pInfo;
  71. for ( i = m_Render.GetSize() - 1 ; i >= 0 ; i--)
  72.     {
  73. pInfo = (RENDERINFO*)m_Render.GetAt(i);
  74.     if ( pInfo->csValue == csValue )
  75. return pInfo;
  76.     } 
  77. return NULL;
  78. }
  79. RENDERINFO* CMapRender::GetByIndex(int iIndex)
  80. {
  81. RENDERINFO* pInfo;
  82. if ( iIndex < 0 || iIndex >= m_Render.GetSize())
  83. return NULL;
  84. pInfo = (RENDERINFO*)m_Render.GetAt(iIndex);
  85. return pInfo;
  86. }
  87. void CMapRender::Clear()
  88. {
  89. int i;
  90. RENDERINFO* pInfo;
  91. for ( i = m_Render.GetSize() - 1 ; i >= 0 ; i--)
  92.     {
  93. pInfo = (RENDERINFO*)m_Render.GetAt(i);
  94. delete pInfo; 
  95.     } 
  96. m_Render.RemoveAll(); 
  97. }
  98. void CMapRender::SetSimpleRender( SIMPLERENDER& simpleRender )
  99. {
  100. m_SimpleRender.FillColor = simpleRender.FillColor;
  101. m_SimpleRender.OutlineColor = simpleRender.OutlineColor;
  102. m_SimpleRender.iIndex = simpleRender.iIndex;
  103.  
  104. }
  105. void CMapRender::GetSimpleRender( SIMPLERENDER& simpleRender )
  106. {
  107. simpleRender.FillColor  = m_SimpleRender.FillColor; 
  108. simpleRender.OutlineColor = m_SimpleRender.OutlineColor;
  109. simpleRender.iIndex = m_SimpleRender.iIndex ;
  110. }
  111. void CMapRender::SetFieldIndex(int iIndex)
  112. {
  113. m_FieldIndex = iIndex;
  114. }
  115. int CMapRender::GetFieldIndex()
  116. {
  117. return m_FieldIndex ;
  118. }
  119. void CMapRender::Clone(CMapRender *pRender)
  120. {
  121. int i;
  122. SIMPLERENDER simple;
  123. RENDERINFO   *pInfo;
  124. RENDERINFO   InfoNew;
  125. if ( pRender == NULL )
  126. return;
  127. pRender->SetRenderType(GetRenderType());
  128.     GetSimpleRender(simple); 
  129. pRender->SetSimpleRender(simple);
  130. pRender->SetFieldIndex(GetFieldIndex());
  131.     for ( i = 0 ; i < m_Render.GetSize() ; i++ )  
  132.     {
  133. pInfo = (RENDERINFO*)m_Render.GetAt(i);
  134. InfoNew.csValue = pInfo->csValue;
  135. InfoNew.clr  = pInfo->clr;
  136.         pRender->Add(InfoNew);   
  137.     }    
  138. }