def render(self, painter, node=None):
        """
        Draws this node based on its style information
        
        :param      painter | <QPainter>
        """
        policy = self.visibilityPolicy()
        
        if policy == XNodeHotspot.VisibilityPolicy.Never:
            return
        elif policy == XNodeHotspot.VisibilityPolicy.Hover and \
            not self._hovered:
            return
        elif policy == XNodeHotspot.VisibilityPolicy.NodeHover and \
            not (node and node.isHovered()):
            return
        
        # initialize the look
        painter.setPen(self.borderColor())
        painter.setBrush(self.color())
        
        # draw a circle
        if self.style() == XNodeHotspot.Style.Circle:
            painter.drawEllipse(self.rect())
        
        # draw a square
        elif self.style() == XNodeHotspot.Style.Square:
            painter.drawRect(self.rect())
        
        # draw an icon
        elif self.style() == XNodeHotspot.Style.Icon:
            rect = self.rect()
            x = int(rect.x())
            y = int(rect.y())
            w = int(rect.size().width())
            h = int(rect.size().height())
            
            icon = self.icon()
            hicon = self.hoverIcon()
            
            if not self.isEnabled():
                pixmap = icon.pixmap(w, h, QIcon.Disabled)
            elif not self._hovered:
                pixmap = icon.pixmap(w, h)
            elif hicon:
                pixmap = hicon.pixmap(w, h)
            else:
                pixmap = icon.pixmap(w, h, QIcon.Selected)
            
            painter.drawPixmap(x, y, pixmap)