1. inline void PutPixel(int x, int y, Uint32 color)
  2. {
  3. if (x >= 0 && x < screenWidth && y >= 0 && y < screenHeight)
  4. {
  5. switch (screen->format->BytesPerPixel)
  6. {
  7. case 1: // Assuming 8-bpp
  8. {
  9. Uint8 *bufp;
  10. bufp = (Uint8 *)screen->pixels + y*screen->pitch + x;
  11. *bufp = color;
  12. }
  13. break;
  14. case 2: // Probably 15-bpp or 16-bpp
  15. {
  16. Uint16 *bufp;
  17. bufp = (Uint16 *)screen->pixels + y*screen->pitch/2 + x;
  18. *bufp = color;
  19. }
  20. break;
  21. case 3: // Slow 24-bpp mode, usually not used
  22. {
  23. Uint8 *bufp;
  24. bufp = (Uint8 *)screen->pixels + y*screen->pitch + x * 3;
  25. if(SDL_BYTEORDER == SDL_LIL_ENDIAN)
  26. {
  27. bufp[0] = color;
  28. bufp[1] = color >> 8;
  29. bufp[2] = color >> 16;
  30. } else {
  31. bufp[2] = color;
  32. bufp[1] = color >> 8;
  33. bufp[0] = color >> 16;
  34. }
  35. }
  36. break;
  37. case 4: // Probably 32-bpp
  38. {
  39. Uint32 *bufp;
  40. bufp = (Uint32 *)screen->pixels + y*screen->pitch/4 + x;
  41. *bufp = color;
  42. }
  43. break;
  44. }
  45. }
  46. }
  47.