Exemple #1
0
        public override void WriteCustomNonSharedItemProps(RPLElementProps nonSharedProps, PageContext pageContext)
        {
            ActionInfoWithDynamicImageMapCollection actionInfoWithDynamicImageMapCollection = null;
            RPLDynamicImageProps rPLDynamicImageProps = (RPLDynamicImageProps)nonSharedProps;

            rPLDynamicImageProps.DynamicImageContent = this.LoadDynamicImage(out actionInfoWithDynamicImageMapCollection, pageContext);
        }
        internal override void ProcessRenderingElementContent(RPLElement rplElement, GdiContext context, RectangleF bounds)
        {
            ImagePositionPX = new RectangleF(0f, 0f, context.GdiWriter.ConvertToPixels(base.Position.Width), context.GdiWriter.ConvertToPixels(base.Position.Height));
            RPLDynamicImageProps rPLDynamicImageProps = (RPLDynamicImageProps)InstanceProperties;
            Stream stream = rPLDynamicImageProps.DynamicImageContent;

            if (stream != null)
            {
                stream.Position = 0L;
            }
            else if (rPLDynamicImageProps.DynamicImageContentOffset >= 0)
            {
                byte[] image = context.RplReport.GetImage(rPLDynamicImageProps.DynamicImageContentOffset);
                if (image == null)
                {
                    return;
                }
                stream = new MemoryStream(image);
            }
            if (stream != null)
            {
                Image         = Image.FromStream(stream);
                ImagePosition = new RectangleF(base.Position.Location, base.Position.Size);
                GdiContext.CalculateUsableReportItemRectangle(InstanceProperties, ref ImagePosition);
                if (!(ImagePosition.Width <= 0f) && !(ImagePosition.Height <= 0f))
                {
                    ProcessImageMap(context);
                }
            }
        }
        private Rectangle RenderDynamicImage(RPLItemMeasurement measurement, RPLDynamicImageProps dynamicImageProps)
        {
            if (html5Renderer.m_createSecondaryStreams != 0)
            {
                return(dynamicImageProps.ImageConsolidationOffsets);
            }
            Stream stream = null;

            stream = html5Renderer.CreateStream(dynamicImageProps.StreamName, "png", null, "image/png", willSeek: false, StreamOper.CreateAndRegister);
            if (dynamicImageProps.DynamicImageContentOffset >= 0)
            {
                html5Renderer.m_rplReport.GetImage(dynamicImageProps.DynamicImageContentOffset, stream);
            }
            else if (dynamicImageProps.DynamicImageContent != null)
            {
                byte[] array = new byte[4096];
                dynamicImageProps.DynamicImageContent.Position = 0L;
                int num = (int)dynamicImageProps.DynamicImageContent.Length;
                while (num > 0)
                {
                    int num2 = dynamicImageProps.DynamicImageContent.Read(array, 0, Math.Min(array.Length, num));
                    stream.Write(array, 0, num2);
                    num -= num2;
                }
            }
            return(Rectangle.Empty);
        }
