def _get_text(self, text):
        """Creates frames based on the selected animation
        Returns
        -------
        self
        """
        animation = self._animation
        stripped_text = text.strip()

        # Check which frame of the animation is the widest
        max_spinner_length = max([len(i) for i in self._spinner["frames"]])

        # Subtract to the current terminal size the max spinner length
        # (-1 to leave room for the extra space between spinner and text)
        terminal_width = get_terminal_columns() - max_spinner_length - 1
        text_length = len(stripped_text)

        frames = []

        if terminal_width < text_length and animation:
            if animation == "bounce":
                """
                Make the text bounce back and forth
                """
                for x in range(0, text_length - terminal_width + 1):
                    frames.append(stripped_text[x : terminal_width + x])
                frames.extend(list(reversed(frames)))
            elif "marquee":
                """
                Make the text scroll like a marquee
                """
                stripped_text = stripped_text + " " + stripped_text[:terminal_width]
                for x in range(0, text_length + 1):
                    frames.append(stripped_text[x : terminal_width + x])
        elif terminal_width < text_length and not animation:
            # Add ellipsis if text is larger than terminal width and no animation was specified
            frames = [stripped_text[: terminal_width - 6] + " (...)"]
        else:
            frames = [stripped_text]

        return {"original": text, "frames": frames}
Creates frames based on the selected animation
        Returns
        -------
        self
        
halo/halo.py