Calculates the rendering information for the given axis based on
        the current size and the minimum required delta.
        
        :param      axis     | <XChartAxis>
                    size     | <int>
                    minDelta | <int>
        
        :return     ([<str>, ..] labels, \
                     <int> count, \
                     <int> sections, \
                     <int> newSize, \
                     <int> delta)

def calculateAxis(self, axis, size, minDelta):
        """
        Calculates the rendering information for the given axis based on
        the current size and the minimum required delta.
        
        :param      axis     | <XChartAxis>
                    size     | <int>
                    minDelta | <int>
        
        :return     ([<str>, ..] labels, \
                     <int> count, \
                     <int> sections, \
                     <int> newSize, \
                     <int> delta)
        """
        labels   = axis.labels()
        count    = len(labels)
        sections = max((count - 1), 1)
        newSize  = size
        delta    = (size - minDelta) / sections
        
        # ensure the sizes fit within our specs
        if labels and delta < minDelta and axis.isDynamicScalingEnabled():
            orig = labels[:]
            total = count - count % 2 # make sure we at least get a 2
            step_range = range(2, total / 2 + 1)
            steps = [i for i in step_range if not (total / float(i)) % 1]
            
            for step in steps:
                labels = orig[::step]
                if not orig[-1] in labels:
                    labels.append(orig[-1])
                count = len(labels)
                sections = max((count - 1), 1)
                delta = (size - minDelta) / sections
                
                if minDelta < delta:
                    break
            
            if delta < minDelta:
                labels = [orig[0], orig[-1]]
                count = 2
                sections = 1
                delta = (size - minDelta) / sections
        
        if delta < minDelta:
            newSize = (minDelta * sections) + minDelta
            delta = minDelta
        
        return (labels, count, sections, newSize, delta)