Commit 318718bf authored by Andy Stewart's avatar Andy Stewart
Browse files

Press i in pdf viewer to inverted color.

parent 4b5fad6e
Loading
Loading
Loading
Loading
+26 −2
Original line number Diff line number Diff line
@@ -55,13 +55,17 @@ class AppBuffer(Buffer):
                self.buffer_widget.scroll_down()

    def save_session_data(self):
        return "{0}:{1}:{2}".format(self.buffer_widget.scroll_offset, self.buffer_widget.scale, self.buffer_widget.read_mode)
        return "{0}:{1}:{2}:{3}".format(self.buffer_widget.scroll_offset,
                                        self.buffer_widget.scale,
                                        self.buffer_widget.read_mode,
                                        self.buffer_widget.inverted_mode)

    def restore_session_data(self, session_data):
        (scroll_offset, scale, read_mode) = session_data.split(":")
        (scroll_offset, scale, read_mode, inverted_mode) = session_data.split(":")
        self.buffer_widget.scroll_offset = float(scroll_offset)
        self.buffer_widget.scale = float(scale)
        self.buffer_widget.read_mode = read_mode
        self.buffer_widget.inverted_mode = inverted_mode == "True"
        self.buffer_widget.update()

    def scroll_up(self):
@@ -106,6 +110,9 @@ class AppBuffer(Buffer):
    def remeber_jump(self):
        self.buffer_widget.remeber_jump()

    def toggle_inverted_mode(self):
        self.buffer_widget.toggle_inverted_mode()

class PdfViewerWidget(QWidget):
    translate_double_click_word = QtCore.pyqtSignal(str)

@@ -129,6 +136,9 @@ class PdfViewerWidget(QWidget):
        self.scale = 1.0
        self.read_mode = "fit_to_width"

        # Inverted mode.
        self.inverted_mode = False

        # Init scroll attributes.
        self.scroll_step = 20
        self.scroll_offset = 0
@@ -185,6 +195,10 @@ class PdfViewerWidget(QWidget):
        page = self.document[index]
        trans = self.page_cache_trans if self.page_cache_trans is not None else fitz.Matrix(scale, scale)
        pixmap = page.getPixmap(matrix=trans, alpha=False)

        if self.inverted_mode:
            pixmap.invertIRect(pixmap.irect)

        img = QImage(pixmap.samples, pixmap.width, pixmap.height, pixmap.stride, QImage.Format_RGB888)
        qpixmap = QPixmap.fromImage(img)

@@ -373,6 +387,16 @@ class PdfViewerWidget(QWidget):
        self.update_scale()
        self.update()

    def toggle_inverted_mode(self):
        # Need clear page cache first, otherwise current page will not inverted until next page.
        self.page_cache_pixmap_dict.clear()

        # Toggle inverted status.
        self.inverted_mode = not self.inverted_mode

        # Re-render page.
        self.update()

    def jump_to_page(self, page_num):
        self.update_scroll_offset(min(max(self.scale * (int(page_num) - 1) * self.page_height, 0), self.max_scroll_offset()))

+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ You can customize keys with option ```eaf-browser-keybinding``` or ```eaf-browse
| p              | Goto to percent                     |
| [              | Remember position                   |
| ]              | Remember jump                       |
| i              | Toggle inverted mode                |
| Double Click   | Use sdcv translate word under point |

You can customize keys with option ```eaf-pdfviewer-keybinding```
+1 −0
Original line number Diff line number Diff line
@@ -185,6 +185,7 @@ by `dired-find-alternate-file'. Otherwise they will be opened normally with `dir
    ("p" . "jump_to_percent")
    ("[" . "remember_current_position")
    ("]" . "remeber_jump")
    ("i" . "toggle_inverted_mode")
    )
  "The keybinding of pdf viewer."
  :type 'cons