[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py
From: |
Asko Soukka |
Subject: |
[ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py |
Date: |
Thu, 14 Aug 2003 15:44:15 -0400 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Branch:
Changes by: Asko Soukka <address@hidden> 03/08/14 15:44:15
Modified files:
org/fenfire/view/lava: mindMapView2D.py
Log message:
interpolating 'adjacent' to centered node works
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/mindMapView2D.py.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
Patches:
Index: fenfire/org/fenfire/view/lava/mindMapView2D.py
diff -u fenfire/org/fenfire/view/lava/mindMapView2D.py:1.12
fenfire/org/fenfire/view/lava/mindMapView2D.py:1.13
--- fenfire/org/fenfire/view/lava/mindMapView2D.py:1.12 Thu Aug 14 13:31:40 2003
+++ fenfire/org/fenfire/view/lava/mindMapView2D.py Thu Aug 14 15:44:15 2003
@@ -114,10 +114,9 @@
self.context = None
self.maxDepth = 5
- self.lastCenter = None
- self.lastAngle = None
- self.fromCenter = None
- self.fromAngle = None
+ # Stored data to help interpolation to nodes next to accursed
+ self.current = {'centerNode': None, 'startAngle': 0., 'rotationAngle':
0.}
+ self.previous = {'centerNode': None, 'startAngle': 0.,
'rotationAngle': 0.}
### fillet set up
self.angle = 1
@@ -163,7 +162,7 @@
if depth == 0: return 0
if self.maxDepth > 10: depth = depth * (10/self.maxDepth)
- d = (self.box[0] * 1./4.0) * (1-math.log10(depth))
+ d = (self.box[0] * 1./3.) * (1-math.log10(depth))
if dbg: p('dist: ', d)
return d
@@ -196,34 +195,36 @@
pl = self.getPlace(vs, paper2screen, 0,0, node, 0,0)
self.nodes.put(node, pl)
- if self.lastCenter != node:
- self.fromCenter = self.lastCenter
- self.fromAngle = self.lastAngle
- print "Old:", self.fromCenter, "New:", self.lastCenter
+ # If update interpolation help data only, if has moved
+ if self.current['centerNode'] != node: self.previous =
self.current.copy()
links = self.getLinks(self.fen, node)
- fromIndex = None
- newIndex = None
- if (self.fromCenter != None):
- fromLinks = self.getLinks(self.fen, self.fromCenter)
+ # Now, let's see, where we have came from...
+ previousIndex = None
+ currentIndex = None
+ if (self.previous['centerNode'] != None):
+ previousLinks = self.getLinks(self.fen,
self.previous['centerNode'])
try:
- fromIndex = fromLinks.index(node)
- newIndex = links.index(self.fromCenter)
+ previousIndex = previousLinks.index(node)
+ currentIndex = links.index(self.previous['centerNode'])
except ValueError: pass
if len(links) > 0:
- angle = 2*Math.PI / float(len(links))
- if fromIndex != None and newIndex != None:
- startAngle = self.fromAngle*float(fromIndex) - Math.PI
+ rotationAngle = 2*Math.PI / float(len(links))
+
+ # Calculates the "correct" starting angle
+ if previousIndex != None and currentIndex != None:
+ startAngle = self.previous['startAngle'] \
+ +
self.previous['rotationAngle']*float(previousIndex)-Math.PI \
+ + rotationAngle*float(len(links)-currentIndex)
else: startAngle = 0
- print self.fromCenter, fromIndex, newIndex, startAngle
- self.doMindMapCS(vs, paper2screen, node,
- links, 0,0, startAngle, angle, 1)
- self.drawMindMap(vs)
- self.lastCenter = node
- self.lastAngle = angle
+ self.doMindMapCS(vs, paper2screen, node, links, 0,0, startAngle,
rotationAngle, 1)
+ self.current['startAngle'] = startAngle
+ self.current['rotationAngle'] = rotationAngle
+ self.drawMindMap(vs)
+ self.current['centerNode'] = node
def drawMindMap(self, vs):
i = self.net.n.keySet().iterator()
@@ -298,9 +299,18 @@
self.doLink.put(link, None)
place = self.nodes.get(link)
newLinks = self.getLinks(fen, link)
- newAngle = rotationAngle / float(len(newLinks))
+ newAngle = Math.PI*2./float(len(newLinks))
+
+ fromIndex = None
+ try: fromIndex = newLinks.index(centerNode)
+ except ValueError: pass
+ if fromIndex != None:
+ newStartAngle = (startAngle+rotationAngle*i-Math.PI) \
+ + newAngle*float(len(newLinks)-fromIndex)
+ else: newStartAngle = 0
+
self.doMindMapCS(vs, into, link, newLinks, place[1], place[2],
- startAngle+rotationAngle*(i - 0.5), newAngle,
depth + 1)
+ newStartAngle, newAngle, depth + 1)
def getPlace(self, vs, into, x0,y0, key, angle, depth):
xy = self.getXY(x0,y0, angle, depth)
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Asko Soukka, 2003/08/14
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py,
Asko Soukka <=
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Asko Soukka, 2003/08/15
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Asko Soukka, 2003/08/15
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Matti Katila, 2003/08/17
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Matti Katila, 2003/08/17
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Matti Katila, 2003/08/17
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Matti Katila, 2003/08/18
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Matti Katila, 2003/08/19
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Asko Soukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Asko Soukka, 2003/08/26
- [ff-cvs] fenfire/org/fenfire/view/lava mindMapView2D.py, Asko Soukka, 2003/08/27