Ottenere informazioni sugli schermi disponibili mediante le funzioni del API di X11
Da Gambas-it.org - Wikipedia.
Versione del 25 set 2013 alle 05:55 di Vuott (Discussione | contributi) (Creata pagina con 'La libreria '''Xlib''' dello ''X Window System Standard'', versione 11, consente - fra l'altro - anche di ottenere alcune informazioni in ordine agli schermi disponibili. Si ...')
La libreria Xlib dello X Window System Standard, versione 11, consente - fra l'altro - anche di ottenere alcune informazioni in ordine agli schermi disponibili.
Si richiamerà l'attuale libreria condivisa di X11: "libX11.so.6.3.0".
Mostriamo di seguito un breve codice esemplificativo:
Library "libX11:6.3.0" ' Display *XOpenDisplay(display_name) ' opens a connection to the X server that controls a display. Private Extern XOpenDisplay(displayP As Pointer) As Pointer ' int XDefaultScreen (display) ' returns the default screen number referenced by the XOpenDisplay function. Private Extern XDefaultScreen(displayP As Pointer) As Integer ' int XDefaultDepth (display, screen_number) ' returns the depth (number of planes) of the default root window for the specified screen. Private Extern XDefaultDepth(displayP As Pointer, screen_number As Integer) As Integer ' int XConnectionNumber(display) ' returns a connection number for the specified display. Private Extern XConnectionNumber(displayP As Pointer) As Integer ' char *XDisplayName(string) ' returns the name of the display that XOpenDisplay would attempt to use. Private Extern XDisplayName(disp_string$ As Pointer) As Pointer ' int XDisplayWidth (display, screen_number) ' Returns the width of the screen in pixels. Private Extern XDisplayWidth(displayP As Pointer, screen_number As Integer) As Integer ' int XDisplayHeight(display, screen_number) ' Returns an integer that describes the height of the screen in pixels. Private Extern XDisplayHeight(displayP As Pointer, screen_number As Integer) As Integer ' int XDisplayWidthMM (display, screen_number) ' returns the width of the specified screen in millimeters. Private Extern XDisplayWidthMM(displayP As Pointer, screen_number As Integer) As Integer ' unsigned long XBlackPixel (display, screen_number) ' returns the black pixel value for the specified screen. Private Extern XBlackPixel(displayP As Pointer, screen_number As Integer) As Long ' unsigned long XWhitePixel (display, screen_number) ' returns the white pixel value for the specified screen. Private Extern XWhitePixel(displayP As Pointer, screen_number As Integer) As Long ' int *XListDepths(display, screen_number, count_return) ' returns the array of depths that are available on the specified screen. Private Extern XListDepths(displayP As Pointer, screen_number As Integer, count_return As Pointer) As Pointer ' int XScreenCount(display) ' returns the number of available screens. Private Extern XScreenCount(displayP As Pointer) As Integer ' XCloseDisplay (display) ' closes a display or disconnect from the X server. Private Extern XCloseDisplay(displayP As Pointer) Public Sub Main() Dim display_name, lista, lista_prof As Pointer Dim depth, screen, connection As Integer Dim listrm As Stream Dim j, b As Byte ' Opening display and setting defaults: display_name = XOpenDisplay(Null) screen = XDefaultScreen(display_name) depth = XDefaultDepth(display_name, screen) If depth = 1 Then Print "E' evidente che hai un monitor preistorico !" Else Print "Stai utilizzando un monitor a colori con profondità: " & depth Endif connection = XConnectionNumber(display_name) Print "Il numero di connessione è "; connection ' Mostra le informazioni relative allo schermo: Print "Lo schermo è: " & String@(XDisplayName(display_name)) Print "La larghezza dello schermo è: "; XDisplayWidth(display_name, screen) Print "L'altezza dello schermo è: "; XDisplayHeight(display_name, screen) Print "La larghezza dello schermo è di " & XDisplayWidthMM(display_name, screen) & " millimetri" Print "Valore dei pixel neri dello schermo: " & XBlackPixel(display_name, screen) Print "Valore dei pixel bianchi dello schermo: " & XWhitePixel(display_name, screen) lista = Alloc(SizeOf(gb.Integer)) lista_prof = XListDepths(display_name, screen, lista) Print "Numero di valori disponibili della profondità dello schermo: "; Int@(lista) ' Dereferenziamo la variabile di tipo "puntatore" mediante i "Memory-Stream": listrm = Memory lista_prof For Read For j = 0 To (Int@(lista) - 1) * 4 Step 4 Seek #listrm, j Read #listrm, b Print "Valore profondità disponibile: "; b Next Print "Schermi disponibili = "; XScreenCount(display_name) ' Chiude la libreria: XCloseDisplay(display_name) ' Libera la memoria allocata: Free(lista) End