private void SaveGeneratedReportItemInstance()
        {
            if (m_dynamicWidth != null || m_dynamicHeight != null)
            {
                return;
            }
            OnDemandProcessingContext odpContext = base.RenderingContext.OdpContext;

            Microsoft.ReportingServices.ReportIntermediateFormat.ReportSnapshot reportSnapshot = odpContext.OdpMetadata.ReportSnapshot;
            IChunkFactory chunkFactory = odpContext.ChunkFactory;

            if (CriDef.RepeatWith == null)
            {
                string text = CreateChunkName();
                using (Stream stream = chunkFactory.CreateChunk(text, Microsoft.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes.GeneratedReportItems, null))
                {
                    new IntermediateFormatWriter(stream, odpContext.GetActiveCompatibilityVersion()).Write(m_generatedReportItem.Instance);
                    stream.Flush();
                }
                reportSnapshot.AddGeneratedReportItemChunkName(GetGeneratedInstanceChunkKey(), text);
            }
            else
            {
                ImageInstance imageInstance = (ImageInstance)m_generatedReportItem.Instance;
                reportSnapshot.AddImageChunkName(name: imageInstance.StreamName = ImageHelper.StoreImageDataInChunk(Microsoft.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes.Image, imageInstance.ImageData, imageInstance.MIMEType, base.RenderingContext.OdpContext.OdpMetadata, base.RenderingContext.OdpContext.ChunkFactory), definitionKey: GetGeneratedInstanceChunkKey());
            }
        }
        private void GenerateReportItemDefinition()
        {
            m_generatedReportItem = null;
            ICustomReportItem controlInstance = base.RenderingContext.OdpContext.CriProcessingControls.GetControlInstance(CriDef.Type, base.RenderingContext.OdpContext.ExtFactory);

            if (controlInstance == null)
            {
                return;
            }
            try
            {
                controlInstance.GenerateReportItemDefinition(this);
            }
            catch (Exception ex)
            {
                base.RenderingContext.ErrorContext.Register(ProcessingErrorCode.rsCRIProcessingError, Severity.Warning, Name, Type);
                Global.Tracer.TraceException(TraceLevel.Error, RPRes.rsCRIProcessingError(Name, Type) + " " + ex.ToString());
                return;
            }
            if (m_generatedReportItem == null)
            {
                base.RenderingContext.ErrorContext.Register(ProcessingErrorCode.rsCRIRenderItemNull, Severity.Warning, CriDef.ObjectType, Name, Type);
                return;
            }
            m_generatedReportItem.ConstructReportItemDefinition();
            m_generatedReportItem.CriGenerationPhase = CriGenerationPhases.None;
            string text = CreateChunkName();
            OnDemandProcessingContext odpContext = base.RenderingContext.OdpContext;

            Microsoft.ReportingServices.ReportIntermediateFormat.ReportSnapshot reportSnapshot = odpContext.OdpMetadata.ReportSnapshot;
            using (Stream stream = odpContext.ChunkFactory.CreateChunk(text, Microsoft.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes.GeneratedReportItems, null))
            {
                IntermediateFormatWriter intermediateFormatWriter = new IntermediateFormatWriter(stream, odpContext.GetActiveCompatibilityVersion());
                Microsoft.ReportingServices.ReportIntermediateFormat.Visibility visibility = m_generatedReportItem.ReportItemDef.Visibility;
                m_generatedReportItem.ReportItemDef.Visibility = null;
                intermediateFormatWriter.Write(m_generatedReportItem.ReportItemDef);
                m_generatedReportItem.ReportItemDef.Visibility = visibility;
                stream.Flush();
            }
            reportSnapshot.AddGeneratedReportItemChunkName(GetGeneratedDefinitionChunkKey(), text);
        }