private void adaptLayoutModel(ViewCanvas<E> viewCanvas) { final Map<LayoutConstraints, Component> map = new LinkedHashMap<>(1); this.layoutModel = new GridBagLayoutModel(map, "exp_tmp", ""); //$NON-NLS-1$ //$NON-NLS-2$ ExportImage<E> export = new ExportImage<>(viewCanvas); export.getInfoLayer().setBorder(3); LayoutConstraints e = new LayoutConstraints(viewCanvas.getClass().getName(), 0, 0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH); map.put(e, export); grid.add(export, e); grid.revalidate(); }
private void adaptLayoutModel(GridBagLayoutModel layoutModel) { final Map<LayoutConstraints, Component> oldMap = layoutModel.getConstraints(); final Map<LayoutConstraints, Component> map = new LinkedHashMap<>(oldMap.size()); this.layoutModel = new GridBagLayoutModel(map, "exp_tmp", ""); //$NON-NLS-1$ //$NON-NLS-2$ Iterator<LayoutConstraints> enumVal = oldMap.keySet().iterator(); while (enumVal.hasNext()) { LayoutConstraints e = enumVal.next(); Component v = oldMap.get(e); LayoutConstraints constraint = e.copy(); if (v instanceof ViewCanvas) { ExportImage<?> export = new ExportImage<>((ViewCanvas) v); export.getInfoLayer().setBorder(3); map.put(constraint, export); v = export; } else { // Non printable component. Create a new empty panel to not steel the component from the original UI v = new JPanel(); map.put(constraint, v); } grid.add(v, e); } grid.revalidate(); }
private static RenderedImage createComponentImage(DefaultView2d canvas) { BufferedImage img = new BufferedImage(canvas.getWidth(), canvas.getHeight(), BufferedImage.TYPE_INT_BGR); ExportImage<ImageElement> exportImage = new ExportImage<>(canvas); try { exportImage.getInfoLayer().setDisplayPreferencesValue(LayerAnnotation.ANONYM_ANNOTATIONS, true); exportImage.getInfoLayer().setBorder(3); Graphics2D g = img.createGraphics(); if (g != null) { ViewModel originViewModel = canvas.getViewModel(); ViewModel viewModel = exportImage.getViewModel(); final Rectangle modelArea = exportImage.getImageBounds(exportImage.getImage()); ((DefaultViewModel) viewModel).adjustMinViewScaleFromImage(modelArea.width, modelArea.height); viewModel.setModelArea(originViewModel.getModelArea()); viewModel.setModelOffset(originViewModel.getModelOffsetX(), originViewModel.getModelOffsetY(), originViewModel.getViewScale()); exportImage.setBounds(canvas.getX(), canvas.getY(), canvas.getWidth(), canvas.getHeight()); boolean wasBuffered = ImagePrint.disableDoubleBuffering(exportImage); exportImage.zoom(originViewModel.getViewScale()); exportImage.draw(g); ImagePrint.restoreDoubleBuffering(exportImage, wasBuffered); g.dispose(); } } finally { exportImage.disposeView(); } return img; }