<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def viewport_changed(self, screen_id, x, y, width, height):
 """Signals that framebuffer window viewport has changed. in screen_id of type int Monitor to take the screenshot from. in x of type int Framebuffer x offset. in y of type int Framebuffer y offset. in width of type int Viewport width. in height of type int Viewport height. raises :class:`OleErrorInvalidarg` The specified viewport data is invalid. """

        if not isinstance(screen_id, baseinteger):
            raise TypeError("screen_id can only be an instance of type baseinteger")
        if not isinstance(x, baseinteger):
            raise TypeError("x can only be an instance of type baseinteger")
        if not isinstance(y, baseinteger):
            raise TypeError("y can only be an instance of type baseinteger")
        if not isinstance(width, baseinteger):
            raise TypeError("width can only be an instance of type baseinteger")
        if not isinstance(height, baseinteger):
            raise TypeError("height can only be an instance of type baseinteger")
        self._call("viewportChanged",
                     in_p=[screen_id, x, y, width, height])