Usermode/libposix - Basic stat() emulation
[tpg/acess2.git] / KernelLand / Kernel / include / api_drv_terminal.h
1 /**\r
2  * \file api_drv_terminal.h\r
3  * \brief Terminal Driver Interface Definitions\r
4 */\r
5 #ifndef _API_DRV_TERMINAL_H\r
6 #define _API_DRV_TERMINAL_H\r
7 \r
8 #include <api_drv_common.h>\r
9 \r
10 /**\r
11  * \brief Common Terminal IOCtl Calls\r
12  * \extends eTplDrv_IOCtl\r
13  */\r
14 enum eTplTerminal_IOCtl {\r
15         /**\r
16          * ioctl(..., int *mode)\r
17          * \brief Get/Set the current video mode type\r
18          * \param mode Pointer to an integer with the new mode number (or NULL)\r
19          *             If \a mode is non-NULL the current terminal mode is changed/updated\r
20          *             to the mode indicated by \a *mode\r
21          * \note See ::eTplTerminal_Modes\r
22          * \return Current/new terminal mode\r
23         */\r
24         TERM_IOCTL_MODETYPE = 4,\r
25         \r
26         /**\r
27          * ioctl(..., int *width)\r
28          * \brief Get/set the display width\r
29          * \param width Pointer to an integer containing the new width (or NULL)\r
30          * \return Current/new width\r
31          * \r
32          * If \a width is non-NULL the current width is updated (but is not\r
33          * applied until ::TERM_IOCTL_MODETYPE is called with \a mode non-NULL.\r
34          */\r
35         TERM_IOCTL_WIDTH,\r
36         \r
37         /**\r
38          * ioctl(..., int *height)\r
39          * \brief Get/set the display height\r
40          * \param height        Pointer to an integer containing the new height\r
41          * \return Current height\r
42          * \r
43          * If \a height is non-NULL the current height is updated (but is not\r
44          * applied until ::TERM_IOCTL_MODETYPE is called with a non-NULL \a mode.\r
45          */\r
46         TERM_IOCTL_HEIGHT,\r
47         \r
48         /**\r
49          * ioctl(..., tTerm_IOCtl_Mode *info)\r
50          * \brief Queries the current driver about it's native modes\r
51          * \param info  A pointer to a ::tTerm_IOCtl_Mode with \a ID set to\r
52          *        the mode index (or NULL)\r
53          * \return Number of modes\r
54          * \r
55          * If \a info is NULL, the number of avaliable vative display modes\r
56          * is returned. These display modes will have sequential ID numbers\r
57          * from zero up to this value.\r
58          * \r
59          * \note The id field of \a info is not for use with ::TERM_IOCTL_MODETYPE\r
60          *       This field is just for indexing the mode to get its information.\r
61          */\r
62         TERM_IOCTL_QUERYMODE,\r
63         \r
64         /**\r
65          * ioctl(...)\r
66          * \brief Forces the current terminal to be shown\r
67          */\r
68         TERM_IOCTL_FORCESHOW,\r
69         \r
70         /**\r
71          * ioctl(..., tVideo_IOCtl_Pos *pos)\r
72          * \brief Returns the current text cursor position\r
73          * \param pos   New cursor position. If NULL, the position is not changed\r
74          * \return Cursor position (as X+Y*Width)\r
75          */\r
76         TERM_IOCTL_GETSETCURSOR,\r
77         \r
78         /**\r
79          * ioctl(..., tVideo_IOCtl_Bitmap *Bmp)\r
80          * \brief Set the video cursor bitmap\r
81          * \param Bmp   New bitmap (if NULL, the current bitmap is removed)\r
82          * \return Boolean failure\r
83          */\r
84         TERM_IOCTL_SETCURSORBITMAP,\r
85 };\r
86 \r
87 /**\r
88  * \brief Virtual Terminal Mode\r
89  * Describes a VTerm mode to the caller of ::TERM_IOCTL_QUERYMODE\r
90  */\r
91 typedef struct sTerm_IOCtl_Mode\r
92 {\r
93         short   ID;             //!< Zero Based index of mode\r
94         short   DriverID;       //!< Driver's ID number (from ::tVideo_IOCtl_Mode)\r
95         Uint16  Height; //!< Height\r
96         Uint16  Width;  //!< Width\r
97         Uint8   Depth;  //!< Bits per cell\r
98         struct {\r
99                 unsigned bText: 1;      //!< Text Mode marker\r
100                 unsigned unused:        7;\r
101         };\r
102 } tTerm_IOCtl_Mode;\r
103 \r
104 /**\r
105  * \brief Terminal Modes\r
106  */\r
107 enum eTplTerminal_Modes {\r
108         /**\r
109          * \brief UTF-8 Text Mode\r
110          * Any writes to the terminal file are treated as UTF-8 encoded\r
111          * strings and reads will also return UTF-8 strings.\r
112          */\r
113         TERM_MODE_TEXT,\r
114         \r
115         /**\r
116          * \brief 32bpp Framebuffer\r
117          * Writes to the terminal file will write to the framebuffer.\r
118          * Reads will return UTF-32 characters\r
119          */\r
120         TERM_MODE_FB,\r
121         \r
122         /**\r
123          * \brief 32bpp 2D Accellerated mode\r
124          * Writes to the terminal file will be read as a command stream\r
125          * defined in ::eTplTerminal_2D_Commands\r
126          */\r
127         TERM_MODE_2DACCEL,\r
128         \r
129         /**\r
130          * \brief OpenGL 2D/3D\r
131          * Writes to the terminal file will send 3D commands\r
132          * Reads will return UTF-32 characters\r
133          * \note May or may not stay in the spec\r
134          */\r
135         TERM_MODE_3D,\r
136         \r
137         /**\r
138          * \brief Number of terminal modes\r
139          */\r
140         NUM_TERM_MODES\r
141 };\r
142 \r
143 /**\r
144  * \brief 2D Command IDs\r
145  * \todo Complete this structure\r
146  * \r
147  * Command IDs for when the terminal type is eTplTerminal_Modes.TERM_MODE_2DACCEL\r
148  */\r
149 enum eTplTerminal_2D_Commands\r
150 {\r
151         /**\r
152          * \brief No Operation - Used for padding\r
153          */\r
154         TERM_2DCMD_NOP,\r
155         \r
156         /**\r
157          * (Uint16 X, Y, W, H, Uint32 Data[])\r
158          * \brief Blits a bitmap to the display\r
159          * \param X,Y   Coordinates of Top-Left corner\r
160          * \param W,H   Dimensions\r
161          * \param Data  32-bpp pixel data\r
162          */\r
163         TERM_2DCMD_PUSH\r
164 };\r
165 \r
166 #endif\r

UCC git Repository :: git.ucc.asn.au