- Hopefully improved the attack displays. Needs checking.

This commit is contained in:
ccremers 2006-12-13 15:43:10 +00:00
parent 68e9ad9cf4
commit 2886e1a7e5
2 changed files with 36 additions and 24 deletions

View File

@ -18,6 +18,9 @@ if Preference.usePIL():
#---------------------------------------------------------------------------
class AttackDisplay(wx.ScrolledWindow):
"""
Display an attack (inside a tab or not)
"""
def __init__(self, daddy, parent, attack):
self.win = daddy
@ -28,10 +31,7 @@ class AttackDisplay(wx.ScrolledWindow):
# [CC][X] The below statement might be iffy on older versions.
# (Python 2.3? What settings?)
# Cf. bug report Vimal Subra
# So for now, we just don't set it. It's not that important, and
# if it helps avoiding breaking the tool, then we just throw it
# out for now. This *is* a beta, remember.
#self.SetBackgroundColour(wx.Colour(255,255,255))
self.SetBackgroundColour(wx.Colour(255,255,255))
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Image = wx.StaticBitmap(self, -1, wx.EmptyBitmap(1,1))
@ -66,15 +66,17 @@ class AttackDisplay(wx.ScrolledWindow):
if not self.win.fit:
return
# This is needed, don't ask me why.
self.SetScrollbars(0,0,0,0,0,0)
(sw,sh) = self.GetClientSizeTuple()
(W,H) = (sw,sh)
def makefit(W,H):
(framewidth,frameheight) = self.GetClientSizeTuple()
(virtualwidth,virtualheight) = (framewidth,frameheight)
def makefit(width,height):
if self.win.fit:
# determine scaling factors for fitting
wfactor = float(sw) / W
hfactor = float(sh) / H
wfactor = float(framewidth) / width
hfactor = float(frameheight) / height
# select smallest factor (so it will fit)
if hfactor < wfactor:
@ -83,42 +85,49 @@ class AttackDisplay(wx.ScrolledWindow):
factor = wfactor
# apply scaling factor
W = W * factor
H = H * factor
return (int(W),int(H))
width = width * factor
height = height * factor
else:
factor = 1.0
return (factor, int(width), int(height))
if self.attack.filetype == "png":
bmp = self.original
if not bmp.Ok():
bmp = wx.EmptyImage(1,1)
else:
(W,H) = (bmp.GetWidth(), bmp.GetHeight())
(originalwidth,originalheight) = (bmp.GetWidth(), bmp.GetHeight())
if self.win.fit:
(W,H) = makefit(W,H)
bmp = self.original.Scale(W,H)
(factor, virtualwidth, virtualheight) = makefit(originalwidth,originalheight)
bmp = self.original.Scale(virtualwidth,virtualheight)
self.Image.SetBitmap(wx.BitmapFromImage(bmp))
elif self.attack.filetype == "ps":
pil = self.original.copy()
(W,H) = pil.size
(W,H) = makefit(W,H)
(originalwidth,originalheight) = pil.size
(factor, virtualwidth, virtualheight) = makefit(originalwidth,originalheight)
# we really only want antialias when it's smaller
pil.thumbnail((W,H),Image.ANTIALIAS)
if factor < 1.0:
pil.thumbnail((virtualwidth,virtualheight),Image.ANTIALIAS)
else:
pil.thumbnail((virtualwidth,virtualheight))
image = wx.EmptyImage(pil.size[0],pil.size[1])
image.SetData(pil.convert('RGB').tostring())
self.Image.SetBitmap(image.ConvertToBitmap())
else:
print "Unknown file type %s." % (self.attack.filetype)
self.SetVirtualSize((virtualwidth,virtualheight))
#self.box.SetItemMinSize(self.Image.GetContainingSizer())
self.box.Layout()
# wx.StaticBitmap(self, -1, bmp, (0, 0), (bmp.GetWidth(), bmp.GetHeight()))
step = 20
xn = int(W / step) + 1
yn = int(H / step) + 1
xn = int(virtualwidth / step) + 1
yn = int(virtualheight / step) + 1
self.SetScrollbars(step,step,xn,yn,0,0)
self.Refresh()
@ -127,8 +136,9 @@ class AttackDisplay(wx.ScrolledWindow):
class AttackWindow(wx.Frame):
def __init__(self,cl):
super(AttackWindow, self).__init__(None, size=(400,700))
self.SetBackgroundColour('Default')
super(AttackWindow, self).__init__(None, size=(800,800))
# [CC][X] Same here; no background set for safety.
#self.SetBackgroundColour('Default')
self.claim = cl
# TODO maybe fitting defaults should come from Preferences.

View File

@ -138,7 +138,9 @@ class AttackThread(threading.Thread):
fp.write(l)
if l.startswith("digraph"):
# Write additional stuff for this graph
graphLine("dpi=96")
#
# [CC][x] This dpi setting messed up quite a bit
#graphLine("dpi=96")
graphLine("rankdir=TB")
graphLine("nodesep=0.1")
graphLine("ranksep=0.001")