Пример #1
0
        internal override void WriteCustomNonSharedItemProps(BinaryWriter spbifWriter, RPLWriter rplWriter, PageContext pageContext)
        {
            Microsoft.ReportingServices.OnDemandReportRendering.Image image = (Microsoft.ReportingServices.OnDemandReportRendering.Image)m_source;
            ImageInstance imageInstance = (ImageInstance)image.Instance;

            System.Drawing.Image gdiImage = null;
            bool flag = AutoSizeImage(pageContext, imageInstance, out gdiImage);

            try
            {
                if (flag)
                {
                    WriteImage(null, "InvalidImage", spbifWriter, pageContext, gdiImage);
                }
                else
                {
                    WriteImage(imageInstance, null, spbifWriter, pageContext, gdiImage);
                }
            }
            finally
            {
                if (gdiImage != null)
                {
                    gdiImage.Dispose();
                    gdiImage = null;
                }
            }
            WriteActionInfo(image.ActionInfo, spbifWriter, pageContext, 7);
            WriteImageMapAreaInstanceCollection(imageInstance.ActionInfoWithDynamicImageMapAreas, spbifWriter, pageContext);
        }
Пример #2
0
 internal Image(Microsoft.ReportingServices.OnDemandReportRendering.Image source, PageContext pageContext, bool createForRepeat)
     : base(source)
 {
     if (pageContext != null)
     {
         if (createForRepeat)
         {
             m_itemPageSizes = pageContext.GetSharedFromRepeatItemSizesElement(source, isPadded: false);
         }
         else
         {
             m_itemPageSizes = pageContext.GetSharedItemSizesElement(source, isPadded: false);
         }
     }
     else
     {
         m_itemPageSizes = new ItemSizes(source);
     }
     if (source.Sizing == Microsoft.ReportingServices.OnDemandReportRendering.Image.Sizings.AutoSize)
     {
         if (m_itemPageSizes.Width == 0.0)
         {
             m_itemPageSizes.Width = 3.8;
         }
         if (m_itemPageSizes.Height == 0.0)
         {
             m_itemPageSizes.Height = 4.0;
         }
     }
 }
Пример #3
0
 private void DetermineSize(PageContext pageContext)
 {
     if (!m_invalidImage && m_streamName == null && m_imageProps == null)
     {
         Microsoft.ReportingServices.OnDemandReportRendering.Image image = (Microsoft.ReportingServices.OnDemandReportRendering.Image)m_source;
         CheckAutoSize(image, pageContext);
     }
     if (m_imageProps != null)
     {
         ResizeImage(pageContext, m_imageProps.Width, m_imageProps.Height);
     }
     else
     {
         if (m_streamName == null)
         {
             return;
         }
         Hashtable autoSizeSharedImages = pageContext.AutoSizeSharedImages;
         if (autoSizeSharedImages != null)
         {
             AutosizeImageProps autosizeImageProps = (AutosizeImageProps)autoSizeSharedImages[m_streamName];
             if (autosizeImageProps != null)
             {
                 ResizeImage(pageContext, autosizeImageProps.Width, autosizeImageProps.Height);
             }
         }
     }
 }
Пример #4
0
 internal override void CacheNonSharedProperties(PageContext pageContext)
 {
     if (pageContext.CacheNonSharedProps)
     {
         Microsoft.ReportingServices.OnDemandReportRendering.Image image = (Microsoft.ReportingServices.OnDemandReportRendering.Image)m_source;
         CheckAutoSize(image, pageContext);
         base.CacheNonSharedProperties(pageContext);
     }
 }
Пример #5
0
 private void CheckAutoSize(Microsoft.ReportingServices.OnDemandReportRendering.Image image, PageContext pageContext)
 {
     if (image.Sizing == Microsoft.ReportingServices.OnDemandReportRendering.Image.Sizings.AutoSize)
     {
         ImageInstance        imageInstance = (ImageInstance)image.Instance;
         System.Drawing.Image gdiImage      = null;
         m_invalidImage = AutoSizeImage(pageContext, imageInstance, out gdiImage);
         if (gdiImage != null)
         {
             m_imageProps = new GDIImageProps(gdiImage);
             gdiImage.Dispose();
         }
     }
 }
