static bool monochromeMediaFeatureEval(CSSValueImpl *value, RenderStyle *, KHTMLPart *part, MediaFeaturePrefix op) { KHTMLPart *rootPart = part; while (rootPart->parentPart()) { rootPart = rootPart->parentPart(); } DOM::DocumentImpl *doc = static_cast<DOM::DocumentImpl *>(rootPart->document().handle()); QPaintDevice *pd = doc->paintDevice(); bool printing = pd ? (pd->devType() == QInternal::Printer) : false; int depth = 0; if (printing) { if (pd->colorCount() < 2) { depth = 1; } // assume printer is either b&w or color. } else { int sn = QApplication::desktop()->screenNumber(rootPart->view()); if (QApplication::desktop()->screen(sn)->depth() == 1) { depth = 1; } else if (QColormap::instance(sn).mode() == QColormap::Gray) { depth = QApplication::desktop()->screen(sn)->depth(); } } if (value) { float number = 0; return numberValue(value, number) && compareValue(depth, static_cast<int>(number), op); } return depth; }
static bool color_indexMediaFeatureEval(CSSValueImpl *value, RenderStyle *, KHTMLPart *part, MediaFeaturePrefix op) { KHTMLPart *rootPart = part; while (rootPart->parentPart()) { rootPart = rootPart->parentPart(); } DOM::DocumentImpl *doc = static_cast<DOM::DocumentImpl *>(rootPart->document().handle()); QPaintDevice *pd = doc->paintDevice(); bool printing = pd ? (pd->devType() == QInternal::Printer) : false; unsigned int numColors = 0; if (printing) { numColors = pd->colorCount(); } else { int sn = QApplication::desktop()->screenNumber(rootPart->view()); numColors = QApplication::desktop()->screen(sn)->colorCount(); } if (numColors == INT_MAX) { numColors = UINT_MAX; } if (value) { float number = 0; return numberValue(value, number) && compareValue(numColors, static_cast<unsigned int>(number), op); } return numColors; }