public void RenderReportItem(RPLElement reportItem, RPLItemMeasurement measurement, StyleContext styleContext, ref int borderContext, bool renderId, bool treatAsTopLevel)
        {
            RPLSubReport       rPLSubReport = (RPLSubReport)reportItem;
            RPLElementProps    elementProps = reportItem.ElementProps;
            RPLElementPropsDef definition   = elementProps.Definition;

            using (html5Renderer.m_reportContext.EnterSubreport(definition))
            {
                if (!styleContext.InTablix || renderId)
                {
                    styleContext.RenderMeasurements = false;
                    html5Renderer.WriteStream(HTMLElements.m_openDiv);
                    html5Renderer.RenderReportItemStyle(rPLSubReport, elementProps, definition, measurement, styleContext, ref borderContext, definition.ID);
                    if (renderId)
                    {
                        html5Renderer.RenderReportItemId(elementProps.UniqueName);
                    }
                    html5Renderer.WriteStreamCR(HTMLElements.m_closeBracket);
                }
                RPLItemMeasurement[] children = rPLSubReport.Children;
                int  num             = 0;
                int  num2            = borderContext;
                bool usePercentWidth = children.Length != 0;
                int  num3            = children.Length;
                for (int i = 0; i < num3; i++)
                {
                    if (i == 0 && num3 > 1 && (borderContext & 8) > 0)
                    {
                        num2 &= -9;
                    }
                    else if (i == 1 && (borderContext & 4) > 0)
                    {
                        num2 &= -5;
                    }
                    if (i > 0 && i == num3 - 1 && (borderContext & 8) > 0)
                    {
                        num2 |= 8;
                    }
                    num = num2;
                    RPLItemMeasurement rPLItemMeasurement = children[i];
                    RPLContainer       rPLContainer       = (RPLContainer)rPLItemMeasurement.Element;
                    RPLElementProps    elementProps2      = rPLContainer.ElementProps;
                    RPLElementPropsDef definition2        = elementProps2.Definition;
                    html5Renderer.m_isBody          = true;
                    html5Renderer.m_usePercentWidth = usePercentWidth;
                    new RectangleRenderer(html5Renderer).RenderReportItem(rPLContainer, rPLItemMeasurement, new StyleContext(), ref num, renderId: false, treatAsTopLevel);
                }
                if (!styleContext.InTablix || renderId)
                {
                    html5Renderer.WriteStreamCR(HTMLElements.m_closeDiv);
                }
            }
        }
示例#2
0
        public void RenderReportItem(RPLElement reportItem, RPLItemMeasurement measurement, StyleContext styleContext, ref int borderContext, bool renderId, bool treatAsTopLevel)
        {
            RPLImageProps    rPLImageProps    = (RPLImageProps)reportItem.ElementProps;
            RPLImagePropsDef rPLImagePropsDef = (RPLImagePropsDef)rPLImageProps.Definition;

            RPLFormat.Sizings sizing = rPLImagePropsDef.Sizing;
            RPLImageData      image  = rPLImageProps.Image;
            float             innerContainerHeightSubtractBorders = html5Renderer.GetInnerContainerHeightSubtractBorders(measurement, rPLImageProps.Style);
            float             innerContainerWidthSubtractBorders  = html5Renderer.GetInnerContainerWidthSubtractBorders(measurement, rPLImageProps.Style);
            string            text      = html5Renderer.GetImageUrl(useSessionId: true, image);
            string            ariaLabel = null;
            string            role      = null;
            string            tooltip   = html5Renderer.GetTooltip(rPLImageProps);

            if (treatAsTopLevel)
            {
                ariaLabel = (string.IsNullOrEmpty(tooltip) ? RenderRes.AccessibleImageLabel : RenderResWrapper.AccessibleImageNavigationGroupLabel(tooltip));
                role      = HTMLElements.m_navigationRole;
            }
            string input = string.IsNullOrEmpty(tooltip) ? RenderRes.AccessibleImageLabel : tooltip;

            input = AntiXssEncoder.XmlAttributeEncode(input);
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            if (html5Renderer.m_elementExtender.ShouldApplyToElement(treatAsTopLevel))
            {
                dictionary.Add(HTMLElements.m_reportItemDataName, html5Renderer.m_elementExtender.ApplyToElement());
                dictionary.Add(HTMLElements.m_reportItemCustomAttrStr, html5Renderer.GetReportItemPath(rPLImagePropsDef.Name));
            }
            bool flag = rPLImageProps.ActionImageMapAreas != null && rPLImageProps.ActionImageMapAreas.Length != 0;

            if (flag)
            {
                string s = HTMLElements.m_hashTag + html5Renderer.m_deviceInfo.HtmlPrefixId + HTMLElements.m_mapPrefixString + rPLImageProps.UniqueName;
                dictionary.Add(HTMLElements.m_useMapName, HttpUtility.HtmlAttributeEncode(s));
            }
            if (html5Renderer.HasAction(rPLImageProps.ActionInfo))
            {
                RenderElementHyperlink(rPLImageProps.Style, rPLImageProps.ActionInfo.Actions[0]);
            }
            if (!styleContext.InTablix)
            {
                if (sizing == RPLFormat.Sizings.AutoSize)
                {
                    styleContext.RenderMeasurements = false;
                }
                html5Renderer.WriteStream(HTMLElements.m_openDiv);
                html5Renderer.RenderReportItemStyle(reportItem, rPLImageProps, rPLImagePropsDef, measurement, styleContext, ref borderContext, rPLImagePropsDef.ID);
                html5Renderer.WriteStream(HTMLElements.m_closeBracket);
            }
            if (string.IsNullOrEmpty(text))
            {
                text = "data:image/gif;base64," + Convert.ToBase64String(HTMLRendererResources.GetBytes("Blank.gif"));
            }
            HtmlElement htmlElement;

            switch (sizing)
            {
            case RPLFormat.Sizings.FitProportional:
                htmlElement = new FitProportionalImageElement(text, innerContainerWidthSubtractBorders, role, input, ariaLabel, dictionary);
                break;

            case RPLFormat.Sizings.Fit:
                htmlElement = new FitImageElement(text, role, input, ariaLabel, dictionary);
                break;

            case RPLFormat.Sizings.Clip:
                htmlElement = new ClipImageElement(text, role, input, ariaLabel, dictionary);
                break;

            default:
                htmlElement = new OriginalSizeImageElement(text, role, input, ariaLabel, dictionary);
                break;
            }
            htmlElement.Render(new Html5OutputStream(html5Renderer));
            if (!styleContext.InTablix)
            {
                html5Renderer.WriteStream(HTMLElements.m_closeDiv);
            }
            if (html5Renderer.HasAction(rPLImageProps.ActionInfo))
            {
                html5Renderer.WriteStream(HTMLElements.m_closeA);
            }
            if (flag)
            {
                html5Renderer.RenderImageMapAreas(rPLImageProps.ActionImageMapAreas, measurement.Width, measurement.Height, rPLImageProps.UniqueName, 0, 0);
            }
        }
示例#3
0
        protected void RenderRectangle(RPLContainer rectangle, RPLElementProps props, RPLElementPropsDef def, RPLItemMeasurement measurement, ref int borderContext, bool renderId, StyleContext styleContext, bool treatAsTopLevel)
        {
            RPLItemMeasurement[] children             = rectangle.Children;
            RPLRectanglePropsDef rPLRectanglePropsDef = def as RPLRectanglePropsDef;

            if (rPLRectanglePropsDef != null && rPLRectanglePropsDef.LinkToChildId != null)
            {
                html5Renderer.m_linkToChildStack.Push(rPLRectanglePropsDef.LinkToChildId);
            }
            bool   expandItem = html5Renderer.m_expandItem;
            bool   flag       = renderId;
            string text       = props.UniqueName;
            bool   flag2      = children == null || children.Length == 0;

            if (flag2 && styleContext.InTablix)
            {
                return;
            }
            bool flag3 = html5Renderer.m_deviceInfo.OutlookCompat || !html5Renderer.m_browserIE || (flag2 && html5Renderer.m_usePercentWidth);

            if (!styleContext.InTablix || renderId)
            {
                if (flag3)
                {
                    html5Renderer.WriteStream(HTMLElements.m_openTable);
                    html5Renderer.WriteStream(HTMLElements.m_zeroBorder);
                }
                else
                {
                    html5Renderer.WriteStream(HTMLElements.m_openDiv);
                    if (html5Renderer.m_deviceInfo.IsBrowserIE && html5Renderer.m_deviceInfo.AllowScript)
                    {
                        if (!html5Renderer.m_needsGrowRectangleScript)
                        {
                            CreateGrowRectIdsStream();
                        }
                        flag = true;
                        if (!renderId)
                        {
                            text = props.UniqueName + "_gr";
                        }
                        html5Renderer.WriteIdToSecondaryStream(html5Renderer.m_growRectangleIdsStream, text);
                    }
                }
                if (flag)
                {
                    html5Renderer.RenderReportItemId(text);
                }
                if (html5Renderer.m_isBody)
                {
                    html5Renderer.m_isBody          = false;
                    styleContext.RenderMeasurements = false;
                    if (flag2)
                    {
                        html5Renderer.OpenStyle();
                        if (html5Renderer.m_usePercentWidth)
                        {
                            html5Renderer.RenderMeasurementHeight(measurement.Height);
                            html5Renderer.WriteStream(HTMLElements.m_styleWidth);
                            html5Renderer.WriteStream(HTMLElements.m_percent);
                            html5Renderer.WriteStream(HTMLElements.m_semiColon);
                        }
                        else
                        {
                            RenderRectangleMeasurements(measurement, props.Style);
                        }
                    }
                    else if (flag3 && html5Renderer.m_usePercentWidth)
                    {
                        html5Renderer.OpenStyle();
                        html5Renderer.WriteStream(HTMLElements.m_styleWidth);
                        html5Renderer.WriteStream(HTMLElements.m_percent);
                        html5Renderer.WriteStream(HTMLElements.m_semiColon);
                    }
                    html5Renderer.m_usePercentWidth = false;
                }
                if (!styleContext.InTablix)
                {
                    if (styleContext.RenderMeasurements)
                    {
                        html5Renderer.OpenStyle();
                        RenderRectangleMeasurements(measurement, props.Style);
                    }
                    html5Renderer.RenderReportItemStyle(rectangle, props, def, measurement, styleContext, ref borderContext, def.ID);
                }
                html5Renderer.CloseStyle(renderQuote: true);
                html5Renderer.WriteToolTip(props);
                html5Renderer.WriteStreamCR(HTMLElements.m_closeBracket);
                if (flag3)
                {
                    html5Renderer.WriteStream(HTMLElements.m_firstTD);
                    html5Renderer.OpenStyle();
                    if (flag2)
                    {
                        html5Renderer.RenderMeasurementStyle(measurement.Height, measurement.Width);
                        html5Renderer.WriteStream(HTMLElements.m_fontSize);
                        html5Renderer.WriteStream("1pt");
                    }
                    else
                    {
                        html5Renderer.WriteStream(HTMLElements.m_verticalAlign);
                        html5Renderer.WriteStream(HTMLElements.m_topValue);
                    }
                    html5Renderer.CloseStyle(renderQuote: true);
                    html5Renderer.WriteStream(HTMLElements.m_closeBracket);
                }
            }
            if (flag2)
            {
                html5Renderer.WriteStream(HTMLElements.m_nbsp);
            }
            else
            {
                bool inTablix = styleContext.InTablix;
                styleContext.InTablix = false;
                flag2 = html5Renderer.GenerateHTMLTable(children, measurement.Top, measurement.Left, measurement.Width, measurement.Height, borderContext, expandItem, SharedListLayoutState.None, null, props.Style, treatAsTopLevel);
                if (inTablix)
                {
                    styleContext.InTablix = true;
                }
            }
            if (!styleContext.InTablix || renderId)
            {
                if (flag3)
                {
                    html5Renderer.WriteStream(HTMLElements.m_lastTD);
                    html5Renderer.WriteStream(HTMLElements.m_closeTable);
                }
                else
                {
                    html5Renderer.WriteStreamCR(HTMLElements.m_closeDiv);
                }
            }
            if (html5Renderer.m_linkToChildStack.Count > 0 && rPLRectanglePropsDef != null && rPLRectanglePropsDef.LinkToChildId != null && rPLRectanglePropsDef.LinkToChildId.Equals(html5Renderer.m_linkToChildStack.Peek()))
            {
                html5Renderer.m_linkToChildStack.Pop();
            }
        }