Пример #6
0
        internal override void WriteCustomNonSharedItemProps(RPLElementProps nonSharedProps, PageContext pageContext)
        {
            Microsoft.ReportingServices.OnDemandReportRendering.Image image = (Microsoft.ReportingServices.OnDemandReportRendering.Image)m_source;
            ImageInstance imageInstance = (ImageInstance)image.Instance;
            RPLImageProps rPLImageProps = (RPLImageProps)nonSharedProps;

            if (m_invalidImage)
            {
                WriteInvalidImage(rPLImageProps, pageContext, m_imageProps);
            }
            else
            {
                WriteImage(imageInstance, null, rPLImageProps, pageContext, m_imageProps);
            }
            rPLImageProps.ActionInfo = PageItem.WriteActionInfo(image.ActionInfo);
        }
Пример #7
0
        internal static string SharedImageStreamName(Microsoft.ReportingServices.OnDemandReportRendering.Image image, PageContext pageContext)
        {
            ImageInstance imageInstance = (ImageInstance)image.Instance;

            System.Drawing.Image gdiImage = null;
            bool num = new Image(image, pageContext, createForRepeat: false).AutoSizeImage(pageContext, imageInstance, out gdiImage);

            if (gdiImage != null)
            {
                gdiImage.Dispose();
                gdiImage = null;
            }
            if (num)
            {
                return("InvalidImage");
            }
            return(imageInstance?.StreamName);
        }
Пример #8
0
        internal override void WriteCustomNonSharedItemProps(BinaryWriter spbifWriter, PageContext pageContext)
        {
            Microsoft.ReportingServices.OnDemandReportRendering.Image image = (Microsoft.ReportingServices.OnDemandReportRendering.Image)m_source;
            ImageInstance imageInstance = (ImageInstance)image.Instance;

            if (m_invalidImage)
            {
                if (m_nonSharedOffset < 0)
                {
                    WriteInvalidImage(spbifWriter, pageContext, m_imageProps);
                }
            }
            else
            {
                WriteImage(imageInstance, null, spbifWriter, pageContext, m_imageProps, writeShared: false);
            }
            WriteActionInfo(image.ActionInfo, spbifWriter);
        }
Пример #9
0
        internal override void WriteCustomNonSharedItemProps(RPLElementProps nonSharedProps, RPLWriter rplWriter, PageContext pageContext)
        {
            Microsoft.ReportingServices.OnDemandReportRendering.Image image = (Microsoft.ReportingServices.OnDemandReportRendering.Image)m_source;
            ImageInstance imageInstance = (ImageInstance)image.Instance;

            System.Drawing.Image gdiImage      = null;
            RPLImageProps        rPLImageProps = (RPLImageProps)nonSharedProps;

            if (AutoSizeImage(pageContext, imageInstance, out gdiImage))
            {
                WriteImage(null, "InvalidImage", rPLImageProps, pageContext, gdiImage);
            }
            else
            {
                WriteImage(imageInstance, null, rPLImageProps, pageContext, gdiImage);
            }
            rPLImageProps.ActionInfo          = WriteActionInfo(image.ActionInfo, pageContext);
            rPLImageProps.ActionImageMapAreas = WriteImageMapAreaInstanceCollection(imageInstance.ActionInfoWithDynamicImageMapAreas, pageContext);
        }
Пример #10
0
        internal override void WriteCustomSharedItemProps(RPLElementPropsDef sharedProps, RPLWriter rplWriter, PageContext pageContext)
        {
            Microsoft.ReportingServices.OnDemandReportRendering.Image obj = (Microsoft.ReportingServices.OnDemandReportRendering.Image)m_source;
            RPLImagePropsDef rPLImagePropsDef = (RPLImagePropsDef)sharedProps;

            switch (obj.Sizing)
            {
            case Microsoft.ReportingServices.OnDemandReportRendering.Image.Sizings.AutoSize:
                rPLImagePropsDef.Sizing = RPLFormat.Sizings.AutoSize;
                break;

            case Microsoft.ReportingServices.OnDemandReportRendering.Image.Sizings.Clip:
                rPLImagePropsDef.Sizing = RPLFormat.Sizings.Clip;
                break;

            case Microsoft.ReportingServices.OnDemandReportRendering.Image.Sizings.Fit:
                rPLImagePropsDef.Sizing = RPLFormat.Sizings.Fit;
                break;

            case Microsoft.ReportingServices.OnDemandReportRendering.Image.Sizings.FitProportional:
                rPLImagePropsDef.Sizing = RPLFormat.Sizings.FitProportional;
                break;
            }
        }
