#include "../../SDL_internal.h"
#ifndef SDL_POWER_DISABLED
#if SDL_POWER_WINDOWS
#include "../../core/windows/SDL_windows.h"
#include "SDL_power.h"
SDL_bool
SDL_GetPowerInfo_Windows(SDL_PowerState * state, int *seconds, int *percent)
{
SYSTEM_POWER_STATUS status;
SDL_bool need_details = SDL_FALSE;
if (!GetSystemPowerStatus(&status))
{
*state = SDL_POWERSTATE_UNKNOWN;
} else if (status.BatteryFlag == 0xFF) {
*state = SDL_POWERSTATE_UNKNOWN;
} else if (status.BatteryFlag & (1 << 7)) {
*state = SDL_POWERSTATE_NO_BATTERY;
} else if (status.BatteryFlag & (1 << 3)) {
*state = SDL_POWERSTATE_CHARGING;
need_details = SDL_TRUE;
} else if (status.ACLineStatus == 1) {
*state = SDL_POWERSTATE_CHARGED;
need_details = SDL_TRUE;
} else {
*state = SDL_POWERSTATE_ON_BATTERY;
need_details = SDL_TRUE;
}
*percent = -1;
*seconds = -1;
if (need_details) {
const int pct = (int) status.BatteryLifePercent;
const int secs = (int) status.BatteryLifeTime;
if (pct != 255) {
*percent = (pct > 100) ? 100 : pct;
}
if (secs != 0xFFFFFFFF) {
*seconds = secs;
}
}
return SDL_TRUE;
}
#endif
#endif