virtual nsIntRegion ComputeChangeInternal(NotifySubDocInvalidationFunc aCallback, bool& aGeometryChanged) { ImageLayer* imageLayer = static_cast<ImageLayer*>(mLayer.get()); if (!imageLayer->GetVisibleRegion().IsEqual(mVisibleRegion)) { aGeometryChanged = true; IntRect result = NewTransformedBounds(); result = result.Union(OldTransformedBounds()); return result; } ImageContainer* container = imageLayer->GetContainer(); if (mContainer != container || mFilter != imageLayer->GetFilter() || mScaleToSize != imageLayer->GetScaleToSize() || mScaleMode != imageLayer->GetScaleMode()) { aGeometryChanged = true; if (mIsMask) { // Mask layers have an empty visible region, so we have to // use the image size instead. IntSize size = container->GetCurrentSize(); IntRect rect(0, 0, size.width, size.height); return TransformRect(rect, mLayer->GetLocalTransform()); } else { return NewTransformedBounds(); } } return IntRect(); }
virtual nsIntRect ComputeChangeInternal(NotifySubDocInvalidationFunc aCallback) { ImageLayer* image = static_cast<ImageLayer*>(mLayer); if (!image->GetVisibleRegion().IsEqual(mVisibleRegion)) { nsIntRect result = NewTransformedBounds(); result = result.Union(OldTransformedBounds()); return result; } if (mContainer != image->GetContainer() || mFilter != image->GetFilter() || mScaleToSize != image->GetScaleToSize() || mScaleMode != image->GetScaleMode()) { return NewTransformedBounds(); } return nsIntRect(); }