class XQueue(XObject):
_FIX_SIZE_ = 8
_queue_ = None
_active_ = False
_context_ = None
def __init__(self):
super().__init__()
self._queue_ = queue.Queue()
def json(self):
alpha = {
"Active": self.getStatus(),
"Context": self.getContext(),
"Size": self.size(),
}
return alpha
def getContext(self):
return self._context_
def setContext(self, context):
self._context_ = context
def isActive(self):
return self._active_
def getStatus(self):
return self._active_
def setStatus(self, status):
self._active_ = status
def queue(self):
return self._queue_
def size(self):
return self.queue().qsize()
def clear(self):
self._queue_.empty()
def push(self, item):
if (self.size() > (self._FIX_SIZE_ - 1)):
self._queue_.get()
return self._queue_.put(item)
def pop(self):
return self._queue_.get()
def list(self):
return list(self._queue_.queue)
DISPLAY_DEVICE
+ DeviceName 0x00000037568febd4 "\\\\.\\DISPLAY1\\Monitor0"
+ DeviceString 0x00000037568febf4 "Surface Panel"
+ DeviceID 0x00000037568fec78 "\\\\?\\DISPLAY#LGD06B1#4&8bc03bf&0&UID8388688#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}" char[128]
+ DeviceKey 0x00000037568fecf8 "\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Class\\{4d36e96e-e325-11ce-bfc1-08002be10318}\\0000"
EDID HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY
C:\Conda\atmosphere>reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\LGD06B1\4&8bc03bf&0&UID8388688\Device Parameters" /v EDID
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\LGD06B1\4&8bc03bf&0&UID8388688\Device Parameters
EDID REG_BINARY 00FFFFFFFFFFFF0030E4B106A1272100001F0104A51B127803EF70A7514CA8260E4F5300000001010101010101010101010101010101DE8A4078B08037703020550012B71000001A000000FD001E78F0F048010A202020202020000000FE004C47445F4D50312E315F0A2020000000FE004C503132395754323132313636017D70132E00000301147F1501883F0B4F0007801F007F071F08410007000301147F1501083F0B4F0007801F007F074F00410007004500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090
INT iNumber = GetSystemMetrics(SM_CMONITORS);
std::cout << "\n" << "Monitor Numbers: " << iNumber << "\n" << std::endl;
HDC hdc = ::GetDC(NULL);
std::vector<MonitorItem> monitorList;
EnumDisplayMonitors(hdc, NULL, EnumMonitorProc, (LPARAM)&monitorList);
typedef struct tagEnumMonitor {
CHAR devName[32];
CHAR vendorName[32];
CHAR firmName[32];
INT isPrimary;
INT capsWidth;
INT capsHeight;
INT metricsWidth;
INT metricsHeight;
} MonitorItem;
void splitString(const std::string& inputString, char ch, std::vector<std::string>& vectorString)
{
std::istringstream iss(inputString);
std::string item;
while (getline(iss, item, ch)) vectorString.push_back(item);
return;
}
std::string hexArrayString(const char* data, size_t size) {
std::stringstream ss;
ss << std::hex << std::setfill('0');
for (size_t i = 0; i < size; ++i) {
ss << std::setw(2) << static_cast<int>(static_cast<unsigned char>(data[i]));
}
return ss.str();
}
std::vector<BYTE> bytes2Vector(const char* charArray) {
size_t length = std::char_traits<char>::length(charArray);
std::vector<BYTE> byteVector(length);
std::copy(charArray, charArray + length, byteVector.begin());
return byteVector;
}
INT index = 0;
BOOL CALLBACK EnumMonitorProc(HMONITOR handle, HDC hdc, LPRECT rect, LPARAM param) {
LONG result;
std::vector<MonitorItem>* list = (std::vector<MonitorItem>*)param;
MONITORINFOEXA mi;
ZeroMemory(&mi, sizeof(mi));
mi.cbSize = sizeof(mi);
GetMonitorInfoA(handle, &mi);
MonitorItem item = { 0 };
INT nWidth = 0, nHeight = 0;
strcpy_s(item.devName, (const char*)mi.szDevice);
DEVMODE devMode = { 0 };
ZeroMemory(&devMode, sizeof(devMode));
devMode.dmSize = sizeof(devMode);
EnumDisplaySettings((item.devName), ENUM_CURRENT_SETTINGS, &devMode);
DISPLAY_DEVICE displayDevice = { 0 };
displayDevice.cb = sizeof(displayDevice);
if (EnumDisplayDevices(mi.szDevice, 0, &displayDevice, EDD_GET_DEVICE_INTERFACE_NAME)) {
strcpy_s(item.vendorName, (const char*)displayDevice.DeviceString);
std::vector<std::string> vectorDeviceID;
splitString(std::string(displayDevice.DeviceID), '#', vectorDeviceID);
HKEY hkey = 0;
DWORD dwType = 0, sl = 256;
CHAR szSubKey[1024] = { 0 }, szData[256] = { 0 };
memset(szSubKey, 0x00, sizeof(szSubKey));
memset(szData, 0x00, sizeof(szData));
if (vectorDeviceID.size() >= 3) {
sprintf_s(szSubKey, 1024, "SYSTEM\\CurrentControlSet\\Enum\\DISPLAY\\%s\\%s\\Device Parameters", vectorDeviceID[1].c_str(), vectorDeviceID[2].c_str());
std::cout << "KEY : " << "" << szSubKey << "" << std::endl;
std::vector<BYTE> edid;
result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szSubKey, NULL, KEY_QUERY_VALUE, &hkey);
if (result == ERROR_SUCCESS) {
dwType = REG_BINARY;
result = RegQueryValueEx(hkey, "EDID", NULL, NULL, (LPBYTE)szData, &sl);
edid = bytes2Vector(szData);
lstrcpyn(item.firmName, vectorDeviceID[1].c_str(), 260);
std::cout << "\tEDID: " << "" << hexArrayString(szData, sizeof(szData)) << "\n" << std::endl;
}
RegCloseKey(hkey);
}
}
item.isPrimary = mi.dwFlags;
item.capsWidth = GetDeviceCaps(hdc, DESKTOPHORZRES);
item.capsHeight = GetDeviceCaps(hdc, DESKTOPVERTRES);
item.metricsWidth = (mi.rcMonitor.right - mi.rcMonitor.left);
item.metricsHeight = (mi.rcMonitor.bottom - mi.rcMonitor.top);
list->push_back(item);
index++;
return true;
}
Defect
if False:
img = np.frombuffer(uintsBitmap, dtype='uint8')
img.shape = (h, w, 4)
if True:
defect = np.uint8(img).copy()
for i in range(len(defect)):
for j in range(len(defect[i])):
tmp = defect[i][j][2]
defect[i][j][2] = defect[i][j][0]
defect[i][j][0] = tmp
img = defect
if False:
img = np.frombuffer(uintsBitmap, dtype='uint8')
img.shape = (h, w, 4)
image = Image.fromarray(img)
image = image.resize(narrow)
zoomIn = np.asarray(image)
if True:
r = Image.fromarray(zoomIn[:, :, 2]).convert('L')
g = Image.fromarray(zoomIn[:, :, 1]).convert('L')
b = Image.fromarray(zoomIn[:, :, 0]).convert('L')
image = Image.merge("RGB", (r, g, b))
<body onselectstart="return disableSelection()" ondblclick="disableDoubleClick()">
</body>
function disableSelection() {
return false;
}
function disableDoubleClick() {
// NOTHING TODO
}