void SVGFilterRecordingContext::endContent(FilterData* filterData) { ASSERT(filterData->m_state == FilterData::RecordingContent); SourceGraphic* sourceGraphic = filterData->filter->sourceGraphic(); ASSERT(sourceGraphic); GraphicsContext* context = &paintingContext(); // Use the context that contains the filtered content. ASSERT(m_paintController); ASSERT(m_context); context = m_context.get(); context->beginRecording(filterData->filter->filterRegion()); m_paintController->commitNewDisplayItems(); m_paintController->paintArtifact().replay(*context); sourceGraphic->setPicture(context->endRecording()); // Content is cached by the source graphic so temporaries can be freed. m_paintController = nullptr; m_context = nullptr; filterData->m_state = FilterData::ReadyToPaint; }
GraphicsContext* SVGFilterRecordingContext::beginContent(FilterData* filterData) { ASSERT(filterData->m_state == FilterData::Initial); GraphicsContext* context = &paintingContext(); // Create a new context so the contents of the filter can be drawn and cached. m_paintController = PaintController::create(); m_context = adoptPtr(new GraphicsContext(*m_paintController)); context = m_context.get(); filterData->m_state = FilterData::RecordingContent; return context; }
GraphicsContext* SVGFilterRecordingContext::beginContent(FilterData* filterData) { ASSERT(filterData->m_state == FilterData::Initial); GraphicsContext* context = paintingContext(); // Create a new context so the contents of the filter can be drawn and cached. m_displayItemList = DisplayItemList::create(); m_context = adoptPtr(new GraphicsContext(m_displayItemList.get())); context = m_context.get(); filterData->m_state = FilterData::RecordingContent; return context; }