nukescripts.autobackdrop

Package nukescripts :: Module autobackdrop |
[hide private]
[frames] | no frames]

# Source Code for Module nukescripts.autobackdrop

     1  # Copyright (c) 2009 The Foundry Visionmongers Ltd.  All Rights Reserved.
     2
     3  import nuke, random
     4
     5 -def autoBackdrop():
     6    '''
     7    Automatically puts a backdrop behind the selected nodes.
     8
     9    The backdrop will be just big enough to fit all the select nodes in, with room
    10    at the top for some text in a large font.
    11    '''
    12    selNodes = nuke.selectedNodes()
    13    if not selNodes:
    14      return nuke.nodes.BackdropNode()
    15
    16    # Calculate bounds for the backdrop node.
    17    bdX = min([node.xpos() for node in selNodes])
    18    bdY = min([node.ypos() for node in selNodes])
    19    bdW = max([node.xpos() + node.screenWidth() for node in selNodes]) - bdX
    20    bdH = max([node.ypos() + node.screenHeight() for node in selNodes]) - bdY
    21
    22    # Expand the bounds to leave a little border. Elements are offsets for left, top, right and bottom edges respectively
    23    left, top, right, bottom = (-10, -80, 10, 10)
    24    bdX += left
    25    bdY += top
    26    bdW += (right - left)
    27    bdH += (bottom - top)
    28
    29    n = nuke.nodes.BackdropNode(xpos = bdX,
    30                                bdwidth = bdW,
    31                                ypos = bdY,
    32                                bdheight = bdH,
    33                                tile_color = int((random.random()*(13 - 11))) + 11,
    34                                note_font_size=42)
    35
    36    # revert to previous selection
    37    n['selected'].setValue(False)
    38    for node in selNodes:
    39      node['selected'].setValue(True)
    40
    41    return n
    42