1*f0687c8aSRaman Tenneti #include <map> 2*f0687c8aSRaman Tenneti 3*f0687c8aSRaman Tenneti #include <kms++util/cpuframebuffer.h> 4*f0687c8aSRaman Tenneti 5*f0687c8aSRaman Tenneti using namespace std; 6*f0687c8aSRaman Tenneti 7*f0687c8aSRaman Tenneti namespace kms 8*f0687c8aSRaman Tenneti { CPUFramebuffer(uint32_t width,uint32_t height,PixelFormat format)9*f0687c8aSRaman TennetiCPUFramebuffer::CPUFramebuffer(uint32_t width, uint32_t height, PixelFormat format) 10*f0687c8aSRaman Tenneti : m_width(width), m_height(height), m_format(format) 11*f0687c8aSRaman Tenneti { 12*f0687c8aSRaman Tenneti const PixelFormatInfo& format_info = get_pixel_format_info(m_format); 13*f0687c8aSRaman Tenneti 14*f0687c8aSRaman Tenneti m_num_planes = format_info.num_planes; 15*f0687c8aSRaman Tenneti 16*f0687c8aSRaman Tenneti for (unsigned i = 0; i < format_info.num_planes; ++i) { 17*f0687c8aSRaman Tenneti const PixelFormatPlaneInfo& pi = format_info.planes[i]; 18*f0687c8aSRaman Tenneti FramebufferPlane& plane = m_planes[i]; 19*f0687c8aSRaman Tenneti 20*f0687c8aSRaman Tenneti plane.stride = width * pi.bitspp / 8; 21*f0687c8aSRaman Tenneti plane.size = plane.stride * height / pi.ysub; 22*f0687c8aSRaman Tenneti plane.offset = 0; 23*f0687c8aSRaman Tenneti plane.map = new uint8_t[plane.size]; 24*f0687c8aSRaman Tenneti } 25*f0687c8aSRaman Tenneti } 26*f0687c8aSRaman Tenneti ~CPUFramebuffer()27*f0687c8aSRaman TennetiCPUFramebuffer::~CPUFramebuffer() 28*f0687c8aSRaman Tenneti { 29*f0687c8aSRaman Tenneti for (unsigned i = 0; i < m_num_planes; ++i) { 30*f0687c8aSRaman Tenneti FramebufferPlane& plane = m_planes[i]; 31*f0687c8aSRaman Tenneti 32*f0687c8aSRaman Tenneti delete[] plane.map; 33*f0687c8aSRaman Tenneti } 34*f0687c8aSRaman Tenneti } 35*f0687c8aSRaman Tenneti 36*f0687c8aSRaman Tenneti } // namespace kms 37