Xyris  0.5
framebuffer.hpp
Go to the documentation of this file.
1 /**
2  * @file framebuffer.cpp
3  * @author Keeton Feavel ([email protected])
4  * @brief
5  * @version 0.1
6  * @date 2021-06-11
7  *
8  * @copyright Copyright the Xyris Contributors (c) 2021
9  *
10  */
11 #pragma once
12 #include <stdint.h>
13 
14 namespace Graphics {
15 
18  RGB_FBMM = 1,
19 };
20 
21 class Framebuffer {
22 public:
23  // Constructors
24  Framebuffer();
25  Framebuffer(uint32_t width, uint32_t height, uint16_t depth, uint32_t pitch, void* addr);
26  Framebuffer(uint32_t width, uint32_t height,
27  uint16_t depth, uint32_t pitch,
28  void* addr, FramebufferMemoryModel model,
29  uint8_t redMaskSize, uint8_t redMaskShift,
30  uint8_t greenMaskSize, uint8_t greenMaskShift,
31  uint8_t blueMaskSize, uint8_t blueMaskShift);
32  // Getters
33  [[gnu::always_inline]] void* getAddress() { return _addr; }
34  [[gnu::always_inline]] uint32_t getWidth() { return _width; }
35  [[gnu::always_inline]] uint32_t getHeight() { return _height; }
36  [[gnu::always_inline]] uint16_t getDepth() { return _depth; }
37  [[gnu::always_inline]] uint32_t getPitch() { return _pitch; }
38  [[gnu::always_inline]] uint8_t getRedMaskSize() { return _redMaskSize; }
39  [[gnu::always_inline]] uint8_t getRedMaskShift() { return _redMaskShift; }
40  [[gnu::always_inline]] uint8_t getGreenMaskSize() { return _greenMaskSize; }
41  [[gnu::always_inline]] uint8_t getGreenMaskShift() { return _greenMaskShift; }
42  [[gnu::always_inline]] uint8_t getBlueMaskSize() { return _blueMaskSize; }
43  [[gnu::always_inline]] uint8_t getBlueMaskShift() { return _blueMaskShift; }
44  [[gnu::always_inline]] uint8_t getPixelWidth() { return _depth / 8; }
45  [[gnu::always_inline]] FramebufferMemoryModel getModel() { return _memoryModel; }
46  // Setters
47  [[gnu::always_inline]] void setWidth(uint16_t val) { _width = val; }
48  [[gnu::always_inline]] void setHeight(uint16_t val) { _height = val; }
49  [[gnu::always_inline]] void setDepth(uint16_t val) { _depth = val; }
50  [[gnu::always_inline]] void setPitch(uint16_t val) { _pitch = val; }
51  [[gnu::always_inline]] void setRedMaskSize(uint8_t val) { _redMaskSize = val; }
52  [[gnu::always_inline]] void setRedMaskShift(uint8_t val) { _redMaskShift = val; }
53  [[gnu::always_inline]] void setGreenMaskSize(uint8_t val) { _greenMaskSize = val; }
54  [[gnu::always_inline]] void setGreenMaskShift(uint8_t val) { _greenMaskShift = val; }
55  [[gnu::always_inline]] void setBlueMaskSize(uint8_t val) { _blueMaskSize = val; }
56  [[gnu::always_inline]] void setBlueMaskShift(uint8_t val) { _blueMaskShift = val; }
57  [[gnu::always_inline]] void setModel(FramebufferMemoryModel val) { _memoryModel = val; }
58 
59 private:
60  void* _addr; // physical framebuffer address
61  uint32_t _width; // number pixels on a horizontal line
62  uint32_t _height; // number horizontal lines present
63  uint16_t _depth; // color depth (same as bits per pixel)
64  uint32_t _pitch; // number bytes of VRAM in each line
65  uint8_t _redMaskSize;
66  uint8_t _redMaskShift;
67  uint8_t _greenMaskSize;
68  uint8_t _greenMaskShift;
69  uint8_t _blueMaskSize;
70  uint8_t _blueMaskShift;
72 };
73 
74 /**
75  * @brief Get a pointer to the active framebuffer
76  *
77  * @return Framebuffer* Pointer to active framebuffer
78  */
80 
81 }; // !namespace graphics
Graphics::Framebuffer::setGreenMaskSize
void setGreenMaskSize(uint8_t val)
Definition: framebuffer.hpp:53
Graphics::Framebuffer::_blueMaskSize
uint8_t _blueMaskSize
Definition: framebuffer.hpp:69
Graphics::FramebufferMemoryModel
FramebufferMemoryModel
Definition: framebuffer.hpp:16
Graphics::Framebuffer::setBlueMaskSize
void setBlueMaskSize(uint8_t val)
Definition: framebuffer.hpp:55
Graphics::Framebuffer::Framebuffer
Framebuffer()
Definition: framebuffer.cpp:19
Graphics::Framebuffer::getGreenMaskShift
uint8_t getGreenMaskShift()
Definition: framebuffer.hpp:41
Graphics::Framebuffer::setBlueMaskShift
void setBlueMaskShift(uint8_t val)
Definition: framebuffer.hpp:56
Graphics::Framebuffer::_width
uint32_t _width
Definition: framebuffer.hpp:61
Graphics::Framebuffer::getPitch
uint32_t getPitch()
Definition: framebuffer.hpp:37
Graphics::Framebuffer::getAddress
void * getAddress()
Definition: framebuffer.hpp:33
Graphics::Undefined_FBMM
@ Undefined_FBMM
Definition: framebuffer.hpp:17
Graphics::Framebuffer::setRedMaskShift
void setRedMaskShift(uint8_t val)
Definition: framebuffer.hpp:52
Graphics::Framebuffer::_depth
uint16_t _depth
Definition: framebuffer.hpp:63
Graphics::Framebuffer::_redMaskSize
uint8_t _redMaskSize
Definition: framebuffer.hpp:65
Graphics::Framebuffer::getPixelWidth
uint8_t getPixelWidth()
Definition: framebuffer.hpp:44
Graphics::Framebuffer::getWidth
uint32_t getWidth()
Definition: framebuffer.hpp:34
Graphics::Framebuffer::setHeight
void setHeight(uint16_t val)
Definition: framebuffer.hpp:48
Graphics::Framebuffer::getBlueMaskShift
uint8_t getBlueMaskShift()
Definition: framebuffer.hpp:43
Graphics::Framebuffer::_addr
void * _addr
Definition: framebuffer.hpp:60
Graphics::Framebuffer::_greenMaskShift
uint8_t _greenMaskShift
Definition: framebuffer.hpp:68
Graphics::Framebuffer::_memoryModel
FramebufferMemoryModel _memoryModel
Definition: framebuffer.hpp:71
Graphics
Definition: font.cpp:17
Graphics::Framebuffer::getGreenMaskSize
uint8_t getGreenMaskSize()
Definition: framebuffer.hpp:40
Graphics::RGB_FBMM
@ RGB_FBMM
Definition: framebuffer.hpp:18
Graphics::Framebuffer::setDepth
void setDepth(uint16_t val)
Definition: framebuffer.hpp:49
Graphics::Framebuffer::setGreenMaskShift
void setGreenMaskShift(uint8_t val)
Definition: framebuffer.hpp:54
Graphics::Framebuffer::setModel
void setModel(FramebufferMemoryModel val)
Definition: framebuffer.hpp:57
Graphics::Framebuffer::_height
uint32_t _height
Definition: framebuffer.hpp:62
Graphics::Framebuffer::getModel
FramebufferMemoryModel getModel()
Definition: framebuffer.hpp:45
Graphics::Framebuffer
Definition: framebuffer.hpp:21
Graphics::Framebuffer::getRedMaskShift
uint8_t getRedMaskShift()
Definition: framebuffer.hpp:39
Arch::CPU::model
const char * model()
Definition: Arch.i686.cpp:134
Graphics::Framebuffer::setWidth
void setWidth(uint16_t val)
Definition: framebuffer.hpp:47
Graphics::Framebuffer::setRedMaskSize
void setRedMaskSize(uint8_t val)
Definition: framebuffer.hpp:51
Graphics::Framebuffer::_blueMaskShift
uint8_t _blueMaskShift
Definition: framebuffer.hpp:70
Graphics::Framebuffer::_greenMaskSize
uint8_t _greenMaskSize
Definition: framebuffer.hpp:67
Graphics::Framebuffer::setPitch
void setPitch(uint16_t val)
Definition: framebuffer.hpp:50
Graphics::Framebuffer::getHeight
uint32_t getHeight()
Definition: framebuffer.hpp:35
Graphics::getFramebuffer
Framebuffer * getFramebuffer()
Get a pointer to the active framebuffer.
Definition: framebuffer.cpp:81
Graphics::Framebuffer::getBlueMaskSize
uint8_t getBlueMaskSize()
Definition: framebuffer.hpp:42
Graphics::Framebuffer::getDepth
uint16_t getDepth()
Definition: framebuffer.hpp:36
Graphics::Framebuffer::_pitch
uint32_t _pitch
Definition: framebuffer.hpp:64
Graphics::Framebuffer::_redMaskShift
uint8_t _redMaskShift
Definition: framebuffer.hpp:66
Graphics::Framebuffer::getRedMaskSize
uint8_t getRedMaskSize()
Definition: framebuffer.hpp:38