d.setSize(d.width + 4, d.height);\r
idPanel.idCanvas.setPreferredSize(d);\r
hscrollFillerPanel.setPreferredSize(d);\r
+\r
+ if (av.getWrapAlignment())\r
+ {\r
+ int max = av.alignment.getWidth() /\r
+ seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
+ vscroll.setMaximum(max);\r
+ vscroll.setUnitIncrement(1);\r
+ vscroll.setVisibleAmount(1);\r
+ }\r
+ else\r
+ {\r
+ setScrollValues(av.getStartRes(), av.getStartSeq());\r
+ }\r
+\r
+ if(overviewPanel!=null)\r
+ overviewPanel.setBoxPosition();\r
+\r
repaint();\r
}\r
\r
*/\r
public void setWrapAlignment(boolean wrap)\r
{\r
+ av.startSeq = 0;\r
scalePanelHolder.setVisible(!wrap);\r
hscroll.setVisible(!wrap);\r
idwidthAdjuster.setVisible(!wrap);\r
\r
- av.setShowAnnotation(!wrap);\r
- annotationScroller.setVisible(!wrap);\r
- annotationSpaceFillerHolder.setVisible(!wrap);\r
- idSpaceFillerPanel1.setVisible(!wrap);\r
+ if(wrap)\r
+ {\r
+ annotationScroller.setVisible(false);\r
+ annotationSpaceFillerHolder.setVisible(false);\r
+ }\r
+ else if(av.showAnnotation)\r
+ {\r
+ annotationScroller.setVisible(true);\r
+ annotationSpaceFillerHolder.setVisible(true);\r
+ }\r
+\r
+ idSpaceFillerPanel1.setVisible(!wrap);\r
\r
repaint();\r
}\r
*/\r
public void adjustmentValueChanged(AdjustmentEvent evt)\r
{\r
+\r
int oldX = av.getStartRes();\r
int oldY = av.getStartSeq();\r
\r
overviewPanel.setBoxPosition();\r
}\r
\r
- if (av.getWrapAlignment() || !fastPaint)\r
+ int xShift = av.getStartRes() - oldX;\r
+ int yShift = av.getStartSeq() - oldY;\r
+\r
+ if ( (xShift != 0 && yShift != 0) ||\r
+ (Math.abs(xShift) > av.getEndRes() - av.getStartRes()\r
+ || Math.abs(yShift) > av.getEndSeq() - av.getStartSeq())\r
+ || av.getWrapAlignment()\r
+ || !fastPaint)\r
{\r
- repaint();\r
+ // Either no shift at all, or shift greater than visible amount\r
+ repaint();\r
}\r
else\r
{\r
- idPanel.idCanvas.fastPaint(av.getStartSeq() - oldY);\r
- seqPanel.seqCanvas.fastPaint(av.getStartRes() - oldX,\r
- av.getStartSeq() - oldY);\r
+ idPanel.idCanvas.fastPaint(yShift);\r
+ seqPanel.seqCanvas.fastPaint(xShift, yShift);\r
\r
scalePanel.repaint();\r
\r
if (av.getShowAnnotation())\r
{\r
- annotationPanel.fastPaint(av.getStartRes() - oldX);\r
+ annotationPanel.fastPaint(xShift);\r
}\r
}\r
}\r
*/\r
public void makeEPS(File epsFile)\r
{\r
+ boolean accurateText = true;\r
+\r
+ String renderStyle = jalview.bin.Cache.getDefault("EPS_RENDERING",\r
+ "Prompt each time");\r
+\r
+ // If we need to prompt, and if the GUI is visible then\r
+ // Prompt for EPS rendering style\r
+ if (renderStyle.equalsIgnoreCase("Prompt each time")\r
+ && !\r
+ (System.getProperty("java.awt.headless") != null\r
+ && System.getProperty("java.awt.headless").equals("true")))\r
+ {\r
+ EPSOptions eps = new EPSOptions();\r
+ renderStyle = eps.getValue();\r
+\r
+ if(eps.cancelled || renderStyle==null)\r
+ return;\r
+\r
+ renderStyle = eps.getValue();\r
+ }\r
+\r
+ if (renderStyle.equalsIgnoreCase("text"))\r
+ {\r
+ accurateText = false;\r
+ }\r
+\r
+\r
if(epsFile == null)\r
{\r
jalview.io.JalviewFileChooser chooser = new jalview.io.\r
\r
try\r
{\r
- FileOutputStream out = new FileOutputStream(epsFile);\r
- EpsGraphics2D pg = new EpsGraphics2D("Example", out, 0, 0, width,\r
- height);\r
+ FileOutputStream out = new FileOutputStream(epsFile);\r
+ EpsGraphics2D pg = new EpsGraphics2D("Example", out, 0, 0, width,\r
+ height);\r
\r
- if (av.getWrapAlignment())\r
- {\r
+ pg.setAccurateTextMode(accurateText);\r
+\r
+ if (av.getWrapAlignment())\r
+ {\r
printWrappedAlignment(pg, width, height, 0);\r
}\r
else\r
System.out.println("########################\n"\r
+"OUT OF MEMORY "+pngFile+"\n"\r
+"########################");\r
+ System.gc();\r
}\r
catch (Exception ex)\r
{\r