Exemplo n.º 1
0
    def restoreGeometry(self, geometry):
        """
        Restores the geometry of this subwindow

        :param geometry: the saved state as a QByteArray instance
        :return:
        """
        if geometry.size() < 4:
            return False
        stream = QDataStream(geometry)
        if stream.readUInt32() != 0x1D9D0CB:
            return False
        if stream.readUInt16() != 1:
            return False
        stream.readUInt16()  # minorVersion is ignored.
        x = stream.readInt64()
        y = stream.readInt64()
        width = stream.readInt64()
        height = stream.readInt64()
        restoredFrameGeometry = QRect(x, y, width, height)
        x = stream.readInt64()
        y = stream.readInt64()
        width = stream.readInt64()
        height = stream.readInt64()
        restoredNormalGeometry = QRect(x, y, width, height)
        maximized = stream.readUInt32()
        fullScreen = stream.readUInt32()
        frameHeight = 20
        if not restoredFrameGeometry.isValid():
            restoredFrameGeometry = QRect(QPoint(0, 0), self.sizeHint())
        if not restoredNormalGeometry.isValid():
            restoredNormalGeometry = QRect(QPoint(0, frameHeight),
                                           self.sizeHint())
        restoredFrameGeometry.moveTop(max(restoredFrameGeometry.top(), 0))
        restoredNormalGeometry.moveTop(
            max(restoredNormalGeometry.top(), 0 + frameHeight))
        if maximized or fullScreen:
            self.setGeometry(restoredNormalGeometry)
            ws = self.windowState()
            if maximized:
                ws |= Qt.WindowMaximized
            if fullScreen:
                ws |= Qt.WindowFullScreen
            self.setWindowState(ws)
        else:
            offset = QPoint()
            self.setWindowState(self.windowState()
                                & ~(Qt.WindowMaximized | Qt.WindowFullScreen))
            self.move(restoredFrameGeometry.topLeft() + offset)
            self.resize(restoredNormalGeometry.size())
        return True
Exemplo n.º 2
0
 def _crop(self, rect: QRect):
     """ Crop View Selection Area """
     if rect.isValid():
         self.__history.append(rect)
         self.__render_image = self.__render_image.copy(rect)
         self.__tool.setImage(self.__render_image)
         self.adjustAspectRatio()
Exemplo n.º 3
0
def array2DSlices(a2D, rect):
    """
    Return the 2-uple of slice objects convenient to
    index the intersection of the 2 dimensional array a2D
    with rect.
    @param a2D:
    @type a2D: ndarray, ndims >=2
    @param rect: (x, y, w, h)
    @type rect: 4-uple of int or QRect object
    @return:
    @rtype: 2-uple of slice objects
    """
    # convert rect to a QRect object
    if type(rect) not in [QRect]:
        try:
            rect = QRect(*rect)
        except (TypeError, ValueError):
            rect = QRect()
    # intersect a2D with rect
    qrect = QRect(0, 0, a2D.shape[1], a2D.shape[0]) & rect
    if qrect.isValid():
        return slice(qrect.top(),
                     qrect.bottom()), slice(qrect.left(), qrect.right())
    else:
        return slice(0, 0), slice(0, 0)
Exemplo n.º 4
0
    def _finalCrop(self, rect: QRect):
        """ Crop Selection Area """
        if self.__image:
            image = self.__image
            if self.__history:
                for r in self.__history:
                    image = image.crop(r.getCoords())

            if rect.isValid():
                self.__history.append(rect)
                image = image.crop(rect.getCoords())

            self.__history = []
            self.__image = image
            self.__render_image = ImageQt.ImageQt(self.__image)
            self.__tool.setImage(self.__render_image)
            self.result.emit(image)  # type: ignore