Resize fixes

This commit is contained in:
Josh Yelon 2008-02-28 23:04:48 +00:00
parent 4eed2ad84f
commit 4669ea9486
2 changed files with 23 additions and 3 deletions

View File

@ -206,6 +206,13 @@ class CommonFilters:
return True
def setBloom(self, blend=(0.3,0.4,0.3,0.0), mintrigger=0.6, maxtrigger=1.0, desat=0.6, intensity=1.0, size="medium"):
if (size==0): size="off"
elif (size==1): size="small"
elif (size==2): size="medium"
elif (size==3): size="large"
if (size=="off"):
self.delBloom()
return
if (maxtrigger==None): maxtrigger=mintrigger+0.8
oldconfig = self.configuration.get("Bloom", None)
fullrebuild = True

View File

@ -25,10 +25,11 @@ from pandac.PandaModules import Camera, DisplayRegion
from pandac.PandaModules import OrthographicLens
from pandac.PandaModules import AuxBitplaneAttrib
from direct.directnotify.DirectNotifyGlobal import *
from direct.showbase.DirectObject import DirectObject
__all__ = ["FilterManager"]
class FilterManager:
class FilterManager(DirectObject):
notify = None
@ -70,6 +71,7 @@ class FilterManager:
self.nextsort = self.win.getSort() - 1000
self.basex = 0
self.basey = 0
self.accept("window-event", self.resizeBuffers)
def getClears(self,region):
@ -255,7 +257,7 @@ class FilterManager:
buffer.getDisplayRegion(0).setActive(1)
self.buffers.append(buffer)
self.sizes.append((1, 1, 1))
self.sizes.append((mul, div, align))
return quad
@ -274,7 +276,7 @@ class FilterManager:
props.setAuxRgba(2)
buffer=base.graphicsEngine.makeOutput(
self.win.getPipe(), name, -1,
props, winprops, GraphicsPipe.BFRefuseWindow,
props, winprops, GraphicsPipe.BFRefuseWindow | GraphicsPipe.BFResizeable,
self.win.getGsg(), self.win)
if (buffer == None):
return buffer
@ -292,6 +294,16 @@ class FilterManager:
self.nextsort += 1
return buffer
def windowEvent(self, win):
""" When the window changes size, automatically resize all buffers """
self.resizeBuffers()
def resizeBuffers(self, win):
""" Resize all buffers to match the size of the window. """
for i in range(len(self.buffers)):
(mul, div, align) = self.sizes[i]
(xsize, ysize) = self.getScaledSize(mul, div, align)
self.buffers[i].setSize(xsize, ysize)
def cleanup(self):
""" Restore everything to its original state, deleting any
@ -305,6 +317,7 @@ class FilterManager:
self.setClears(self.win, self.wclears)
self.setClears(self.region, self.rclears)
self.camera.node().setInitialState(self.caminit)
self.region.setCamera(self.camera)
self.nextsort = self.win.getSort() - 1000
self.basex = 0
self.basey = 0