/usr/include/mirplatform/mir/graphics/display_buffer.h is in libmirplatform-dev 0.21.0+16.04.20160330-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | /*
* Copyright © 2013 Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Authored by: Alexandros Frantzis <alexandros.frantzis@canonical.com>
*/
#ifndef MIR_GRAPHICS_DISPLAY_BUFFER_H_
#define MIR_GRAPHICS_DISPLAY_BUFFER_H_
#include <mir/geometry/rectangle.h>
#include <mir/graphics/renderable.h>
#include <mir_toolkit/common.h>
#include <memory>
namespace mir
{
namespace graphics
{
class Buffer;
class NativeDisplayBuffer
{
protected:
NativeDisplayBuffer() = default;
virtual ~NativeDisplayBuffer() = default;
NativeDisplayBuffer(NativeDisplayBuffer const&) = delete;
NativeDisplayBuffer operator=(NativeDisplayBuffer const&) = delete;
};
/**
* Interface to an output framebuffer.
*/
class DisplayBuffer
{
public:
virtual ~DisplayBuffer() = default;
/** The area the DisplayBuffer occupies in the virtual screen space. */
virtual geometry::Rectangle view_area() const = 0;
/** This will render renderlist to the screen and post the result to the
* screen if there is a hardware optimization that can be done.
* \param [in] renderlist
* The renderables that should appear on the screen if the hardware
* is capable of optmizing that list somehow. If what you want
* displayed on the screen cannot be represented by a RenderableList,
* then you should draw using OpenGL and use post_update()
* \returns
* true if the hardware can optimize the rendering of the list.
* When this call completes, the renderlist will have been posted
* to the screen.
* false if the hardware platform cannot optimize the list. The screen
* will not be updated. The caller should render the list another way,
* and post using post_update()
**/
virtual bool post_renderables_if_optimizable(RenderableList const& renderlist) = 0;
/** Returns the orientation of the display buffer relative to how the
* user should see it (the orientation of the output).
* This tells us how much (if any) rotation the renderer needs to do.
* If your DisplayBuffer can do the rotation itself then this will
* always return mir_orientation_normal. If the DisplayBuffer does not
* implement the rotation itself then this function will return the
* amount of rotation the renderer must do to make things "look right".
*/
virtual MirOrientation orientation() const = 0;
/** Returns a pointer to the native display buffer object backing this
* display buffer.
*
* The pointer to the native display buffer remains valid as long as the
* display buffer object is valid.
*/
virtual NativeDisplayBuffer* native_display_buffer() = 0;
protected:
DisplayBuffer() = default;
DisplayBuffer(DisplayBuffer const& c) = delete;
DisplayBuffer& operator=(DisplayBuffer const& c) = delete;
};
}
}
#endif /* MIR_GRAPHICS_DISPLAY_BUFFER_H_ */
|