'**SUMMARY**
Creates a lowpass filter of given size and order.
**PARAMETERS**
* *xCutoff*       - int - horizontal cut off frequency
- list - provide a list of three cut off frequencies
to create a 3 channel filter
* *yCutoff*       - int - vertical cut off frequency
- list - provide a list of three cut off frequencies
to create a 3 channel filter
* *size*      - size of the filter (width, height)
**RETURNS**
DFT filter.
**EXAMPLE**
>>> flt = DFT.createLowpassFilter(xCutoff=75, size=(320, 280))
>>> flt = DFT.createLowpassFilter(xCutoff=[75], size=(320, 280))
>>> flt = DFT.createLowpassFilter(xCutoff=[75, 100, 120],
size=(320, 280))
>>> flt = DFT.createLowpassFilter(xCutoff=75, yCutoff=35,
size=(320, 280))
>>> flt = DFT.createLowpassFilter(xCutoff=[75], yCutoff=[35],
size=(320, 280))
>>> flt = DFT.createLowpassFilter(xCutoff=[75, 100, 125], yCutoff=35,
size=(320, 280))
>>> # yCutoff will be [35, 35, 35]
>>> flt = DFT.createLowpassFilter(xCutoff=[75, 113, 124],
yCutoff=[35, 45, 90],
size=(320, 280))
>>> img = Image(\'lenna\')
>>> flt.applyFilter(img).show()'

@classmethod
def createLowpassFilter(self, xCutoff, yCutoff=None, size=(64, 64)):

    if isinstance(xCutoff, list):
        if ((len(xCutoff) != 3) and (len(xCutoff) != 1)):
            warnings.warn('xCutoff    list    must    be    of    size    3    or    1')
            return None
        if isinstance(yCutoff, list):
            if ((len(yCutoff) != 3) and (len(yCutoff) != 1)):
                warnings.warn('yCutoff    list    must    be    of    size    3    or    1')
                return None
            if (len(yCutoff) == 1):
                yCutoff = ([yCutoff[0]] * len(xCutoff))
        else:
            yCutoff = ([yCutoff] * len(xCutoff))
        stackedfilter = DFT()
        for (xfreq, yfreq) in zip(xCutoff, yCutoff):
            stackedfilter = stackedfilter._stackFilters(self.createLowpassFilter(xfreq, yfreq, size))
        image = Image(stackedfilter._numpy)
        retVal = DFT(numpyarray=stackedfilter._numpy, image=image, xCutoffLow=xCutoff, yCutoffLow=yCutoff, channels=len(xCutoff), size=size, type=stackedfilter._type, order=self._order, frequency=stackedfilter._freqpass)
        return retVal
    (w, h) = size
    xCutoff = np.clip(int(xCutoff), 0, (w / 2))
    if (yCutoff is None):
        yCutoff = xCutoff
    yCutoff = np.clip(int(yCutoff), 0, (h / 2))
    flt = np.zeros((w, h))
    flt[0:xCutoff, 0:yCutoff] = 255
    flt[0:xCutoff, (h - yCutoff):h] = 255
    flt[(w - xCutoff):w, 0:yCutoff] = 255
    flt[(w - xCutoff):w, (h - yCutoff):h] = 255
    img = Image(flt)
    lowpassFilter = DFT(size=size, numpyarray=flt, image=img, type='Lowpass', xCutoffLow=xCutoff, yCutoffLow=yCutoff, frequency='lowpass')
    return lowpassFilter
