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.Dd October 28, 1999 29.Dt VGL 3 30.Os FreeBSD 3.0 31.Sh NAME 32.Nm VGLBitmapCopy , 33.Nm VGLBitmapPutChar , 34.Nm VGLBitmapString , 35.Nm VGLBlankDisplay , 36.Nm VGLBox , 37.Nm VGLCheckSwitch , 38.Nm VGLClear , 39.Nm VGLEllipse , 40.Nm VGLEnd , 41.Nm VGLFilledBox , 42.Nm VGLFilledEllipse , 43.Nm VGLInit , 44.Nm VGLLine , 45.Nm VGLMouseInit , 46.Nm VGLMouseMode , 47.Nm VGLMouseSetImage , 48.Nm VGLMouseSetStdImage , 49.Nm VGLMouseStatus , 50.Nm VGLSetBorder , 51.Nm VGLSetPalette , 52.Nm VGLSetPaletteIndex , 53.Nm VGLTextSetFontFile 54.Nd Video Graphics Library functions (libvgl) 55.Sh SYNOPSIS 56.Fd #include <vgl.h> 57.Ft int 58.Fn VGLInit "int mode" 59.Ft void 60.Fn VGLEnd "void" 61.Ft void 62.Fn VGLCheckSwitch "void" 63.Ft int 64.Fn VGLTextSetFontFile "char *filename" 65.Ft int 66.Fn VGLMouseInit "int mode" 67.Ft void 68.Fn VGLMouseMode "int mode" 69.Ft int 70.Fn VGLMouseStatus "int *x" "int *y" "char *buttons" 71.Ft void 72.Fn VGLMouseSetImage "VGLBitmap *AndMask" "VGLBitmap *OrMask" 73.Ft void 74.Fn VGLMouseSetStdImage "void" 75.Ft void 76.Fn VGLLine "VGLBitmap *object" "int x1" "int y1" "int x2" "int y2" "byte color" 77.Ft void 78.Fn VGLBox "VGLBitmap *object" "int x1" "int y1" "int x2" "int y2" "byte color" 79.Ft void 80.Fn VGLFilledBox "VGLBitmap *object" "int x1" "int y1" "int x2" "int y2" "byte color" 81.Ft void 82.Fn VGLEllipse "VGLBitmap *object" "int xc" "int yc" "int a" "int b" "byte color" 83.Ft void 84.Fn VGLFilledEllipse "VGLBitmap *object" "int xc" "int yc" "int a" "int b" "byte color" 85.Ft int 86.Fn VGLBitmapCopy "VGLBitmap *src" "int srcx" "int srcy" "VGLBitmap *dst" "int dstx" "int dsty" "int width" "int hight" 87.Ft void 88.Fn VGLBitmapPutChar "VGLBitmap *Object" "int x" "int y" "byte ch" "byte fgcol" "byte bgcol" "int fill" "int dir" 89.Ft void 90.Fn VGLBitmapString "VGLBitmap *Object" "int x" "int y" "char *str" "byte fgcol" "byte bgcol" "int fill" "int dir" 91.Ft void 92.Fn VGLClear "VGLBitmap *object" "byte color" 93.Ft void 94.Fn VGLSetPalette "byte *red" "byte *green" "byte *blue" 95.Ft void 96.Fn VGLSetPaletteIndex "byte color" "byte red" "byte green" "byte blue" 97.Ft void 98.Fn VGLSetBorder "byte color" 99.Ft void 100.Fn VGLBlankDisplay "int blank" 101.Sh DESCRIPTION 102.Nm Libvgl 103is a library that enables the programmer access to the graphics 104modes supported by the console driver (syscons). The library takes care of 105programming the actual video hardware, and provides a number of simple 106functions to do various graphic operations. There is also support for a 107mouse via the standard mouse system in 108.Fx , 109see 110.Xr mouse 4 , 111including the ability to transparently have a mouse pointer superimposed on 112the graphic image currently being worked on. 113The library takes care of screen switching by storing the current image in 114memory before switching to another virtual console, and restoring when the 115user switches back. This allows several graphic applications at once, but 116on different virtual consoles. 117 118Below is a short description of the various functions: 119.Pp 120.Fn VGLInit 121initialize the library and set up the graphic mode 122.Em mode . 123.Pp 124.Fn VGLEnd 125terminate graphic mode, and restore the screenmode that was active before 126.Fn VGLInit 127was called. 128.Pp 129.Fn VGLCheckSwitch 130if the program goes into longer periods of processing without doing 131any graphics output, calling this function occasionally will allow 132the system to switch screens. 133.Pp 134.Fn VGLTextSetFontFile 135instruct the char/string functions to use the font in file 136.Em filename 137instead of the builtin font. 138.Pp 139.Fn VGLMouseInit 140initialize the mouse. The optional on-screen mouse pointer is shown if the 141argument is 142.Em VGL_MOUSESHOW . 143.Pp 144.Fn VGLMouseMode 145either shows the mouse pointer if the argument is 146.Em VGL_MOUSESHOW , 147or hides the mouse pointer if the argument is 148.Em VGL_MOUSEHIDE . 149.Pp 150.Fn VGLMouseStatus 151returns the current mouse pointer coordinates and button state in 152.Em x , y , 153buttons. The return value reflects if the mouse pointer 154is currently shown on screen or not. 155.Pp 156.Fn VGLMouseSetImage 157with this function it is possible to change the image of the mouse pointer 158on screen. 159.Pp 160.Fn VGLMouseSetStdImage 161this function restores the mouse pointer to the standard arrow. 162.Pp 163.Fn VGLLine 164draw a line from 165.Em x1 , y1 166to 167.Em x2 , y2 168in color 169.Em color . 170.Pp 171.Fn VGLBox 172draw a box with upper left hand corner at 173.Em x1 , y1 174and lower right hand corner at 175.Em x2 , y2 176in color 177.Em color . 178.Pp 179.Fn VGLFilledBox 180draw a filled (solid) box with upper left hand corner at 181.Em x1 , y1 182and lower right hand corner at 183.Em x2 , y2 184in color 185.Em color . 186.Pp 187.Fn VGLEllipse 188draw an ellipse centered at 189.Em xc , yc 190make it 191.Em a 192pixels wide, and 193.Em b 194pixels high in color 195.Em color . 196.Pp 197.Fn VGLFilledEllipse 198draw a filled (solid) ellipse centered at 199.Em xc , yc 200make it 201.Em a 202pixels wide, and 203.Em b 204pixels high in color 205.Em color . 206.Pp 207.Fn VGLBitmapCopy 208copy a rectangle of pixels from bitmap 209.Em src 210upper left hand corner at 211.Em srcx , srcy 212to bitmap 213.Em dst 214at 215.Em dstx , dsty 216of the size 217.Em width , height . 218.Pp 219.Fn VGLBitmapPutChar 220write the character 221.Em ch 222at position 223.Em x , y 224in foreground color 225.Em fgcol . 226If 227.Em fill 228is != 0, use the color 229.Em bgcol 230as background otherwise the background is transparent. 231The character is drawn in the direction specified by the argument 232.Em dir . 233.Pp 234.Fn VGLBitmapString 235write the string 236.Em str 237at position 238.Em x , y 239in foreground color 240.Em fgcol . 241If 242.Em fill 243is != 0, use the color 244.Em bgcol 245as background otherwise the background is transparent. 246The string is drawn in the direction specified by the argument 247.Em dir . 248.Pp 249.Fn VGLClear 250clears the entire bitmap to color 251.Em color . 252.Pp 253.Fn VGLSetPalette 254this function sets the palette used, the arguments 255.Em red , green , blue 256should point to byte arrays of 256 positions each. 257.Pp 258.Fn VGLSetPaletteIndex 259set the palette index 260.Em color 261to the specified RGB value. 262.Pp 263.Fn VGLSetBorder 264set the border color to color 265.Em color . 266.Pp 267.Fn VGLBlankDisplay 268blank the display if the argment 269.Em blank 270!= 0. This can be done to shut off the screen during display updates that 271the user should first see when it's done. 272.Sh AUTHORS 273.An S�ren Schmidt Aq sos@FreeBSD.org 274.Sh HISTORY 275The 276.Nm vgl 277library appeared in 278.Fx 3.0