]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/l4re_c/include/video/goos.h
38ab5f12befa28af7f513925a1dee7c504fd5538
[l4.git] / l4 / pkg / l4re_c / include / video / goos.h
1 /**
2  * \file
3  * \note The C interface of L4Re::Video does _NOT_ reflect the full C++
4  *       interface on purpose. Use the C++ where possible.
5  */
6 /*
7  * (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>
8  *     economic rights: Technische Universität Dresden (Germany)
9  *
10  * This file is part of TUD:OS and distributed under the terms of the
11  * GNU General Public License 2.
12  * Please see the COPYING-GPL-2 file for details.
13  *
14  * As a special exception, you may use this file as part of a free software
15  * library without restriction.  Specifically, if other files instantiate
16  * templates or use macros or inline functions from this file, or you compile
17  * this file and link it with other files to produce an executable, this
18  * file does not by itself cause the resulting executable to be covered by
19  * the GNU General Public License.  This exception does not however
20  * invalidate any other reasons why the executable file might be covered by
21  * the GNU General Public License.
22  */
23 #pragma once
24
25 #include <l4/sys/types.h>
26 #include <l4/re/c/dataspace.h>
27 #include <l4/re/c/video/colors.h>
28 #include <l4/re/c/video/view.h>
29
30 /**
31  * \defgroup api_l4re_c_video Video API
32  * \ingroup api_l4re_c
33  */
34
35 /**
36  * \brief Flags of information on the goos.
37  * \ingroup api_l4re_c_video
38  */
39 enum l4re_video_goos_info_flags_t
40 {
41   F_l4re_video_goos_auto_refresh    = 0x01, ///< The graphics display is automatically refreshed
42   F_l4re_video_goos_pointer         = 0x02, ///< We have a mouse pointer
43   F_l4re_video_goos_dynamic_views   = 0x04, ///< Supports dynamically allocated views
44   F_l4re_video_goos_dynamic_buffers = 0x08, ///< Supports dynamically allocated buffers
45 };
46
47 /**
48  * \brief Goos information structure
49  * \ingroup api_l4re_c_video
50  */
51 typedef struct
52 {
53   unsigned long width;                ///< Width of the goos
54   unsigned long height;               ///< Height of the goos
55   unsigned flags;                     ///< Flags of the framebuffer
56   unsigned num_static_views;          ///< Number of static views
57   unsigned num_static_buffers;        ///< Number of static buffers
58   l4re_video_pixel_info_t pixel_info; ///< Pixel layout of the goos
59 } l4re_video_goos_info_t;
60
61 /**
62  * \brief Goos object type
63  * \ingroup api_l4re_c_fb
64  */
65 typedef l4_cap_idx_t l4re_video_goos_t;
66
67 EXTERN_C_BEGIN
68
69 /**
70  * \brief Get information on a goos.
71  * \ingroup api_l4re_c_video
72  *
73  * \param  goos  Goos object
74  * \retval ginfo Pointer to goos information structure.
75  *
76  * \return 0 for success, <0 on error
77  *         - -#L4_ENODEV
78  *         - IPC errors
79  */
80 L4_CV int
81 l4re_video_goos_info(l4re_video_goos_t goos,
82                      l4re_video_goos_info_t *ginfo) L4_NOTHROW;
83
84 EXTERN_C_END