Advertisement
Guest User

Untitled

a guest
Jul 21st, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. /// grid_to_base64()
  2. /// @param grid
  3.  
  4. var _grid = argument0;
  5.  
  6. var _width = ds_grid_width( _grid );
  7. var _height = ds_grid_height( _grid );
  8.  
  9. var _buffer = buffer_create( _width*_height*9 + 8, buffer_grow, 1 );
  10.  
  11. buffer_write( _buffer, buffer_u32, _width );
  12. buffer_write( _buffer, buffer_u32, _height );
  13.  
  14. for( var _y = 0; _y < _height; _y++ )
  15. {
  16. for( var _x = 0; _x < _width; _x++ )
  17. {
  18.  
  19. var _value = _grid[# _x, _y ];
  20.  
  21. if ( is_real( _value ) )
  22. {
  23. buffer_write( _buffer, buffer_u8 , E_DATATYPE.REAL );
  24. buffer_write( _buffer, buffer_f64, _value );
  25. }
  26. else if ( is_string( _value ) )
  27. {
  28. buffer_write( _buffer, buffer_u8 , E_DATATYPE.STRING );
  29. buffer_write( _buffer, buffer_string, _value );
  30. }
  31. else
  32. {
  33. buffer_write( _buffer, buffer_u8 , E_DATATYPE.REAL );
  34. buffer_write( _buffer, buffer_f64, 0 );
  35. }
  36.  
  37. }
  38. }
  39.  
  40. var _string = buffer_base64_encode( _buffer, 0, buffer_tell( _buffer ) );
  41. buffer_delete( _buffer );
  42.  
  43. return _string;
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. /// base64_to_grid()
  63. /// @param string
  64.  
  65. var _string = argument0;
  66.  
  67. var _buffer = buffer_base64_decode( _string );
  68.  
  69. var _width = buffer_read( _buffer, buffer_u32 );
  70. var _height = buffer_read( _buffer, buffer_u32 );
  71. var _grid = ds_grid_create( _width, _height );
  72.  
  73. for( var _y = 0; _y < _height; _y++ )
  74. {
  75. for( var _x = 0; _x < _width; _x++ )
  76. {
  77.  
  78. var _datatype = buffer_read( _buffer, buffer_u8 );
  79. switch( _datatype )
  80. {
  81. case E_DATATYPE.REAL:
  82. _grid[# _x, _y ] = buffer_read( _buffer, buffer_f64 );
  83. break;
  84. case E_DATATYPE.STRING:
  85. _grid[# _x, _y ] = buffer_read( _buffer, buffer_string );
  86. break;
  87. default:
  88. _grid[# _x, _y ] = 0;
  89. break;
  90. }
  91.  
  92. }
  93. }
  94.  
  95. buffer_delete( _buffer );
  96.  
  97. return _grid;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement