All files / extensions/cornerstone/src/utils/mpr getProtocolViewportStructureFromGridViewports.ts

0% Statements 0/4
100% Branches 0/0
0% Functions 0/2
0% Lines 0/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75                                                                                                                                                     
/**
 * Given the ViewportGridService state it will re create the protocol viewport structure
 * that was used at the hanging protocol creation time. This is used to re create the
 * viewport structure when the user decides to go back to a previous cached
 * layout in the viewport grid.
 *
 *
 * viewportGrid's viewports look like
 *
 * viewports = [
 *  {
 *   displaySetInstanceUIDs: string[],
 *   displaySetOptions: [],
 *   viewportOptions: {}
 *   height: number,
 *   width: number,
 *   x: number,
 *   y: number
 *  },
 * ]
 *
 * and hanging protocols viewport structure looks like
 *
 * viewportStructure: {
 *   layoutType: 'grid',
 *   properties: {
 *       rows: 3,
 *       columns: 4,
 *       layoutOptions: [
 *         {
 *           x: 0,
 *           y: 0,
 *           width: 1 / 4,
 *           height: 1 / 3,
 *         },
 *         {
 *           x: 1 / 4,
 *           y: 0,
 *           width: 1 / 4,
 *           height: 1 / 3,
 *         },
 *       ],
 *     },
 *   },
 */
export default function getProtocolViewportStructureFromGridViewports({
  numRows,
  numCols,
  viewports,
}: {
  numRows: number;
  numCols: number;
  viewports: any[];
}) {
  const viewportStructure = {
    layoutType: 'grid',
    properties: {
      rows: numRows,
      columns: numCols,
      layoutOptions: [],
    },
  };
 
  viewports.forEach(viewport => {
    viewportStructure.properties.layoutOptions.push({
      x: viewport.x,
      y: viewport.y,
      width: viewport.width,
      height: viewport.height,
    });
  });
 
  return viewportStructure;
}