LODmapView.cpp
上传用户:hkb425
上传日期:2007-06-16
资源大小:34191k
文件大小:4k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // LODmapView.cpp : implementation of the CLODmapView class
  2. //
  3. #include "stdafx.h"
  4. #include "LODmap.h"
  5. #include "LODmapDoc.h"
  6. #include "LODmapView.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CLODmapView
  14. IMPLEMENT_DYNCREATE(CLODmapView, CView)
  15. BEGIN_MESSAGE_MAP(CLODmapView, CView)
  16. //{{AFX_MSG_MAP(CLODmapView)
  17. ON_WM_CREATE()
  18. //}}AFX_MSG_MAP
  19. // Standard printing commands
  20. ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  21. ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
  22. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
  23. END_MESSAGE_MAP()
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CLODmapView construction/destruction
  26. CLODmapView::CLODmapView()
  27. {
  28. // TODO: add construction code here
  29. }
  30. CLODmapView::~CLODmapView()
  31. {
  32. }
  33. BOOL CLODmapView::PreCreateWindow(CREATESTRUCT& cs)
  34. {
  35. // TODO: Modify the Window class or styles here by modifying
  36. //  the CREATESTRUCT cs
  37. return CView::PreCreateWindow(cs);
  38. }
  39. /////////////////////////////////////////////////////////////////////////////
  40. // CLODmapView drawing
  41. void CLODmapView::OnDraw(CDC* pDC)
  42. {
  43. }
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CLODmapView printing
  46. BOOL CLODmapView::OnPreparePrinting(CPrintInfo* pInfo)
  47. {
  48. // default preparation
  49. return DoPreparePrinting(pInfo);
  50. }
  51. void CLODmapView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  52. {
  53. // TODO: add extra initialization before printing
  54. }
  55. void CLODmapView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  56. {
  57. // TODO: add cleanup after printing
  58. }
  59. /////////////////////////////////////////////////////////////////////////////
  60. // CLODmapView diagnostics
  61. #ifdef _DEBUG
  62. void CLODmapView::AssertValid() const
  63. {
  64. CView::AssertValid();
  65. }
  66. void CLODmapView::Dump(CDumpContext& dc) const
  67. {
  68. CView::Dump(dc);
  69. }
  70. CLODmapDoc* CLODmapView::GetDocument() // non-debug version is inline
  71. {
  72. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLODmapDoc)));
  73. return (CLODmapDoc*)m_pDocument;
  74. }
  75. #endif //_DEBUG
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CLODmapView message handlers
  78. int CLODmapView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  79. {
  80. if (CView::OnCreate(lpCreateStruct) == -1)
  81. return -1;
  82. // TODO: Add your specialized creation code here
  83.     ///////////////////////////////////////////////////////
  84. //////////read data
  85. //////////////////////////////
  86. unsigned char lodmap[256][256];
  87. unsigned char rgb[3];
  88. int z,x;
  89. FILE* file;
  90.     ////////////mask1
  91.     if((file= fopen("LODmap_source.bmp", "rb"))==NULL)
  92. return false;
  93. fseek(file,54,SEEK_SET);
  94. for( z=255;z>-1;z--)
  95. for( x=0;x<256;x++)
  96. {
  97. fread(rgb,sizeof(unsigned char),3,file);
  98. if(rgb[0]==rgb[1] && rgb[1]==rgb[2] && rgb[0]==0)
  99. lodmap[z][x]=7;
  100. else if(rgb[0]==rgb[1] && rgb[1]==rgb[2] && rgb[0]==192)
  101. lodmap[z][x]=6;
  102. else if(rgb[0]==rgb[1] && rgb[1]==rgb[2] && rgb[0]==128)
  103. lodmap[z][x]=5;
  104. else if(rgb[0]==255 &&  rgb[1]==rgb[2] && rgb[1]==0)
  105. lodmap[z][x]=4;
  106. else if(rgb[0]==rgb[1] && rgb[0]==0 && rgb[2]==255)
  107. lodmap[z][x]=3;
  108. else if(rgb[0]==rgb[2] && rgb[0]==0 && rgb[1]==255)
  109. lodmap[z][x]=2;
  110. else if(rgb[0]==rgb[1] && rgb[1]==rgb[2] && rgb[0]==255)
  111. lodmap[z][x]=1;
  112. }
  113. fclose(file);
  114. file=NULL;   
  115. ////////////////////////////////////////////////////////
  116. /////////// Filtrate data
  117.     /////////////////////////////////////////////////////////
  118. for(z=0;z<256;z++)
  119.         for(x=1;x<256;x+=2)
  120. {
  121. if(lodmap[z][x]==7 || lodmap[z][x]==6)lodmap[z][x]=0;
  122. }
  123. for(x=0;x<256;x++)
  124.         for(z=1;z<256;z+=2)
  125. {
  126. if(lodmap[z][x]==7 || lodmap[z][x]==6)lodmap[z][x]=0;
  127. }
  128.     ////////////////write data
  129. ///////////////////////////////////////////
  130.     if((file=fopen("lodmap.lod","wb"))==NULL)
  131.     return false;
  132.     for(z=255;z>-1;z--)
  133. for( x=0;x<256;x++)
  134.                 fwrite(&lodmap[z][x],sizeof(unsigned char),1,file);
  135.     ///////////////////////
  136. fclose(file);    
  137. return 0;
  138. }