bool disk_super_block::IsValid() const { if (Magic1() != (int32)SUPER_BLOCK_MAGIC1 || Magic2() != (int32)SUPER_BLOCK_MAGIC2 || Magic3() != (int32)SUPER_BLOCK_MAGIC3 || (int32)block_size != inode_size || ByteOrder() != SUPER_BLOCK_FS_LENDIAN || (1UL << BlockShift()) != BlockSize() || AllocationGroups() < 1 || AllocationGroupShift() < 1 || BlocksPerAllocationGroup() < 1 || NumBlocks() < 10 || AllocationGroups() != divide_roundup(NumBlocks(), 1L << AllocationGroupShift())) return false; return true; }
// Convert HLS to RGB. /* static */ COLORREF MyGraph::HLStoRGB(WORD wH, WORD wL, WORD wS) { _ASSERTE(0 <= wH && 240 >= wH && "Illegal hue value"); _ASSERTE(0 <= wL && 240 >= wL && "Illegal lum value"); _ASSERTE(0 <= wS && 240 >= wS && "Illegal sat value"); WORD wR(0); WORD wG(0); WORD wB(0); // Achromatic case. if (0 == wS) { wR = wG = wB = (wL * RGBMAX) / HLSMAX; if (UNDEFINED != wH) { _ASSERTE(! "ERROR"); } } else { // Chromatic case. WORD Magic1(0); WORD Magic2(0); // Set up magic numbers. if (wL <= HLSMAX / 2) { Magic2 = (wL * (HLSMAX + wS) + (HLSMAX / 2)) / HLSMAX; } else { Magic2 = wL + wS - ((wL * wS) + (HLSMAX / 2)) / HLSMAX; } Magic1 = 2 * wL - Magic2; // Get RGB, change units from HLSMAX to RGBMAX. wR = (HueToRGB(Magic1, Magic2, wH + (HLSMAX / 3)) * RGBMAX + (HLSMAX / 2)) / HLSMAX; wG = (HueToRGB(Magic1, Magic2, wH) * RGBMAX + (HLSMAX / 2)) / HLSMAX; wB = (HueToRGB(Magic1, Magic2, wH - (HLSMAX / 3)) * RGBMAX + (HLSMAX / 2)) / HLSMAX; } return RGB(wR,wG,wB); }