// Get the current desktop video mode func (mi *monitorInternal) getDesktopMode() VideoMode { win32Mode := C.DEVMODEW{dmSize: C.DEVMODEW_size} C.__EnumDisplaySettingsW(&mi.info.szDevice[0], C.ENUM_CURRENT_SETTINGS, &win32Mode) return VideoMode{ Width: uint(win32Mode.dmPelsWidth), Height: uint(win32Mode.dmPelsHeight), BitsPerPixel: uint(win32Mode.dmBitsPerPel), } }
// Get the list of all the supported fullscreen video modes func (mi *monitorInternal) getFullscreenVideoModes() []VideoMode { // Enumerate all available video modes for the primary display adapter mode_set := make(map[VideoMode]bool) for win32Mode, count := (C.DEVMODEW{dmSize: C.DEVMODEW_size}), C.DWORD(0); C.__EnumDisplaySettingsW(&mi.info.szDevice[0], count, &win32Mode) != 0; count++ { vm := VideoMode{ Width: uint(win32Mode.dmPelsWidth), Height: uint(win32Mode.dmPelsHeight), BitsPerPixel: uint(win32Mode.dmBitsPerPel), } mode_set[vm] = true } // add them all into the slice modes := make([]VideoMode, 0, len(mode_set)) for mode, _ := range mode_set { modes = append(modes, mode) } return modes }