Пример #11
0
        internal bool RegisterItem(PageItem pageItem, PageContext pageContext)
        {
            if (m_itemFound || pageItem == null)
            {
                return(false);
            }
            switch (m_eventType)
            {
            case EventType.Collect:
            {
                ReportItemInstance instance5 = pageItem.Source.Instance;
                if (pageContext.Labels != null)
                {
                    pageContext.Labels.WriteDocMapLabel(instance5);
                }
                if (pageContext.Bookmarks != null)
                {
                    pageContext.Bookmarks.WriteBookmark(instance5);
                }
                if (pageContext.PageBookmarks != null)
                {
                    pageContext.RegisterPageBookmark(instance5);
                }
                if (pageItem.ItemState != PageItem.State.OnPageHidden)
                {
                    return(false);
                }
                break;
            }

            case EventType.BookmarkNavigationEvent:
            {
                ReportItemInstance instance2 = pageItem.Source.Instance;
                if (instance2.Bookmark != null && SPBProcessing.CompareWithOrdinalComparison(m_bookmarkId, instance2.Bookmark, ignoreCase: false) == 0)
                {
                    m_itemFound = true;
                    m_itemInfo  = instance2.UniqueName;
                    return(false);
                }
                if (pageItem.ItemState != PageItem.State.OnPageHidden)
                {
                    return(false);
                }
                break;
            }

            case EventType.DrillthroughEvent:
            {
                ReportItemInstance instance        = pageItem.Source.Instance;
                TextBoxInstance    textBoxInstance = instance as TextBoxInstance;
                if (textBoxInstance != null)
                {
                    Microsoft.ReportingServices.OnDemandReportRendering.TextBox textBox = (Microsoft.ReportingServices.OnDemandReportRendering.TextBox)pageItem.Source;
                    if (!HasMatchingDrillthrough(textBox.ActionInfo))
                    {
                        foreach (ParagraphInstance paragraphInstance in textBoxInstance.ParagraphInstances)
                        {
                            foreach (TextRunInstance textRunInstance in paragraphInstance.TextRunInstances)
                            {
                                Microsoft.ReportingServices.OnDemandReportRendering.TextRun definition = textRunInstance.Definition;
                                if (HasMatchingDrillthrough(definition.ActionInfo))
                                {
                                    return(false);
                                }
                            }
                        }
                    }
                }
                else
                {
                    ImageInstance imageInstance = instance as ImageInstance;
                    if (imageInstance != null)
                    {
                        if (!HasMatchingDrillthrough(imageInstance.ActionInfoWithDynamicImageMapAreas))
                        {
                            Microsoft.ReportingServices.OnDemandReportRendering.Image image = (Microsoft.ReportingServices.OnDemandReportRendering.Image)pageItem.Source;
                            HasMatchingDrillthrough(image.ActionInfo);
                        }
                    }
                    else
                    {
                        IDynamicImageInstance dynamicImageInstance = instance as IDynamicImageInstance;
                        if (dynamicImageInstance != null)
                        {
                            ActionInfoWithDynamicImageMapCollection actionImageMaps;
                            using (dynamicImageInstance.GetImage(DynamicImageInstance.ImageType.PNG, out actionImageMaps))
                            {
                            }
                            HasMatchingDrillthrough(actionImageMaps);
                        }
                    }
                }
                if (m_itemFound)
                {
                    return(false);
                }
                if (pageItem.ItemState != PageItem.State.OnPageHidden)
                {
                    return(false);
                }
                break;
            }

            case EventType.DocumentMapNavigationEvent:
            {
                ReportItemInstance instance3 = pageItem.Source.Instance;
                if (SPBProcessing.CompareWithOrdinalComparison(m_itemInfo, instance3.UniqueName, ignoreCase: true) == 0)
                {
                    m_itemFound = true;
                    return(false);
                }
                if (pageItem.ItemState != PageItem.State.OnPageHidden)
                {
                    return(false);
                }
                break;
            }

            case EventType.GetDocumentMap:
            {
                ReportItemInstance instance4 = pageItem.Source.Instance;
                if (pageContext.Labels != null)
                {
                    pageContext.Labels.WriteDocMapLabel(instance4);
                }
                if (pageItem.ItemState != PageItem.State.OnPageHidden)
                {
                    return(false);
                }
                break;
            }

            case EventType.FindChart:
            {
                if (pageItem.ItemState == PageItem.State.OnPageHidden)
                {
                    break;
                }
                ReportItem source2 = pageItem.Source;
                if (SPBProcessing.CompareWithOrdinalComparison(m_itemInfo, source2.Instance.UniqueName, ignoreCase: true) == 0)
                {
                    m_itemFound = true;
                    ChartInstance chartInstance2 = source2.Instance as ChartInstance;
                    if (chartInstance2 != null)
                    {
                        WriteDynamicImageStream(chartInstance2.GetImage());
                    }
                }
                break;
            }

            case EventType.FindGaugePanel:
            {
                if (pageItem.ItemState == PageItem.State.OnPageHidden)
                {
                    break;
                }
                ReportItem source3 = pageItem.Source;
                if (SPBProcessing.CompareWithOrdinalComparison(m_itemInfo, source3.Instance.UniqueName, ignoreCase: true) == 0)
                {
                    m_itemFound = true;
                    GaugePanelInstance gaugePanelInstance2 = source3.Instance as GaugePanelInstance;
                    if (gaugePanelInstance2 != null)
                    {
                        WriteDynamicImageStream(gaugePanelInstance2.GetImage());
                    }
                }
                break;
            }

            case EventType.FindMap:
            {
                if (pageItem.ItemState == PageItem.State.OnPageHidden)
                {
                    break;
                }
                ReportItem source5 = pageItem.Source;
                if (SPBProcessing.CompareWithOrdinalComparison(m_itemInfo, source5.Instance.UniqueName, ignoreCase: true) == 0)
                {
                    m_itemFound = true;
                    MapInstance mapInstance2 = source5.Instance as MapInstance;
                    if (mapInstance2 != null)
                    {
                        WriteDynamicImageStream(mapInstance2.GetImage());
                    }
                }
                break;
            }

            case EventType.FindImage:
            {
                if (pageItem.ItemState == PageItem.State.OnPageHidden)
                {
                    break;
                }
                ReportItem source4 = pageItem.Source;
                if (SPBProcessing.CompareWithOrdinalComparison(m_itemInfo, source4.Instance.UniqueName, ignoreCase: true) != 0)
                {
                    break;
                }
                m_itemFound = true;
                ImageInstance imageInstance2 = source4.Instance as ImageInstance;
                if (imageInstance2 != null)
                {
                    Stream stream3   = m_createAndRegisterStream(m_streamName, string.Empty, null, imageInstance2.MIMEType, willSeek: false, StreamOper.CreateAndRegister);
                    byte[] imageData = imageInstance2.ImageData;
                    if (stream3 != null && imageData != null && imageData.Length != 0)
                    {
                        stream3.Write(imageData, 0, imageData.Length);
                    }
                }
                break;
            }

            case EventType.ImageConsolidation:
            {
                if (pageItem.ItemState == PageItem.State.OnPageHidden)
                {
                    break;
                }
                ReportItem         source             = pageItem.Source;
                GaugePanelInstance gaugePanelInstance = source.Instance as GaugePanelInstance;
                Stream             stream             = null;
                if (gaugePanelInstance != null)
                {
                    stream = gaugePanelInstance.GetImage();
                }
                else
                {
                    ChartInstance chartInstance = source.Instance as ChartInstance;
                    if (chartInstance != null)
                    {
                        stream = chartInstance.GetImage();
                    }
                    else
                    {
                        MapInstance mapInstance = source.Instance as MapInstance;
                        if (mapInstance != null)
                        {
                            stream = mapInstance.GetImage();
                        }
                    }
                }
                if (stream != null)
                {
                    ImageConsolidation imageConsolidation = pageContext.ImageConsolidation;
                    imageConsolidation.AppendImage(stream);
                    if (imageConsolidation.CurrentOffset >= imageConsolidation.IgnoreOffsetTill + 1 && imageConsolidation.ImageInfos.Count > 0)
                    {
                        m_itemFound = true;
                    }
                }
                break;
            }

            default:
                FindTextBox(pageItem as TextBox, pageContext);
                break;
            }
            return(true);
        }
