Advertisement
logix

Heightmap Viewer

Feb 19th, 2013
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 2.33 KB | None | 0 0
  1. #include <GDIPlus.au3>
  2. #include <File.au3>
  3. #include <Array.au3>
  4. HotKeySet("{F8}", "SaveScreenshot")
  5. Global $GUIWidth = 600, $GUIHeight = 480
  6.  
  7. $file = FileOpenDialog("Select file", @ScriptDir, "Heightmap (*.hmap)");
  8. If Not FileExists($file) Then Exit
  9.  
  10. MsgBox(0, "Info", "Dopo aver caricato l'heightmap, usa F8 per salvare l'immagine come .bmp")
  11.  
  12. _GDIPlus_Startup()
  13.  
  14. $Gui = GUICreate("Heightmap Viewer", $GUIWidth, $GUIHeight)
  15. $Graphics = _GDIPlus_GraphicsCreateFromHWND($Gui)
  16. $Bmp = _GDIPlus_BitmapCreateFromGraphics($GUIWidth, $GUIHeight, $Graphics)
  17. $Buffer = _GDIPlus_ImageGetGraphicsContext($Bmp)
  18.  
  19. $width = getWidth($file)
  20. $height = getHeight($file)
  21.  
  22. Dim $map[$height][$width]
  23.  
  24. For $y = 0 To $height - 1
  25.     $line = FileReadLine($file, $y + 1)
  26.     $split = StringSplit($line, ",", 2)
  27.     _ArrayDelete($split, 30)
  28.     For $x = 0 To UBound($split) - 1
  29.         $map[$y][$x] = $split[$x]
  30.     Next
  31. Next
  32.  
  33. $blocPw = $GUIWidth / $width
  34. $blocPh = $GUIHeight / $height
  35.  
  36. ConsoleWrite("$blocPw = " & $blocPw & @LF)
  37. ConsoleWrite("$blocPh = " & $blocPh & @LF)
  38.  
  39. _GDIPlus_GraphicsClear($Buffer, 0xFF999999 + MakeColor(0))
  40.  
  41. $brush = _GDIPlus_BrushCreateSolid()
  42.  
  43. For $y = 0 To $height - 1
  44.     For $x = 0 To $width - 1
  45.         _GDIPlus_BrushSetSolidColor($brush, 0xFF999999 + MakeColor($map[$y][$x]))
  46.         _GDIPlus_GraphicsFillRect($Buffer, $blocPw * ($x), $blocPh * $y, $blocPw, $blocPh, $brush)
  47.     Next
  48. Next
  49. _GDIPlus_BrushDispose($brush)
  50.  
  51. GUISetState(@SW_SHOW, $Gui)
  52.  
  53.  
  54. While 1
  55.     _GDIPlus_GraphicsDrawImageRect($Graphics, $Bmp, 0, 0, 600, 480)
  56.  
  57.     Sleep(20)
  58.  
  59.     Switch GUIGetMsg()
  60.         Case -3
  61.             ExitLoop
  62.     EndSwitch
  63. WEnd
  64.  
  65. _GDIPlus_Shutdown()
  66.  
  67. Func getWidth($fp)
  68.     $line = FileReadLine($fp, 1)
  69.     $linearr = StringSplit($line, "")
  70.     $commacount = 0
  71.     For $i = 1 To $linearr[0]
  72.         If $linearr[$i] == "," Then $commacount += 1
  73.     Next
  74.     Return $commacount
  75. EndFunc   ;==>getWidth
  76.  
  77. Func getHeight($fp)
  78.     Return _FileCountLines($fp)
  79. EndFunc   ;==>getHeight
  80.  
  81. Func MakeColor($index)
  82.     $res = (0x070707 * Abs($index))
  83.     If $index < 0 Then Return -$res
  84.     Return $res
  85. EndFunc   ;==>MakeColor
  86.  
  87. Func SaveScreenshot()
  88.     If _GDIPlus_ImageSaveToFile($Bmp, @MyDocumentsDir & "\heightmap.bmp") Then
  89.         MsgBox(0, "Info", "Immagine salvata in: " & @CRLF & @TAB & @MyDocumentsDir & "\heightmap.bmp" & @CRLF)
  90.     Else
  91.         MsgBox(16, "Errore", "Impossibile salvare l'immagine!")
  92.     EndIf
  93. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement