Changeset - ac065d1dfcab
[Not reviewed]
default
0 1 0
Laman - 6 years ago 2019-01-05 16:59:37

annotations accomodated for multiple boards present
1 file changed with 28 insertions and 12 deletions:
0 comments (0 inline, 0 general)
exp/color_sampler.py
Show inline comments
 
@@ -28,7 +28,8 @@ class Sampler:
 
		self.letter="_"
 
		self.hsv=(0,0,0)
 
		self.pos=(0,0)
 
		self.corners=Corners()
 
		self.m=0
 
		self._corners=[Corners()]
 
		self._dirty=False
 

	
 
		self._createGUI()
 
@@ -56,7 +57,9 @@ class Sampler:
 
		self.canvas.create_image(0,0,image=self.photo,anchor="nw")
 
		self.canvas.configure(width=w,height=h)
 

	
 
		self.corners=Corners(self.annotations.get(self.filenames[self.k]) or [])
 
		self.m=0
 
		corners=self.annotations.get(self.filenames[self.k]) or []
 
		self._corners=[Corners(c) for c in corners+[[]]]
 
		self._markCorners()
 

	
 
	def switchImage(self,step):
 
@@ -65,13 +68,18 @@ class Sampler:
 
		self.k=(self.k+step+n)%n
 
		self.showImage()
 

	
 
	def switchCorners(self,step):
 
		n=len(self._corners)
 
		self.m=(self.m+step+n)%n
 
		self._markCorners()
 

	
 
	def setLetter(self,c):
 
		self.letter=c
 
		self.letterLabel.configure(text="Letter: {0}".format(c))
 

	
 
	def addCorner(self,e):
 
		self.corners.add(e.x,e.y)
 
		self.annotations[self.filenames[self.k]]=list(self.corners)
 
		self.annotations[self.filenames[self.k]]=[list(corns) for corns in self._corners if len(corns)>0]
 
		self._dirty=True
 
		self._markCorners()
 

	
 
@@ -98,6 +106,8 @@ class Sampler:
 
		self.canvas.bind("<Motion>",self.sample)
 
		root.bind("<Left>",lambda e: self.switchImage(-1))
 
		root.bind("<Right>",lambda e: self.switchImage(1))
 
		root.bind("<Up>",lambda e: self.switchCorners(-1))
 
		root.bind("<Down>",lambda e: self.switchCorners(1))
 
		root.bind("<b>",lambda e: self.setLetter("b"))
 
		root.bind("<e>",lambda e: self.setLetter("e"))
 
		root.bind("<w>",lambda e: self.setLetter("w"))
 
@@ -117,15 +127,21 @@ class Sampler:
 

	
 
	def _markCorners(self):
 
		self.canvas.delete("mark")
 
		for c in self.corners:
 
			(x,y)=(c.x,c.y)
 
			self.canvas.create_oval(x-2,y-2,x+2,y+2,fill="#00ff00",tags="mark")
 
		if self.corners.is_canon():
 
			(a,b,c,d)=self.corners
 
			self.canvas.create_line(a.x,a.y,b.x,b.y,fill="#00ff00",tags="mark")
 
			self.canvas.create_line(b.x,b.y,c.x,c.y,fill="#00ff00",tags="mark")
 
			self.canvas.create_line(c.x,c.y,d.x,d.y,fill="#00ff00",tags="mark")
 
			self.canvas.create_line(d.x,d.y,a.x,a.y,fill="#00ff00",tags="mark")
 
		for corns in self._corners:
 
			for c in corns:
 
				(x,y)=(c.x,c.y)
 
				self.canvas.create_oval(x-2,y-2,x+2,y+2,fill="#00ff00",tags="mark")
 
			if corns.is_canon():
 
				(a,b,c,d)=corns
 
				dash=tuple() if corns is self.corners else (4,4)
 
				self.canvas.create_line(a.x,a.y,b.x,b.y,fill="#00ff00",dash=dash,tags="mark")
 
				self.canvas.create_line(b.x,b.y,c.x,c.y,fill="#00ff00",dash=dash,tags="mark")
 
				self.canvas.create_line(c.x,c.y,d.x,d.y,fill="#00ff00",dash=dash,tags="mark")
 
				self.canvas.create_line(d.x,d.y,a.x,a.y,fill="#00ff00",dash=dash,tags="mark")
 

	
 
	@property
 
	def corners(self):
 
		return self._corners[self.m]
 

	
 

	
 
class DataFile(MutableMapping):
0 comments (0 inline, 0 general)