internal override List <Rect> GetRectangles(ContentElement e, int start, int length) { List <Rect> list = new List <Rect>(); if (base.Paragraph.Element as ContentElement == e) { this.GetRectanglesForParagraphElement(out list); } else { PTS.FSSUBTRACKDETAILS fssubtrackdetails; PTS.Validate(PTS.FsQuerySubtrackDetails(base.PtsContext.Context, this._paraHandle.Value, out fssubtrackdetails)); if (fssubtrackdetails.cParas != 0) { PTS.FSPARADESCRIPTION[] arrayParaDesc; PtsHelper.ParaListFromSubtrack(base.PtsContext, this._paraHandle.Value, ref fssubtrackdetails, out arrayParaDesc); list = PtsHelper.GetRectanglesInParaList(base.PtsContext, e, start, length, arrayParaDesc); } else { list = new List <Rect>(); } } Invariant.Assert(list != null); return(list); }
internal static List <Rect> GetRectanglesInTrack(PtsContext ptsContext, ContentElement e, int start, int length, ref PTS.FSTRACKDESCRIPTION trackDesc) { List <Rect> result = new List <Rect>(); if (trackDesc.pfstrack == IntPtr.Zero) { return(result); } PTS.FSTRACKDETAILS fstrackdetails; PTS.Validate(PTS.FsQueryTrackDetails(ptsContext.Context, trackDesc.pfstrack, out fstrackdetails)); if (fstrackdetails.cParas != 0) { PTS.FSPARADESCRIPTION[] arrayParaDesc; PtsHelper.ParaListFromTrack(ptsContext, trackDesc.pfstrack, ref fstrackdetails, out arrayParaDesc); result = PtsHelper.GetRectanglesInParaList(ptsContext, e, start, length, arrayParaDesc); } return(result); }
internal override List <Rect> GetRectangles(ContentElement e, int start, int length) { List <Rect> rectangles = new List <Rect>(); if (this.Paragraph.Element as ContentElement == e) { // We have found the element. Return rectangles for this paragraph. GetRectanglesForParagraphElement(out rectangles); } else { // Element not found as Paragraph.Element. Look inside // Query paragraph details PTS.FSSUBTRACKDETAILS subtrackDetails; PTS.Validate(PTS.FsQuerySubtrackDetails(PtsContext.Context, _paraHandle.Value, out subtrackDetails)); // There might be possibility to get empty sub-track, skip the sub-track // in such case. if (subtrackDetails.cParas != 0) { // Get list of paragraphs // No changes to offset, since there are no subpages generated, only lists of paragraphs PTS.FSPARADESCRIPTION[] arrayParaDesc; PtsHelper.ParaListFromSubtrack(PtsContext, _paraHandle.Value, ref subtrackDetails, out arrayParaDesc); // Render list of paragraphs rectangles = PtsHelper.GetRectanglesInParaList(PtsContext, e, start, length, arrayParaDesc); } else { rectangles = new List <Rect>(); } } // Rectangles must be non-null Invariant.Assert(rectangles != null); return(rectangles); }