def _gradient_rgb_line_from_morph(
            self, text, morphlist, fore=None, back=None, style=None):
        """ Yield colorized characters, morphing from one rgb value to
            another.
        """
        try:
            listlen = len(morphlist)
        except TypeError:
            morphlist = list(morphlist)
            listlen = len(morphlist)
        neededsteps = listlen // len(text)
        iterstep = 1
        if neededsteps > iterstep:
            # Skip some members of morphlist, to be sure to reach the end.
            iterstep = neededsteps
        usevals = morphlist
        if iterstep > 1:
            # Rebuild the morphlist, skipping some.
            usevals = [usevals[i] for i in range(0, listlen, iterstep)]
        return ''.join((
            self._iter_text_wave(
                text,
                usevals,
                fore=fore,
                back=back,
                style=style,
                rgb_mode=False,
            )
        ))