graphics.h 931 B

12345678910111213141516171819202122232425262728293031323334
  1. // This file is Copyright (c) 2023 Victor Suarez Rovere <suarezvictor@gmail.com>
  2. // SPDX-License-Identifier: AGPL-3.0-only
  3. #ifndef __GRAPHICS_H__
  4. #define __GRAPHICS_H__
  5. #ifdef VIDEO_FRAMEBUFFER_HRES
  6. #define FRAME_WIDTH VIDEO_FRAMEBUFFER_HRES
  7. #else
  8. #define FRAME_WIDTH 640
  9. #endif
  10. #ifdef VIDEO_FRAMEBUFFER_VRES
  11. #define FRAME_HEIGHT VIDEO_FRAMEBUFFER_VRES
  12. #else
  13. #define FRAME_HEIGHT 480
  14. #endif
  15. #define FRAME_PITCH (FRAME_WIDTH<<2)
  16. #ifndef VIDEO_FRAMEBUFFER_BASE
  17. #define VIDEO_FRAMEBUFFER_BASE 0x40C00000 //default LiteX framebuffer memory address
  18. #endif
  19. #define rgba2raw(r, g, b, a) ((r) | ((g)<<8) | ((b)<<16) | ((a)<<24))
  20. #define alpha_mul(x, a) (((a)*(x))>>8) //for more precision: (x * a + 1 + ((x * a) >> 8)) >> 8;
  21. #define alpha_blend_i(r, r1, g, g1, b, b1, a_inv, a1) \
  22. rgba2raw(r + alpha_mul(r1, a_inv), \
  23. g + alpha_mul(g1, a_inv), \
  24. b + alpha_mul(b1, a_inv), \
  25. a1 - a_inv)
  26. #endif