Пример #12
0
 internal Image(Microsoft.ReportingServices.OnDemandReportRendering.Image source)
     : base(source)
 {
     m_itemPageSizes = new ItemSizes(source);
 }
Пример #13
0
        private void Visit(Microsoft.ReportingServices.OnDemandReportRendering.ReportItem item)
        {
            if (item == null || item.Instance == null)
            {
                return;
            }
            bool generateDocMap = m_generateDocMap;

            if (!ProcessVisibilityAndContinue(item.Visibility, item.Instance.Visibility, null))
            {
                return;
            }
            if (item is Microsoft.ReportingServices.OnDemandReportRendering.Line || item is Microsoft.ReportingServices.OnDemandReportRendering.Chart || item is Microsoft.ReportingServices.OnDemandReportRendering.GaugePanel || item is Microsoft.ReportingServices.OnDemandReportRendering.Map)
            {
                GenerateSimpleReportItemDocumentMap(item);
            }
            else if (item is Microsoft.ReportingServices.OnDemandReportRendering.TextBox)
            {
                GenerateSimpleReportItemDocumentMap(item);
                VisitStyle(item.Style);
            }
            else if (item is Microsoft.ReportingServices.OnDemandReportRendering.Image)
            {
                GenerateSimpleReportItemDocumentMap(item);
                Microsoft.ReportingServices.OnDemandReportRendering.Image            image  = item as Microsoft.ReportingServices.OnDemandReportRendering.Image;
                Microsoft.ReportingServices.OnDemandReportRendering.Image.SourceType source = image.Source;
                if (m_createSnapshot && (source == Microsoft.ReportingServices.OnDemandReportRendering.Image.SourceType.External || source == Microsoft.ReportingServices.OnDemandReportRendering.Image.SourceType.Database))
                {
                    _ = (image.Instance as Microsoft.ReportingServices.OnDemandReportRendering.ImageInstance)?.ImageData;
                }
            }
            else if (item is Microsoft.ReportingServices.OnDemandReportRendering.Rectangle)
            {
                VisitRectangle(item as Microsoft.ReportingServices.OnDemandReportRendering.Rectangle);
                VisitStyle(item.Style);
            }
            else if (!(item is Microsoft.ReportingServices.OnDemandReportRendering.CustomReportItem))
            {
                bool flag = false;
                if (m_generateDocMap)
                {
                    string documentMapLabel = item.Instance.DocumentMapLabel;
                    if (documentMapLabel != null)
                    {
                        flag = true;
                        WriteDocumentMapBeginContainer(documentMapLabel, item.Instance.UniqueName);
                    }
                }
                if (item is Microsoft.ReportingServices.OnDemandReportRendering.Tablix)
                {
                    VisitTablix(item as Microsoft.ReportingServices.OnDemandReportRendering.Tablix);
                    VisitStyle(item.Style);
                }
                else if (item is Microsoft.ReportingServices.OnDemandReportRendering.SubReport)
                {
                    VisitSubReport(item as Microsoft.ReportingServices.OnDemandReportRendering.SubReport);
                }
                else
                {
                    Global.Tracer.Assert(condition: false);
                }
                if (flag)
                {
                    WriteDocumentMapEndContainer();
                }
            }
            m_generateDocMap = generateDocMap;
        }