1.\" Copyright (c) 1997 S�ren Schmidt 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer, 9.\" in this position and unchanged. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 3. The name of the author may not be used to endorse or promote products 14.\" derived from this software withough specific prior written permission. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26.\" 27.\" $FreeBSD$ 28 29.Dd August 13, 1997 30.Dt VGL 3 31.Os FreeBSD 3 32.Sh NAME 33.Nm vgl 34.Nd Video Graphics Library functions 35.Sh SYNOPSIS 36.Fd #include <vgl.h> 37 38.Sh DESCRIPTION 39Libvgl is a library that enables the programmer access to the graphics 40modes supported by the console driver (syscons). The library takes care of 41programming the actual video hardware, and provides a number of simple 42functions to do various graphic operations. There is also support for a 43mouse via the standard mouse system in FreeBSD, see 44.Fn moused 45, including the ability to transparently have a mouse pointer superimposed on 46the graphic image currently being worked on. 47The library takes care of screen switching by storing the current image in 48memory before switching to another virtual console, and restoring when the 49user switches back. This allows several graphic applications at once, but 50on different virtual consoles. 51 52Below is a short description of the various functions: 53 54.Sh AUTHORS 55.An S�ren Schmidt Aq sos@FreeBSD.org 56 57.Sh FUNCTIONS 58 59.Ft int 60.Fn VGLInit "int mode" 61 62Initialize the library and set up the graphic mode 63.Em mode . 64 65 66.Ft void 67.Fn VGLEnd "void" 68 69Terminate graphic mode, and restore the screenmode that was active before 70.Fn VGLInit 71was called. 72 73 74.Ft void 75.Fn VGLCheckSwitch "void" 76 77If the program goes into longer periods of processing without doing 78any graphics output, calling this function occasionally will allow 79the system to switch screens. 80 81 82.Ft int 83.Fn VGLTextSetFontFile "char *filename" 84 85Instruct the char/string functions to use the font in file 86.Em filename 87instead of the builtin font. 88 89 90.Ft int 91.Fn VGLMouseInit "int mode" 92 93Initialize the mouse. The optional on-screen mouse pointer is shown if the 94argument is 95.Em VGL_MOUSESHOW . 96 97 98.Ft void 99.Fn VGLMouseMode "int mode" 100 101Either shows the mouse pointer if the argument is 102.Em VGL_MOUSESHOW 103, or hides the mouse pointer if the argument is 104.Em VGL_MOUSEHIDE . 105 106 107.Ft int 108.Fn VGLMouseStatus "int *x" "int *y" "char *buttons" 109 110Returns the current mouse pointer coordinates and button state in 111.Em x, y 112, buttons. The return value reflects if the mouse pointer 113is currently shown on screen or not. 114 115 116.Ft void 117.Fn VGLMouseSetImage "VGLBitmap *AndMask" "VGLBitmap *OrMask" 118 119With this function it is possible to change the image of the mouse pointer 120on screen. 121 122 123.Ft void 124.Fn VGLMouseSetStdImage "void" 125 126This function restores the mouse pointer to the standard arrow. 127 128 129.Ft void 130.Fn VGLLine "VGLBitmap *object" "int x1" "int y1" "int x2" "int y2" "byte color" 131 132Draw a line from 133.Em x1, y1 134to 135.Em x2, y2 136in color 137.Em color . 138 139 140.Ft void 141.Fn VGLBox "VGLBitmap *object" "int x1" "int y1" "int x2" "int y2" "byte color" 142 143Draw a box with upper left hand corner at 144.Em x1, y1 145and lower right hand corner at 146.Em x2, y2 147in color 148.Em color . 149 150 151.Ft void 152.Fn VGLFilledBox "VGLBitmap *object" "int x1" "int y1" "int x2" "int y2" "byte color" 153 154Draw a filled (solid) box with upper left hand corner at 155.Em x1, y1 156and lower right hand corner at 157.Em x2, y2 158in color 159.Em color . 160 161 162.Ft void 163.Fn VGLEllipse "VGLBitmap *object" "int xc" "int yc" "int a" "int b" "byte color" 164 165Draw an ellipse centered at 166.Em xc, yc 167make it 168.Em a 169pixels wide, and 170.Em b 171pixels high in color 172.Em color . 173 174 175.Ft void 176.Fn VGLFilledEllipse "VGLBitmap *object" "int xc" "int yc" "int a" "int b" "byte color" 177 178Draw a filled (solid) ellipse centered at 179.Em xc, yc 180make it 181.Em a 182pixels wide, and 183.Em b 184pixels high in color 185.Em color . 186 187 188.Ft int 189.Fn VGLBitmapCopy "VGLBitmap *src" "int srcx" "int srcy" "VGLBitmap *dst" "int dstx" "int dsty" "int width" "int hight" 190 191Copy a rectangle of pixels from bitmap 192.Em src 193upper left hand corner at 194.Em srcx, srcy 195to bitmap 196.Em dst 197at 198.Em dstx, dsty 199of the size 200.Em width, height . 201 202 203.Ft void 204.Fn VGLBitmapPutChar "VGLBitmap *Object" "int x" "int y" "byte ch" "byte fgcol" "byte bgcol" "int fill" "int dir" 205 206Write the character 207.Em ch 208at position 209.Em x, y 210in foreground color 211.Em fgcol. 212If 213.Em fill 214is != 0, use the color 215.Em bgcol 216as background otherwise the background is transparent. 217The character is drawn in the direction specified by the argument 218.Em dir . 219 220 221.Ft void 222.Fn VGLBitmapString "VGLBitmap *Object" "int x" "int y" "char *str" "byte fgcol" "byte bgcol" "int fill" "int dir" 223 224Write the string 225.Em str 226at position 227.Em x, y 228in foreground color 229.Em fgcol. 230If 231.Em fill 232is != 0, use the color 233.Em bgcol 234as background otherwise the background is transparent. 235The string is drawn in the direction specified by the argument 236.Em dir . 237 238.Ft void 239.Fn VGLClear "VGLBitmap *object" "byte color" 240 241Clears the entire bitmap to color 242.Em color . 243 244 245.Ft void 246.Fn VGLSetPalette "byte *red" "byte *green" "byte *blue" 247 248This function sets the palette used, the arguments 249.Em red, green, blue 250should point to byte arrays of 256 positions each. 251 252 253.Ft void 254.Fn VGLSetPaletteIndex "byte color" "byte red" "byte green" "byte blue" 255 256Set the palette index 257.Em color 258to the specified RGB value. 259 260 261.Ft void 262.Fn VGLSetBorder "byte color" 263 264Set the border color to color 265.Em color . 266 267 268.Ft void 269.Fn VGLBlankDisplay "int blank" 270 271Blank the display if the argment 272.Em blank 273!= 0. This can be done to shut off the screen during display updates that 274the user should first see when it's done. 275 276 277.Sh HISTORY 278The 279.Nm 280library appeared in FreeBSD 3.0 281