# TexMemWatcher

from direct.showutil.TexMemWatcher import TexMemWatcher

This class creates a separate graphics window that displays an approximation of the current texture memory, showing the textures that are resident and/or active, and an approximation of the amount of texture memory consumed by each one. It's intended as a useful tool to help determine where texture memory is being spent.
Although it represents the textures visually in a 2-d space, it doesn't actually have any idea how textures are physically laid out in memory--but it has to lay them out somehow, so it makes something up. It occasionally rearranges the texture display when it feels it needs to, without regard to what the graphics card is actually doing. This tool can't be used to research texture memory fragmentation issues.

## Inheritance:

TexMemWatcher: DirectObject
DirectObject:

## Methods of TexMemWatcher:

__doSetLimit
__init__
cleanup
enterRegion
findAvailableHoles
findEmptyRuns
findHole
findHolePieces
findLargestHole
findOverflowHole
formatSize
graphicsMemoryLimitChanged
isolateTexture
leaveRegion
makeCanvasBackground
mouseClick
placeTexture
reconfigureWindow
repack
setLimit
setRollover
setupCanvas
setupGui
unplaceTexture
updateTextures
windowEvent

## Methods of DirectObject:

__init__
_addTask
_clearTask
accept
acceptOnce
addTask
classTree
detectLeaks
doMethodLater
getAllAccepting
ignore
ignoreAll
isAccepting
isIgnoring
removeAllTasks
removeTask

__doSetLimit def __doSetLimit(self, limit) Internal implementation of setLimit().

__init__ def __init__(self, gsg=None, limit=None) Undocumented function.

cleanup def cleanup(self) Undocumented function.

enterRegion def enterRegion(self, region, buttonName) the mouse has rolled over a texture.

findAvailableHoles def findAvailableHoles(self, area, w=None, h=None) Finds a list of available holes, of at least the indicated area. Returns a list of tuples, where each tuple is of the form (area, tp). If w and h are non-None, this will short-circuit on the first hole it finds that fits w x h, and return just that hole in a singleton list.

findEmptyRuns def findEmptyRuns(self, bm) Separates a bitmask into a list of (l, r) tuples, corresponding to the empty regions in the row between 0 and self.w.

findHole def findHole(self, area, w, h) Searches for a rectangular hole that is at least area square units big, regardless of its shape, but attempt to find one that comes close to the right shape, at least. If one is found, returns an appropriate TexPlacement; otherwise, returns None.

findHolePieces def findHolePieces(self, area) Returns a list of holes whose net area sums to the given area, or None if there are not enough holes.

findLargestHole def findLargestHole(self) Undocumented function.

findOverflowHole def findOverflowHole(self, area, w, h) Searches for a hole large enough for (w, h), in the overflow space. Since the overflow space is infinite, this will always succeed.

formatSize def formatSize(self, size) Returns a size in MB, KB, GB, whatever.

graphicsMemoryLimitChanged def graphicsMemoryLimitChanged(self) Undocumented function.

isolateTexture def isolateTexture(self, tr) Isolates the indicated texture onscreen, or None to restore normal mode.

leaveRegion def leaveRegion(self, region, buttonName) the mouse is no longer over a texture.

makeCanvasBackground def makeCanvasBackground(self) Undocumented function.

mouseClick def mouseClick(self) Received a mouse-click within the window. This isolates the currently-highlighted texture into a full-window presentation.

placeTexture def placeTexture(self, tr) Places the texture somewhere on the canvas where it will fit.

reconfigureWindow def reconfigureWindow(self) Resets everything for a new window size.

repack def repack(self) Repacks all of the current textures.

setLimit def setLimit(self, limit=None) Indicates the texture memory limit. If limit is None or unspecified, the limit is taken from the GSG, if any; or there is no limit.

setRollover def setRollover(self, tr, pi) Sets the highlighted texture (due to mouse rollover) to the indicated texture, or None to clear it.

setupCanvas def setupCanvas(self) Creates the "canvas", which is the checkerboard area where texture memory is laid out. The canvas has its own DisplayRegion.

setupGui def setupGui(self) Creates the gui elements and supporting structures.

unplaceTexture def unplaceTexture(self, tr) Removes the texture from its place on the canvas.

updateTextures def updateTextures(self, task) Gets the current list of resident textures and adds new textures or removes old ones from the onscreen display, as necessary.

windowEvent def windowEvent(self, win) Undocumented function.

__init__ def __init__(self) Undocumented function.

_addTask def _addTask(self, task) Undocumented function.

_clearTask def _clearTask(self, task) Undocumented function.

accept def accept(self, event, method, extraArgs=[]) Undocumented function.

acceptOnce def acceptOnce(self, event, method, extraArgs=[]) Undocumented function.

addTask def addTask(self, *args, **kwargs) Undocumented function.

classTree def classTree(self) Undocumented function.

detectLeaks def detectLeaks(self) Undocumented function.

doMethodLater def doMethodLater(self, *args, **kwargs) Undocumented function.

getAllAccepting def getAllAccepting(self) Undocumented function.

ignore def ignore(self, event) Undocumented function.

ignoreAll def ignoreAll(self) Undocumented function.

isAccepting def isAccepting(self, event) Undocumented function.

isIgnoring def isIgnoring(self, event) Undocumented function.

removeAllTasks def removeAllTasks(self) Undocumented function.

removeTask def removeTask(self, taskOrName) Undocumented function.