mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-11-08 22:20:17 +01:00
PhycialDisplay: detect phycial size
This commit is contained in:
@@ -5,6 +5,8 @@ typedef struct FFPhycialDisplayResult
|
||||
FFstrbuf name;
|
||||
uint32_t width; // native / maximum resolution, in pixels
|
||||
uint32_t height; // native / maximum resolution, in pixels
|
||||
uint32_t phycialWidth; // in mm
|
||||
uint32_t phycialHeight; // in mm
|
||||
} FFPhycialDisplayResult;
|
||||
|
||||
const char* ffDetectPhycialDisplay(FFlist* results);
|
||||
|
||||
@@ -31,6 +31,10 @@ static const char* detectWithDisplayServices(const FFDisplayServerResult* displa
|
||||
CFDictionaryRef productNames;
|
||||
if(!ffCfDictGetDict(displayInfo, CFSTR(kDisplayProductName), &productNames))
|
||||
ffCfDictGetString(productNames, CFSTR("en_US"), &phycialDisplay->name);
|
||||
|
||||
CGSize size = CGDisplayScreenSize((CGDirectDisplayID) display->id);
|
||||
phycialDisplay->phycialWidth = (uint32_t) (size.width + 0.5);
|
||||
phycialDisplay->phycialHeight = (uint32_t) (size.height + 0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -83,14 +87,16 @@ static const char* detectWithDdcci(FFlist* results)
|
||||
continue;
|
||||
|
||||
uint32_t width, height;
|
||||
ffEdidGetPhycialResolution(CFDataGetBytePtr(edid), &width, &height);
|
||||
const uint8_t* edidData = CFDataGetBytePtr(edid);
|
||||
ffEdidGetPhycialResolution(edidData, &width, &height);
|
||||
if (width == 0 || height == 0) continue;
|
||||
|
||||
FFPhycialDisplayResult* display = (FFPhycialDisplayResult*) ffListAdd(results);
|
||||
display->width = width;
|
||||
display->height = height;
|
||||
ffStrbufInit(&display->name);
|
||||
ffEdidGetName(CFDataGetBytePtr(edid), &display->name);
|
||||
ffEdidGetName(edidData, &display->name);
|
||||
ffEdidGetPhycialSize(edidData, &display->phycialWidth, &display->phycialHeight);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ const char* ffDetectPhycialDisplay(FFlist* results)
|
||||
display->width = width;
|
||||
display->height = height;
|
||||
ffStrbufInitS(&display->name, plainName);
|
||||
ffEdidGetPhycialSize(edidData, &display->phycialWidth, &display->phycialHeight);
|
||||
}
|
||||
|
||||
ffStrbufSubstrBefore(&drmDir, drmDirLength);
|
||||
|
||||
@@ -36,13 +36,12 @@ const char* ffDetectPhycialDisplay(FFlist* results)
|
||||
ffEdidGetPhycialResolution(edidData, &width, &height);
|
||||
if (width == 0 || height == 0) continue;
|
||||
|
||||
wchar_t wName[MAX_PATH] = {}; // MONITOR\BOE09F9
|
||||
if (!SetupDiGetDeviceRegistryPropertyW(hdev, &did, SPDRP_HARDWAREID, NULL, (BYTE*) wName, sizeof(wName), NULL)) continue;
|
||||
|
||||
FFPhycialDisplayResult* display = (FFPhycialDisplayResult*) ffListAdd(results);
|
||||
display->width = width;
|
||||
display->height = height;
|
||||
ffStrbufInitWS(&display->name, wcschr(wName, L'\\') + 1);
|
||||
ffStrbufInit(&display->name);
|
||||
ffEdidGetName(edidData, &display->name);
|
||||
ffEdidGetPhycialSize(edidData, &display->phycialWidth, &display->phycialHeight);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user