PassRefPtr<StyleImage> StyleResourceLoader::loadPendingImage(StylePendingImage* pendingImage, float deviceScaleFactor) { if (pendingImage->cssImageValue()) { CSSImageValue* imageValue = pendingImage->cssImageValue(); return imageValue->cachedImage(m_fetcher); } if (pendingImage->cssImageGeneratorValue()) { CSSImageGeneratorValue* imageGeneratorValue = pendingImage->cssImageGeneratorValue(); imageGeneratorValue->loadSubimages(m_fetcher); return StyleGeneratedImage::create(imageGeneratorValue); } if (pendingImage->cssCursorImageValue()) { CSSCursorImageValue* cursorImageValue = pendingImage->cssCursorImageValue(); return cursorImageValue->cachedImage(m_fetcher, deviceScaleFactor); } if (pendingImage->cssImageSetValue()) { CSSImageSetValue* imageSetValue = pendingImage->cssImageSetValue(); return imageSetValue->cachedImageSet(m_fetcher, deviceScaleFactor); } return 0; }
PassRefPtrWillBeRawPtr<StyleImage> ElementStyleResources::cursorOrPendingFromValue(CSSPropertyID property, const CSSCursorImageValue& value) { if (value.isCachePending(m_deviceScaleFactor)) { m_pendingImageProperties.add(property); return StylePendingImage::create(value); } return value.cachedImage(m_deviceScaleFactor); }
void StyleBuilderFunctions::applyValueCSSPropertyCursor(StyleResolverState& state, CSSValue* value) { state.style()->clearCursorList(); if (value->isValueList()) { CSSValueList* list = toCSSValueList(value); int len = list->length(); state.style()->setCursor(CURSOR_AUTO); for (int i = 0; i < len; i++) { CSSValue* item = list->item(i); if (item->isCursorImageValue()) { CSSCursorImageValue* image = toCSSCursorImageValue(item); state.style()->addCursor(state.styleImage(CSSPropertyCursor, image), image->hotSpot()); } else { state.style()->setCursor(*toCSSPrimitiveValue(item)); } } } else { state.style()->setCursor(*toCSSPrimitiveValue(value)); } }
void StyleBuilderFunctions::applyValueCSSPropertyCursor(StyleResolverState& state, CSSValue* value) { state.style()->clearCursorList(); if (value->isValueList()) { CSSValueList* list = toCSSValueList(value); int len = list->length(); state.style()->setCursor(CURSOR_AUTO); for (int i = 0; i < len; i++) { CSSValue* item = list->item(i); if (item->isCursorImageValue()) { CSSCursorImageValue* image = toCSSCursorImageValue(item); if (image->updateIfSVGCursorIsUsed(state.element())) // Elements with SVG cursors are not allowed to share style. state.style()->setUnique(); state.style()->addCursor(state.styleImage(CSSPropertyCursor, image), image->hotSpotSpecified(), image->hotSpot()); } else { state.style()->setCursor(*toCSSPrimitiveValue(item)); } } } else { state.style()->setCursor(*toCSSPrimitiveValue(value)); } }