Cleanup in shipbrowser items OnPaint (last step till final optimization)

This commit is contained in:
HomeWorld
2010-12-09 18:11:09 +02:00
parent f18ca8991b
commit 7c4a63a81a
2 changed files with 74 additions and 43 deletions

View File

@@ -755,20 +755,24 @@ class CategoryItem(wx.Window):
rect = self.GetRect()
windowColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
gStart = colorUtils.GetSuitableColor(windowColor, 0.2)
gMid = colorUtils.GetSuitableColor(windowColor, 0.55)
gEnd = windowColor
textColor = colorUtils.GetSuitableColor(windowColor, 1)
mdc = wx.BufferedPaintDC(self)
if self.highlighted:
bkBitmap = drawUtils.DrawGradientBar(rect.width, rect.height, gStart, gEnd, gMid)
mdc.DrawBitmap(bkBitmap, 0,0)
sFactor = 0.2
eFactor = 0
mFactor = 0.55
else:
mdc.SetBackground(wx.Brush(windowColor))
mdc.Clear()
sFactor = 0
eFactor = 0
mFactor = None
bkBitmap = drawUtils.RenderGradientBar(windowColor, rect.width, rect.height, sFactor, eFactor, mFactor)
mdc.DrawBitmap(bkBitmap, 0,0)
mdc.SetTextForeground(textColor)
@@ -994,22 +998,25 @@ class ShipItem(wx.Window):
rect = self.GetRect()
windowColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
gStart = colorUtils.GetSuitableColor(windowColor, 0.2)
gMid = colorUtils.GetSuitableColor(windowColor, 0.55)
gEnd = windowColor
textColor = colorUtils.GetSuitableColor(windowColor, 1)
mdc = wx.BufferedPaintDC(self)
if self.highlighted:
bkBitmap = drawUtils.DrawGradientBar(rect.width, rect.height, gStart, gEnd, gMid)
mdc.DrawBitmap(bkBitmap, 0,0)
mdc.SetTextForeground(textColor)
sFactor = 0.2
eFactor = 0
mFactor = 0.55
else:
mdc.SetBackground(wx.Brush(windowColor))
mdc.SetTextForeground(textColor)
mdc.Clear()
sFactor = 0
eFactor = 0
mFactor = None
bkBitmap = drawUtils.RenderGradientBar(windowColor, rect.width, rect.height, sFactor, eFactor, mFactor)
mdc.DrawBitmap(bkBitmap, 0,0)
mdc.SetTextForeground(textColor)
mdc.SetFont(self.fontBig)
@@ -1510,43 +1517,35 @@ class FitItem(wx.Window):
activeFitID = self.mainFrame.getActiveFit()
if self.highlighted and not activeFitID == self.fitID :
bkBitmap = drawUtils.DrawGradientBar(rect.width, rect.height, gStart, gEnd, gMid)
mdc.DrawBitmap(bkBitmap, 0,0)
if self.highlighted and not activeFitID == self.fitID:
sFactor = 0.2
eFactor = 0
mFactor = 0.55
else:
if activeFitID == self.fitID:
gStart = colorUtils.GetSuitableColor(windowColor, 0.2)
sFactor = 0.2
if self.highlighted:
factor = 0.3
else:
factor = (0x33 - self.selectedDelta)/100
gMid = colorUtils.GetSuitableColor(windowColor, factor)
bkBitmap = drawUtils.DrawGradientBar(rect.width, rect.height, gStart, gMid)
mdc.DrawBitmap(bkBitmap, 0,0)
eFactor = factor
mFactor = None
else:
mdc.SetBackground(wx.Brush(windowColor))
mdc.Clear()
sFactor = 0
eFactor = 0
mFactor = None
bkBitmap = drawUtils.RenderGradientBar(windowColor, rect.width, rect.height, sFactor, eFactor, mFactor)
mdc.DrawBitmap(bkBitmap, 0,0)
mdc.SetTextForeground(textColor)
# else:
# activeFitID = self.mainFrame.getActiveFit()
# if activeFitID == self.fitID:
# bkR,bkG,bkB = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
# if (bkR+bkG+bkB) >(127+127+127):
# scale = - self.selectedDelta
# else:
# scale = self.selectedDelta
# bkR += scale
# bkG += scale
# bkB += scale
# mdc.SetBackground(wx.Brush((bkR,bkG,bkB)))
# else:
# mdc.SetBackground(wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)))
#
# mdc.SetTextForeground(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT))
# mdc.Clear()
mdc.SetFont(self.fontBig)
mdc.DrawBitmap(self.shipEffBk,5 + (rect.height - self.shipEffBk.GetWidth()) / 2, (rect.height - self.shipEffBk.GetHeight()) / 2,0)

View File

@@ -1,4 +1,36 @@
import wx
import gui.utils.colorUtils as colorUtils
def RenderGradientBar(windowColor, width, height, sFactor, eFactor, mFactor = None):
if sFactor == 0 and eFactor == 0 and mFactor == None:
return DrawFilledBitmap(width,height, windowColor)
gStart = colorUtils.GetSuitableColor(windowColor, sFactor)
if mFactor:
gMid = colorUtils.GetSuitableColor(windowColor, mFactor)
else:
gMid = None
gEnd = colorUtils.GetSuitableColor(windowColor, eFactor)
return DrawGradientBar(width, height, gStart, gEnd, gMid)
def DrawFilledBitmap(width, height, color):
canvas = wx.EmptyBitmap(width,height)
mdc = wx.MemoryDC()
mdc.SelectObject(canvas)
mdc.SetBrush(wx.Brush(color))
mdc.Clear()
mdc.SelectObject(wx.NullBitmap)
return canvas
def DrawGradientBar(width, height, gStart, gEnd, gMid = None):
canvas = wx.EmptyBitmap(width,height)