#pragma once
#ifndef _uefi_protos_graphics_output_h_
#define _uefi_protos_graphics_output_h_

// This file was auto generated by the j6-uefi-headers project. Please see
// https://github.com/justinian/j6-uefi-headers for more information.

#include <uefi/guid.h>
#include <uefi/types.h>
#include <uefi/graphics.h>

namespace uefi {
namespace protos {
struct graphics_output;

struct graphics_output
{
    static constexpr uefi::guid guid{ 0x9042a9de,0x23dc,0x4a38,{0x96,0xfb,0x7a,0xde,0xd0,0x80,0x51,0x6a} };


    inline uefi::status query_mode(uint32_t mode_number, uint64_t * size_of_info, uefi::graphics_output_mode_info ** info) {
        return _query_mode(this, mode_number, size_of_info, info);
    }

    inline uefi::status set_mode(uint32_t mode_number) {
        return _set_mode(this, mode_number);
    }

    inline uefi::status blt() {
        return _blt(this);
    }


protected:
    using _query_mode_def = uefi::status (*)(uefi::protos::graphics_output *, uint32_t, uint64_t *, uefi::graphics_output_mode_info **);
    _query_mode_def _query_mode;

    using _set_mode_def = uefi::status (*)(uefi::protos::graphics_output *, uint32_t);
    _set_mode_def _set_mode;

    using _blt_def = uefi::status (*)(uefi::protos::graphics_output *);
    _blt_def _blt;

public:
    uefi::graphics_output_mode * mode;
};

} // namespace protos
} // namespace uefi

#endif // _uefi_protos_graphics_output_h_