예제 #1
0
static PassRefPtr<FECustomFilter> createCustomFilterEffect(Filter* filter, Document* document, CustomFilterOperation* operation)
{
    if (!isCSSCustomFilterEnabled(document))
        return 0;

    RefPtr<CustomFilterProgram> program = operation->program();
    if (!program->isLoaded())
        return 0;

    CustomFilterGlobalContext* globalContext = document->renderView()->customFilterGlobalContext();
    globalContext->prepareContextIfNeeded(document->view()->hostWindow());
    RefPtr<CustomFilterValidatedProgram> validatedProgram = globalContext->getValidatedProgram(program->programInfo());
    if (!validatedProgram->isInitialized())
        return 0;

    return FECustomFilter::create(filter, globalContext, validatedProgram, operation->parameters(),
                                  operation->meshRows(), operation->meshColumns(),
                                  operation->meshBoxType(), operation->meshType());
}