void avtOriginatingSource::InitPipeline(avtContract_p spec) { if (!ArtificialPipeline()) { if (!CanDoStreaming()) { spec->NoStreaming(); } // // Determine if the data specification is *all* of the data. This is // important to things like facelists. // avtDataRequest_p data = spec->GetDataRequest(); bool uad = data->GetSIL().UsesAllData(); GetOutput()->GetInfo().GetValidity().SetUsingAllData(uad); bool uadom = data->GetSIL().UsesAllDomains(); GetOutput()->GetInfo().GetValidity().SetUsingAllDomains(uadom); if (initializeProgressCallback != NULL && streamingCheckFunction != NULL) { // // Each filter is a stage, plus a stage to get the data. // With streaming, there are only calculate/send stages. // int nstages; if (streamingCheckFunction(streamingCheckFunctionArgs,spec)) { nstages = 1; GetOutput()->GetInfo().GetValidity().SetWhetherStreaming(true); } else { int sourceStages = NumStagesForFetch(data); nstages = spec->GetNFilters() + sourceStages; GetOutput()->GetInfo().GetValidity().SetWhetherStreaming(false); if (numberOfExecutions > 1) nstages *= numberOfExecutions; } bool shouldIssue = false; if (numberOfExecutions <= 1) shouldIssue = true; else if (numberOfExecutions > 1) { if (!haveIssuedProgress) { shouldIssue = true; haveIssuedProgress = true; } } if (shouldIssue) initializeProgressCallback(initializeProgressCallbackArgs, nstages); } } }
avtContract_p avtSurfaceFilter::ModifyContract(avtContract_p spec) { double dataExtents[2]; double spatialExtents[6]; if (TryDataExtents(dataExtents)) { avtDataset_p input = GetTypedInput(); avtDatasetExaminer::GetSpatialExtents(input, spatialExtents); UnifyMinMax(spatialExtents,6); CalculateScaleValues(dataExtents, spatialExtents); stillNeedExtents = false; } else { spec->NoStreaming(); } if (spec->GetDataRequest()->MayRequireZones()) { spec->GetDataRequest()->TurnZoneNumbersOn(); } if (spec->GetDataRequest()->MayRequireNodes()) { spec->GetDataRequest()->TurnNodeNumbersOn(); } // // We will need the ghost zones so that we can interpolate along domain // boundaries and get no cracks in our isosurface. // const char *varname = spec->GetDataRequest()->GetVariable(); avtDataAttributes &in_atts = GetInput()->GetInfo().GetAttributes(); bool skipGhost = false; if (in_atts.ValidVariable(varname) && in_atts.GetCentering(varname) == AVT_NODECENT) skipGhost = true; if (!skipGhost) spec->GetDataRequest()->SetDesiredGhostDataType(GHOST_ZONE_DATA); return spec; }