Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. #include "RasterSurface.h"
  2. #include "2_cave_crystal.h"
  3. #include <iostream>
  4. #include <math.h>
  5.  
  6. using namespace std;
  7.  
  8. const int width = 657;
  9. const int height = 593;
  10. const unsigned int numpixels = width * height;
  11. unsigned int Raster[numpixels];
  12.  
  13. int Conversion(int x, int y)
  14. {
  15. int point = (y * width) + x;
  16. return point;
  17. }
  18.  
  19. unsigned int colorSwap(unsigned int color)
  20. {
  21. unsigned int temp1 = (color & 0xFF000000) >> 24;
  22. unsigned int temp2 = (color & 0x00FF0000) >> 8;
  23. unsigned int temp3 = (color & 0x0000FF00) << 8;
  24. unsigned int temp4 = (color & 0x000000FF) << 24;
  25.  
  26. return (temp1 | temp2 | temp3 | temp4);
  27. }
  28.  
  29. int Colors2(int sColor, int fColor, float ratio)
  30. {
  31. int a = (sColor & 0x000000FF);
  32. int r = (sColor & 0x0000FF00) >> 8;
  33. int g = (sColor & 0x00FF0000) >> 16;
  34. int b = (sColor & 0xFF000000) >> 24;
  35.  
  36. int mA = (fColor & 0x000000FF);
  37. int mR = (fColor & 0x0000FF00) >> 8;
  38. int mG = (fColor & 0x00FF0000) >> 16;
  39. int mB = (fColor & 0xFF000000) >> 24;
  40.  
  41. int fA = (mA - a) * (ratio)+a;
  42. fA = fA;
  43. int fR = (mR - r) * (ratio)+r;
  44. fR = fR << 8;
  45. int fG = (mG - g) * (ratio)+g;
  46. fG = fG << 16;
  47. int fB = (mB - b) * (ratio)+b;
  48. fB = fB << 24;
  49.  
  50. return(fA | fR | fG | fB);
  51. }
  52.  
  53. unsigned int PS_Cave(float u, float v) {
  54.  
  55. float x = (u * _2_cave_crystal_width);
  56. float y = (v * _2_cave_crystal_height);
  57. unsigned int coord = (int)y * _2_cave_crystal_width + (int)x;
  58.  
  59. float rx = (u * _2_cave_crystal_width) - x;
  60. float ry = (v * _2_cave_crystal_height) - y;
  61.  
  62. unsigned int tl = _2_cave_crystal_pixels[coord];
  63. unsigned int tr = _2_cave_crystal_pixels[coord + 1];
  64. unsigned int bl = _2_cave_crystal_pixels[coord + _2_cave_crystal_width];
  65. unsigned int br = _2_cave_crystal_pixels[coord + _2_cave_crystal_width + 1];
  66.  
  67. unsigned int top = Colors2(tl, tr, rx);
  68. unsigned int bot = Colors2(bl, br, rx);
  69. unsigned int caveuv = colorSwap(Colors2(top, bot, ry));
  70. return caveuv;
  71. }
  72.  
  73. void Draw(int x, int y, int color)
  74. {
  75. if (x < width && x > 0 && y < height && y > 0)
  76. {
  77. Raster[Conversion(x, y)] = color;
  78. }
  79. }
  80.  
  81. int main()
  82. {
  83. RS_Initialize(width, height);
  84.  
  85. while (RS_Update(Raster, numpixels))
  86. {
  87. for (int i = 0; i < height; i++)
  88. {
  89. for (int j = 0; j < width; i++)
  90. {
  91. float a = j / (float)width;
  92. float b = i / (float)height;
  93. Draw(j, i, PS_Cave(a, b));
  94. }
  95. }
  96. }
  97.  
  98. RS_Shutdown();
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement