Call AnnotationLayer.setDimensions as part of the render/update-methods (PR 15036 follow-up)
				
					
				
			Rather than forcing the user to *manually* call `setDimensions`, which is also breaking any existing third-party code, it seems that we can simply let the `AnnotationLayer.{render, update}`-methods handle that internally.
As far as I can tell, based on testing manually in the viewer *and* running the browser-tests, everything still appears to work correctly with this patch.
			
			
This commit is contained in:
		
							parent
							
								
									ca8b112e8c
								
							
						
					
					
						commit
						552ee9decd
					
				@ -2457,12 +2457,16 @@ class AnnotationLayer {
 | 
				
			|||||||
   * @memberof AnnotationLayer
 | 
					   * @memberof AnnotationLayer
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  static render(parameters) {
 | 
					  static render(parameters) {
 | 
				
			||||||
 | 
					    const { annotations, div, viewport } = parameters;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.#setDimensions(div, viewport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const sortedAnnotations = [],
 | 
					    const sortedAnnotations = [],
 | 
				
			||||||
      popupAnnotations = [];
 | 
					      popupAnnotations = [];
 | 
				
			||||||
    // Ensure that Popup annotations are handled last, since they're dependant
 | 
					    // Ensure that Popup annotations are handled last, since they're dependant
 | 
				
			||||||
    // upon the parent annotation having already been rendered (please refer to
 | 
					    // upon the parent annotation having already been rendered (please refer to
 | 
				
			||||||
    // the `PopupAnnotationElement.render` method); fixes issue 11362.
 | 
					    // the `PopupAnnotationElement.render` method); fixes issue 11362.
 | 
				
			||||||
    for (const data of parameters.annotations) {
 | 
					    for (const data of annotations) {
 | 
				
			||||||
      if (!data) {
 | 
					      if (!data) {
 | 
				
			||||||
        continue;
 | 
					        continue;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -2480,14 +2484,12 @@ class AnnotationLayer {
 | 
				
			|||||||
      sortedAnnotations.push(...popupAnnotations);
 | 
					      sortedAnnotations.push(...popupAnnotations);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const div = parameters.div;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for (const data of sortedAnnotations) {
 | 
					    for (const data of sortedAnnotations) {
 | 
				
			||||||
      const element = AnnotationElementFactory.create({
 | 
					      const element = AnnotationElementFactory.create({
 | 
				
			||||||
        data,
 | 
					        data,
 | 
				
			||||||
        layer: div,
 | 
					        layer: div,
 | 
				
			||||||
        page: parameters.page,
 | 
					        page: parameters.page,
 | 
				
			||||||
        viewport: parameters.viewport,
 | 
					        viewport,
 | 
				
			||||||
        linkService: parameters.linkService,
 | 
					        linkService: parameters.linkService,
 | 
				
			||||||
        downloadManager: parameters.downloadManager,
 | 
					        downloadManager: parameters.downloadManager,
 | 
				
			||||||
        imageResourcesPath: parameters.imageResourcesPath || "",
 | 
					        imageResourcesPath: parameters.imageResourcesPath || "",
 | 
				
			||||||
@ -2532,8 +2534,9 @@ class AnnotationLayer {
 | 
				
			|||||||
   * @memberof AnnotationLayer
 | 
					   * @memberof AnnotationLayer
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  static update(parameters) {
 | 
					  static update(parameters) {
 | 
				
			||||||
    const { annotationCanvasMap, div } = parameters;
 | 
					    const { annotationCanvasMap, div, viewport } = parameters;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.#setDimensions(div, viewport);
 | 
				
			||||||
    this.#setAnnotationCanvasMap(div, annotationCanvasMap);
 | 
					    this.#setAnnotationCanvasMap(div, annotationCanvasMap);
 | 
				
			||||||
    div.hidden = false;
 | 
					    div.hidden = false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -2542,7 +2545,7 @@ class AnnotationLayer {
 | 
				
			|||||||
   * @param {HTMLDivElement} div
 | 
					   * @param {HTMLDivElement} div
 | 
				
			||||||
   * @param {PageViewport} viewport
 | 
					   * @param {PageViewport} viewport
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  static setDimensions(div, { width, height, rotation }) {
 | 
					  static #setDimensions(div, { width, height, rotation }) {
 | 
				
			||||||
    const { style } = div;
 | 
					    const { style } = div;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const flipOrientation = rotation % 180 !== 0,
 | 
					    const flipOrientation = rotation % 180 !== 0,
 | 
				
			||||||
 | 
				
			|||||||
@ -231,7 +231,6 @@ class Rasterize {
 | 
				
			|||||||
        renderForms,
 | 
					        renderForms,
 | 
				
			||||||
        annotationCanvasMap: annotationImageMap,
 | 
					        annotationCanvasMap: annotationImageMap,
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
      AnnotationLayer.setDimensions(div, annotationViewport);
 | 
					 | 
				
			||||||
      AnnotationLayer.render(parameters);
 | 
					      AnnotationLayer.render(parameters);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // Inline SVG images from text annotations.
 | 
					      // Inline SVG images from text annotations.
 | 
				
			||||||
 | 
				
			|||||||
@ -117,14 +117,11 @@ class AnnotationLayerBuilder {
 | 
				
			|||||||
    if (this.div) {
 | 
					    if (this.div) {
 | 
				
			||||||
      // If an annotationLayer already exists, refresh its children's
 | 
					      // If an annotationLayer already exists, refresh its children's
 | 
				
			||||||
      // transformation matrices.
 | 
					      // transformation matrices.
 | 
				
			||||||
      AnnotationLayer.setDimensions(this.div, viewport);
 | 
					 | 
				
			||||||
      AnnotationLayer.update(parameters);
 | 
					      AnnotationLayer.update(parameters);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      // Create an annotation layer div and render the annotations
 | 
					      // Create an annotation layer div and render the annotations
 | 
				
			||||||
      // if there is at least one annotation.
 | 
					      // if there is at least one annotation.
 | 
				
			||||||
      this.div = document.createElement("div");
 | 
					      this.div = document.createElement("div");
 | 
				
			||||||
      AnnotationLayer.setDimensions(this.div, viewport);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      this.div.className = "annotationLayer";
 | 
					      this.div.className = "annotationLayer";
 | 
				
			||||||
      this.pageDiv.append(this.div);
 | 
					      this.pageDiv.append(this.div);
 | 
				
			||||||
      parameters.div = this.div;
 | 
					      parameters.div = this.div;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user