More work on the scene map.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@313 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: Node.java,v 1.2 2001/08/23 00:22:30 shaper Exp $
|
// $Id: Node.java,v 1.3 2001/08/23 23:44:12 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.nodemap;
|
package com.threerings.nodemap;
|
||||||
|
|
||||||
@@ -28,7 +28,6 @@ public abstract class Node
|
|||||||
_width = width;
|
_width = width;
|
||||||
_height = height;
|
_height = height;
|
||||||
|
|
||||||
_pos = new Point();
|
|
||||||
_edges = new ArrayList();
|
_edges = new ArrayList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,13 +60,20 @@ public abstract class Node
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the node's current position in pixels.
|
* Returns the node's x position in screen coordinates.
|
||||||
*
|
|
||||||
* @return point the node position.
|
|
||||||
*/
|
*/
|
||||||
public Point getPosition ()
|
public int getX ()
|
||||||
{
|
{
|
||||||
return _pos;
|
return _x;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the node's y position in screen coordinates.
|
||||||
|
*/
|
||||||
|
public int getY ()
|
||||||
|
{
|
||||||
|
return _y;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -76,9 +82,10 @@ public abstract class Node
|
|||||||
* @param x the x-position.
|
* @param x the x-position.
|
||||||
* @param y the y-position.
|
* @param y the y-position.
|
||||||
*/
|
*/
|
||||||
public void setPosition (int x, int y)
|
public void setLocation (int x, int y)
|
||||||
{
|
{
|
||||||
_pos.setLocation(x, y);
|
_x = x;
|
||||||
|
_y = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -91,8 +98,8 @@ public abstract class Node
|
|||||||
*/
|
*/
|
||||||
public boolean contains (int x, int y)
|
public boolean contains (int x, int y)
|
||||||
{
|
{
|
||||||
return (x >= _pos.x && x <= (_pos.x + _width) &&
|
return (x >= _x && x <= (_x + _width) &&
|
||||||
y >= _pos.y && y <= (_pos.y + _height));
|
y >= _y && y <= (_y + _height));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -146,8 +153,8 @@ public abstract class Node
|
|||||||
int wid = fm.stringWidth(_name) + 10;
|
int wid = fm.stringWidth(_name) + 10;
|
||||||
int hei = fm.getAscent() + 4;
|
int hei = fm.getAscent() + 4;
|
||||||
|
|
||||||
int xpos = _pos.x + ((_width - wid) / 2);
|
int xpos = _x + ((_width - wid) / 2);
|
||||||
int ypos = _pos.y + ((_height - hei) / 2);
|
int ypos = _y + ((_height - hei) / 2);
|
||||||
|
|
||||||
// draw the yellow box
|
// draw the yellow box
|
||||||
g.setColor(Color.yellow);
|
g.setColor(Color.yellow);
|
||||||
@@ -195,7 +202,7 @@ public abstract class Node
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** The position in pixel coordinates. */
|
/** The position in pixel coordinates. */
|
||||||
protected Point _pos;
|
protected int _x, _y;
|
||||||
|
|
||||||
/** The dimensions in pixel coordinates. */
|
/** The dimensions in pixel coordinates. */
|
||||||
protected int _width, _height;
|
protected int _width, _height;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: NodeMap.java,v 1.2 2001/08/23 00:22:30 shaper Exp $
|
// $Id: NodeMap.java,v 1.3 2001/08/23 23:44:12 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.nodemap;
|
package com.threerings.nodemap;
|
||||||
|
|
||||||
@@ -59,13 +59,13 @@ public class NodeMap
|
|||||||
Iterator iter = _nodes.iterator();
|
Iterator iter = _nodes.iterator();
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
Node n = (Node)iter.next();
|
Node n = (Node)iter.next();
|
||||||
Point pos = n.getPosition();
|
int x = n.getX(), y = n.getY();
|
||||||
int wid = n.getWidth(), hei = n.getHeight();
|
int wid = n.getWidth(), hei = n.getHeight();
|
||||||
|
|
||||||
_minx = Math.min(_minx, pos.x);
|
_minx = Math.min(_minx, x);
|
||||||
_maxx = Math.max(_maxx, pos.x + wid);
|
_maxx = Math.max(_maxx, x + wid);
|
||||||
_miny = Math.min(_miny, pos.y);
|
_miny = Math.min(_miny, y);
|
||||||
_maxy = Math.max(_maxy, pos.y + hei);
|
_maxy = Math.max(_maxy, y + hei);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,9 +100,9 @@ public class NodeMap
|
|||||||
// highlight the last node entered
|
// highlight the last node entered
|
||||||
if (_lastnode != null) {
|
if (_lastnode != null) {
|
||||||
g.setColor(Color.red);
|
g.setColor(Color.red);
|
||||||
Point pos = _lastnode.getPosition();
|
int x = _lastnode.getX(), y = _lastnode.getY();
|
||||||
int wid = _lastnode.getWidth(), hei = _lastnode.getHeight();
|
int wid = _lastnode.getWidth(), hei = _lastnode.getHeight();
|
||||||
g.drawRect(pos.x, pos.y, wid, hei);
|
g.drawRect(x, y, wid, hei);
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw the tool tip, if any
|
// draw the tool tip, if any
|
||||||
@@ -263,8 +263,8 @@ public class NodeMap
|
|||||||
|
|
||||||
// inform the node of the mouse click, with
|
// inform the node of the mouse click, with
|
||||||
// coordinates translated to suit node interior
|
// coordinates translated to suit node interior
|
||||||
Point pos = n.getPosition();
|
int nx = n.getX(), ny = n.getY();
|
||||||
n.handleMouseClicked(x - pos.x, y - pos.y);
|
n.handleMouseClicked(x - nx, y - ny);
|
||||||
|
|
||||||
// let the tool tip manager know about the click
|
// let the tool tip manager know about the click
|
||||||
if (_tipmgr != null) {
|
if (_tipmgr != null) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: DirectionalEdge.java,v 1.1 2001/08/20 22:56:55 shaper Exp $
|
// $Id: DirectionalEdge.java,v 1.2 2001/08/23 23:44:12 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.nodemap.direction;
|
package com.threerings.nodemap.direction;
|
||||||
|
|
||||||
@@ -7,28 +7,47 @@ import java.awt.*;
|
|||||||
|
|
||||||
import com.threerings.nodemap.*;
|
import com.threerings.nodemap.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A directional edge extends the {@link Edge} object to allow
|
||||||
|
* associating a direction with the edge and rendering the edge to the
|
||||||
|
* screen. The edge direction must be one of the directional
|
||||||
|
* constants detailed in the {@link Directions} object.
|
||||||
|
*/
|
||||||
public class DirectionalEdge extends Edge
|
public class DirectionalEdge extends Edge
|
||||||
{
|
{
|
||||||
/** The edge direction as a {@link Directions} constant. */
|
/** The edge direction as a {@link Directions} constant. */
|
||||||
public int dir;
|
public int dir;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a directional edge.
|
||||||
|
*
|
||||||
|
* @param src the source node.
|
||||||
|
* @param dst the destination node.
|
||||||
|
* @param dir the edge direction.
|
||||||
|
*/
|
||||||
public DirectionalEdge (Node src, Node dst, int dir)
|
public DirectionalEdge (Node src, Node dst, int dir)
|
||||||
{
|
{
|
||||||
super(src, dst);
|
super(src, dst);
|
||||||
this.dir = dir;
|
this.dir = dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render the edge to the given graphics context.
|
||||||
|
*
|
||||||
|
* @param g the graphics context.
|
||||||
|
*/
|
||||||
public void paint (Graphics g)
|
public void paint (Graphics g)
|
||||||
{
|
{
|
||||||
g.setColor(Color.black);
|
g.setColor(Color.black);
|
||||||
|
|
||||||
Point spos = src.getPosition(), dpos = dst.getPosition();
|
int sx = src.getX(), sy = src.getY();
|
||||||
|
int dx = dst.getX(), dy = dst.getY();
|
||||||
|
|
||||||
int csx = spos.x + (src.getWidth() / 2);
|
int csx = sx + (src.getWidth() / 2);
|
||||||
int csy = spos.y + (src.getHeight() / 2);
|
int csy = sy + (src.getHeight() / 2);
|
||||||
|
|
||||||
int cdx = dpos.x + (dst.getWidth() / 2);
|
int cdx = dx + (dst.getWidth() / 2);
|
||||||
int cdy = dpos.y + (dst.getHeight() / 2);
|
int cdy = dy + (dst.getHeight() / 2);
|
||||||
|
|
||||||
g.drawLine(csx, csy, cdx, cdy);
|
g.drawLine(csx, csy, cdx, cdy);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: DirectionalLayoutManager.java,v 1.1 2001/08/20 22:56:55 shaper Exp $
|
// $Id: DirectionalLayoutManager.java,v 1.2 2001/08/23 23:44:12 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.nodemap.direction;
|
package com.threerings.nodemap.direction;
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ public class DirectionalLayoutManager implements LayoutManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set the node's location
|
// set the node's location
|
||||||
n.setPosition(x, y);
|
n.setLocation(x, y);
|
||||||
|
|
||||||
// remember that we've placed this node
|
// remember that we've placed this node
|
||||||
_closed.put(n, null);
|
_closed.put(n, null);
|
||||||
|
|||||||
Reference in New Issue
Block a user