public FixedPicture( string resourceId, string filename, int left, int bottom, int right, int top, PictureAlignment alignment, PictureScaleMode scalemode, int quality) { _filename = filename; _resourceId = resourceId; _rect = new Rectangle(left, bottom, right, top); _alignment = alignment; _scaleMode = scalemode; _quality = quality; }
/// <summary> /// Copy constructor used during layout expansion and page break handling. /// </summary> public PictureLayout(PictureLayout src) : base(src) { _filename = src._filename; _resourceId = src._resourceId; _image = src._image; // OK to copy by reference because the source layout will be dropped _width = src._width; _height = src._height; _imageBounds = src._imageBounds; _alignment = src._alignment; _scaleMode = src._scaleMode; _quality = src._quality; // _style = src._style; }
public override void Load(XElement root) { base.Load(root); XNamespace ns = root.GetDefaultNamespace(); // _style = _generator.ReportDesign.LoadStyle<PhotoStyle>(root.Element(ns + "Style")); // if (_style == null) _style = _generator.ReportDesign.DefaultPhotoStyle; // The picture can be specified either with an explicit filename or with // a reference to a resource _filename = _generator.ReportDesign.LoadString(root.Attribute("filename")); _resourceId = _generator.ReportDesign.LoadString(root.Attribute("ref")); _width = _generator.ReportDesign.LoadInt(root.Element(ns + "Width")) ?? 0; _height = _generator.ReportDesign.LoadInt(root.Element(ns + "Height")) ?? 0; _alignment = _generator.ReportDesign.LoadEnum <PictureAlignment>(root.Element(ns + "Alignment")); _scaleMode = _generator.ReportDesign.LoadEnum <PictureScaleMode>(root.Element(ns + "ScaleMode")); _quality = _generator.ReportDesign.LoadInt(root.Element(ns + "Quality")) ?? 0; }
public override void Load(XElement root) { base.Load(root); XNamespace ns = root.GetDefaultNamespace(); XElement header = root.Element(ns + "Header")?.Element(ns + "GroupLayout"); if (header != null) { _headerLayout = new GroupLayout(_generator, _trackingInfo.LineNumber, _trackingInfo.LinePosition); _headerLayout.Load(header); _headerLayout.SetAsHeaderOf(this); } XElement footer = root.Element(ns + "Footer")?.Element(ns + "GroupLayout"); if (footer != null) { _footerLayout = new GroupLayout(_generator, _trackingInfo.LineNumber, _trackingInfo.LinePosition); _footerLayout.Load(footer); _footerLayout.SetAsFooterOf(this); } PageMetrics metrics = _generator.ReportDesign.LoadPageMetrics(root.Element(ns + "PageMetrics")); if (metrics == null) { throw new System.InvalidOperationException($"ChapterLayout page metrics is null at {_trackingInfo}."); } _mediaBox = new Rectangle { Left = metrics.MediaBoxLeft, Bottom = metrics.MediaBoxBottom, Right = metrics.MediaBoxRight, Top = metrics.MediaBoxTop }; _bodyBox = new Rectangle { Left = metrics.BodyBoxLeft, Bottom = metrics.BodyBoxBottom, Right = metrics.BodyBoxRight, Top = metrics.BodyBoxTop }; _headerBox = new Rectangle { Left = metrics.HeaderBoxLeft, Bottom = metrics.HeaderBoxBottom, Right = metrics.HeaderBoxRight, Top = metrics.HeaderBoxTop }; _footerBox = new Rectangle { Left = metrics.FooterBoxLeft, Bottom = metrics.FooterBoxBottom, Right = metrics.FooterBoxRight, Top = metrics.FooterBoxTop }; _bounds = _bodyBox; // Note that the header and footer tables are structured as part of the // page layout, not as content. That is, the page layout has explicit // pointers to the header and footer, and the header and footer layouts // nominate no container. This allows a header or footer // layout to be shared by any number of page layouts. // if(src.HeaderLayout != null) // _headerLayout = new TableLayout(src.HeaderLayout,generator); // if(src.FooterLayout != null) // _footerLayout = new TableLayout(src.FooterLayout,generator); // A page layout's page break rules is always null because a page layout always // starts on a new page // Load any background images _background = new List <FixedPicture>(); XElement background = root.Element(ns + "Background"); if (background != null) { foreach (XElement pictureElement in background.Elements(ns + "Picture")) { // The picture can be specified either with an explicit filename or with // a reference to a resource string filename = _generator.ReportDesign.LoadString(pictureElement.Attribute("filename")); string resourceId = _generator.ReportDesign.LoadString(pictureElement.Attribute("ref")); int left = _generator.ReportDesign.LoadInt(pictureElement.Element(ns + "Left")) ?? 0; int bottom = _generator.ReportDesign.LoadInt(pictureElement.Element(ns + "Bottom")) ?? 0; int right = _generator.ReportDesign.LoadInt(pictureElement.Element(ns + "Right")) ?? 0; int top = _generator.ReportDesign.LoadInt(pictureElement.Element(ns + "Top")) ?? 0; PictureAlignment alignment = _generator.ReportDesign.LoadEnum <PictureAlignment>(pictureElement.Element(ns + "Alignment")); PictureScaleMode scalemode = _generator.ReportDesign.LoadEnum <PictureScaleMode>(pictureElement.Element(ns + "ScaleMode")); int quality = _generator.ReportDesign.LoadInt(pictureElement.Element(ns + "Quality")) ?? 0; FixedPicture picture = new FixedPicture(resourceId, filename, left, bottom, right, top, alignment, scalemode, quality); _background.Add(picture); } } // Load any overlay images _overlays = new List <FixedPicture>(); XElement overlay = root.Element(ns + "Overlay"); if (overlay != null) { foreach (XElement pictureElement in overlay.Elements(ns + "Picture")) { // The picture can be specified either with an explicit filename or with // a reference to a resource string filename = _generator.ReportDesign.LoadString(pictureElement.Attribute("filename")); string resourceId = _generator.ReportDesign.LoadString(pictureElement.Attribute("ref")); int left = _generator.ReportDesign.LoadInt(pictureElement.Element(ns + "Left")) ?? 0; int bottom = _generator.ReportDesign.LoadInt(pictureElement.Element(ns + "Bottom")) ?? 0; int right = _generator.ReportDesign.LoadInt(pictureElement.Element(ns + "Right")) ?? 0; int top = _generator.ReportDesign.LoadInt(pictureElement.Element(ns + "Top")) ?? 0; PictureAlignment alignment = _generator.ReportDesign.LoadEnum <PictureAlignment>(pictureElement.Element(ns + "Alignment")); PictureScaleMode scalemode = _generator.ReportDesign.LoadEnum <PictureScaleMode>(pictureElement.Element(ns + "ScaleMode")); int quality = _generator.ReportDesign.LoadInt(pictureElement.Element(ns + "Quality")) ?? 0; FixedPicture picture = new FixedPicture(resourceId, filename, left, bottom, right, top, alignment, scalemode, quality); _overlays.Add(picture); } } _drawRules = _generator.ReportDesign.LoadBoolean(root.Attribute("drawRules")) ?? false; _renderEmpty = _generator.ReportDesign.LoadBoolean(root.Attribute("renderEmpty")) ?? false; }