Brightness: add new module (macOS)

It turns out that merging brightness module into resolution module is a bad idea.
This commit is contained in:
李通洲
2023-01-09 18:59:02 +08:00
parent 8db1534ef3
commit d9a022ffff
14 changed files with 140 additions and 2 deletions
+17
View File
@@ -0,0 +1,17 @@
#pragma once
#ifndef FF_INCLUDED_detection_brightness_brightness
#define FF_INCLUDED_detection_brightness_brightness
#include "fastfetch.h"
#include "util/FFlist.h"
typedef struct FFBrightnessResult
{
FFstrbuf name;
float value;
} FFBrightnessResult;
const char* ffDetectBrightness(FFlist* result); // list of FFBrightnessResult
#endif
@@ -0,0 +1,33 @@
#include "brightness.h"
#include <CoreGraphics/CoreGraphics.h>
extern int DisplayServicesGetBrightness(CGDirectDisplayID display, float *brightness) __attribute__((weak_import));
const char* ffDetectBrightness(FFlist* result)
{
if(DisplayServicesGetBrightness == NULL)
return "DisplayServices function DisplayServicesGetBrightness is not available";
CGDirectDisplayID screens[128];
uint32_t screenCount;
if(CGGetOnlineDisplayList(sizeof(screens) / sizeof(screens[0]), screens, &screenCount) != kCGErrorSuccess)
return "CGGetOnlineDisplayList() failed";
for(uint32_t i = 0; i < screenCount; i++)
{
CGDirectDisplayID screen = screens[i];
float brightness;
if(DisplayServicesGetBrightness(screen, &brightness) != kCGErrorSuccess)
continue;
FFBrightnessResult* display = (FFBrightnessResult*) ffListAdd(result);
if(CGDisplayIsBuiltin(screen))
ffStrbufInitS(&display->name, "built-in");
else
ffStrbufInitF(&display->name, "external-%u", (unsigned) screen);
display->value = brightness * 100;
}
return NULL;
}
@@ -0,0 +1,6 @@
#include "brightness.h"
const char* ffDetectBrightness(FF_UNUSED_PARAM FFlist* result)
{
return "Not supported on this platform";
}