Exemple #4
0
 protected override void RenderDynamicImageSrc(RPLDynamicImageProps dynamicImageProps)
 {
     WriteStream("cid:");
     if (dynamicImageProps.StreamName != null)
     {
         WriteStream(dynamicImageProps.StreamName);
     }
 }
        public override void WriteCustomNonSharedItemProps(RPLElementProps nonSharedProps, RPLWriter rplWriter, PageContext pageContext)
        {
            ActionInfoWithDynamicImageMapCollection actionInfoWithDynamicImageMapCollection = null;
            RPLDynamicImageProps rPLDynamicImageProps = (RPLDynamicImageProps)nonSharedProps;
            string streamName = null;

            System.Drawing.Rectangle empty = System.Drawing.Rectangle.Empty;
            rPLDynamicImageProps.DynamicImageContent       = this.LoadDynamicImage(pageContext, ref streamName, out actionInfoWithDynamicImageMapCollection, out empty);
            rPLDynamicImageProps.ImageConsolidationOffsets = empty;
            rPLDynamicImageProps.StreamName = streamName;
            if (actionInfoWithDynamicImageMapCollection != null)
            {
                rPLDynamicImageProps.ActionImageMapAreas = base.WriteImageMapAreaInstanceCollection(actionInfoWithDynamicImageMapCollection, pageContext);
            }
        }
        public void RenderReportItem(RPLElement dynamicImage, RPLItemMeasurement measurement, StyleContext styleContext, ref int borderContext, bool renderId, bool treatAsTopLevel)
        {
            RPLElementProps      elementProps         = dynamicImage.ElementProps;
            RPLElementPropsDef   definition           = elementProps.Definition;
            RPLDynamicImageProps rPLDynamicImageProps = (RPLDynamicImageProps)elementProps;
            string tooltip = html5Renderer.GetTooltip(rPLDynamicImageProps);

            if (dynamicImage == null)
            {
                return;
            }
            bool      flag      = rPLDynamicImageProps.ActionImageMapAreas != null && rPLDynamicImageProps.ActionImageMapAreas.Length != 0;
            Rectangle rectangle = RenderDynamicImage(measurement, rPLDynamicImageProps);
            int       xOffset   = 0;
            int       yOffset   = 0;
            bool      flag2     = !rectangle.IsEmpty;
            bool      flag3     = !html5Renderer.m_deviceInfo.IsBrowserSafari || html5Renderer.m_deviceInfo.AllowScript || !styleContext.InTablix;

            if (flag3)
            {
                html5Renderer.WriteStream(HTMLElements.m_openDiv);
                if (flag2 && html5Renderer.m_elementExtender.ShouldApplyToElement(treatAsTopLevel))
                {
                    WriteReportItemDataName();
                }
                html5Renderer.WriteAccesibilityTags(RenderRes.AccessibleChartLabel, rPLDynamicImageProps, treatAsTopLevel);
                if (treatAsTopLevel)
                {
                    string accessibleAriaName = string.IsNullOrEmpty(tooltip) ? RenderRes.AccessibleChartLabel : RenderResWrapper.AccessibleChartNavigationGroupLabel(tooltip);
                    html5Renderer.WriteAriaAccessibleTags(accessibleAriaName);
                }
            }
            bool flag4 = html5Renderer.m_deviceInfo.DataVisualizationFitSizing == DataVisualizationFitSizing.Exact && styleContext.InTablix;

            if (flag2)
            {
                RPLFormat.Sizings sizing = flag4 ? RPLFormat.Sizings.Fit : RPLFormat.Sizings.AutoSize;
                html5Renderer.WriteOuterConsolidation(rectangle, sizing, rPLDynamicImageProps.UniqueName);
                html5Renderer.RenderReportItemStyle(dynamicImage, null, ref borderContext);
                xOffset = rectangle.Left;
                yOffset = rectangle.Top;
            }
            else if (flag4 && html5Renderer.m_deviceInfo.AllowScript)
            {
                if (html5Renderer.m_imgFitDivIdsStream == null)
                {
                    html5Renderer.CreateImgFitDivImageIdsStream();
                }
                html5Renderer.WriteIdToSecondaryStream(html5Renderer.m_imgFitDivIdsStream, rPLDynamicImageProps.UniqueName + "_ifd");
                html5Renderer.RenderReportItemId(rPLDynamicImageProps.UniqueName + "_ifd");
            }
            if (flag3)
            {
                html5Renderer.WriteStream(HTMLElements.m_closeBracket);
            }
            html5Renderer.WriteStream(HTMLElements.m_img);
            if (html5Renderer.m_elementExtender.ShouldApplyToElement(treatAsTopLevel))
            {
                if (!flag2)
                {
                    WriteReportItemDataName();
                }
                RPLItemPropsDef rPLItemPropsDef = (RPLItemPropsDef)definition;
                html5Renderer.WriteAttrEncoded(HTMLElements.m_reportItemCustomAttr, html5Renderer.GetReportItemPath(rPLItemPropsDef.Name));
            }
            if (html5Renderer.m_browserIE)
            {
                html5Renderer.WriteStream(HTMLElements.m_imgOnError);
            }
            if (renderId)
            {
                html5Renderer.RenderReportItemId(rPLDynamicImageProps.UniqueName);
            }
            html5Renderer.WriteStream(HTMLElements.m_zeroBorder);
            bool flag5 = dynamicImage is RPLChart;

            if (flag)
            {
                html5Renderer.WriteAttrEncoded(HTMLElements.m_useMap, "#" + html5Renderer.m_deviceInfo.HtmlPrefixId + HTMLElements.m_mapPrefixString + rPLDynamicImageProps.UniqueName);
                if (flag4)
                {
                    html5Renderer.OpenStyle();
                    if (html5Renderer.m_useInlineStyle && !flag2)
                    {
                        html5Renderer.WriteStream(HTMLElements.m_styleHeight);
                        html5Renderer.WriteStream(HTMLElements.m_percent);
                        html5Renderer.WriteStream(HTMLElements.m_semiColon);
                        html5Renderer.WriteStream(HTMLElements.m_styleWidth);
                        html5Renderer.WriteStream(HTMLElements.m_percent);
                        html5Renderer.WriteStream(HTMLElements.m_semiColon);
                        flag5 = false;
                    }
                    html5Renderer.WriteStream("border-style:none;");
                }
            }
            else if (flag4 && html5Renderer.m_useInlineStyle && !flag2)
            {
                html5Renderer.PercentSizes();
                flag5 = false;
            }
            StyleContext styleContext2 = new StyleContext();

            if (!flag4 && (html5Renderer.m_deviceInfo.IsBrowserIE7 || html5Renderer.m_deviceInfo.IsBrowserIE6))
            {
                styleContext2.RenderMeasurements    = false;
                styleContext2.RenderMinMeasurements = false;
            }
            if (!flag2)
            {
                if (flag4)
                {
                    html5Renderer.RenderReportItemStyle(dynamicImage, null, ref borderContext, styleContext2);
                }
                else if (flag5)
                {
                    RPLElementProps elementProps2 = dynamicImage.ElementProps;
                    StyleContext    styleContext3 = new StyleContext();
                    styleContext3.RenderMeasurements = false;
                    html5Renderer.OpenStyle();
                    html5Renderer.RenderMeasurementStyle(measurement.Height, measurement.Width);
                    html5Renderer.RenderReportItemStyle(dynamicImage, elementProps2, definition, measurement, styleContext3, ref borderContext, definition.ID);
                }
                else
                {
                    html5Renderer.RenderReportItemStyle(dynamicImage, measurement, ref borderContext, styleContext2);
                }
            }
            else
            {
                html5Renderer.WriteClippedDiv(rectangle);
            }
            tooltip = (string.IsNullOrEmpty(tooltip) ? RenderRes.AccessibleChartLabel : tooltip);
            html5Renderer.WriteToolTipAttribute(tooltip);
            html5Renderer.WriteStream(HTMLElements.m_src);
            html5Renderer.RenderDynamicImageSrc(rPLDynamicImageProps);
            html5Renderer.WriteStreamCR(HTMLElements.m_closeTag);
            if (flag)
            {
                html5Renderer.RenderImageMapAreas(rPLDynamicImageProps.ActionImageMapAreas, measurement.Width, measurement.Height, rPLDynamicImageProps.UniqueName, xOffset, yOffset);
            }
            if (flag3)
            {
                html5Renderer.WriteStream(HTMLElements.m_closeDiv);
            }
        }