示例#4
0
        protected void RenderLine(RPLLine reportItem, RPLElementProps rplProps, RPLLinePropsDef rplPropsDef, RPLItemMeasurement measurement, bool renderId, StyleContext styleContext)
        {
            if (html5Renderer.IsLineSlanted(measurement))
            {
                if (renderId)
                {
                    html5Renderer.RenderNavigationId(rplProps.UniqueName);
                }
                if (html5Renderer.m_deviceInfo.BrowserMode == BrowserMode.Quirks)
                {
                    RenderVMLLine(reportItem, measurement, styleContext);
                }
                return;
            }
            bool flag = measurement.Height == 0f;

            html5Renderer.WriteStream(HTMLElements.m_openSpan);
            if (renderId)
            {
                html5Renderer.RenderReportItemId(rplProps.UniqueName);
            }
            int    borderContext = 0;
            object obj           = rplProps.Style[10];

            if (obj != null)
            {
                html5Renderer.OpenStyle();
                if (flag)
                {
                    html5Renderer.WriteStream(HTMLElements.m_styleHeight);
                }
                else
                {
                    html5Renderer.WriteStream(HTMLElements.m_styleWidth);
                }
                html5Renderer.WriteStream(obj);
                html5Renderer.WriteStream(HTMLElements.m_semiColon);
            }
            obj = rplProps.Style[0];
            if (obj != null)
            {
                html5Renderer.OpenStyle();
                html5Renderer.WriteStream(HTMLElements.m_backgroundColor);
                html5Renderer.WriteStream(obj);
            }
            html5Renderer.RenderReportItemStyle(reportItem, measurement, ref borderContext);
            html5Renderer.CloseStyle(renderQuote: true);
            html5Renderer.WriteStream(HTMLElements.m_closeBracket);
            html5Renderer.WriteStream(HTMLElements.m_closeSpan);
        }
        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);
            }
        }