[vassalengine-svn] SF.net SVN: vassalengine:[4149] VASSAL-src/trunk/src/VASSAL
Brought to you by:
rodneykinney,
uckelman
From: <uck...@us...> - 2008-09-29 13:25:15
|
Revision: 4149 http://vassalengine.svn.sourceforge.net/vassalengine/?rev=4149&view=rev Author: uckelman Date: 2008-09-29 13:25:05 +0000 (Mon, 29 Sep 2008) Log Message: ----------- Use Rectangle.add() instead of Rectangle.union() to avoid unnecessary creation of new Rectangles. Modified Paths: -------------- VASSAL-src/trunk/src/VASSAL/build/module/Map.java VASSAL-src/trunk/src/VASSAL/build/module/PlayerHand.java VASSAL-src/trunk/src/VASSAL/build/module/map/PieceRecenterer.java VASSAL-src/trunk/src/VASSAL/build/module/map/SelectionHighlighter.java VASSAL-src/trunk/src/VASSAL/build/module/map/boardPicker/board/RegionGrid.java VASSAL-src/trunk/src/VASSAL/counters/ColoredBorder.java VASSAL-src/trunk/src/VASSAL/counters/Embellishment.java VASSAL-src/trunk/src/VASSAL/counters/Footprint.java VASSAL-src/trunk/src/VASSAL/counters/Labeler.java VASSAL-src/trunk/src/VASSAL/counters/MovementMarkable.java VASSAL-src/trunk/src/VASSAL/counters/Obscurable.java VASSAL-src/trunk/src/VASSAL/counters/Stack.java Modified: VASSAL-src/trunk/src/VASSAL/build/module/Map.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/Map.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/build/module/Map.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -841,10 +841,8 @@ */ // FIXME: why synchronized? public synchronized Dimension mapSize() { - Rectangle r = new Rectangle(0, 0); - for (Board b : boards) { - r = r.union(b.bounds()); - } + final Rectangle r = new Rectangle(0,0); + for (Board b : boards) r.add(b.bounds()); r.width += edgeBuffer.width; r.height += edgeBuffer.height; return r.getSize(); @@ -1526,16 +1524,18 @@ Rectangle r = null; if (p.getMap() == this) { r = p.boundingBox(); - Point pos = p.getPosition(); + final Point pos = p.getPosition(); r.translate(pos.x, pos.y); + if (Boolean.TRUE.equals(p.getProperty(Properties.SELECTED))) { - r = r.union(highlighter.boundingBox(p)); + r.add(highlighter.boundingBox(p)); for (Iterator<Highlighter> i = getHighlighters(); i.hasNext();) { - r = r.union(i.next().boundingBox(p)); + r.add(i.next().boundingBox(p)); } } + if (p.getParent() != null) { - Point pt = getStackMetrics().relativePosition(p.getParent(), p); + final Point pt = getStackMetrics().relativePosition(p.getParent(), p); r.translate(pt.x, pt.y); } } Modified: VASSAL-src/trunk/src/VASSAL/build/module/PlayerHand.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/PlayerHand.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/build/module/PlayerHand.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -70,13 +70,9 @@ } public Dimension mapSize() { - GamePiece[] stack = pieces.getPieces(); - Rectangle r = new Rectangle(0,0,200,200); - for (int i=0;i<stack.length;++i) { - r = r.union(boundingBoxOf(stack[i])); - } - r = r.union(new Rectangle(super.mapSize())); + final Rectangle r = new Rectangle(0,0,200,200); + for (GamePiece p : pieces.getPieces()) r.add(boundingBoxOf(p)); + r.add(new Rectangle(super.mapSize())); return r.getSize(); } - } Modified: VASSAL-src/trunk/src/VASSAL/build/module/map/PieceRecenterer.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/map/PieceRecenterer.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/build/module/map/PieceRecenterer.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -65,32 +65,38 @@ dispatcher = new DeckVisitorDispatcher(this); } - /** Returns a Command that moves all pieces so that their centroid is centered on the map */ + /** + * Returns a Command that moves all pieces so that their centroid is + * centered on the map. + */ public Command recenter(Map map) { - Command c = new NullCommand(); - GamePiece[] p = map.getPieces(); - Rectangle r=null; - for (int i=0;i<p.length;++i) { - if (Boolean.TRUE.equals(dispatcher.accept(p[i]))) { - Point pt = p[i].getPosition(); - Rectangle pRect = p[i].getShape().getBounds(); + final Command c = new NullCommand(); + final GamePiece[] pieces = map.getPieces(); + final Rectangle r = new Rectangle(0,0,-1,-1); + + for (GamePiece p : pieces) { + if (Boolean.TRUE.equals(dispatcher.accept(p))) { + final Point pt = p.getPosition(); + final Rectangle pRect = p.getShape().getBounds(); pRect.translate(pt.x,pt.y); - r = r == null ? pRect : r.union(pRect); + r.add(pRect); } } - if (r != null) { - int dx = map.mapSize().width/2-(r.x+r.width/2); - int dy = map.mapSize().height/2-(r.y+r.height/2); - for (int i=0;i<p.length;++i) { - if (Boolean.TRUE.equals(dispatcher.accept(p[i]))) { - ChangeTracker tracker = new ChangeTracker(p[i]); - Point pt = p[i].getPosition(); + + if (r.height >= 0 && r.width >= 0) { + final int dx = map.mapSize().width/2-(r.x+r.width/2); + final int dy = map.mapSize().height/2-(r.y+r.height/2); + for (GamePiece p : pieces) { + if (Boolean.TRUE.equals(dispatcher.accept(p))) { + final ChangeTracker tracker = new ChangeTracker(p); + final Point pt = p.getPosition(); pt.translate(dx,dy); - p[i].setPosition(pt); + p.setPosition(pt); c.append(tracker.getChangeCommand()); } } } + map.repaint(); return c; } Modified: VASSAL-src/trunk/src/VASSAL/build/module/map/SelectionHighlighter.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/map/SelectionHighlighter.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/build/module/map/SelectionHighlighter.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -91,10 +91,10 @@ } public Rectangle boundingBox(GamePiece p) { - Rectangle r = p.getShape().getBounds(); + final Rectangle r = p.getShape().getBounds(); if (accept(p)) { if (useImage) { - r = r.union(ImageUtils.getBounds(imagePainter.getImageSize())); + r.add(ImageUtils.getBounds(imagePainter.getImageSize())); } else { r.translate(-thickness, -thickness); Modified: VASSAL-src/trunk/src/VASSAL/build/module/map/boardPicker/board/RegionGrid.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/map/boardPicker/board/RegionGrid.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/build/module/map/boardPicker/board/RegionGrid.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -1026,7 +1026,7 @@ rect = sel; } else { - rect = rect.union(sel); + rect.add(sel); } } return rect; @@ -1087,17 +1087,22 @@ if (!e.isMetaDown()) { scrollAtEdge(e.getPoint(), 15); } + if (selectionRect != null) { + // FIXME: inefficient, could be done with only one new Rectangle final Rectangle repaintRect = new Rectangle(selectionRect.x-1, selectionRect.y-1, selectionRect.width+3, selectionRect.height+3); + selectionRect.x = Math.min(e.getX(), anchor.x); selectionRect.y = Math.min(e.getY(), anchor.y); selectionRect.width = Math.abs(e.getX() - anchor.x); - selectionRect.height = Math.abs(e.getY() - anchor.y); - view.repaint(repaintRect.union( + selectionRect.height = Math.abs(e.getY() - anchor.y); + + repaintRect.add( new Rectangle(selectionRect.x-1, selectionRect.y-1, - selectionRect.width+3, selectionRect.height+3))); + selectionRect.width+3, selectionRect.height+3)); + view.repaint(repaintRect); } } Modified: VASSAL-src/trunk/src/VASSAL/counters/ColoredBorder.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/ColoredBorder.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/counters/ColoredBorder.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -101,13 +101,11 @@ } public Rectangle boundingBox(GamePiece p) { - Rectangle r = p.getShape().getBounds(); + final Rectangle r = p.getShape().getBounds(); r.translate(-thickness, -thickness); r.setSize(r.width + 2 * thickness, r.height + 2 * thickness); - for (Highlighter h : highlighters) { - r = r.union(h.boundingBox(p)); - } + for (Highlighter h : highlighters) r.add(h.boundingBox(p)); return r; } Modified: VASSAL-src/trunk/src/VASSAL/counters/Embellishment.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Embellishment.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/counters/Embellishment.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -567,12 +567,9 @@ } public Rectangle boundingBox() { - if (value > 0) { - return getCurrentImageBounds().union(piece.boundingBox()); - } - else { - return piece.boundingBox(); - } + final Rectangle r = piece.boundingBox(); + if (value > 0) r.add(getCurrentImageBounds()); + return r; } public Rectangle getCurrentImageBounds() { Modified: VASSAL-src/trunk/src/VASSAL/counters/Footprint.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Footprint.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/counters/Footprint.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -535,11 +535,9 @@ * just return the standard piece bounding box */ public Rectangle boundingBox() { - if (isTrailVisible() && getMap() != null) { - return piece.boundingBox().union(getMyBoundingBox()); - } - else - return piece.boundingBox(); + final Rectangle r = piece.boundingBox(); + if (isTrailVisible() && getMap() != null) r.add(getMyBoundingBox()); + return r; } /** Modified: VASSAL-src/trunk/src/VASSAL/counters/Labeler.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Labeler.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/counters/Labeler.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -455,10 +455,9 @@ public Rectangle boundingBox() { final Rectangle r = piece.boundingBox(); - final Rectangle r2 = piece.getShape().getBounds(); - final Point p2 = getLabelPosition(); - final Rectangle r3 = new Rectangle(p2, imagePainter.getImageSize()); - return r.union(r2).union(r3); + r.add(piece.getShape().getBounds()); + r.add(new Rectangle(getLabelPosition(), imagePainter.getImageSize())); + return r; } public Shape getShape() { Modified: VASSAL-src/trunk/src/VASSAL/counters/MovementMarkable.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/MovementMarkable.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/counters/MovementMarkable.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -128,12 +128,11 @@ } public Rectangle boundingBox() { - Rectangle r = piece.boundingBox(); - Rectangle r2 = piece.getShape().getBounds(); - Dimension d = getImageSize(); - Rectangle r3 = new Rectangle(xOffset, yOffset, d.width, d.height); - r2 = r2.union(r3); - return r.union(r2); + final Rectangle r = piece.boundingBox(); + r.add(piece.getShape().getBounds()); + final Dimension d = getImageSize(); + r.add(new Rectangle(xOffset, yOffset, d.width, d.height)); + return r; } public String getName() { Modified: VASSAL-src/trunk/src/VASSAL/counters/Obscurable.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Obscurable.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/counters/Obscurable.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -341,14 +341,19 @@ } protected Rectangle bBoxObscuredToOthers() { + final Rectangle r; switch (displayStyle) { case BACKGROUND: - return bBoxObscuredToMe(); + r = bBoxObscuredToMe(); + break; case IMAGE: - return piece.boundingBox().union(obscuredToOthersView.boundingBox()); + r = piece.boundingBox(); + r.add(obscuredToOthersView.boundingBox()); + break; default: - return piece.boundingBox(); + r = piece.boundingBox(); } + return r; } public String getLocalizedName() { Modified: VASSAL-src/trunk/src/VASSAL/counters/Stack.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/counters/Stack.java 2008-09-29 12:51:56 UTC (rev 4148) +++ VASSAL-src/trunk/src/VASSAL/counters/Stack.java 2008-09-29 13:25:05 UTC (rev 4149) @@ -297,15 +297,17 @@ } public Rectangle boundingBox() { - Rectangle r = new Rectangle(); - Rectangle[] childBounds = new Rectangle[getPieceCount()]; + final Rectangle r = new Rectangle(); + final Rectangle[] childBounds = new Rectangle[getPieceCount()]; getMap().getStackMetrics().getContents(this, null, null, childBounds, 0, 0); + final PieceIterator visibleFilter = PieceIterator.visible(getPiecesIterator()); while (visibleFilter.hasMoreElements()) { - GamePiece p = visibleFilter.nextPiece(); - r = r.union(childBounds[indexOf(p)]); + final GamePiece p = visibleFilter.nextPiece(); + r.add(childBounds[indexOf(p)]); } + return r; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |