Added cursor manipulation to vterm & vga
[tpg/acess2.git] / Kernel / include / tpl_drv_video.h
1 /**\r
2  * \file tpl_drv_video.h\r
3  * \brief Video Driver Interface Definitions\r
4  * \note For AcessOS Version 1\r
5  * \r
6  * Video drivers extend the common driver interface tpl_drv_common.h\r
7  * and must support _at least_ the IOCtl numbers defined in this file\r
8  * to be compatable with Acess.\r
9  * \r
10  * \section IOCtls\r
11  * As said, a compatable driver must implement these calls correctly,\r
12  * but they may choose not to allow direct user access to the framebuffer.\r
13  * \r
14  * \section Screen Contents\r
15  * Reads and writes to the driver's file while in component colour modes\r
16  * must correspond to a change of the contents of the screen. The framebuffer\r
17  * must start at offset 0 in the file.\r
18  * In pallete colour modes the LFB is preceded by a 1024 byte pallete (allowing\r
19  * room for 256 entries of 32-bits each)\r
20 */\r
21 #ifndef _TPL_VIDEO_H\r
22 #define _TPL_VIDEO_H\r
23 \r
24 #include <tpl_drv_common.h>\r
25 \r
26 /**\r
27  * \enum eTplVideo_IOCtl\r
28  * \brief Common Video IOCtl Calls\r
29  * \extends eTplDrv_IOCtl\r
30  */\r
31 enum eTplVideo_IOCtl {\r
32         //! \brief Set Mode - (int mode)\r
33         VIDEO_IOCTL_SETMODE = 4,\r
34         //! \brief Get Mode - (int *mode)\r
35         VIDEO_IOCTL_GETMODE,\r
36         //! \brief Find a matching mode - (tVideo_IOCtl_Mode *info)\r
37         VIDEO_IOCTL_FINDMODE,\r
38         //! \brief Get mode info - (tVideo_IOCtl_Mode *info)\r
39         VIDEO_IOCTL_MODEINFO,\r
40         //! \brief Sets the cursor position (tVideo_IOCtl_Pos *pos)\r
41         VIDEO_IOCTL_SETCURSOR,\r
42         //! \brief Request access to Framebuffer - (void *dest), Return Boolean Success\r
43         VIDEO_IOCTL_REQLFB\r
44 };\r
45 \r
46 /**\r
47  \struct sVideo_IOCtl_Mode\r
48  \brief Mode Structure used in IOCtl Calls\r
49 */\r
50 struct sVideo_IOCtl_Mode {\r
51         short   id;             //!< Mide ID\r
52         Uint16  width;  //!< Width\r
53         Uint16  height; //!< Height\r
54         Uint16  bpp;    //!< Bits per Pixel\r
55 };\r
56 struct sVideo_IOCtl_Pos {\r
57         Sint16  x;\r
58         Sint16  y;\r
59 };\r
60 typedef struct sVideo_IOCtl_Mode        tVideo_IOCtl_Mode;      //!< Mode Type\r
61 typedef struct sVideo_IOCtl_Pos tVideo_IOCtl_Pos;       //!< Mode Type\r
62 \r
63 /**\r
64  * \struct sVT_Char\r
65  * \brief Virtual Terminal Representation of a character\r
66  */\r
67 struct sVT_Char {\r
68         Uint32  Ch;\r
69         union {\r
70                 struct {\r
71                         Uint16  BGCol;\r
72                         Uint16  FGCol;\r
73                 };\r
74                 Uint32  Colour;\r
75         };\r
76 };\r
77 typedef struct sVT_Char tVT_Char;\r
78 \r
79 #define VT_COL_BLACK    0x0000\r
80 #define VT_COL_GREY             0x0888\r
81 #define VT_COL_LTGREY   0x0CCC\r
82 #define VT_COL_WHITE    0x0FFF\r
83 \r
84 #endif\r

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