本文整理汇总了C++中Filter::getSourceGraphic方法的典型用法代码示例。如果您正苦于以下问题:C++ Filter::getSourceGraphic方法的具体用法?C++ Filter::getSourceGraphic怎么用?C++ Filter::getSourceGraphic使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Filter
的用法示例。
在下文中一共展示了Filter::getSourceGraphic方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: prepareEffect
GraphicsContext* SVGFilterPainter::prepareEffect(
const LayoutObject& object,
SVGFilterRecordingContext& recordingContext) {
m_filter.clearInvalidationMask();
if (FilterData* filterData = m_filter.getFilterDataForLayoutObject(&object)) {
// If the filterData already exists we do not need to record the content
// to be filtered. This can occur if the content was previously recorded
// or we are in a cycle.
if (filterData->m_state == FilterData::PaintingFilter)
filterData->m_state = FilterData::PaintingFilterCycleDetected;
if (filterData->m_state == FilterData::RecordingContent)
filterData->m_state = FilterData::RecordingContentCycleDetected;
return nullptr;
}
SVGFilterGraphNodeMap* nodeMap = SVGFilterGraphNodeMap::create();
FilterEffectBuilder builder(nullptr, object.objectBoundingBox(), 1);
Filter* filter = builder.buildReferenceFilter(
toSVGFilterElement(*m_filter.element()), nullptr, nodeMap);
if (!filter || !filter->lastEffect())
return nullptr;
IntRect sourceRegion = enclosingIntRect(
intersection(filter->filterRegion(), object.strokeBoundingBox()));
filter->getSourceGraphic()->setSourceRect(sourceRegion);
FilterData* filterData = FilterData::create();
filterData->lastEffect = filter->lastEffect();
filterData->nodeMap = nodeMap;
// TODO(pdr): Can this be moved out of painter?
m_filter.setFilterDataForLayoutObject(const_cast<LayoutObject*>(&object),
filterData);
return recordingContext.beginContent(filterData);
}
示例2: endContent
void SVGFilterRecordingContext::endContent(FilterData* filterData) {
DCHECK_EQ(filterData->m_state, FilterData::RecordingContent);
Filter* filter = filterData->lastEffect->getFilter();
SourceGraphic* sourceGraphic = filter->getSourceGraphic();
DCHECK(sourceGraphic);
// Use the context that contains the filtered content.
DCHECK(m_paintController);
DCHECK(m_context);
m_context->beginRecording(filter->filterRegion());
m_paintController->commitNewDisplayItems();
m_paintController->paintArtifact().replay(*m_context);
SkiaImageFilterBuilder::buildSourceGraphic(sourceGraphic,
m_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;
}