├── docs ├── FAQ.md ├── News.md ├── FAQ.he.md ├── FAQ.sl.md ├── News.he.md ├── News.sl.md ├── 7_Translate.he.md ├── 7_Translate.sl.md ├── 8_Issue_tracker.md ├── 7_Translate.md ├── 8_Issue_tracker.he.md ├── 8_Issue_tracker.sl.md ├── img │ └── gimagereader.png ├── index.he.md ├── 4_Add_dictionary.he.md ├── index.md ├── index.sl.md ├── 4_Add_dictionary.sl.md ├── 4_Add_dictionary.md ├── 3_Add_language.he.md ├── 3_Add_language.md ├── 1_Installation.he.md ├── 1_Installation.md ├── 1_Installation.sl.md ├── 6_Contribute.he.md ├── 3_Add_language.sl.md ├── 5_Options.he.md ├── 5_Options.sl.md ├── 6_Contribute.sl.md └── 6_Contribute.md ├── LATEST ├── packaging ├── debian │ ├── compat │ ├── source │ │ └── format │ ├── docs │ ├── watch │ ├── gimagereader-qt.install │ ├── gimagereader-common.install │ ├── changelog.in │ ├── gimagereader-gtk.install │ ├── rules │ └── copyright └── win32 │ ├── gimagereader-icon.rc │ ├── gimagereader.ico │ ├── gtk_skel │ ├── etc │ │ ├── gtk-3.0 │ │ │ ├── settings.ini │ │ │ ├── im-multipress.conf │ │ │ └── gtk.immodules │ │ └── pango │ │ │ └── pango.modules │ └── share │ │ └── icons │ │ └── hicolor │ │ └── 16x16 │ │ ├── status │ │ ├── image-missing.png │ │ ├── dialog-error-symbolic.symbolic.png │ │ ├── folder-open-symbolic.symbolic.png │ │ ├── dialog-warning-symbolic.symbolic.png │ │ ├── dialog-question-symbolic.symbolic.png │ │ └── dialog-information-symbolic.symbolic.png │ │ ├── actions │ │ ├── go-up-symbolic.symbolic.png │ │ ├── pan-up-symbolic.symbolic.png │ │ ├── go-down-symbolic.symbolic.png │ │ ├── list-add-symbolic.symbolic.png │ │ ├── pan-down-symbolic.symbolic.png │ │ ├── pan-end-symbolic.symbolic.png │ │ ├── tab-new-symbolic.symbolic.png │ │ ├── zoom-in-symbolic.symbolic.png │ │ ├── zoom-out-symbolic.symbolic.png │ │ ├── edit-clear-symbolic.symbolic.png │ │ ├── edit-copy-symbolic.symbolic.png │ │ ├── edit-delete-symbolic.symbolic.png │ │ ├── edit-paste-symbolic.symbolic.png │ │ ├── edit-redo-symbolic.symbolic.png │ │ ├── edit-undo-symbolic.symbolic.png │ │ ├── insert-text-symbolic.symbolic.png │ │ ├── list-remove-symbolic.symbolic.png │ │ ├── pan-start-symbolic.symbolic.png │ │ ├── document-new-symbolic.symbolic.png │ │ ├── document-open-symbolic.symbolic.png │ │ ├── document-save-symbolic.symbolic.png │ │ ├── error-correct-symbolic.symbolic.png │ │ ├── focus-windows-symbolic.symbolic.png │ │ ├── object-select-symbolic.symbolic.png │ │ ├── view-refresh-symbolic.symbolic.png │ │ ├── window-close-symbolic.symbolic.png │ │ ├── zoom-fit-best-symbolic.symbolic.png │ │ ├── zoom-original-symbolic.symbolic.png │ │ ├── document-save-as-symbolic.symbolic.png │ │ ├── window-maximize-symbolic.symbolic.png │ │ ├── window-minimize-symbolic.symbolic.png │ │ ├── window-restore-symbolic.symbolic.png │ │ ├── action-unavailable-symbolic.symbolic.png │ │ ├── edit-find-replace-symbolic.symbolic.png │ │ ├── object-rotate-left-symbolic.symbolic.png │ │ ├── object-rotate-right-symbolic.symbolic.png │ │ └── document-print-preview-symbolic.symbolic.png │ │ ├── apps │ │ ├── text-editor-symbolic.symbolic.png │ │ └── help-contents-symbolic.symbolic.png │ │ ├── devices │ │ ├── scanner-symbolic.symbolic.png │ │ └── camera-photo-symbolic.symbolic.png │ │ ├── places │ │ └── user-trash-symbolic.symbolic.png │ │ ├── mimetypes │ │ └── x-office-document-symbolic.symbolic.png │ │ └── categories │ │ └── applications-system-symbolic.symbolic.png │ ├── skel │ └── share │ │ ├── icons │ │ └── hicolor │ │ │ ├── 16x16 │ │ │ ├── actions │ │ │ │ ├── go-up.png │ │ │ │ ├── go-down.png │ │ │ │ ├── list-add.png │ │ │ │ ├── zoom-in.png │ │ │ │ ├── zoom-out.png │ │ │ │ ├── dialog-ok.png │ │ │ │ ├── edit-clear.png │ │ │ │ ├── edit-copy.png │ │ │ │ ├── edit-paste.png │ │ │ │ ├── edit-redo.png │ │ │ │ ├── edit-undo.png │ │ │ │ ├── help-about.png │ │ │ │ ├── help-hint.png │ │ │ │ ├── dialog-cancel.png │ │ │ │ ├── dialog-close.png │ │ │ │ ├── document-edit.png │ │ │ │ ├── document-open.png │ │ │ │ ├── document-save.png │ │ │ │ ├── edit-delete.png │ │ │ │ ├── help-contents.png │ │ │ │ ├── insert-image.png │ │ │ │ ├── insert-text.png │ │ │ │ ├── list-remove.png │ │ │ │ ├── view-refresh.png │ │ │ │ ├── window-close.png │ │ │ │ ├── zoom-fit-best.png │ │ │ │ ├── zoom-original.png │ │ │ │ ├── document-export.png │ │ │ │ ├── document-preview.png │ │ │ │ ├── document-save-as.png │ │ │ │ ├── edit-find-replace.png │ │ │ │ ├── object-order-front.png │ │ │ │ ├── object-rotate-left.png │ │ │ │ ├── document-open-recent.png │ │ │ │ ├── document-properties.png │ │ │ │ └── object-rotate-right.png │ │ │ ├── devices │ │ │ │ ├── scanner.png │ │ │ │ └── camera-photo.png │ │ │ ├── places │ │ │ │ └── user-trash.png │ │ │ ├── mimetypes │ │ │ │ ├── text-plain.png │ │ │ │ ├── application-pdf.png │ │ │ │ └── x-office-document.png │ │ │ ├── emblems │ │ │ │ └── emblem-important.png │ │ │ ├── apps │ │ │ │ └── accessories-text-editor.png │ │ │ └── categories │ │ │ │ ├── preferences-system.png │ │ │ │ └── applications-education-language.png │ │ │ └── 22x22 │ │ │ ├── actions │ │ │ ├── go-up.png │ │ │ ├── go-down.png │ │ │ ├── list-add.png │ │ │ ├── zoom-in.png │ │ │ ├── zoom-out.png │ │ │ ├── dialog-ok.png │ │ │ ├── edit-clear.png │ │ │ ├── edit-copy.png │ │ │ ├── edit-paste.png │ │ │ ├── edit-redo.png │ │ │ ├── edit-undo.png │ │ │ ├── help-about.png │ │ │ ├── help-hint.png │ │ │ ├── dialog-cancel.png │ │ │ ├── dialog-close.png │ │ │ ├── document-edit.png │ │ │ ├── document-open.png │ │ │ ├── document-save.png │ │ │ ├── edit-delete.png │ │ │ ├── help-contents.png │ │ │ ├── insert-image.png │ │ │ ├── insert-text.png │ │ │ ├── list-remove.png │ │ │ ├── view-refresh.png │ │ │ ├── window-close.png │ │ │ ├── zoom-fit-best.png │ │ │ ├── zoom-original.png │ │ │ ├── document-export.png │ │ │ ├── document-preview.png │ │ │ ├── document-save-as.png │ │ │ ├── edit-find-replace.png │ │ │ ├── object-rotate-left.png │ │ │ ├── document-open-recent.png │ │ │ ├── document-properties.png │ │ │ └── object-rotate-right.png │ │ │ ├── devices │ │ │ ├── scanner.png │ │ │ └── camera-photo.png │ │ │ ├── places │ │ │ └── user-trash.png │ │ │ ├── mimetypes │ │ │ ├── text-plain.png │ │ │ ├── application-pdf.png │ │ │ └── x-office-document.png │ │ │ ├── emblems │ │ │ └── emblem-important.png │ │ │ ├── apps │ │ │ └── accessories-text-editor.png │ │ │ └── categories │ │ │ ├── preferences-system.png │ │ │ └── applications-education-language.png │ │ ├── enchant │ │ └── enchant.ordering │ │ ├── hunspell │ │ └── README.txt │ │ └── tessdata │ │ └── README.txt │ ├── Dockerfile │ ├── copyicons.sh │ └── mingwdeps.sh ├── AUTHORS ├── data ├── icons │ ├── page.png │ ├── angle.png │ ├── expand.png │ ├── select.png │ ├── wconf.png │ ├── collapse.png │ ├── contrast.png │ ├── controls.png │ ├── filtering.png │ ├── item_line.png │ ├── item_page.png │ ├── item_par.png │ ├── item_word.png │ ├── landscape.png │ ├── portrait.png │ ├── proofread.png │ ├── stripcrlf.png │ ├── thumbnail.png │ ├── autolayout.png │ ├── brightness.png │ ├── ins_append.png │ ├── ins_cursor.png │ ├── ins_replace.png │ ├── item_block.png │ ├── resolution.png │ ├── rotate_page.png │ ├── rotate_pages.png │ ├── item_halftone.png │ ├── item_separator.png │ ├── ins_hocr_append.png │ ├── ins_hocr_before.png │ ├── ins_hocr_replace.png │ ├── 48x48 │ │ └── gimagereader.png │ ├── 128x128 │ │ └── gimagereader.png │ └── 256x256 │ │ └── gimagereader.png └── gimagereader.desktop.in ├── .gitignore ├── qt ├── data │ └── extra-theme-icons │ │ ├── dialog-ok.png │ │ ├── help-hint.png │ │ ├── dialog-close.png │ │ ├── folder-open.png │ │ ├── text-plain.png │ │ ├── dialog-cancel.png │ │ ├── document-edit.png │ │ ├── application-pdf.png │ │ ├── document-export.png │ │ ├── document-preview.png │ │ ├── object-order-front.png │ │ └── applications-education-language.png └── src │ ├── Scanner.cc │ ├── common.hh │ ├── OutputEditor.cc │ ├── hocr │ ├── HOCRExporter.hh │ ├── HOCRTextExporter.hh │ ├── HOCRSpellChecker.hh │ ├── HOCRBatchExportDialog.hh │ ├── HOCROdtExporter.hh │ ├── HOCRPdfExportWidget.hh │ ├── HOCRProofReadWidget.hh │ ├── DisplayerToolHOCR.hh │ └── HOCRTextExporter.cc │ ├── DjVuDocument.hh │ ├── FileDialogs.hh │ ├── TessdataManager.hh │ ├── CrashHandler.hh │ ├── Acquirer.hh │ ├── SubstitutionsManager.hh │ ├── OutputTextEdit.hh │ ├── Scanner.hh │ ├── RecognitionMenu.hh │ ├── ConfigSettings.cc │ ├── Config.hh │ ├── DisplayRenderer.hh │ └── SearchReplaceFrame.hh ├── astyle.options ├── .lgtm.yml ├── formatSourceFiles.sh ├── po └── LINGUAS ├── cmake ├── gettextizeui.cmake └── GSettings.cmake ├── gtk ├── src │ ├── hocr │ │ ├── wip_proofreadwidget │ │ │ ├── Utils.patch │ │ │ ├── schema.patch │ │ │ ├── OutputEditorHOCR.patch │ │ │ └── HOCRProofReadWidget.hh │ │ ├── HOCRExporter.hh │ │ ├── HOCRTextExporter.hh │ │ ├── HOCRSpellChecker.hh │ │ ├── XmlUtils.hh │ │ ├── HOCROdtExporter.hh │ │ ├── HOCRBatchExportDialog.hh │ │ └── HOCRTextExporter.cc │ ├── DjVuDocument.hh │ ├── CrashHandler.hh │ ├── FontComboBox.hh │ ├── TessdataManager.hh │ ├── Image.hh │ ├── FileDialogs.hh │ ├── SubstitutionsManager.hh │ ├── OutputBuffer.hh │ ├── Acquirer.hh │ ├── common.hh │ ├── Recognizer.hh │ ├── RecognitionMenu.hh │ ├── SearchReplaceFrame.cc │ └── Scanner.hh └── data │ └── appmenu.ui ├── updateTranslations.sh ├── README_docs.md ├── common ├── PaperSize.hh └── CCITTFax4Encoder.hh ├── mkdocs.yml └── .github └── workflows └── build.yml /docs/FAQ.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LATEST: -------------------------------------------------------------------------------- 1 | 3.4.3 2 | -------------------------------------------------------------------------------- /docs/News.md: -------------------------------------------------------------------------------- 1 | # News 2 | 3 | -------------------------------------------------------------------------------- /docs/FAQ.he.md: -------------------------------------------------------------------------------- 1 | # שאלות נפוצות 2 | -------------------------------------------------------------------------------- /docs/FAQ.sl.md: -------------------------------------------------------------------------------- 1 | # FAQ 2 | 3 | -------------------------------------------------------------------------------- /docs/News.he.md: -------------------------------------------------------------------------------- 1 | # חדשות 2 | 3 | -------------------------------------------------------------------------------- /docs/News.sl.md: -------------------------------------------------------------------------------- 1 | # Novice 2 | 3 | -------------------------------------------------------------------------------- /packaging/debian/compat: -------------------------------------------------------------------------------- 1 | 9 2 | -------------------------------------------------------------------------------- /docs/7_Translate.he.md: -------------------------------------------------------------------------------- 1 | # תרגם 2 | 3 | -------------------------------------------------------------------------------- /docs/7_Translate.sl.md: -------------------------------------------------------------------------------- 1 | # Prevajanje -------------------------------------------------------------------------------- /docs/8_Issue_tracker.md: -------------------------------------------------------------------------------- 1 | # Issue tracker -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Sandro Mani -------------------------------------------------------------------------------- /docs/7_Translate.md: -------------------------------------------------------------------------------- 1 | # Translate 2 | 3 | -------------------------------------------------------------------------------- /docs/8_Issue_tracker.he.md: -------------------------------------------------------------------------------- 1 | # מאתר בעיות 2 | -------------------------------------------------------------------------------- /docs/8_Issue_tracker.sl.md: -------------------------------------------------------------------------------- 1 | # Prijava napak -------------------------------------------------------------------------------- /packaging/debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (quilt) 2 | -------------------------------------------------------------------------------- /packaging/debian/docs: -------------------------------------------------------------------------------- 1 | AUTHORS 2 | NEWS 3 | README.md 4 | -------------------------------------------------------------------------------- /packaging/win32/gimagereader-icon.rc: -------------------------------------------------------------------------------- 1 | 1 ICON "gimagereader.ico" 2 | -------------------------------------------------------------------------------- /data/icons/page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/page.png -------------------------------------------------------------------------------- /data/icons/angle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/angle.png -------------------------------------------------------------------------------- /data/icons/expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/expand.png -------------------------------------------------------------------------------- /data/icons/select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/select.png -------------------------------------------------------------------------------- /data/icons/wconf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/wconf.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | build 3 | .vscode 4 | 5 | # QtCreater CMake 6 | CMakeLists.txt.user 7 | *.autosave 8 | -------------------------------------------------------------------------------- /data/icons/collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/collapse.png -------------------------------------------------------------------------------- /data/icons/contrast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/contrast.png -------------------------------------------------------------------------------- /data/icons/controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/controls.png -------------------------------------------------------------------------------- /data/icons/filtering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/filtering.png -------------------------------------------------------------------------------- /data/icons/item_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/item_line.png -------------------------------------------------------------------------------- /data/icons/item_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/item_page.png -------------------------------------------------------------------------------- /data/icons/item_par.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/item_par.png -------------------------------------------------------------------------------- /data/icons/item_word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/item_word.png -------------------------------------------------------------------------------- /data/icons/landscape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/landscape.png -------------------------------------------------------------------------------- /data/icons/portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/portrait.png -------------------------------------------------------------------------------- /data/icons/proofread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/proofread.png -------------------------------------------------------------------------------- /data/icons/stripcrlf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/stripcrlf.png -------------------------------------------------------------------------------- /data/icons/thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/thumbnail.png -------------------------------------------------------------------------------- /data/icons/autolayout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/autolayout.png -------------------------------------------------------------------------------- /data/icons/brightness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/brightness.png -------------------------------------------------------------------------------- /data/icons/ins_append.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/ins_append.png -------------------------------------------------------------------------------- /data/icons/ins_cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/ins_cursor.png -------------------------------------------------------------------------------- /data/icons/ins_replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/ins_replace.png -------------------------------------------------------------------------------- /data/icons/item_block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/item_block.png -------------------------------------------------------------------------------- /data/icons/resolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/resolution.png -------------------------------------------------------------------------------- /data/icons/rotate_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/rotate_page.png -------------------------------------------------------------------------------- /data/icons/rotate_pages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/rotate_pages.png -------------------------------------------------------------------------------- /docs/img/gimagereader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/docs/img/gimagereader.png -------------------------------------------------------------------------------- /data/icons/item_halftone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/item_halftone.png -------------------------------------------------------------------------------- /data/icons/item_separator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/item_separator.png -------------------------------------------------------------------------------- /data/icons/ins_hocr_append.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/ins_hocr_append.png -------------------------------------------------------------------------------- /data/icons/ins_hocr_before.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/ins_hocr_before.png -------------------------------------------------------------------------------- /data/icons/ins_hocr_replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/ins_hocr_replace.png -------------------------------------------------------------------------------- /packaging/win32/gimagereader.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gimagereader.ico -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/etc/gtk-3.0/settings.ini: -------------------------------------------------------------------------------- 1 | [Settings] 2 | gtk-toolbar-style = icons 3 | gtk-icon-theme-name = hicolor -------------------------------------------------------------------------------- /data/icons/48x48/gimagereader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/48x48/gimagereader.png -------------------------------------------------------------------------------- /data/icons/128x128/gimagereader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/128x128/gimagereader.png -------------------------------------------------------------------------------- /data/icons/256x256/gimagereader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/data/icons/256x256/gimagereader.png -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/dialog-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/dialog-ok.png -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/help-hint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/help-hint.png -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/dialog-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/dialog-close.png -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/folder-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/folder-open.png -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/text-plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/text-plain.png -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/dialog-cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/dialog-cancel.png -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/document-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/document-edit.png -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/application-pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/application-pdf.png -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/document-export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/document-export.png -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/document-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/document-preview.png -------------------------------------------------------------------------------- /packaging/debian/watch: -------------------------------------------------------------------------------- 1 | version=3 2 | http://ftp.gnome.org/pub/GNOME/sources/bijiben/([\d\.]+)/bijiben-(.*)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) 3 | -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/object-order-front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/object-order-front.png -------------------------------------------------------------------------------- /packaging/debian/gimagereader-qt.install: -------------------------------------------------------------------------------- 1 | usr/bin/gimagereader-qt5 2 | usr/share/appdata/gimagereader-qt5.appdata.xml 3 | usr/share/applications/gimagereader-qt5.desktop 4 | -------------------------------------------------------------------------------- /qt/data/extra-theme-icons/applications-education-language.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/qt/data/extra-theme-icons/applications-education-language.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/go-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/go-up.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/go-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/go-up.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/go-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/go-down.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/list-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/list-add.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/zoom-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/zoom-in.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/zoom-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/zoom-out.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/devices/scanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/devices/scanner.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/go-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/go-down.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/list-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/list-add.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/zoom-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/zoom-in.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/zoom-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/zoom-out.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/devices/scanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/devices/scanner.png -------------------------------------------------------------------------------- /packaging/debian/gimagereader-common.install: -------------------------------------------------------------------------------- 1 | usr/share/icons/hicolor/*/apps/gimagereader.png 2 | usr/share/locale/*/LC_MESSAGES/gimagereader.mo 3 | usr/share/doc/gimagereader-common/manual*.html 4 | -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/dialog-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/dialog-ok.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-clear.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-copy.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-paste.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-redo.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-undo.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/help-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/help-about.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/help-hint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/help-hint.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/places/user-trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/places/user-trash.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/dialog-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/dialog-ok.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-clear.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-copy.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-paste.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-redo.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-undo.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/help-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/help-about.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/help-hint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/help-hint.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/places/user-trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/places/user-trash.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/dialog-cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/dialog-cancel.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/dialog-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/dialog-close.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/document-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/document-edit.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/document-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/document-open.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/document-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/document-save.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-delete.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/help-contents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/help-contents.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/insert-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/insert-image.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/insert-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/insert-text.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/list-remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/list-remove.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/view-refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/view-refresh.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/window-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/window-close.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/zoom-fit-best.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/zoom-fit-best.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/zoom-original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/zoom-original.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/devices/camera-photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/devices/camera-photo.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/mimetypes/text-plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/mimetypes/text-plain.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/dialog-cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/dialog-cancel.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/dialog-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/dialog-close.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/document-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/document-edit.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/document-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/document-open.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/document-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/document-save.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-delete.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/help-contents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/help-contents.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/insert-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/insert-image.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/insert-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/insert-text.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/list-remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/list-remove.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/view-refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/view-refresh.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/window-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/window-close.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/zoom-fit-best.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/zoom-fit-best.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/zoom-original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/zoom-original.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/devices/camera-photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/devices/camera-photo.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/mimetypes/text-plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/mimetypes/text-plain.png -------------------------------------------------------------------------------- /packaging/debian/changelog.in: -------------------------------------------------------------------------------- 1 | gimagereader (@PACKAGE_VERSION@-1) experimental; urgency=low 2 | 3 | * gImageReader @PACKAGE_VERSION@. 4 | 5 | -- Sandro Mani @PACKAGE_RFC_DATE@ 6 | -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/document-export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/document-export.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/document-export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/document-export.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/image-missing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/image-missing.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/document-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/document-preview.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/document-save-as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/document-save-as.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-find-replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/edit-find-replace.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/object-order-front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/object-order-front.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/object-rotate-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/object-rotate-left.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/emblems/emblem-important.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/emblems/emblem-important.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/mimetypes/application-pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/mimetypes/application-pdf.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/document-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/document-preview.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/document-save-as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/document-save-as.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-find-replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/edit-find-replace.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/object-rotate-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/object-rotate-left.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/emblems/emblem-important.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/emblems/emblem-important.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/mimetypes/application-pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/mimetypes/application-pdf.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/document-open-recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/document-open-recent.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/document-properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/document-properties.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/actions/object-rotate-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/actions/object-rotate-right.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/apps/accessories-text-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/apps/accessories-text-editor.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/mimetypes/x-office-document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/mimetypes/x-office-document.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/document-open-recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/document-open-recent.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/document-properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/document-properties.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/actions/object-rotate-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/actions/object-rotate-right.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/apps/accessories-text-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/apps/accessories-text-editor.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/mimetypes/x-office-document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/mimetypes/x-office-document.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/categories/preferences-system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/categories/preferences-system.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/categories/preferences-system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/categories/preferences-system.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/go-up-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/go-up-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/pan-up-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/pan-up-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/go-down-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/go-down-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/list-add-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/list-add-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/pan-down-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/pan-down-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/pan-end-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/pan-end-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/tab-new-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/tab-new-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/zoom-in-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/zoom-in-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/zoom-out-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/zoom-out-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/apps/text-editor-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/apps/text-editor-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/devices/scanner-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/devices/scanner-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/debian/gimagereader-gtk.install: -------------------------------------------------------------------------------- 1 | usr/bin/gimagereader-gtk 2 | usr/share/appdata/gimagereader-gtk.appdata.xml 3 | usr/share/applications/gimagereader-gtk.desktop 4 | usr/share/glib-2.0/schemas/org.gnome.gimagereader.gschema.xml 5 | -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-clear-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-clear-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-copy-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-copy-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-delete-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-delete-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-paste-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-paste-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-redo-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-redo-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-undo-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-undo-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/insert-text-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/insert-text-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/list-remove-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/list-remove-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/pan-start-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/pan-start-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/apps/help-contents-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/apps/help-contents-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/places/user-trash-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/places/user-trash-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/dialog-error-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/dialog-error-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/folder-open-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/folder-open-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/document-new-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/document-new-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/document-open-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/document-open-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/document-save-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/document-save-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/error-correct-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/error-correct-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/focus-windows-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/focus-windows-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/object-select-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/object-select-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/view-refresh-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/view-refresh-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/window-close-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/window-close-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/zoom-fit-best-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/zoom-fit-best-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/zoom-original-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/zoom-original-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/devices/camera-photo-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/devices/camera-photo-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/dialog-warning-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/dialog-warning-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/16x16/categories/applications-education-language.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/16x16/categories/applications-education-language.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/icons/hicolor/22x22/categories/applications-education-language.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/skel/share/icons/hicolor/22x22/categories/applications-education-language.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/document-save-as-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/document-save-as-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/window-maximize-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/window-maximize-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/window-minimize-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/window-minimize-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/window-restore-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/window-restore-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/dialog-question-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/dialog-question-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/skel/share/enchant/enchant.ordering: -------------------------------------------------------------------------------- 1 | *:myspell,aspell,ispell 2 | fi:voikko,ispell,myspell,aspell 3 | fi_FI:voikko,ispell,myspell,aspell 4 | he:hspell,myspell 5 | he_IL:hspell,myspell 6 | yi:uspell 7 | tr:zemberek 8 | tr_TR:zemberek 9 | -------------------------------------------------------------------------------- /astyle.options: -------------------------------------------------------------------------------- 1 | --preserve-date 2 | --style=java 3 | --indent=tab#4 4 | --suffix=none 5 | --pad-oper 6 | --align-pointer=type 7 | --align-reference=type 8 | --add-braces 9 | --keep-one-line-blocks 10 | --unpad-paren 11 | --pad-header 12 | 13 | 14 | -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/action-unavailable-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/action-unavailable-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-find-replace-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/edit-find-replace-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/object-rotate-left-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/object-rotate-left-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/dialog-information-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/status/dialog-information-symbolic.symbolic.png -------------------------------------------------------------------------------- /.lgtm.yml: -------------------------------------------------------------------------------- 1 | extraction: 2 | cpp: 3 | prepare: 4 | packages: 5 | - python3-gi 6 | configure: 7 | command: 8 | - mkdir _lgtm_build_dir 9 | - cd _lgtm_build_dir 10 | - cmake -DINTERFACE_TYPE=gtk .. 11 | -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/object-rotate-right-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/object-rotate-right-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/mimetypes/x-office-document-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/mimetypes/x-office-document-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/document-print-preview-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/document-print-preview-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/share/icons/hicolor/16x16/categories/applications-system-symbolic.symbolic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manisandro/gImageReader/HEAD/packaging/win32/gtk_skel/share/icons/hicolor/16x16/categories/applications-system-symbolic.symbolic.png -------------------------------------------------------------------------------- /packaging/win32/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM fedora:rawhide 2 | 3 | MAINTAINER Sandro Mani 4 | 5 | RUN dnf -y update; dnf clean all 6 | 7 | ADD mingwdeps.sh /tmp/mingwdeps.sh 8 | 9 | RUN /tmp/mingwdeps.sh 10 | 11 | 12 | WORKDIR /workspace 13 | VOLUME ["/workspace"] 14 | -------------------------------------------------------------------------------- /formatSourceFiles.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | dir=$(dirname "$(readlink -f "$0")") 3 | which astyle &> /dev/null || ( echo "Please install astyle." && exit 1 ) 4 | 5 | out=$(astyle --formatted --options=$dir/astyle.options $(find gtk qt common \( -name '*.cc' -or -name '*.hh' \))) 6 | echo "$out" 7 | [ -z "$out" ] && exit 0 || exit 1 8 | -------------------------------------------------------------------------------- /packaging/win32/skel/share/hunspell/README.txt: -------------------------------------------------------------------------------- 1 | This folder contains spelling dictionaries. 2 | 3 | To add additional spelling dictionaries: 4 | * Visit https://cgit.freedesktop.org/libreoffice/dictionaries/tree/ 5 | * Download the *.dic and *.aff files for the desired language and place them inside this folder 6 | * If gImageReader is running, select "Redetect Languages" from the application menu, or restart the application 7 | -------------------------------------------------------------------------------- /po/LINGUAS: -------------------------------------------------------------------------------- 1 | ar_SA 2 | cs 3 | de 4 | el 5 | es 6 | eu 7 | fr 8 | it 9 | nb_NO 10 | nl 11 | pl 12 | pt_BR 13 | ru 14 | sl 15 | sv 16 | tr 17 | uk 18 | zh_CN 19 | zh_HK 20 | zh_TW 21 | pt 22 | ko 23 | sr_Cyrl 24 | sr_CS 25 | sr_Latn 26 | ie 27 | he 28 | hi 29 | hu 30 | ar_AR 31 | ja 32 | mk 33 | sq 34 | sat 35 | ia 36 | hr 37 | gu 38 | ca 39 | ka 40 | eo 41 | ab 42 | fa 43 | ro 44 | be 45 | fi 46 | ckb 47 | bn 48 | et 49 | ta 50 | sk 51 | en_US 52 | -------------------------------------------------------------------------------- /data/gimagereader.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=gImageReader 3 | _GenericName=OCR application 4 | Exec=gimagereader-@INTERFACE_TYPE@ %F 5 | Icon=gimagereader 6 | Terminal=false 7 | Type=Application 8 | StartupNotify=true 9 | StartupWMClass=gimagereader-@INTERFACE_TYPE@ 10 | Categories=Graphics;OCR;Scanning; 11 | MimeType=image/bmp;image/jpeg;image/gif;image/png;image/tiff;image/x-bmp;image/x-ico;image/x-png;image/x-pcx;image/x-tga;image/xpm;image/svg+xml;text/html;application/pdf; 12 | Keywords=OCR;optical character recognition;Scanner;tesseract; 13 | -------------------------------------------------------------------------------- /cmake/gettextizeui.cmake: -------------------------------------------------------------------------------- 1 | # Function to replace QApplication::translate with gettext() in ui headers 2 | # 3: argv0 = cmake, argv1 = -P, argv2 = gettextizeui.cmake 3 | FOREACH(i RANGE 3 ${CMAKE_ARGC}) 4 | SET(form_header "${CMAKE_ARGV${i}}") 5 | IF(NOT "${form_header}" STREQUAL "") 6 | MESSAGE(STATUS "Gettextizing ${form_header}") 7 | FILE(READ ${form_header} _text) 8 | STRING(REGEX REPLACE "Q(Core)?Application::translate\\(\"[^\"]+\", \"((\\\\.|[^\\\"])*)\", [^\\)]+\\)" "gettext(\"\\2\")" _text_out "${_text}") 9 | FILE(WRITE ${form_header} "${_text_out}") 10 | ENDIF() 11 | ENDFOREACH() 12 | 13 | -------------------------------------------------------------------------------- /docs/index.he.md: -------------------------------------------------------------------------------- 1 | # על אודות 2 | 3 | **gImageReader** הוא ממשק ל [tesseract-ocr](https://github.com/tesseract-ocr/tesseract) אשר כתוב ב- C++. 4 | 5 | ## איך זה נראה 6 | 7 | ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/gimagereader.jpg) 8 | 9 | ## תכונות 10 | 11 | - מייבא מסמכי PDF מדיסקים, מכשירי סריקה, תמונות מסך ומלוח ההעתקה 12 | - מעבד מספר תמונות ומסמכים בו - זמנית 13 | - הגדרת אזור זיהוי ידנית או אוטומטית 14 | - זיהוי לטקסט רגיל או למסמכי hOCR 15 | - הטקסט שזוהה מוצג ישירות לצד התמונה 16 | - מעבד לאחר מכן את הטקסט שזוהה, כולל בדיקת איות 17 | - ממיר למסמכי PDF ממסמכי hOCR 18 | -------------------------------------------------------------------------------- /docs/4_Add_dictionary.he.md: -------------------------------------------------------------------------------- 1 | # התקנת מילוני איות 2 | 3 | - ב- **Linux**, אם התפוצה שלך תומכת ב- PackageKit, התוכנית תציע להתקין מילוני איות חסרים באופן אוטומטי במידת הצורך. אם ההתקנה לא עובדת מסיבה כלשהי, תוכל להתקין את מילוני האיות דרך יישום ניהול החבילה (ניתן לקרוא לחבילות משהו כמו *hunspell-*). 4 | 5 | - ב- **Windows**, התוכנית תנסה להוריד אוטומטית את מילון האיות הרצוי מ- [http://cgit.freedesktop.org/libreoffice/dictionaries/tree](https://cgit.freedesktop.org/libreoffice/dictionaries/tree). ניתן גם להתקין מילונים באופן ידני: לשפה הרצויה (כלומר `it_IT`), הורד את הקבצים ***.dic ו- \*.aff** ומקם אותם ב- `התחל ← כל התוכניות ← gImageReader ← מילוני איות`. 6 | -------------------------------------------------------------------------------- /gtk/src/hocr/wip_proofreadwidget/Utils.patch: -------------------------------------------------------------------------------- 1 | diff --git a/gtk/src/Utils.hh b/gtk/src/Utils.hh 2 | index 3dd660b7..712d8e69 100644 3 | --- a/gtk/src/Utils.hh 4 | +++ b/gtk/src/Utils.hh 5 | @@ -116,6 +116,12 @@ std::vector vector_slice(const std::vector& vector, int start, int count = 6 | return result; 7 | } 8 | 9 | +template 10 | +int vector_index_of(const std::vector& vector, T item) { 11 | + auto it = std::find(vector.begin(), vector.end(), item); 12 | + return it == vector.end() ? -1 : std::distance(vector.begin(), it); 13 | +} 14 | + 15 | template> 16 | rev_iters reverse(T& t) { 17 | return { t.rbegin(), t.rend() }; 18 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # About 2 | 3 | **gImageReader** is a frontend to [tesseract-ocr](https://github.com/tesseract-ocr/tesseract) written in C++. 4 | 5 | ## How it looks 6 | 7 | ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/gimagereader.jpg) 8 | 9 | ## Features 10 | 11 | - Import PDF documents and images from disk, scanning devices, clipboard and screenshots 12 | - Process multiple images and documents in one go 13 | - Manual or automatic recognition area definition 14 | - Recognize to plain text or to hOCR documents 15 | - Recognized text displayed directly next to the image 16 | - Post-process the recognized text, including spellchecking 17 | - Generate PDF documents from hOCR documents 18 | 19 | -------------------------------------------------------------------------------- /docs/index.sl.md: -------------------------------------------------------------------------------- 1 | # O programu 2 | 3 | **gImageReader** je grafični vmesnik za [tesseract-ocr](https://github.com/tesseract-ocr/tesseract) spisan v C++. 4 | 5 | ## Kako izgleda 6 | 7 | ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/gimagereader.jpg) 8 | 9 | ## Kaj vam program omogoča 10 | 11 | - Uvoz PDF dokumentov ter slik iz diska, optičnega bralnika, odložišča ter zajema zaslona 12 | - Obdelava več slik ali dokumentov na enkrat 13 | - Ročna ali samodejna določitev območja prepoznave 14 | - Prepoznava v golo besedilo ali v zapis hOCR 15 | - Prepoznano besedilo prikazano takoj ob sliki 16 | - Nadaljna obdelava prepoznanega besedila, vkjučno s črkovalnikom slovarja 17 | - Izdelava PDF ter ODT dokumentov iz hOCR -------------------------------------------------------------------------------- /docs/4_Add_dictionary.sl.md: -------------------------------------------------------------------------------- 1 | # Slovarji črkovalnika 2 | 3 | ## Linux 4 | 5 | Če vaša distirbucija podpira *PackageKit*, bo program ponudil, da sam namesti mankajoče slovarje v kolikor je to potrebno. 6 | 7 | V kolikor samodejna namestitev iz nekega vzroka ne deluje, lahko namestite slovarje črkovalnika iz vašega upravitelja paketov (paketi so morebiti poimenovani v stilu *hunspell-*). 8 | 9 | ## Windows 10 | 11 | Program bo poizkusil samodejno prenesti želeni slovar črkovalnika iz[http://cgit.freedesktop.org/libreoffice/dictionaries/tree](https://cgit.freedesktop.org/libreoffice/dictionaries/tree). 12 | 13 | Slovarji se lahko tudi namestijo ročno: Za želeni jezik (npr `it_IT`), prenesite datoteke***.dic** ter **\*.aff** in jih shranite v `Start→All Programs→gImageReader→Spelling dictionaries`. -------------------------------------------------------------------------------- /docs/4_Add_dictionary.md: -------------------------------------------------------------------------------- 1 | # Install Spelling dictionaries 2 | 3 | - On **Linux**, if your distribution supports PackageKit, the program will offer to automatically install missing dictionaries when necessary. If automatic installation does not work for some reason, you can install the spelling dictionaries from the package management application (the packages may be called something like *hunspell-*). 4 | - On **Windows**, the program will attempt to automatically download the desired spelling dictionary from [http://cgit.freedesktop.org/libreoffice/dictionaries/tree](https://cgit.freedesktop.org/libreoffice/dictionaries/tree). Dictionaries can also be installed manually: for a desired language (i.e. `it_IT`), download the ***.dic and \*.aff** files and place them in `Start→All Programs→gImageReader→Spelling dictionaries`. -------------------------------------------------------------------------------- /packaging/debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | export DEB_LDFLAGS_MAINT_APPEND=-Wl,--as-needed 4 | 5 | %: 6 | dh $@ 7 | 8 | override_dh_auto_configure: 9 | dh_auto_configure -Bbuild-gtk -- -DINTERFACE_TYPE=gtk -DENABLE_VERSIONCHECK=0 -DMANUAL_DIR="/usr/share/doc/gimagereader-common" 10 | dh_auto_configure -Bbuild-qt5 -- -DINTERFACE_TYPE=qt5 -DENABLE_VERSIONCHECK=0 -DMANUAL_DIR="/usr/share/doc/gimagereader-common" 11 | 12 | override_dh_auto_build: 13 | dh_auto_build -Dbuild-gtk 14 | dh_auto_build -Dbuild-qt5 15 | 16 | override_dh_auto_install: 17 | dh_auto_install -Dbuild-gtk 18 | dh_auto_install -Dbuild-qt5 19 | 20 | override_dh_install: 21 | dh_install --list-missing 22 | 23 | override_dh_strip: 24 | dh_strip --dbg-package=gimagereader-dbg 25 | 26 | .PHONY: override_dh_auto_configure override_dh_auto_build override_dh_install override_dh_install override_dh_strip 27 | -------------------------------------------------------------------------------- /packaging/win32/skel/share/tessdata/README.txt: -------------------------------------------------------------------------------- 1 | This folder contains tesseract language definitions. 2 | 3 | To add additional language definitions: 4 | - Use the tessdata manager from the language selection menu in gImageReader 5 | - Or install the languages manually: 6 | * In the gImageReader about dialog, check which version of tesseract is used 7 | * If using tesseract 4.x, go to https://github.com/tesseract-ocr/tessdata_fast 8 | * If using tesseract 3.x or older, go to https://github.com/tesseract-ocr/tessdata 9 | * In the branch selection button, under tags, select the version which is *less or equal* the tesseract version in use 10 | * Download the desired language definitions (*.traineddata along with any supplementary files which certain languages need) and save them inside this folder 11 | * If gImageReader is running, select "Redetect Languages" from the application menu, or restart the application 12 | -------------------------------------------------------------------------------- /qt/src/Scanner.cc: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * Scanner.cc 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #include "Scanner.hh" 21 | 22 | // Empty file to have automoc run moc on Scanner.hh... -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/etc/gtk-3.0/im-multipress.conf: -------------------------------------------------------------------------------- 1 | # Example configuration file for the GTK+ Multipress Input Method 2 | # Authored by Openismus GmbH, 2009. 3 | # 4 | # This file follows the GKeyFile format. On the left of the equal sign goes 5 | # the key that you press repeatedly to iterate through the text items listed 6 | # on the right-hand side. The list items are separated by semicolons ";" and 7 | # consist of one or more characters each. The backslash "\" is used to escape 8 | # characters; for instance "\;" for a literal semicolon. 9 | # 10 | # The example configuration below imitates the behavior of a standard mobile 11 | # phone by a major manufacturer, with German language setting. 12 | [keys] 13 | KP_1 = .;,;?;!;';";1;-;(;);@;/;:;_ 14 | KP_2 = a;b;c;2;ä;à;á;ã;â;å;æ;ç 15 | KP_3 = d;e;f;3;è;é;ë;ê;ð 16 | KP_4 = g;h;i;4;ì;í;î;ï 17 | KP_5 = j;k;l;5;£ 18 | KP_6 = m;n;o;6;ö;ò;ó;ô;õ;ø;ñ 19 | KP_7 = p;q;r;s;7;ß;$ 20 | KP_8 = t;u;v;8;ü;ù;ú;û 21 | KP_9 = w;x;y;z;9;ý;þ 22 | KP_0 = \s;0 23 | -------------------------------------------------------------------------------- /updateTranslations.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd "$(dirname "$(readlink -f "$0")")" 4 | 5 | # Generate POTFILES.in 6 | echo "Updating POTFILES.in..." 7 | echo "# List of source files containing translatable strings." > po/POTFILES.in 8 | echo "" >> po/POTFILES.in 9 | echo "data/gimagereader.desktop.in" >> po/POTFILES.in 10 | find gtk/data/ -type f -name *.ui -printf '[type: gettext/glade]%p\n' | sort >> po/POTFILES.in 11 | find gtk/src/ -type f \( -name *.hh -or -name *.cc \) -print | sort >> po/POTFILES.in 12 | find qt/data/ -type f -name *.ui -printf '[type: gettext/qtdesigner]%p\n' | sort >> po/POTFILES.in 13 | find qt/src/ -type f \( -name *.hh -or -name *.cc \) -print | sort >> po/POTFILES.in 14 | 15 | # Update POT and PO files 16 | ( 17 | cd po 18 | echo "Updating gimagereader.pot..." 19 | intltool-update --gettext-package=gimagereader --pot 20 | 21 | while read lang; do 22 | echo "Updating $lang.po..." 23 | intltool-update --gettext-package=gimagereader $lang 24 | done < LINGUAS 25 | 26 | ) 27 | -------------------------------------------------------------------------------- /gtk/src/hocr/wip_proofreadwidget/schema.patch: -------------------------------------------------------------------------------- 1 | diff --git a/gtk/data/org.gnome.gimagereader.gschema.xml b/gtk/data/org.gnome.gimagereader.gschema.xml 2 | index 92b34868..4df03249 100644 3 | --- a/gtk/data/org.gnome.gimagereader.gschema.xml 4 | +++ b/gtk/data/org.gnome.gimagereader.gschema.xml 5 | @@ -316,5 +316,15 @@ 6 | Syntax highlight mode 7 | Syntax highlight mode. 8 | 9 | + 10 | + 0 11 | + Number of lines to show before current line 12 | + Number of lines to show before current line 13 | + 14 | + 15 | + 3 16 | + Number of lines to show before current line 17 | + Number of lines to show before current line 18 | + 19 | 20 | 21 | -------------------------------------------------------------------------------- /README_docs.md: -------------------------------------------------------------------------------- 1 | # How to translate docs (Help files) 2 | 3 | ## 1. Install: 4 | 5 | https://github.com/mkdocs/mkdocs/ 6 | 7 | https://squidfunk.github.io/mkdocs-material/ 8 | 9 | https://pypi.org/project/mkdocs-static-i18n/ 10 | 11 | https://pypi.org/project/mkdocs-redirects/ 12 | 13 | ## 2. Copy: 14 | 15 | File: `mkdocs.yml` 16 | 17 | and 18 | 19 | Folder: `/docs` 20 | 21 | in to the same location *(\*don't put mkdocs.yml in /docs folder!)* 22 | 23 | ## 3. Edit mkdocs.yml 24 | 25 | Add your language under 26 | 27 | `languages:` 28 | 29 | `alternate:` 30 | 31 | `redirect_maps:` 32 | 33 | ## 3. Translate: 34 | 35 | In Folder `/docs` duplicate, rename and translate every `*.\.md` file 36 | 37 | example for German: Clone `index.md` -> `index.de.md` 38 | 39 | ## 4. Test 40 | 41 | in your console go to the folder of mkdocs.yml then run 42 | 43 | `mkdocs serve` 44 | 45 | Open your web-browser and go to http://127.0.0.1:8000 46 | 47 | ## 5. Build 48 | 49 | `mkdocs build` 50 | 51 | compiled site is in folder `\site` that is in same folder where the `mydocs.yml` is 52 | -------------------------------------------------------------------------------- /qt/src/common.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * common.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef COMMON_HH 21 | #define COMMON_HH 22 | 23 | #include 24 | #define _(x) QString(gettext(x)) 25 | 26 | class DataObject { 27 | public: 28 | virtual ~DataObject() = default; 29 | }; 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /qt/src/OutputEditor.cc: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * OutputEditor.cc 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | 21 | #include "OutputEditor.hh" 22 | 23 | Q_DECLARE_METATYPE(OutputEditor::ReadSessionData) 24 | 25 | OutputEditor::OutputEditor(QObject* parent) : QObject(parent) { 26 | static int reg = qRegisterMetaType ("ReadSessionData"); 27 | Q_UNUSED(reg); 28 | } 29 | -------------------------------------------------------------------------------- /gtk/data/appmenu.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 | Redetect Languages 8 | app.redetectLangs 9 | 10 | 11 | Manage Languages 12 | app.manageLangs 13 | 14 | 15 | Preferences 16 | app.preferences 17 | 18 |
19 |
20 | 21 | Help 22 | app.help 23 | 24 | 25 | About 26 | app.about 27 | 28 | 29 | Quit 30 | app.quit 31 | 32 |
33 |
34 |
35 | -------------------------------------------------------------------------------- /docs/3_Add_language.he.md: -------------------------------------------------------------------------------- 1 | # הגדרות התקנת שפה של Tesseract 2 | 3 | - ה*מנהל Tessdata*, זמין מהתפריט הנפתח ![](https://raw.githubusercontent.com/manisandro/gImageReader/master/packaging/win32/gtk_skel/share/icons/hicolor/16x16/actions/go-down-symbolic.symbolic.png) של הלחצן *זיהוי* ב*סרגל הכלים הראשי* מאפשר למשתמש לנהל את שפות הזיהוי הזמינות. 4 | 5 | - להתקנת השפות באופן ידני: 6 | 7 | - ב- **Linux**, זה מספיק להתקין את החבילה המתאימה להגדרת השפה הרצויה באמצעות יישום מנהל החבילה (ניתן לקרוא לחבילות משהו כמו *tesseract-langpack-*). 8 | 9 | - ב- **Windows**, ראשית, בדוק את הגרסה של gImageReader שבשימוש (ע"י כניסה ל- "על אודות"). 10 | 11 | - אם אתה משתמש ב- tesseract 4.x, גש אל https://github.com/tesseract-ocr/tessdata_fast. 12 | 13 | - אם אתה משתמש ב- tesseract 3.x והלאה, גש אל https://github.com/tesseract-ocr/tessdata. 14 | 15 | לאחמ"כ, בכפתור בחירת הענף, מתחת לתגיות, בחר את הגרסה שהיא שווה או מוקדמת יותר מגירסת ה- tesseract שבשימוש. לאחמ"כ הורד את הגדרות השפה הרצויה (*נתונים מאומנים יחד עם כל הקבצים המשלימים להם שפות מסוימות זקוקות) ולשמור אותם ב: התחל ← כל התוכניות ← gImageReader ← הגדרות שפת Tesseract. 16 | 17 | - כדי לזהות מחדש את השפות הזמינות, ניתן להתחיל מחדש את התוכנית, או בחר *זיהוי שפות מחדש* ב*תפריט הנפתח של האפליקצייה*. 18 | -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/etc/pango/pango.modules: -------------------------------------------------------------------------------- 1 | # Pango Modules file 2 | # Automatically generated file, do not edit 3 | # 4 | # ModulesPath = Z:\usr\i686-w64-mingw32\sys-root\mingw\lib\pango\1.8.0\modules 5 | # 6 | ".\\pango-indic-lang.dll" devaIndicScriptEngineLang PangoEngineLang PangoRenderNone devanagari:* 7 | ".\\pango-indic-lang.dll" bengIndicScriptEngineLang PangoEngineLang PangoRenderNone bengali:* 8 | ".\\pango-indic-lang.dll" guruIndicScriptEngineLang PangoEngineLang PangoRenderNone gurmukhi:* 9 | ".\\pango-indic-lang.dll" gujrIndicScriptEngineLang PangoEngineLang PangoRenderNone gujarati:* 10 | ".\\pango-indic-lang.dll" oryaIndicScriptEngineLang PangoEngineLang PangoRenderNone oriya:* 11 | ".\\pango-indic-lang.dll" tamlIndicScriptEngineLang PangoEngineLang PangoRenderNone tamil:* 12 | ".\\pango-indic-lang.dll" teluIndicScriptEngineLang PangoEngineLang PangoRenderNone telugu:* 13 | ".\\pango-indic-lang.dll" kndaIndicScriptEngineLang PangoEngineLang PangoRenderNone kannada:* 14 | ".\\pango-indic-lang.dll" mlymIndicScriptEngineLang PangoEngineLang PangoRenderNone malayalam:* 15 | ".\\pango-indic-lang.dll" sinhIndicScriptEngineLang PangoEngineLang PangoRenderNone sinhala:* 16 | ".\\pango-arabic-lang.dll" ArabicScriptEngineLang PangoEngineLang PangoRenderNone arabic:* 17 | ".\\pango-basic-fc.dll" BasicScriptEngineFc PangoEngineShape PangoRenderFc common: 18 | -------------------------------------------------------------------------------- /gtk/src/hocr/HOCRExporter.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRExporter.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCREXPORTER_HH 21 | #define HOCREXPORTER_HH 22 | 23 | #include 24 | 25 | class HOCRDocument; 26 | 27 | class HOCRExporter { 28 | public: 29 | struct ExporterSettings { 30 | virtual ~ExporterSettings() = default; 31 | }; 32 | 33 | virtual ~HOCRExporter() = default; 34 | virtual bool run(const HOCRDocument* hocrdocument, const std::string& outputname, const ExporterSettings* settings = nullptr) = 0; 35 | }; 36 | 37 | #endif // HOCREXPORTER_HH 38 | -------------------------------------------------------------------------------- /qt/src/hocr/HOCRExporter.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRExporter.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCREXPORTER_HH 21 | #define HOCREXPORTER_HH 22 | 23 | #include 24 | 25 | class HOCRDocument; 26 | 27 | class HOCRExporter : public QObject { 28 | public: 29 | struct ExporterSettings { 30 | virtual ~ExporterSettings() = default; 31 | }; 32 | 33 | virtual ~HOCRExporter() = default; 34 | virtual bool run(const HOCRDocument* hocrdocument, const QString& outputname, const ExporterSettings* settings = nullptr) = 0; 35 | }; 36 | 37 | #endif // HOCREXPORTER_HH 38 | -------------------------------------------------------------------------------- /gtk/src/hocr/HOCRTextExporter.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRTextExporter.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRTEXTEXPORTER_HH 21 | #define HOCRTEXTEXPORTER_HH 22 | 23 | #include "common.hh" 24 | #include "HOCRExporter.hh" 25 | 26 | class HOCRItem; 27 | 28 | 29 | class HOCRTextExporter : public HOCRExporter { 30 | public: 31 | bool run(const HOCRDocument* hocrdocument, const std::string& outname, const ExporterSettings* settings = nullptr) override; 32 | 33 | private: 34 | void printItem(std::ofstream& outputStream, const HOCRItem* item, bool lastChild = false); 35 | }; 36 | 37 | #endif // HOCRTEXTEXPORTER_HH 38 | -------------------------------------------------------------------------------- /docs/3_Add_language.md: -------------------------------------------------------------------------------- 1 | # Install Tesseract language definitions 2 | 3 | - The *Tessdata manager*, available from the drop-down menu ![](https://raw.githubusercontent.com/manisandro/gImageReader/master/qt/data/extra-theme-icons/applications-education-language.png) of the *recognize button* in the *main toolbar* allows the user to manage the available recognition languages. 4 | 5 | - To install the languages manually: 6 | 7 | - On **Linux**, it's sufficient to install the package corresponding to the language definition one wants to install via the package management application (the packages may be called something like *tesseract-langpack-*). 8 | 9 | - On Windows, first, in the gImageReader about dialog, check which version of tesseract is used. 10 | 11 | - If using tesseract 4.x, go to https://github.com/tesseract-ocr/tessdata_fast. 12 | 13 | - If using tesseract 3.x or older, go to https://github.com/tesseract-ocr/tessdata. 14 | 15 | - Then, in the branch selection button, under tags, select the version which is less or equal the tesseract version in use. Then download the desired language definitions (*.traineddata along with any supplementary files which certain languages need) and save them to Start→All Programs→gImageReader→Tesseract language definitions. 16 | 17 | - To re-detect the available languages, one can restart the program, or select *Redetect Languages* from the *application menu*. 18 | -------------------------------------------------------------------------------- /packaging/win32/copyicons.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd "$(dirname "$(readlink -f "$0")")" 4 | 5 | if [ $# -lt 1 ]; then 6 | echo "Usage: $0 sourcethemedir" 7 | exit 1 8 | fi 9 | 10 | topdir="$PWD" 11 | srcthemedir="$1" 12 | 13 | icons="\ 14 | $(grep -o "property name=\"icon_name\">[^<]*<" ../../gtk/data/*.ui | awk -F'[<>]' '{print $2}') 15 | $(grep -o "from_icon_name\s*(\s*\"[^\*]*\"" ../../gtk/src/{*.cc,*.hh} | awk -F'"' '{print $2}') 16 | $(grep -o "from_icon_name\s*(\s*\"[^\*]*\"" ../../gtk/src/hocr/{*.cc,*.hh} | awk -F'"' '{print $2}') 17 | $(grep -o " 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | */ 12 | 13 | #ifndef DJVUDOCUMENT_HH 14 | #define DJVUDOCUMENT_HH 15 | 16 | #include 17 | #include 18 | 19 | typedef struct ddjvu_context_s ddjvu_context_t; 20 | typedef struct ddjvu_document_s ddjvu_document_t; 21 | typedef struct ddjvu_format_s ddjvu_format_t; 22 | 23 | class DjVuDocument { 24 | public: 25 | DjVuDocument(); 26 | ~DjVuDocument(); 27 | 28 | struct Page { 29 | int width; 30 | int height; 31 | int dpi; 32 | }; 33 | 34 | bool openFile(const QString& fileName); 35 | void closeFile(); 36 | QImage image(int pageno, int resolution); 37 | int pageCount() const { 38 | return m_pages.size(); 39 | } 40 | const Page& page(int pageno) const { return m_pages[pageno]; } 41 | 42 | private: 43 | 44 | ddjvu_context_t* m_djvu_cxt = nullptr; 45 | ddjvu_document_t* m_djvu_document = nullptr; 46 | ddjvu_format_t* m_format = nullptr; 47 | QVector m_pages; 48 | }; 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /gtk/src/hocr/HOCRSpellChecker.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRSpellChecker.hh 4 | * Copyright (C) 2022-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRSPELLCHECKER_HH 21 | #define HOCRSPELLCHECKER_HH 22 | 23 | #include 24 | 25 | class HOCRSpellChecker : public GtkSpell::Checker { 26 | public: 27 | bool checkSpelling(const Glib::ustring& word, std::vector* suggestions = nullptr, int limit = -1); 28 | 29 | private: 30 | void generateCombinations(const std::vector> & lists, std::vector>& results, int depth, const std::vector& c) const; 31 | }; 32 | 33 | #endif // HOCRSPELLCHECKER_HH 34 | -------------------------------------------------------------------------------- /qt/src/FileDialogs.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * FileDialogs.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef FILEDIALOGS_HH 21 | #define FILEDIALOGS_HH 22 | 23 | #include 24 | 25 | class QWidget; 26 | 27 | namespace FileDialogs { 28 | 29 | QStringList openDialog(const QString& title, const QString& initialDirectory, const QString& initialDirSetting, const QString& filter, bool multiple, QWidget* parent = nullptr); 30 | QString saveDialog(const QString& title, const QString& initialFilename, const QString& initialDirSetting, const QString& filter, bool generateUniqueName = false, QWidget* parent = nullptr); 31 | 32 | } // FileDialogs 33 | 34 | #endif // FILEDIALOGS_HH 35 | -------------------------------------------------------------------------------- /qt/src/hocr/HOCRTextExporter.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRTextExporter.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRTEXTEXPORTER_HH 21 | #define HOCRTEXTEXPORTER_HH 22 | 23 | #include "common.hh" 24 | #include "HOCRExporter.hh" 25 | 26 | #include 27 | 28 | class HOCRItem; 29 | class QTextStream; 30 | 31 | 32 | class HOCRTextExporter : public HOCRExporter { 33 | public: 34 | bool run(const HOCRDocument* hocrdocument, const QString& outname, const ExporterSettings* settings = nullptr) override; 35 | 36 | private: 37 | void printItem(QTextStream& outputStream, const HOCRItem* item, bool lastChild = false); 38 | }; 39 | 40 | #endif // HOCRTEXTEXPORTER_HH 41 | -------------------------------------------------------------------------------- /gtk/src/DjVuDocument.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * DjVuDocument.hh 4 | * Based on code from Okular, which is: 5 | * Copyright (C) 2006 by Pino Toscano 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | */ 12 | 13 | #ifndef DJVUDOCUMENT_HH 14 | #define DJVUDOCUMENT_HH 15 | 16 | #include 17 | #include 18 | 19 | typedef struct ddjvu_context_s ddjvu_context_t; 20 | typedef struct ddjvu_document_s ddjvu_document_t; 21 | typedef struct ddjvu_format_s ddjvu_format_t; 22 | 23 | class DjVuDocument { 24 | public: 25 | DjVuDocument(); 26 | ~DjVuDocument(); 27 | 28 | struct Page { 29 | int width; 30 | int height; 31 | int dpi; 32 | }; 33 | 34 | bool openFile(const std::string& fileName); 35 | void closeFile(); 36 | Cairo::RefPtr image(int pageno, int resolution); 37 | int pageCount() const { 38 | return m_pages.size(); 39 | } 40 | const Page& page(int pageno) const { return m_pages[pageno]; } 41 | 42 | private: 43 | ddjvu_context_t* m_djvu_cxt = nullptr; 44 | ddjvu_document_t* m_djvu_document = nullptr; 45 | ddjvu_format_t* m_format = nullptr; 46 | std::vector m_pages; 47 | }; 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /docs/1_Installation.he.md: -------------------------------------------------------------------------------- 1 | # התקנה 2 | ## עבור מערכות הפעלה 3 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/windows.png) **Windows**: הורד מ- [אתר שחרורים](https://github.com/manisandro/gImageReader/releases) 4 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/fedora.png) **Fedora**: זמין באתר [מאגרים רשמיים](https://apps.fedoraproject.org/packages/gimagereader) 5 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/debian.png) **Debian**: זמין באתר [מאגרים רשמיים](https://packages.debian.org/unstable/main/gimagereader) 6 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/ubuntu.png) **Ubuntu**: זמין באתר [ppa:sandromani/gimagereader](https://launchpad.net/~sandromani/+archive/ubuntu/gimagereader) 7 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/opensuse.png) **OpenSUSE**: זמין באתר [OpenSUSE Build Service](https://build.opensuse.org/project/show/home:sandromani) 8 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/arch.png) **ArchLinux**: זמין באתר [מאגרים קהילתיים](https://www.archlinux.org/packages/community/x86_64/gimagereader/) 9 | 10 | ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/source.png) **Source**: הורד מ- [אתר שחרורים](https://github.com/manisandro/gImageReader/releases) 11 | ## הידור 12 | אם תרצה להדר את gImageReader מהמקור, [בצע את הפעולות הבאות](https://github.com/manisandro/gImageReader/wiki/Compiling-gImageReader). 13 | -------------------------------------------------------------------------------- /qt/src/TessdataManager.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * TessdataManager.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef TESSDATAMANAGER_HH 21 | #define TESSDATAMANAGER_HH 22 | 23 | #include 24 | #include 25 | 26 | class QListWidget; 27 | 28 | class TessdataManager : public QDialog { 29 | Q_OBJECT 30 | public: 31 | TessdataManager(QWidget* parent = 0); 32 | bool setup(); 33 | 34 | private: 35 | struct LangFile { 36 | QString name; 37 | QString url; 38 | }; 39 | 40 | QListWidget* m_languageList; 41 | QMap> m_languageFiles; 42 | 43 | bool fetchLanguageList(QString& messages); 44 | 45 | private slots: 46 | void applyChanges(); 47 | void refresh(); 48 | }; 49 | 50 | #endif // TESSDATAMANAGER_HH 51 | -------------------------------------------------------------------------------- /gtk/src/hocr/XmlUtils.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * XmlUtils.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef XMLUTILS_HH 21 | #define XMLUTILS_HH 22 | 23 | #include 24 | #include 25 | 26 | namespace xmlpp { 27 | class Document; 28 | class Element; 29 | class Node; 30 | } 31 | 32 | class XmlUtils { 33 | public: 34 | static Glib::ustring elementText(const xmlpp::Element* element); 35 | static const xmlpp::Element* firstChildElement(const xmlpp::Node* node, const Glib::ustring& name = Glib::ustring()); 36 | static const xmlpp::Element* nextSiblingElement(const xmlpp::Node* node, const Glib::ustring& name = Glib::ustring()); 37 | static std::list elementsByTagName(const xmlpp::Element* element, const Glib::ustring& name); 38 | }; 39 | 40 | #endif // XMLUTILS_HH 41 | -------------------------------------------------------------------------------- /common/PaperSize.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * PaperSize.hh 4 | * Copyright (C) 2017-2018 Alexander Zaitsev 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef GIMAGEREADER_PAPERSIZE_HH 21 | #define GIMAGEREADER_PAPERSIZE_HH 22 | 23 | #include 24 | #include 25 | #include 26 | 27 | class PaperSize { 28 | public: 29 | template 30 | struct Size { 31 | Size(T width_ = 0, T height_ = 0) : width(width_), height(height_) {} 32 | bool operator< (const Size& val); 33 | 34 | T width, height; 35 | }; 36 | 37 | enum Unit { 38 | cm, 39 | inch 40 | }; 41 | 42 | static Size getSize(Unit unit, const std::string& format, bool landscape); 43 | static const double CMtoInch; 44 | static const std::vector>> paperSizes; 45 | 46 | }; // PaperSize 47 | 48 | #endif //GIMAGEREADER_PAPERSIZE_HH 49 | -------------------------------------------------------------------------------- /docs/1_Installation.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | ## For OS 3 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/windows.png) **Windows**: Download from the [releases page](https://github.com/manisandro/gImageReader/releases) 4 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/fedora.png) **Fedora**: Available from the [official repositories](https://apps.fedoraproject.org/packages/gimagereader) 5 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/debian.png) **Debian**: Available from the [official repositories](https://packages.debian.org/unstable/main/gimagereader) 6 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/ubuntu.png) **Ubuntu**: Available from [ppa:sandromani/gimagereader](https://launchpad.net/~sandromani/+archive/ubuntu/gimagereader) 7 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/opensuse.png) **OpenSUSE**: Available from [OpenSUSE Build Service](https://build.opensuse.org/project/show/home:sandromani) 8 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/arch.png) **ArchLinux**: Available from the [community repositories](https://www.archlinux.org/packages/community/x86_64/gimagereader/) 9 | 10 | ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/source.png) **Source**: Download from the [releases page](https://github.com/manisandro/gImageReader/releases) 11 | ## Compile 12 | If you would like to compile gImageReader from source, [follow these steps](https://github.com/manisandro/gImageReader/wiki/Compiling-gImageReader). -------------------------------------------------------------------------------- /qt/src/CrashHandler.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * CrashHandler.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef CRASHHANDLER_HH 21 | #define CRASHHANDLER_HH 22 | 23 | #include "ui_CrashHandler.h" 24 | 25 | #include 26 | #include 27 | 28 | class CrashHandler : public QDialog { 29 | Q_OBJECT 30 | 31 | public: 32 | explicit CrashHandler(int pid, int tesseractCrash, const QString& savefile, QWidget* parent = 0); 33 | 34 | private: 35 | Ui::CrashHandler ui; 36 | int m_pid; 37 | QProcess m_gdbProcess; 38 | QPushButton* m_refreshButton = nullptr; 39 | 40 | void closeEvent(QCloseEvent*) override; 41 | 42 | private slots: 43 | void appendGdbOutput(); 44 | void handleGdbFinished(int exitCode, QProcess::ExitStatus exitStatus); 45 | void regenerateBacktrace(); 46 | }; 47 | 48 | #endif // CRASHHANDLER_HH 49 | -------------------------------------------------------------------------------- /docs/1_Installation.sl.md: -------------------------------------------------------------------------------- 1 | # Namestitev 2 | 3 | ## Za operacijski sistem 4 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/windows.png) **Windows**: Prenesi si iz [releases](https://github.com/manisandro/gImageReader/releases) (**Assets**-> **gImageReader\_*.exe** ali *.zip ) 5 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/fedora.png) **Fedora**: Navoljo v [uradnih repozitorijih](https://apps.fedoraproject.org/packages/gimagereader) 6 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/debian.png) **Debian**: Navoljo v [uradnih repozitorijih](https://packages.debian.org/unstable/main/gimagereader) 7 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/ubuntu.png) **Ubuntu**: Navoljo v [uradnih repozitorijih](https://launchpad.net/~sandromani/+archive/ubuntu/gimagereader) 8 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/opensuse.png) **OpenSUSE**: Navoljo v [uradnih repozitorijih](https://build.opensuse.org/project/show/home:sandromani) 9 | - ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/arch.png) **ArchLinux**: Navoljo v [uradnih repozitorijih](https://www.archlinux.org/packages/community/x86_64/gimagereader/) 10 | 11 | ![](https://raw.githubusercontent.com/manisandro/gImageReader/gh-pages/icons/source.png) **Izvorna koda**: Prenesi si iz [releases](https://github.com/manisandro/gImageReader/releases) 12 | ## Compile izvorne kode 13 | Če želite Compilat gImageReader iz izvorne kode, [sledite tem korakom](https://github.com/manisandro/gImageReader/wiki/Compiling-gImageReader). -------------------------------------------------------------------------------- /gtk/src/CrashHandler.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * CrashHandler.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef CRASHHANDLER_HH 21 | #define CRASHHANDLER_HH 22 | 23 | #include "common.hh" 24 | #include "ui_CrashHandler.hh" 25 | 26 | class CrashHandler : public Gtk::Application { 27 | public: 28 | CrashHandler(int argc, char* argv[]); 29 | void on_startup(); 30 | 31 | private: 32 | Ui::CrashHandler ui; 33 | ClassData m_classdata; 34 | sigc::connection m_progressConnection; 35 | std::string m_saveFile; 36 | int m_pid = 0; 37 | int m_tesseractCrash = 0; 38 | 39 | void generate_backtrace(); 40 | void generate_backtrace_end(bool success); 41 | bool pulse_progress(); 42 | bool handle_stdout(Glib::IOCondition cond, Glib::RefPtr ch); 43 | static void handle_child_exit(GPid pid, gint status, void* data); 44 | }; 45 | 46 | #endif // CRASH_HANDLER_HH 47 | -------------------------------------------------------------------------------- /qt/src/Acquirer.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * Acquirer.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef ACQUIRER_HH 21 | #define ACQUIRER_HH 22 | 23 | #include "Scanner.hh" 24 | 25 | class UI_MainWindow; 26 | 27 | class Acquirer : public QObject { 28 | Q_OBJECT 29 | public: 30 | Acquirer(const UI_MainWindow& _ui); 31 | ~Acquirer(); 32 | 33 | signals: 34 | void scanPageAvailable(QString); 35 | 36 | private: 37 | const UI_MainWindow& ui; 38 | QString m_outputPath; 39 | 40 | Scanner* m_scanner; 41 | 42 | void genOutputPath(); 43 | 44 | private slots: 45 | void cancelScan(); 46 | void doneDetectDevices(QList devices); 47 | void doneScan(); 48 | void scanInitFailed(); 49 | void scanFailed(const QString& msg); 50 | void selectOutputPath(); 51 | void setDeviceComboTooltip(); 52 | void setScanState(Scanner::State state); 53 | void startDetectDevices(); 54 | void startScan(); 55 | }; 56 | 57 | Q_DECLARE_METATYPE(QList) 58 | 59 | #endif // ACQUIRER_HH 60 | -------------------------------------------------------------------------------- /qt/src/hocr/HOCRSpellChecker.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRSpellChecker.hh 4 | * Copyright (C) 2022-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRSPELLCHECKER_HH 21 | #define HOCRSPELLCHECKER_HH 22 | 23 | #include 24 | 25 | class HOCRSpellChecker : public QtSpell::Checker { 26 | public: 27 | 28 | using QtSpell::Checker::Checker; 29 | 30 | bool checkSpelling(const QString& word, QStringList* suggestions = nullptr, int limit = -1) const; 31 | 32 | // Unused interface, no-op 33 | void checkSpelling(int /*start*/ = 0, int /*end*/ = -1) override { } 34 | QString getWord(int /*pos*/, int* /*start*/ = 0, int* /*end*/ = 0) const override { return QString(); } 35 | void insertWord(int /*start*/, int /*end*/, const QString& /*word*/) override { } 36 | bool isAttached() const override { return true; } 37 | 38 | private: 39 | void generateCombinations(const QList> & lists, QList>& results, int depth, const QList& c) const; 40 | }; 41 | 42 | #endif // HOCRSPELLCHECKER_HH 43 | -------------------------------------------------------------------------------- /qt/src/SubstitutionsManager.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * SubstitutionsManager.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef SUBSTITUTIONS_MANAGER_HH 21 | #define SUBSTITUTIONS_MANAGER_HH 22 | 23 | #include 24 | 25 | class QCheckBox; 26 | class QItemSelection; 27 | class OutputTextEdit; 28 | class QTableWidget; 29 | 30 | class SubstitutionsManager : public QDialog { 31 | Q_OBJECT 32 | public: 33 | SubstitutionsManager(QWidget* parent = nullptr); 34 | ~SubstitutionsManager(); 35 | 36 | signals: 37 | void applySubstitutions(const QMap& substitutions); 38 | 39 | private: 40 | QAction* m_removeAction; 41 | QString m_currentFile; 42 | QTableWidget* m_tableWidget; 43 | 44 | private slots: 45 | void addRow(); 46 | void emitApplySubstitutions(); 47 | bool clearList(); 48 | void onTableSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected); 49 | void openList(); 50 | void removeRows(); 51 | bool saveList(); 52 | }; 53 | 54 | #endif // SUBSTITUTIONS_MANAGER_HH 55 | -------------------------------------------------------------------------------- /gtk/src/hocr/wip_proofreadwidget/OutputEditorHOCR.patch: -------------------------------------------------------------------------------- 1 | diff --git a/gtk/src/hocr/OutputEditorHOCR.cc b/gtk/src/hocr/OutputEditorHOCR.cc 2 | index 1c729e70..7178139c 100644 3 | --- a/gtk/src/hocr/OutputEditorHOCR.cc 4 | +++ b/gtk/src/hocr/OutputEditorHOCR.cc 5 | @@ -972,18 +972,22 @@ void OutputEditorHOCR::pickItem(const Geometry::Point& point) { 6 | int pageNr; 7 | Glib::ustring filename = MAIN->getDisplayer()->getCurrentImage(pageNr); 8 | Gtk::TreeIter pageIndex = m_document->searchPage(filename, pageNr); 9 | - const HOCRItem* currentItem = m_document->itemAtIndex(pageIndex); 10 | - if(!currentItem) { 11 | + const HOCRItem* pageItem = m_document->itemAtIndex(pageIndex); 12 | + if(!pageItem) { 13 | return; 14 | } 15 | - const HOCRPage* page = currentItem->page(); 16 | + const HOCRPage* page = pageItem->page(); 17 | // Transform point in coordinate space used when page was OCRed 18 | double alpha = (page->angle() - MAIN->getDisplayer()->getCurrentAngle()) / 180. * M_PI; 19 | double scale = double(page->resolution()) / double(MAIN->getDisplayer()->getCurrentResolution()); 20 | Geometry::Point newPoint( scale * (point.x * std::cos(alpha) - point.y * std::sin(alpha)) + 0.5 * page->bbox().width, 21 | scale * (point.x * std::sin(alpha) + point.y * std::cos(alpha)) + 0.5 * page->bbox().height); 22 | - showItemProperties(m_document->searchAtCanvasPos(pageIndex, newPoint)); 23 | - m_treeView->grab_focus(); 24 | + Gtk::TreeIter index = m_document->searchAtCanvasPos(pageIndex, newPoint); 25 | + showItemProperties(index); 26 | + const HOCRItem* item = m_document->itemAtIndex(index); 27 | + if(item->itemClass() != "ocrx_word" && item->itemClass() != "ocr_line") { 28 | + m_treeView->grab_focus(); 29 | + } 30 | } 31 | 32 | bool OutputEditorHOCR::open(InsertMode mode, std::vector> files) { 33 | -------------------------------------------------------------------------------- /gtk/src/FontComboBox.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * FontComboBox.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef FONTCOMBOBOX_HH 21 | #define FONTCOMBOBOX_HH 22 | 23 | #include "common.hh" 24 | 25 | class FontComboBox : public Gtk::ComboBox { 26 | public: 27 | FontComboBox(); 28 | FontComboBox(BaseObjectType* cobject, const Glib::RefPtr& builder); 29 | Glib::ustring get_active_font() const; 30 | void set_active_font(const Glib::ustring& font); 31 | 32 | sigc::signal signal_font_changed() { 33 | return m_signal_font_changed; 34 | } 35 | 36 | private: 37 | ClassData m_classdata; 38 | sigc::signal m_signal_font_changed; 39 | 40 | struct FontComboColums : public Gtk::TreeModel::ColumnRecord { 41 | Gtk::TreeModelColumn fontFamily; 42 | FontComboColums() { 43 | add(fontFamily); 44 | } 45 | }; 46 | 47 | void init(); 48 | 49 | static FontComboColums s_fontComboCols; 50 | static Glib::RefPtr getModel(); 51 | }; 52 | 53 | #endif // FONTCOMBOBOX_HH 54 | -------------------------------------------------------------------------------- /qt/src/hocr/HOCRBatchExportDialog.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRBatchExportDialog.hh 4 | * Copyright (C) 2020-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRBATCHEXPORTDIALOG_HH 21 | #define HOCRBATCHEXPORTDIALOG_HH 22 | 23 | #include 24 | #include 25 | 26 | #include "common.hh" 27 | #include "ui_HOCRBatchExportDialog.h" 28 | 29 | 30 | class FileTreeModel; 31 | class HOCRPdfExportWidget; 32 | 33 | class HOCRBatchExportDialog : public QDialog { 34 | 35 | Q_OBJECT 36 | 37 | public: 38 | HOCRBatchExportDialog(QWidget* parent = nullptr); 39 | 40 | private: 41 | enum ExportMode { ExportPdf, ExportOdt, ExportTxt }; 42 | Ui::BatchExportDialog ui; 43 | 44 | FileTreeModel* m_sourceTreeModel = nullptr; 45 | FileTreeModel* m_outputTreeModel = nullptr; 46 | QMap m_outputMap; 47 | HOCRPdfExportWidget* m_pdfExportWidget = nullptr; 48 | QTimer m_previewTimer; 49 | 50 | private slots: 51 | void apply(); 52 | void setSourceFolder(); 53 | void setExportFormat(); 54 | void updateExportPreview(); 55 | void updateOutputTree(); 56 | }; 57 | 58 | #endif // HOCRBATCHEXPORTDIALOG_HH 59 | -------------------------------------------------------------------------------- /docs/6_Contribute.he.md: -------------------------------------------------------------------------------- 1 | # תרומה 2 | 3 | לקבלת הצעות ו / או תרומות מכל סוג שהוא אנא הגישו בקשות-השפעה באתר [דף הפרוייקט של GitHub](https://github.com/manisandro/gImageReader), או צרו איתי קשר בכתובת [manisandro@gmail.com](mailto:manisandro@gmail.com). אודה במיוחד לתרגומים - להלן השלבים העיקריים ליצירת תרגום: 4 | 5 | א): תרגומי gImageReader מתארחים ב- [weblate](https://hosted.weblate.org/projects/gimagereader/) וממוזגים מעת לעת ל- master. 6 | 7 | או 8 | 9 | ב): 10 | 11 | 1. הורד את [ארכיון המקור האחרון](https://github.com/manisandro/gImageReader/archive/master.zip). 12 | 2. היכנס לתיקייה `po`. 13 | 3. כדי ליצור תרגום חדש, העתק את הקובץ `gimagereader.pot` ל- `.po` (כלומר `de.po` עבור גרמנית). כדי לערוך תרגום קיים, פשוט בחר את הקובץ המתאים. 14 | 4. תרגם את המחרוזות ב- `.po`. 15 | 5. שלח את הקובץ **po** אל [manisandro@gmail.com](mailto:manisandro@gmail.com). תודה! 16 | 17 | ## ניפוי באגים ותמיכה 18 | 19 | אם אתה מוצא בעיה כלשהי או שיש לך הצעה, אנא הגש דו"ח אל [מעקב הבעיות של gImageReader](https://github.com/manisandro/gImageReader/issues), או צור איתי קשר ישיר בכתובת[manisandro@gmail.com](mailto:manisandro@gmail.com). הקפד להתייעץ גם ב- [שאלות נפוצות](https://github.com/manisandro/gImageReader/wiki/FAQ). אם אתה חווה קריסות או נתק, אנא נסה גם לכלול את המידע הבא בדו"ח / אימייל: 20 | 21 | - אם מופיע מטפל הקריסות, כלול את ה- backtrace המוצג שם. בכדי לוודא שה- backtrace הושלם, אם אתה מריץ את התוכנית ב- Linux, ודא שמנפה הבאגים `gdb`, כמו גם סמלי ניפוי הבאגים, הם מותקנים אם ההפצה שלך מספקת אותם. בדרך כלל החבילה המכילה את סמלי הבאגים נקראת **-debuginfo** או **-dbg**. 22 | - אם אתה מריץ את התוכנית ב- Windows, כמה סמלים של מנפה הבאגים כבר מותקנים כברירת מחדל. וקבצי היומן הם `%ProgramFiles%\gImageReader\twain.log`. 23 | - אם אתה מריץ את התוכנית ב- Linux, הרץ שוב את התוכנית דרך Terminal וכלול את כל הפלט המופיע ב- Terminal. 24 | - נסה לתאר כמה שיותר טוב מה עשית ומה הבעיה הניתנת לשחזור. 25 | -------------------------------------------------------------------------------- /packaging/win32/gtk_skel/etc/gtk-3.0/gtk.immodules: -------------------------------------------------------------------------------- 1 | # GTK+ Input Method Modules file 2 | # Automatically generated file, do not edit 3 | # Created by Z:\usr\i686-pc-mingw32\sys-root\mingw\bin\gtk-query-immodules-3.0.exe from gtk+-3.0.9 4 | # 5 | # ModulesPath = Z:\usr\i686-pc-mingw32\sys-root\mingw\lib\gtk-3.0\3.0.0\i686-pc-mingw32\immodules;Z:\usr\i686-pc-mingw32\sys-root\mingw\lib\gtk-3.0\3.0.0\immodules;Z:\usr\i686-pc-mingw32\sys-root\mingw\lib\gtk-3.0\i686-pc-mingw32\immodules;Z:\usr\i686-pc-mingw32\sys-root\mingw\lib\gtk-3.0\immodules 6 | # 7 | "../lib/gtk-3.0/3.0.0/immodules/im-ipa.dll" 8 | "ipa" "IPA" "gtk30" "../share/locale" "" 9 | 10 | "../lib/gtk-3.0/3.0.0/immodules/im-multipress.dll" 11 | "multipress" "Multipress" "gtk30" "" "" 12 | 13 | "../lib/gtk-3.0/3.0.0/immodules/im-cyrillic-translit.dll" 14 | "cyrillic_translit" "Cyrillic (Transliterated)" "gtk30" "../share/locale" "" 15 | 16 | "../lib/gtk-3.0/3.0.0/immodules/im-ime.dll" 17 | "ime" "Windows IME" "gtk+" "" "ja:ko:zh" 18 | 19 | "../lib/gtk-3.0/3.0.0/immodules/im-viqr.dll" 20 | "viqr" "Vietnamese (VIQR)" "gtk30" "../share/locale" "vi" 21 | 22 | "../lib/gtk-3.0/3.0.0/immodules/im-thai.dll" 23 | "thai" "Thai-Lao" "gtk30" "../share/locale" "lo:th" 24 | 25 | "../lib/gtk-3.0/3.0.0/immodules/im-inuktitut.dll" 26 | "inuktitut" "Inuktitut (Transliterated)" "gtk30" "../share/locale" "iu" 27 | 28 | "../lib/gtk-3.0/3.0.0/immodules/im-ti-et.dll" 29 | "ti_et" "Tigrigna-Ethiopian (EZ+)" "gtk30" "../share/locale" "ti" 30 | 31 | "../lib/gtk-3.0/3.0.0/immodules/im-ti-er.dll" 32 | "ti_er" "Tigrigna-Eritrean (EZ+)" "gtk30" "../share/locale" "ti" 33 | 34 | "../lib/gtk-3.0/3.0.0/immodules/im-cedilla.dll" 35 | "cedilla" "Cedilla" "gtk30" "../share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa" 36 | 37 | "../lib/gtk-3.0/3.0.0/immodules/im-am-et.dll" 38 | "am_et" "Amharic (EZ+)" "gtk30" "../share/locale" "am" 39 | 40 | 41 | -------------------------------------------------------------------------------- /gtk/src/TessdataManager.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * TessdataManager.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef TESSDATAMANAGER_HH 21 | #define TESSDATAMANAGER_HH 22 | 23 | #include "ui_TessdataManager.hh" 24 | 25 | class TessdataManager { 26 | public: 27 | static void exec(); 28 | 29 | private: 30 | TessdataManager(); 31 | void run(); 32 | struct LangFile { 33 | Glib::ustring name; 34 | Glib::ustring url; 35 | }; 36 | 37 | struct ViewColumns : public Gtk::TreeModel::ColumnRecord { 38 | Gtk::TreeModelColumn selected; 39 | Gtk::TreeModelColumn label; 40 | Gtk::TreeModelColumn prefix; 41 | ViewColumns() { 42 | add(selected); 43 | add(label); 44 | add(prefix); 45 | } 46 | } m_viewCols; 47 | 48 | Ui::TessdataManager ui; 49 | Glib::RefPtr m_languageListStore; 50 | std::map> m_languageFiles; 51 | Glib::RefPtr m_dbusProxy; 52 | 53 | bool fetchLanguageList(Glib::ustring& messages); 54 | void applyChanges(); 55 | void refresh(); 56 | }; 57 | 58 | #endif // TESSDATAMANAGER_HH 59 | -------------------------------------------------------------------------------- /gtk/src/Image.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * Geometry.hh 4 | * Copyright (C) 2016-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef IMAGE_HH 21 | #define IMAGE_HH 22 | 23 | #include 24 | #include 25 | 26 | class Image { 27 | public: 28 | enum Format {Format_RGB24 = 0, Format_Gray8 = 1, Format_Mono = 2} format; // This order needs to be the same as combo:pdfoptions.imageformat 29 | enum ConversionFlags { AutoColor = 0, ThresholdDithering = 1, DiffuseDithering = 2} conversionFlags; 30 | int width; 31 | int height; 32 | int sampleSize; 33 | int bytesPerLine; 34 | unsigned char* data = nullptr; 35 | 36 | Image(Cairo::RefPtr src, Format targetFormat, ConversionFlags flags); 37 | ~Image() { 38 | delete[] data; 39 | } 40 | void writeJpeg(int quality, uint8_t*& buf, unsigned long& bufLen); 41 | 42 | static Cairo::RefPtr simulateFormat(Cairo::RefPtr src, Format format, ConversionFlags flags); 43 | static Cairo::RefPtr scale(Cairo::RefPtr src, double scaleFactor); 44 | }; 45 | 46 | 47 | 48 | #endif // IMAGEUTILS_HH 49 | -------------------------------------------------------------------------------- /docs/3_Add_language.sl.md: -------------------------------------------------------------------------------- 1 | # Tesseract jezikovne definicije 2 | 3 | - *Upravljavnik Tessdata*, ki ga odprete z klikom n *Upravljaj z jeziki...* na dnu spustnega seznama ![](https://raw.githubusercontent.com/manisandro/gImageReader/master/qt/data/extra-theme-icons/applications-education-language.png) omogoča uporabniku upravljanje z jeziki za prepoznavo. Za dodat jezik, le obkjukajte želen jezik in upravljalnik bo samodejno prenesel potrebne datoteke. 4 | 5 | - Če želite namestiti jezike popolnoma ročno: 6 | 7 | - **Linux**, v vašem upravitelju paketov poiščite in namestite ustezno jezikovno definicijo (paket se bo morebiti imenoval *tesseract-langpack-*). 8 | 9 | - **Windows**, najprej v gImageReader odprite ![](https://raw.githubusercontent.com/manisandro/gImageReader/master/packaging/win32/skel/share/icons/hicolor/22x22/categories/preferences-system.png) ter kliknite na ![](https://raw.githubusercontent.com/manisandro/gImageReader/master/packaging/win32/skel/share/icons/hicolor/22x22/actions/help-about.png) *O programu* da preverite katero verzija tesseract je v uporabi. 10 | 11 | - Če se uporablja tesseract 4.x pojdite na https://github.com/tesseract-ocr/tessdata_fast. 12 | 13 | - Če se uporablja tesseract 3.x ali starješi pojdite na https://github.com/tesseract-ocr/tessdata. 14 | 15 | Nato v seznamu poiščite verzijo ki je manjša ali enaka vaši tesseract verzji. Nato prenesite želeni jezik (*.traineddata in pripadajče dopolnilne datoteke, ki jih nekateri jeziki potrebujejo) in jh shranite v *Start→All Programs→gImageReader→Tesseract language definitions*. 16 | 17 | - Da sprožite ponovno zanavo jezikov na voljo, lahko ponovno zažene program ali ![](https://raw.githubusercontent.com/manisandro/gImageReader/master/packaging/win32/skel/share/icons/hicolor/22x22/categories/preferences-system.png)→ ![](https://raw.githubusercontent.com/manisandro/gImageReader/master/packaging/win32/skel/share/icons/hicolor/22x22/actions/view-refresh.png)*Ponovno zaznaj jezike* -------------------------------------------------------------------------------- /packaging/win32/mingwdeps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo all > /etc/rpm/macros.image-language-conf 4 | dnf install -y \ 5 | cmake \ 6 | poppler-data \ 7 | make \ 8 | iso-codes \ 9 | findutils \ 10 | gettext \ 11 | git \ 12 | intltool \ 13 | hunspell-en \ 14 | tesseract \ 15 | mingw32-nsis \ 16 | zip \ 17 | python3-gobject \ 18 | \ 19 | mingw32-gdb \ 20 | mingw32-gcc-c++ \ 21 | mingw32-bzip2 \ 22 | mingw32-dlfcn \ 23 | mingw32-djvulibre \ 24 | mingw32-libgomp \ 25 | mingw32-libjpeg-turbo \ 26 | mingw32-podofo \ 27 | mingw32-poppler-qt6 \ 28 | mingw32-qt6-qtbase \ 29 | mingw32-qt6-qtimageformats \ 30 | mingw32-qt6-qttools \ 31 | mingw32-qt6-qttranslations \ 32 | mingw32-qtspell-qt6 \ 33 | mingw32-tesseract \ 34 | mingw32-twaindsm \ 35 | mingw32-quazip-qt6 \ 36 | \ 37 | mingw32-libzip \ 38 | mingw32-gtk3 gtk3 gtk3-devel \ 39 | mingw32-glib2-static glib2 glib2-devel \ 40 | mingw32-gtkmm30 \ 41 | mingw32-gtkspell3 \ 42 | mingw32-gtkspellmm30 \ 43 | mingw32-gtksourceviewmm3 \ 44 | mingw32-cairomm \ 45 | mingw32-poppler \ 46 | mingw32-poppler-glib \ 47 | mingw32-json-glib \ 48 | mingw32-libxml++ \ 49 | \ 50 | mingw64-gdb \ 51 | mingw64-gcc-c++ \ 52 | mingw64-bzip2 \ 53 | mingw64-dlfcn \ 54 | mingw64-djvulibre \ 55 | mingw64-libgomp \ 56 | mingw64-libjpeg-turbo \ 57 | mingw64-podofo \ 58 | mingw64-poppler-qt6 \ 59 | mingw64-qt6-qtbase \ 60 | mingw64-qt6-qtimageformats \ 61 | mingw64-qt6-qttools \ 62 | mingw64-qt6-qttranslations \ 63 | mingw64-qtspell-qt6 \ 64 | mingw64-tesseract \ 65 | mingw64-twaindsm \ 66 | mingw64-quazip-qt6 \ 67 | \ 68 | mingw64-libzip \ 69 | mingw64-gtk3 gtk3 gtk3-devel \ 70 | mingw64-glib2-static glib2 glib2-devel \ 71 | mingw64-gtkmm30 \ 72 | mingw64-gtkspell3 \ 73 | mingw64-gtkspellmm30 \ 74 | mingw64-gtksourceviewmm3 \ 75 | mingw64-cairomm \ 76 | mingw64-poppler \ 77 | mingw64-poppler-glib \ 78 | mingw64-json-glib \ 79 | mingw64-libxml++ 80 | -------------------------------------------------------------------------------- /qt/src/OutputTextEdit.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * OutputTextEdit.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef OUTPUTTEXTEDIT_HH 21 | #define OUTPUTTEXTEDIT_HH 22 | 23 | #include 24 | 25 | class OutputTextEdit : public QPlainTextEdit { 26 | Q_OBJECT 27 | public: 28 | explicit OutputTextEdit(QWidget* parent = 0); 29 | ~OutputTextEdit(); 30 | 31 | QTextCursor regionBounds() const; 32 | bool findReplace(bool backwards, bool replace, bool matchCase, const QString& searchstr, const QString& replacestr); 33 | int replaceAll(const QString& searchstr, const QString& replacestr, bool matchCase); 34 | void setFilename(const QString& filename) { m_filename = filename; } 35 | const QString& filename() const { return m_filename; } 36 | 37 | public slots: 38 | void setDrawWhitespace(bool drawWhitespace); 39 | 40 | protected: 41 | void paintEvent(QPaintEvent* e) override; 42 | 43 | private: 44 | class WhitespaceHighlighter; 45 | WhitespaceHighlighter* m_wsHighlighter = nullptr; 46 | bool m_drawWhitespace = false; 47 | QTextCursor m_regionCursor; 48 | bool m_entireRegion; 49 | QString m_filename; 50 | 51 | private slots: 52 | void saveRegionBounds(); 53 | }; 54 | 55 | #endif // OUTPUTTEXTEDIT_HH 56 | -------------------------------------------------------------------------------- /gtk/src/FileDialogs.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * FileDialogs.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef FILEDIALOGS_HH 21 | #define FILEDIALOGS_HH 22 | 23 | #include "common.hh" 24 | 25 | namespace FileDialogs { 26 | 27 | struct FileFilter { 28 | std::string name; 29 | std::vector mime_types; 30 | std::vector patterns; 31 | 32 | #ifdef G_OS_WIN32 33 | std::wstring to_win32_filter() const; 34 | #endif 35 | Glib::RefPtr to_gnome_filter() const; 36 | Glib::ustring to_kde_filter() const; 37 | static FileFilter pixbuf_formats(); 38 | }; 39 | 40 | std::vector> open_dialog(const Glib::ustring& title, const std::string& initialDirectory, const std::string& initialDirSetting, const FileFilter& filter, bool multiple, Gtk::Window* parent = nullptr); 41 | std::string open_folder_dialog(const Glib::ustring& title, const std::string& initialDirectory, const std::string& initialDirSetting, Gtk::Window* parent = nullptr); 42 | std::string save_dialog(const Glib::ustring& title, const std::string& initialFilename, const std::string& initialDirSetting, const FileFilter& filter, bool generateUniqueName = false, Gtk::Window* parent = nullptr); 43 | 44 | 45 | } // FileDialogs 46 | 47 | #endif // FILEDIALOGS_HH 48 | -------------------------------------------------------------------------------- /qt/src/Scanner.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * Scanner.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef SCANNER_HH 21 | #define SCANNER_HH 22 | 23 | #include "common.hh" 24 | #include 25 | #include 26 | 27 | class Scanner : public QObject { 28 | Q_OBJECT 29 | public: 30 | enum class State { IDLE = 0, OPEN, SET_OPTIONS, START, GET_PARAMETERS, READ }; 31 | enum class ScanMode { DEFAULT = 0, COLOR, GRAY, LINEART }; 32 | enum class ScanType { SINGLE = 0, ADF_FRONT, ADF_BACK, ADF_BOTH }; 33 | 34 | struct Device { 35 | QString name; 36 | QString label; 37 | }; 38 | 39 | struct Params { 40 | QString device; 41 | QString filename; 42 | double dpi; 43 | ScanMode scan_mode; 44 | int depth; 45 | ScanType type; 46 | int page_width; 47 | int page_height; 48 | }; 49 | 50 | virtual ~Scanner() {} 51 | 52 | virtual void init() = 0; 53 | virtual void redetect() = 0; 54 | virtual void scan(const Params& params) = 0; 55 | virtual void cancel() = 0; 56 | virtual void close() = 0; 57 | 58 | signals: 59 | void initFailed(); 60 | void devicesDetected(QList devices); 61 | void scanFailed(const QString& message); 62 | void scanStateChanged(Scanner::State state); 63 | void pageAvailable(const QString& filename); 64 | }; 65 | 66 | Q_DECLARE_METATYPE(Scanner::State) 67 | 68 | #endif // SCANNER_HH 69 | -------------------------------------------------------------------------------- /qt/src/hocr/HOCROdtExporter.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCROdtExporter.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRODTEXPORTER_HH 21 | #define HOCRODTEXPORTER_HH 22 | 23 | #include "common.hh" 24 | #include "HOCRExporter.hh" 25 | 26 | #include 27 | #include 28 | 29 | class HOCRItem; 30 | class QImage; 31 | class QRect; 32 | class QuaZip; 33 | class QXmlStreamWriter; 34 | 35 | 36 | class HOCROdtExporter : public HOCRExporter { 37 | Q_OBJECT 38 | public: 39 | bool run(const HOCRDocument* hocrdocument, const QString& outname, const ExporterSettings* settings = nullptr) override; 40 | 41 | private: 42 | void writeImage(QuaZip& zip, QMap& images, const HOCRItem* item); 43 | void writeFontFaceDecls(QSet& families, const HOCRItem* item, QXmlStreamWriter& writer); 44 | void writeFontStyles(QMap> & styles, const HOCRItem* item, QXmlStreamWriter& writer, int& counter); 45 | void printItem(QXmlStreamWriter& writer, const HOCRItem* item, int pageNr, int dpi, const QMap>& fontStyleNames, const QMap& images); 46 | 47 | private slots: 48 | bool setSource(const QString& sourceFile, int page, int dpi, double angle); 49 | QImage getSelection(const QRect& bbox); 50 | }; 51 | 52 | #endif // HOCRODTEXPORTER_HH 53 | -------------------------------------------------------------------------------- /docs/5_Options.he.md: -------------------------------------------------------------------------------- 1 | # אפשרויות תוכנית 2 | 3 | - ניתן לגשת לאפשרויות התוכנית מ*תפריט היישום* ![](https://raw.githubusercontent.com/manisandro/gImageReader/master/packaging/win32/gtk_skel/share/icons/hicolor/16x16/categories/applications-system-symbolic.symbolic.png), אשר נפתח בלחיצה על הלחצן האחרון ב*סרגל הכלים הראשי*. בעת הפעלת היישום בסביבת שולחן העבודה של Gnome 3, תפריט היישום הוא חלק מהסרגל העליון של מעטפת שולחן העבודה. 4 | 5 | - האפשרויות מאפשרות את הגדרת הגופן של חלונית הפלט, כמו גם האם היישום ידווח על מילוני איות חסרים וגרסאות תוכנית חדשות. 6 | 7 | - בעת הפעלת ממשק GTK+, האפשרויות גם מאפשרות לקבוע את כיוונה של *חלונית הפלט* (אם היא אנכית, היא תתפוש את החלק הנכון של היישום, אם היא אופקית, היא תתפוש את החלק התחתון). בעת הפעלת ממשק Qt, ניתן להזיז את מיקום חלונית הפלט באופן חופשי ע"י גרירת שורת הכותרת של חלונית הפלט. 8 | 9 | - ההגדרה *מיקום נתוני שפה* מאפשרת לקבוע האם הגדרות שפת ה- tesseract ומילוני האיות ישמרו מערכתית (כלומר, ב- `%ProgramFiles%` ב- Windows, או בדרך כלל ב- `/usr` ב- Linux) או בתקיות של משתמש מקומי (כלומר, בתקיית הבית של המשתמש הנוכחי). זה שימושי אם למשתמש אין הרשאות כתיבה בתקיות המערכת. 10 | 11 | - בנוסף, ניתן להגדיר כללים חדשים להתאמת שפת ה- tesseract לשפה כלשהי (לצערינו, הגדרות שפת ה- tesseract אינן כוללות מידע זה). את רשימת הכללים המותאמים מראש ניתן לראות בסעיף הגדרות שפה מותאמות מראש. ניתן להוסיף הגדרות נוספות בלחיצה על הכפתור הוסף למטה. הכללים להגדרת שפה, המורכבים משלושה שדות, הם כדלהלן: 12 | 13 | ***קידומת שם קובץ***: שם הקובץ של נתוני שפת ה- tesseract הוא בתבנית *.traineddata*, כלומר, עבור אנגלית, הקובץ נקרא *eng.traineddata* והקידומת הינה *eng*. 14 | 15 | ***קידוד ISO***: זה ה- [ISO 639-1 language code](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (כלומר *en*), אופציונאלי בשילוב קו תחתון ('_') עם [ISO 3166-2 country code](http://en.wikipedia.org/wiki/ISO_3166-2) (כלומר *en_US*). מידע זה נחוץ בכדי להתאים את מילוני האיות לשפה עצמה. הבחירה בקידוד המדינה - אינה רלוונטית לחלוטין, אך יש צורך בהתקנה אוטומטית של מילוני איות בכדי למצוא חבילת מילונים רלוונטית. ניתן להמציא קוד זה גם אם אין אפשרויות מתאימות, התוצאה היחידה תהיה, שאף מילון איות לא יתאים לשפה. 16 | 17 | ***שם מקורי***: השם המקורי של השפה פשוט קובע את תווית הכניסה לשפה ב*תפריט השפה*. 18 | -------------------------------------------------------------------------------- /gtk/src/SubstitutionsManager.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * SubstitutionsManager.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef SUBSTITUTIONS_MANAGER_HH 21 | #define SUBSTITUTIONS_MANAGER_HH 22 | 23 | #include "common.hh" 24 | #include "ui_SubstitutionsManager.hh" 25 | 26 | class OutputBuffer; 27 | 28 | class SubstitutionsManager { 29 | public: 30 | SubstitutionsManager(); 31 | ~SubstitutionsManager(); 32 | void set_visible(bool visible); 33 | 34 | sigc::signal&> signal_apply_substitutions() { 35 | return m_signal_apply_substitutions; 36 | } 37 | 38 | private: 39 | struct ReplaceListColumns : public Gtk::TreeModel::ColumnRecord { 40 | Gtk::TreeModelColumn search; 41 | Gtk::TreeModelColumn replace; 42 | ReplaceListColumns() { 43 | add(search); 44 | add(replace); 45 | } 46 | }; 47 | 48 | sigc::signal&> m_signal_apply_substitutions; 49 | 50 | Ui::SubstitutionsManager ui; 51 | ClassData m_classdata; 52 | 53 | std::string m_currentFile; 54 | ReplaceListColumns m_viewCols; 55 | Glib::RefPtr m_listStore; 56 | 57 | void addRow(); 58 | void applySubstitutions(); 59 | bool clearList(); 60 | void openList(); 61 | void removeRows(); 62 | bool saveList(); 63 | }; 64 | 65 | #endif // SUBSTITUTIONS_MANAGER_HH 66 | -------------------------------------------------------------------------------- /packaging/debian/copyright: -------------------------------------------------------------------------------- 1 | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: gimagereader 3 | Source: https://github.com/manisandro/gImageReader 4 | 5 | Files: * 6 | Copyright: 2009-2018 Sandro Mani 7 | 8 | License: GPL-3+ 9 | gImageReader is free software: you can redistribute it and/or modify it 10 | under the terms of the GNU General Public License as published by the 11 | Free Software Foundation, either version 3 of the License, or 12 | (at your option) any later version. 13 | . 14 | gImageReader is distributed in the hope that it will be useful, but 15 | WITHOUT ANY WARRANTY; without even the implied warranty of 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 | See the GNU General Public License for more details. 18 | . 19 | You should have received a copy of the GNU General Public License along 20 | with this program. If not, see . 21 | 22 | 23 | Files: debian/* 24 | Copyright: 2014-2018 Sandro Mani 25 | License: GPL-2+ 26 | This package is free software; you can redistribute it and/or modify 27 | it under the terms of the GNU General Public License as published by 28 | the Free Software Foundation; either version 2 of the License, or 29 | (at your option) any later version. 30 | . 31 | This package is distributed in the hope that it will be useful, 32 | but WITHOUT ANY WARRANTY; without even the implied warranty of 33 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 34 | GNU General Public License for more details. 35 | . 36 | You should have received a copy of the GNU General Public License 37 | along with this program. If not, see 38 | . 39 | On Debian systems, the complete text of the GNU General 40 | Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". 41 | 42 | # Please also look if there are files or directories which have a 43 | # different copyright/license attached and list them here. 44 | # Please avoid to pick license terms that are more restrictive than the 45 | # packaged work, as it may make Debian's contributions unacceptable upstream. 46 | -------------------------------------------------------------------------------- /gtk/src/OutputBuffer.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * OutputBuffer.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef OUTPUTBUFFER_HH 21 | #define OUTPUTBUFFER_HH 22 | 23 | #include "common.hh" 24 | #include 25 | 26 | class OutputBuffer : public Gsv::Buffer { 27 | public: 28 | void save_region_bounds(bool viewSelected); 29 | void get_region_bounds(Gtk::TextIter& start, Gtk::TextIter& stop); 30 | Gtk::TextIter replace_range(const Glib::ustring& text, const Gtk::TextIter& start, const Gtk::TextIter& end); 31 | bool findReplace(bool backwards, bool replace, bool matchCase, const Glib::ustring& searchstr, const Glib::ustring& replacestr, Gtk::TextView* view); 32 | int replaceAll(const Glib::ustring& searchstr, const Glib::ustring& replacestr, bool matchCase); 33 | void setHightlightLanguage(const std::string& lang_id); 34 | const std::string getFilename() const { return m_filename; } 35 | void setFilename(const std::string& filename) { m_filename = filename; } 36 | 37 | static Glib::RefPtr create() { 38 | return Glib::RefPtr (new OutputBuffer()); 39 | } 40 | 41 | 42 | private: 43 | OutputBuffer(); 44 | 45 | Glib::RefPtr m_regionTag; 46 | Glib::RefPtr m_regionBeginMark; 47 | Glib::RefPtr m_regionEndMark; 48 | std::string m_filename; 49 | }; 50 | 51 | #endif // OUTPUTBUFFER_HH 52 | -------------------------------------------------------------------------------- /docs/5_Options.sl.md: -------------------------------------------------------------------------------- 1 | # Možnosti programa 2 | 3 | - Možnosti programa ![](https://raw.githubusercontent.com/manisandro/gImageReader/master/packaging/win32/skel/share/icons/hicolor/22x22/categories/preferences-system.png) najdete v meniju skrajno desno zgoraj ![](https://raw.githubusercontent.com/manisandro/gImageReader/master/packaging/win32/skel/share/icons/hicolor/22x22/categories/preferences-system.png). Če poganjate program v grafičnem okolju Gnome 3 desktop je ta meni del namizne vrstice goraj. 4 | 5 | - Možnosti omogočajo nastavitev izhodnih pisav, kakor tudi če naj aplikacija opomni o mankajočih slovarjev črkovalnikov ter novih verzijah pograma. 6 | 7 | - V kolikor poganjate program v grafičnem okolju Gtk+ vam tudi omogoča nastavitev orientacije vrstice rezultata 8 | 9 | - *Mesta jezikovnih podatkov* določa ali so jezikovne defnicije in slovaji shranjeni na globalni sistemski lokacji (npr.: `%ProgramFiles%` za Windows oz za Linux ponavadi v `/usr` ) ali pa le v uporabniškem območju (torej znotraj uporabnikovega direktorija). To je porabno v kolikor uporabnik nima globalnih pravic pisanja. 10 | 11 | - Dodatno lahko tam definirate nova pravila a ujemanje z jezikovnimi definicijami tesseract-a (nažalost jezikovne definicije za tesseract ne vsebujejo teh informacij). Seznam pred definiranih pravil lahko vidite na prvem seznamu. Pri dodajanju jezikovnih pravil je potrebno dodati 3 polja in sicer: 12 | 13 | ***Predpona imena datoteke***: Ime jezikovne datoteke za tesseract je vedno oblike *.traineddata*, npr. za Angleščino, je ime datoteke *eng.traineddata* torej je predpona *eng*. 14 | 15 | ***ISO Koda***: To je [ISO 639-1 jezikovna koda](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (npr. *en*), opcijsko kombinirana z podčrtajem [ISO 3166-2 regijske kode](http://en.wikipedia.org/wiki/ISO_3166-2) (npr. *en_US*). Ta podatek je potreben za ujemanje slovarjev črkovalnikov na prepoznan jezik. Ta pododatek ni kritično potreben, a je potreben za samodejno nameščanje slovarjev črkovalnkov. Ta šifra se lahko tudi izmisi, če ne obstaja primerna izbira. Posledica bo le ne bo konrole ali je beseda najdena tudi v slovarju. 16 | 17 | ***Izvorno ime***: Ime jezika, ki bo prikazano v meniju možnih pisav. -------------------------------------------------------------------------------- /gtk/src/hocr/HOCROdtExporter.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCROdtExporter.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRODTEXPORTER_HH 21 | #define HOCRODTEXPORTER_HH 22 | 23 | #include "common.hh" 24 | #include "Geometry.hh" 25 | #include "HOCRExporter.hh" 26 | 27 | 28 | class HOCRItem; 29 | namespace xmlpp { 30 | class Element; 31 | } 32 | struct zip; 33 | 34 | 35 | class HOCROdtExporter : public HOCRExporter { 36 | public: 37 | bool run(const HOCRDocument* hocrdocument, const std::string& outname, const ExporterSettings* settings = nullptr) override; 38 | 39 | private: 40 | 41 | void writeImage(zip* fzip, std::map& images, const HOCRItem* item); 42 | void writeFontFaceDecls(std::set& families, const HOCRItem* item, xmlpp::Element* parentEl); 43 | void writeFontStyles(std::map> & styles, const HOCRItem* item, xmlpp::Element* parentEl, int& counter); 44 | void printItem(xmlpp::Element* parentEl, const HOCRItem* item, int pageNr, int dpi, std::map>& fontStyleNames, std::map& images); 45 | 46 | bool setSource(const Glib::ustring& sourceFile, int page, int dpi, double angle); 47 | Cairo::RefPtr getSelection(const Geometry::Rectangle& bbox); 48 | }; 49 | 50 | #endif // HOCRODTEXPORTER_HH 51 | -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: gimagereader 2 | theme: 3 | name: material 4 | logo: img/gimagereader.png 5 | favicon: img/gimagereader.png 6 | 7 | 8 | repo_url: https://github.com/manisandro/gImageReader 9 | site_author: Miharix 10 | copyright: Copyright ©2009-2020 Sandro Mani 11 | 12 | #if servin on server change to true 13 | use_directory_urls: false 14 | 15 | plugins: 16 | - search 17 | - i18n: 18 | default_language: en 19 | languages: 20 | # en: English 21 | sl: Slovenščina 22 | he: עברית 23 | 24 | 25 | - redirects: 26 | redirect_maps: 27 | '7_Translate.md': 'https://hosted.weblate.org/projects/gimagereader/translations/' 28 | 'sl/7_Translate.md': 'https://hosted.weblate.org/projects/gimagereader/translations/' 29 | 'he/7_Translate.md': 'https://hosted.weblate.org/projects/gimagereader/translations/' 30 | '8_Issue_tracker.md': 'https://github.com/manisandro/gImageReader/issues' 31 | 'sl/8_Issue_tracker.md': 'https://github.com/manisandro/gImageReader/issues' 32 | 'he/8_Issue_tracker.md': 'https://github.com/manisandro/gImageReader/issues' 33 | 'News.md': 'https://github.com/manisandro/gImageReader/commits/master' 34 | 'sl/News.md': 'https://github.com/manisandro/gImageReader/commits/master' 35 | 'he/News.md': 'https://github.com/manisandro/gImageReader/commits/master' 36 | 'FAQ.md': 'https://github.com/manisandro/gImageReader/wiki/FAQ' 37 | 'sl/FAQ.md': 'https://github.com/manisandro/gImageReader/wiki/FAQ' 38 | 'he/FAQ.md': 'https://github.com/manisandro/gImageReader/wiki/FAQ' 39 | 40 | 41 | extra: 42 | social: 43 | - icon: fontawesome/brands/github 44 | link: https://github.com/manisandro/gImageReader 45 | 46 | alternate: 47 | 48 | # Switch to English 49 | - name: English 50 | link: 'en\index.html' #if serving on server change to "en\" 51 | lang: en 52 | 53 | 54 | # Switch to Slo 55 | - name: Slovenščina 56 | link: 'sl\index.html' #if serving on server change to "sl\" 57 | lang: sl 58 | 59 | 60 | # Switch to Hebrew 61 | - name: עברית 62 | link: 'he\index.html' #if serving on server change to "he\" 63 | lang: he 64 | 65 | -------------------------------------------------------------------------------- /gtk/src/Acquirer.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * Acquirer.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef ACQUIRER_HH 21 | #define ACQUIRER_HH 22 | 23 | #include "common.hh" 24 | #include "Scanner.hh" 25 | 26 | namespace Ui { 27 | class MainWindow; 28 | } 29 | 30 | class Acquirer { 31 | public: 32 | Acquirer(const Ui::MainWindow& _ui); 33 | ~Acquirer(); 34 | 35 | sigc::signal signal_scanPageAvailable() const { 36 | return m_signal_scanPageAvailable; 37 | } 38 | 39 | private: 40 | class DevicesComboColumns : public Gtk::TreeModel::ColumnRecord { 41 | public: 42 | Gtk::TreeModelColumn label; 43 | Gtk::TreeModelColumn name; 44 | DevicesComboColumns() { 45 | add(label); 46 | add(name); 47 | } 48 | } m_devComboCols; 49 | 50 | const Ui::MainWindow& ui; 51 | ClassData m_classdata; 52 | 53 | Gtk::Button* m_cancelButton; 54 | std::string m_outputPath; 55 | sigc::signal m_signal_scanPageAvailable; 56 | Scanner* m_scanner = nullptr; 57 | 58 | void genOutputPath(); 59 | void cancelScan(); 60 | void doneDetectDevices(const std::vector& devices); 61 | void doneScan(); 62 | void scanInitFailed(); 63 | void scanFailed(const Glib::ustring& msg); 64 | void selectOutputPath(); 65 | void setDeviceComboTooltip(); 66 | void setScanState(Scanner::State state); 67 | void startDetectDevices(); 68 | void startScan(); 69 | }; 70 | 71 | #endif // ACQUIRER_HH 72 | -------------------------------------------------------------------------------- /docs/6_Contribute.sl.md: -------------------------------------------------------------------------------- 1 | # Prispevaj svoje znanje/izkušnje 2 | ## Prevajanje 3 | Za predloge ali prispevke katere koli vrste, prosimo ustvarite *ticket* in ali *pull-request* na [GitHub strani projekta](https://github.com/manisandro/gImageReader), ali me kontaktirajte na [manisandro@gmail.com](mailto:manisandro@gmail.com). Še posebej sem vesel prevodov - Tukaj so glavni koraki za ustvarjanje prevoda: 4 | 5 | A) gImageReader prevodi se nahajajo na [weblate](https://hosted.weblate.org/projects/gimagereader/) od koder se periodično samodejno prenesejo. 6 | 7 | ali 8 | 9 | B): 10 | 11 | 1. Prenesite [zadnjo izvorno kodo](https://github.com/manisandro/gImageReader/archive/master.zip). 12 | 2. Odprite mapo `po` . 13 | 3. Da naredite novi prevod skopirajte `gimagereader.pot` datoteko v `.po` (npr. `de.po` za Nemščino). Za popravke obstoječega prevoda pa izberite že obstoječi. 14 | 4. Prevedite nize v `.po`. 15 | 5. Pošljite datoteko **po** na [manisandro@gmail.com](mailto:manisandro@gmail.com). Hvala! 16 | 17 | ## Programski hrošči in podpora 18 | 19 | Če najdete težavo ali imate predlog ustvarite *ticket* na [gImageReader issue tracker](https://github.com/manisandro/gImageReader/issues), ali me kontaktirajte direktno na [manisandro@gmail.com](mailto:manisandro@gmail.com). Preverite tudi obstoječe [FAQ](https://github.com/manisandro/gImageReader/wiki/FAQ). Če se vam dogajajo "zamrznitve" ali "sesuja" pograma poizkusite v ticket/mail podat sledeče informacije: 20 | 21 | - Če je pojavi poročilo o sesutju, priložite naveden sklad, ki je viden tami. Da ste prepričani, da je sklad popolen in uporabljate Linux preverite da imaste nameščen razhroščevalnik `gdb` kakor tudi simboli razhroščevalnika v kolikor jih vaša distribucija nudi. Paketi, ki le to vsebujejo se ponavai imenujejo **-debuginfo** ali **-dbg**. V kolikor uporabljate Windows, so nekateri ustrezni simboli že privtzeto nameščeni. 22 | - Če uporabljte Windows, priložite še log datoteki `%ProgramFiles%\gImageReader\gimagereader.log` ter`%ProgramFiles%\gImageReader\twain.log` . 23 | - Če uporabljate Linux, zaženite aplikacijo v terminalu ter priložite vse kar se vam izpiše v terminalu. 24 | - Poizkusite opisat, kar se da natančno kaj počnete in v koliko se da težavo reproducirat. -------------------------------------------------------------------------------- /qt/src/RecognitionMenu.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * RecognitionMenu.hh 4 | * Copyright (C) 2022-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef RECOGNITIONMENU_HH 21 | #define RECOGNITIONMENU_HH 22 | 23 | #include 24 | #define USE_STD_NAMESPACE 25 | #include 26 | #undef USE_STD_NAMESPACE 27 | 28 | #include "Config.hh" 29 | #include "ui_CharacterListDialog.h" 30 | 31 | class QActionGroup; 32 | 33 | class RecognitionMenu : public QMenu { 34 | Q_OBJECT 35 | public: 36 | RecognitionMenu(QWidget* parent = nullptr); 37 | 38 | void rebuild(); 39 | const Config::Lang& getRecognitionLanguage() const { return m_curLang; } 40 | tesseract::PageSegMode getPageSegmentationMode() const; 41 | QString getCharacterWhitelist() const; 42 | QString getCharacterBlacklist() const; 43 | 44 | signals: 45 | void languageChanged(Config::Lang lang); 46 | 47 | private slots: 48 | void psmSelected(QAction* action); 49 | void setLanguage(Config::Lang lang); 50 | void setMultiLanguage(); 51 | 52 | private: 53 | Config::Lang m_curLang; 54 | 55 | QMenu* m_menuMultilanguage = nullptr; 56 | QActionGroup* m_langMenuRadioGroup = nullptr; 57 | QActionGroup* m_langMenuCheckGroup = nullptr; 58 | QActionGroup* m_psmCheckGroup = nullptr; 59 | QAction* m_multilingualAction = nullptr; 60 | QDialog* m_charListDialog = nullptr; 61 | Ui::CharacterListDialog m_charListDialogUi; 62 | 63 | bool eventFilter(QObject* obj, QEvent* ev) override; 64 | }; 65 | 66 | #endif // RECOGNITIONMENU_HH 67 | -------------------------------------------------------------------------------- /qt/src/hocr/HOCRPdfExportWidget.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRPdfExportWidget.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRPDFEXPORTWIDGET_HH 21 | #define HOCRPDFEXPORTWIDGET_HH 22 | 23 | #include 24 | #include 25 | 26 | #include "HOCRPdfExporter.hh" 27 | #include "ui_PdfExportWidget.h" 28 | 29 | class QGraphicsPixmapItem; 30 | 31 | class DisplayerToolHOCR; 32 | class HOCRDocument; 33 | class HOCRPage; 34 | 35 | 36 | class HOCRPdfExportWidget : public QWidget { 37 | Q_OBJECT 38 | public: 39 | HOCRPdfExportWidget(DisplayerToolHOCR* displayerTool, const HOCRDocument* hocrdocument = nullptr, const HOCRPage* hocrpage = nullptr, QWidget* parent = nullptr); 40 | ~HOCRPdfExportWidget(); 41 | void setPreviewPage(const HOCRDocument* hocrdocument, const HOCRPage* hocrpage); 42 | HOCRPdfExporter::PDFSettings getPdfSettings() const; 43 | 44 | signals: 45 | void validChanged(bool valid); 46 | 47 | private: 48 | Ui::PdfExportWidget ui; 49 | QGraphicsPixmapItem* m_preview = nullptr; 50 | DisplayerToolHOCR* m_displayerTool; 51 | const HOCRDocument* m_document = nullptr; 52 | const HOCRPage* m_previewPage; 53 | 54 | 55 | private slots: 56 | void backendChanged(); 57 | void toggleBackendHint(); 58 | void importMetadataFromSource(); 59 | void imageFormatChanged(); 60 | void imageCompressionChanged(); 61 | void paperSizeChanged(); 62 | void updatePreview(); 63 | void updateValid(); 64 | }; 65 | 66 | #endif // HOCRPDFEXPORTWIDGET_HH 67 | -------------------------------------------------------------------------------- /qt/src/hocr/HOCRProofReadWidget.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRProofReadWidget.hh 4 | * Copyright (C) 2022-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRPROOFREADWIDGET_HH 21 | #define HOCRPROOFREADWIDGET_HH 22 | 23 | #include 24 | #include 25 | 26 | class QLabel; 27 | class QSpinBox; 28 | class QTreeView; 29 | class QVBoxLayout; 30 | class HOCRItem; 31 | 32 | class HOCRProofReadWidget : public QFrame { 33 | Q_OBJECT 34 | public: 35 | HOCRProofReadWidget(QTreeView* treeView, QWidget* parent = nullptr); 36 | void setProofreadEnabled(bool enabled); 37 | void clear(); 38 | QTreeView* documentTree() const { return m_treeView; } 39 | void setConfidenceLabel(int wconf); 40 | QString confidenceStyle(int wconf) const; 41 | void adjustFontSize(int diff); 42 | 43 | private: 44 | class LineEdit; 45 | 46 | QTreeView* m_treeView = nullptr; 47 | QVBoxLayout* m_linesLayout = nullptr; 48 | const HOCRItem* m_currentLine = nullptr; 49 | QWidget* m_controlsWidget = nullptr; 50 | QLabel* m_confidenceLabel = nullptr; 51 | QMap m_currentLines; 52 | QSpinBox* m_spinLinesBefore = nullptr; 53 | QSpinBox* m_spinLinesAfter = nullptr; 54 | int m_fontSizeDiff = 0; 55 | bool m_enabled = false; 56 | 57 | // Disable auto tab handling 58 | bool focusNextPrevChild(bool) override { return false; } 59 | 60 | void repositionWidget(); 61 | 62 | private slots: 63 | void updateWidget(bool force = false); 64 | void showShortcutsDialog(); 65 | }; 66 | 67 | 68 | #endif // HOCRPROOFREADWIDGET_HH 69 | -------------------------------------------------------------------------------- /cmake/GSettings.cmake: -------------------------------------------------------------------------------- 1 | # GSettings.cmake, CMake macros written for Marlin, feel free to re-use them. 2 | 3 | option (GSETTINGS_LOCALINSTALL "Install GSettings Schemas locally instead of to the GLib prefix" ON) 4 | 5 | option (GSETTINGS_COMPILE "Compile GSettings Schemas after installation" ${GSETTINGS_LOCALINSTALL}) 6 | 7 | if(GSETTINGS_LOCALINSTALL) 8 | message(STATUS "GSettings schemas will be installed locally.") 9 | endif() 10 | 11 | if(GSETTINGS_COMPILE) 12 | message(STATUS "GSettings shemas will be compiled.") 13 | endif() 14 | 15 | macro(add_schema SCHEMA_NAME) 16 | 17 | set(PKG_CONFIG_EXECUTABLE pkg-config) 18 | # Have an option to not install the schema into where GLib is 19 | if (GSETTINGS_LOCALINSTALL) 20 | SET (GSETTINGS_DIR "${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas/") 21 | else (GSETTINGS_LOCALINSTALL) 22 | execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} glib-2.0 --variable prefix OUTPUT_VARIABLE _glib_prefix OUTPUT_STRIP_TRAILING_WHITESPACE) 23 | SET (GSETTINGS_DIR "${_glib_prefix}/share/glib-2.0/schemas/") 24 | endif (GSETTINGS_LOCALINSTALL) 25 | 26 | # Run the validator and error if it fails 27 | execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas OUTPUT_VARIABLE _glib_comple_schemas OUTPUT_STRIP_TRAILING_WHITESPACE) 28 | if("${_glib_comple_schemas}" STREQUAL "") 29 | MESSAGE(FATAL_ERROR "Could not find glib_compile_schemas") 30 | endif() 31 | execute_process (COMMAND ${_glib_comple_schemas} --dry-run --schema-file=${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NAME} ERROR_VARIABLE _schemas_invalid OUTPUT_STRIP_TRAILING_WHITESPACE) 32 | 33 | if (_schemas_invalid) 34 | message (SEND_ERROR "Schema validation error: ${_schemas_invalid}") 35 | endif (_schemas_invalid) 36 | 37 | # Actually install and recompile schemas 38 | message (STATUS "GSettings schemas will be installed into ${GSETTINGS_DIR}") 39 | install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NAME} DESTINATION ${GSETTINGS_DIR} OPTIONAL) 40 | 41 | if (GSETTINGS_COMPILE) 42 | install (CODE " 43 | if(\"\$ENV{DESTDIR}\" STREQUAL \"\") 44 | message (STATUS \"Compiling GSettings schemas\") 45 | execute_process (COMMAND ${_glib_comple_schemas} ${GSETTINGS_DIR}) 46 | endif() 47 | ") 48 | endif () 49 | endmacro() 50 | -------------------------------------------------------------------------------- /docs/6_Contribute.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | For suggestions and contributions of any kind, please file tickets and/or pull-requests on the [GitHub project page](https://github.com/manisandro/gImageReader), or contact me at [manisandro@gmail.com](mailto:manisandro@gmail.com). I'd especially appreciate translations - here are the main steps for creating a translation: 4 | 5 | A) gImageReader translations are hosted on [weblate](https://hosted.weblate.org/projects/gimagereader/) and are periodically merged into master. 6 | 7 | or 8 | 9 | B): 10 | 11 | 1. Download the [latest source archive](https://github.com/manisandro/gImageReader/archive/master.zip). 12 | 2. Enter the `po` folder. 13 | 3. To create a new translation, copy the `gimagereader.pot` file to `.po` (i.e. `de.po` for German). To edit an existing translation, simply pick the corresponding file. 14 | 4. Translate the strings in `.po`. 15 | 5. Send the **po** file to [manisandro@gmail.com](mailto:manisandro@gmail.com). Thanks! 16 | 17 | ## Debugging and support 18 | 19 | If you find an issue or have a suggestion, please file a ticket to the [gImageReader issue tracker](https://github.com/manisandro/gImageReader/issues), or contact me directly at [manisandro@gmail.com](mailto:manisandro@gmail.com). Be sure to also consult the [FAQ](https://github.com/manisandro/gImageReader/wiki/FAQ). If you are experiencing crashes or hangs, please also try to include the following information in the ticket/email: 20 | 21 | - If the crash handler appears, include the backtrace which is shown there. To make sure that the backtrace is complete, if you are running the application under Linux, make sure that the `gdb` debugger as well as the debugging symbols are installed if your distribution provides them. The package containing the debugging symbols is usually called **-debuginfo** or **-dbg**. If you are running the application under Windows, some debugging symbols are installed by default. 22 | - If you are running under Windows, include the `%ProgramFiles%\gImageReader\gimagereader.log` and `%ProgramFiles%\gImageReader\twain.log` log files. 23 | - If you are running under Linux, run the application from a terminal and include any output which appears on the terminal. 24 | - Try to describe as best as you can what you were doing and whether the problem is reproducible. -------------------------------------------------------------------------------- /gtk/src/common.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * common.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef COMMON_HH 21 | #define COMMON_HH 22 | 23 | #include 24 | #include 25 | #include 26 | 27 | struct ClassDataItem { 28 | virtual ~ClassDataItem() = default; 29 | }; 30 | 31 | class ClassData { 32 | public: 33 | ~ClassData() { 34 | std::for_each(m_connections.begin(), m_connections.end(), [](sigc::connection conn) { 35 | conn.disconnect(); 36 | }); 37 | for (ClassDataItem* item : m_items) { 38 | delete item; 39 | } 40 | } 41 | template 42 | sigc::connection addConn(const T& conn) { 43 | m_connections.push_back(conn); 44 | return m_connections.back(); 45 | } 46 | void addItem(ClassDataItem* item) { 47 | m_items.push_back(item); 48 | } 49 | private: 50 | std::vector m_connections; 51 | std::vector m_items; 52 | }; 53 | 54 | class DataObject { 55 | public: 56 | virtual ~DataObject() = default; 57 | }; 58 | 59 | #define CONNECT(src, signal, ...) m_classdata.addConn((src)->signal_##signal().connect(__VA_ARGS__)) 60 | #define CONNECTP(src, property, ...) m_classdata.addConn((src)->property_##property().signal_changed().connect(__VA_ARGS__)) 61 | #define CONNECTX(src, signal, ...) (src)->signal_##signal().connect(__VA_ARGS__) 62 | 63 | #define APPLICATION_ID "org.gnome.gimagereader" 64 | 65 | #ifndef M_PI 66 | #define M_PI 3.14159265358979323846 67 | #endif 68 | 69 | extern std::string pkgExePath; 70 | extern std::string pkgDir; 71 | 72 | #endif 73 | -------------------------------------------------------------------------------- /gtk/src/hocr/HOCRBatchExportDialog.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRBatchExportDialog.hh 4 | * Copyright (C) 2020-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRBATCHEXPORTDIALOG_HH 21 | #define HOCRBATCHEXPORTDIALOG_HH 22 | 23 | #include "common.hh" 24 | #include "FileTreeModel.hh" 25 | #include "ui_HOCRBatchExportDialog.hh" 26 | 27 | 28 | class HOCRPdfExportWidget; 29 | 30 | class HOCRBatchExportDialog { 31 | 32 | public: 33 | HOCRBatchExportDialog(Gtk::Window* parent = nullptr); 34 | ~HOCRBatchExportDialog(); 35 | void run(); 36 | 37 | private: 38 | enum ExportMode { ExportPdf, ExportOdt, ExportTxt }; 39 | Ui::HOCRBatchExportDialog ui; 40 | 41 | ClassData m_classdata; 42 | Glib::RefPtr m_sourceTreeModel; 43 | Glib::RefPtr m_outputTreeModel; 44 | std::map>> m_outputMap; 45 | HOCRPdfExportWidget* m_pdfExportWidget = nullptr; 46 | sigc::connection m_connectionPreviewTimeout; 47 | 48 | struct FormatComboColums : public Gtk::TreeModel::ColumnRecord { 49 | Gtk::TreeModelColumn format; 50 | Gtk::TreeModelColumn label; 51 | FormatComboColums() { 52 | add(format); 53 | add(label); 54 | } 55 | } m_formatComboCols; 56 | 57 | void setupFileTreeView(Gtk::TreeView* treeView); 58 | void apply(); 59 | void setSourceFolder(); 60 | void scanSourceDir(const std::string& dir, std::vector& files); 61 | void setExportFormat(); 62 | bool updateExportPreview(); 63 | void updateOutputTree(); 64 | }; 65 | 66 | #endif // HOCRBATCHEXPORTDIALOG_HH 67 | -------------------------------------------------------------------------------- /gtk/src/hocr/wip_proofreadwidget/HOCRProofReadWidget.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRProofReadWidget.hh 4 | * Copyright (C) 2022-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef HOCRPROOFREADWIDGET_HH 21 | #define HOCRPROOFREADWIDGET_HH 22 | 23 | #include 24 | #include "common.hh" 25 | 26 | class HOCRItem; 27 | 28 | 29 | class HOCRProofReadWidget : public Gtk::Window { 30 | public: 31 | HOCRProofReadWidget(Gtk::TreeView* treeView); 32 | ~HOCRProofReadWidget(); 33 | void clear(); 34 | Gtk::TreeView* documentTree() const { return m_treeView; } 35 | void setConfidenceLabel(int wconf); 36 | Glib::ustring confidenceStyle(int wconf) const; 37 | void adjustFontSize(int diff); 38 | 39 | private: 40 | class LineEdit; 41 | ClassData m_classdata; 42 | 43 | Gtk::Box* m_mainLayout = nullptr; 44 | Gtk::TreeView* m_treeView = nullptr; 45 | Gtk::Box* m_linesLayout = nullptr; 46 | const HOCRItem* m_currentLine = nullptr; 47 | Gtk::Box* m_controlsWidget = nullptr; 48 | Gtk::Label* m_confidenceLabel = nullptr; 49 | std::map m_currentLines; 50 | Gtk::Window* m_settingsMenu = nullptr; 51 | Gtk::SpinButton* m_spinLinesBefore = nullptr; 52 | Gtk::SpinButton* m_spinLinesAfter = nullptr; 53 | Gtk::Button* m_settingsButton = nullptr; 54 | int m_fontSizeDiff = 0; 55 | 56 | // TODO: Disable auto tab handling 57 | // bool focusNextPrevChild(bool) override { return false; } 58 | 59 | void showSettingsMenu(); 60 | void repositionWidget(); 61 | void updateWidget(bool force = false); 62 | void showShortcutsDialog(); 63 | }; 64 | 65 | #endif // HOCRPROOFREADWIDGET_HH 66 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: CI Build 2 | on: [push] 3 | 4 | jobs: 5 | build: 6 | name: MinGW build 7 | runs-on: ubuntu-latest 8 | container: 9 | image: fedora:rawhide 10 | options: --security-opt seccomp=unconfined 11 | steps: 12 | - name: Set safe directory 13 | run: | 14 | dnf install -y git 15 | git config --global --add safe.directory ${GITHUB_WORKSPACE} 16 | 17 | - uses: actions/checkout@v4.2.2 18 | 19 | - name: Update system 20 | run: dnf -y update 21 | 22 | - name: Install build dependencies 23 | run: ./packaging/win32/mingwdeps.sh 24 | 25 | - name: Build application 26 | run: | 27 | PATH=/usr/bin ./packaging/win32/makeinstaller.sh i686 qt6 nodebug ${{ steps.version_number.outputs.version }} 28 | PATH=/usr/bin ./packaging/win32/makeinstaller.sh x86_64 qt6 nodebug ${{ steps.version_number.outputs.version }} 29 | PATH=/usr/bin ./packaging/win32/makeinstaller.sh x86_64 gtk nodebug ${{ steps.version_number.outputs.version }} 30 | 31 | - name: Reset ci-latest tag 32 | run: | 33 | VERSION=${{ steps.version_number.outputs.version }} 34 | git config --global user.email "ci@github.com" 35 | git config --global user.name "Github CI" 36 | git tag -d ci-latest || true 37 | git push origin :ci-latest || true 38 | git tag -m ci-latest ci-latest 39 | git push --tags 40 | env: 41 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 42 | 43 | - name: Create release 44 | id: create_release 45 | uses: ncipollo/release-action@v1.18.0 46 | env: 47 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 48 | with: 49 | allowUpdates: true 50 | tag: ci-latest 51 | name: CI Build 52 | draft: false 53 | prerelease: true 54 | replacesArtifacts: true 55 | artifacts: " 56 | ./build/mingw32-qt6/gImageReader_*_qt6_i686_portable.zip, 57 | ./build/mingw32-qt6/gImageReader_*_qt6_i686.exe, 58 | ./build/mingw64-qt6/gImageReader_*_qt6_x86_64_portable.zip, 59 | ./build/mingw64-qt6/gImageReader_*_qt6_x86_64.exe, 60 | ./build/mingw64-gtk/gImageReader_*_gtk_x86_64_portable.zip, 61 | ./build/mingw64-gtk/gImageReader_*_gtk_x86_64.exe 62 | " 63 | -------------------------------------------------------------------------------- /gtk/src/Recognizer.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * Recognizer.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef RECOGNIZER_HH 21 | #define RECOGNIZER_HH 22 | 23 | #include "Config.hh" 24 | #include "OutputEditor.hh" 25 | 26 | #include 27 | #include 28 | 29 | namespace Ui { 30 | class MainWindow; 31 | } 32 | namespace Utils { class TesseractHandle; } 33 | 34 | class Recognizer { 35 | public: 36 | enum class OutputDestination { Buffer, Clipboard }; 37 | 38 | Recognizer(const Ui::MainWindow& _ui); 39 | 40 | void setRecognizeMode(const Glib::ustring& mode); 41 | void recognizeImage(const Cairo::RefPtr& img, OutputDestination dest); 42 | 43 | private: 44 | class ProgressMonitor; 45 | 46 | enum class PageArea { EntirePage, Autodetect }; 47 | enum class TaskState { Waiting, Succeeded, Failed }; 48 | struct PageData { 49 | bool success; 50 | std::vector> ocrAreas; 51 | OutputEditor::PageInfo pageInfo; 52 | }; 53 | 54 | const Ui::MainWindow& ui; 55 | ClassData m_classdata; 56 | 57 | void recognitionLanguageChanged(const Config::Lang& lang); 58 | void recognizeButtonClicked(); 59 | void recognizeCurrentPage(); 60 | void recognizeMultiplePages(); 61 | void recognizeBatch(); 62 | std::unique_ptr setupTesseract(); 63 | void recognize(const std::vector& pages, bool autodetectLayout = false); 64 | std::vector selectPages(bool& autodetectLayout); 65 | PageData setPage(int page, bool autodetectLayout); 66 | void showRecognitionErrorsDialog(const std::vector& errors); 67 | }; 68 | 69 | #endif // RECOGNIZER_HH 70 | -------------------------------------------------------------------------------- /gtk/src/RecognitionMenu.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * RecognitionMenu.hh 4 | * Copyright (C) 2022-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef RECOGNITIONMENU_HH 21 | #define RECOGNITIONMENU_HH 22 | 23 | #include 24 | #define USE_STD_NAMESPACE 25 | #include 26 | #undef USE_STD_NAMESPACE 27 | 28 | #include "Config.hh" 29 | #include "ui_CharacterListDialog.hh" 30 | 31 | 32 | class RecognitionMenu : public Gtk::Menu { 33 | public: 34 | RecognitionMenu(); 35 | 36 | void rebuild(); 37 | const Config::Lang& getRecognitionLanguage() const { return m_curLang; } 38 | tesseract::PageSegMode getPageSegmentationMode() const; 39 | Glib::ustring getCharacterWhitelist() const; 40 | Glib::ustring getCharacterBlacklist() const; 41 | 42 | sigc::signal signal_languageChanged() { 43 | return m_signal_languageChanged; 44 | } 45 | 46 | private: 47 | class MultilingualMenuItem; 48 | 49 | ClassData m_classdata; 50 | Config::Lang m_curLang; 51 | Gtk::Menu* m_menuMultilanguage = nullptr; 52 | Gtk::RadioButtonGroup m_langMenuRadioGroup; 53 | Gtk::RadioButtonGroup m_psmRadioGroup; 54 | std::map> m_langMenuCheckGroup; 55 | MultilingualMenuItem* m_multilingualRadio = nullptr; 56 | Ui::CharacterListDialog m_charListDialogUi; 57 | 58 | sigc::signal m_signal_languageChanged; 59 | 60 | void setLanguage(const Gtk::RadioMenuItem* item, const Config::Lang& lang); 61 | void setMultiLanguage(); 62 | bool onMultilingualMenuButtonEvent(GdkEventButton* ev); 63 | bool onMultilingualItemButtonEvent(GdkEventButton* ev, Gtk::CheckMenuItem* item); 64 | void manageCharaterLists(); 65 | }; 66 | 67 | #endif // RECOGNITIONMENU_HH 68 | -------------------------------------------------------------------------------- /gtk/src/hocr/HOCRTextExporter.cc: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRTextExporter.cc 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #include "ConfigSettings.hh" 21 | #include "HOCRDocument.hh" 22 | #include "HOCRTextExporter.hh" 23 | #include "MainWindow.hh" 24 | #include "Utils.hh" 25 | 26 | #include 27 | 28 | bool HOCRTextExporter::run(const HOCRDocument* hocrdocument, const std::string& outname, const ExporterSettings* /*settings*/) { 29 | std::ofstream file(outname); 30 | if (!file.is_open()) { 31 | Utils::messageBox(Gtk::MESSAGE_ERROR, _("Export failed"), _("The text export failed: unable to write output file.")); 32 | return false; 33 | } 34 | 35 | for (int i = 0, n = hocrdocument->pageCount(); i < n; ++i) { 36 | const HOCRPage* page = hocrdocument->page(i); 37 | if (!page->isEnabled()) { 38 | continue; 39 | } 40 | printItem(file, page); 41 | } 42 | file.close(); 43 | bool openAfterExport = ConfigSettings::get> ("openafterexport")->getValue(); 44 | if (openAfterExport) { 45 | Utils::openUri(Glib::filename_to_uri(outname)); 46 | } 47 | return true; 48 | } 49 | 50 | void HOCRTextExporter::printItem(std::ofstream& outputStream, const HOCRItem* item, bool lastChild) { 51 | if (!item->isEnabled()) { 52 | return; 53 | } 54 | Glib::ustring itemClass = item->itemClass(); 55 | if (itemClass == "ocrx_word") { 56 | outputStream << item->text(); 57 | if (!lastChild) { 58 | outputStream << " "; 59 | } 60 | } 61 | else { 62 | for (int i = 0, n = item->children().size(); i < n; ++i) { 63 | printItem(outputStream, item->children() [i], i == n - 1); 64 | } 65 | } 66 | if (itemClass == "ocr_line" || itemClass == "ocr_par") { 67 | outputStream << "\n"; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /common/CCITTFax4Encoder.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * CCITTFax4Encoder.hh 4 | * Based on code from libtiff/tif_fax3.c, which is: 5 | * Copyright (c) 1990-1997 Sam Leffler 6 | * Copyright (c) 1991-1997 Silicon Graphics, Inc. 7 | * Permission to use, copy, modify, distribute, and sell this software and 8 | * its documentation for any purpose is hereby granted without fee, provided 9 | * that (i) the above copyright notices and this permission notice appear in 10 | * all copies of the software and related documentation, and (ii) the names of 11 | * Sam Leffler and Silicon Graphics may not be used in any advertising or 12 | * publicity relating to the software without the specific, prior written 13 | * permission of Sam Leffler and Silicon Graphics. 14 | * 15 | * Modifications are: 16 | * Copyright (C) 2016-2020 Sandro Mani 17 | * 18 | * gImageReader is free software: you can redistribute it and/or modify it 19 | * under the terms of the GNU General Public License as published by the 20 | * Free Software Foundation, either version 3 of the License, or 21 | * (at your option) any later version. 22 | * 23 | * gImageReader is distributed in the hope that it will be useful, but 24 | * WITHOUT ANY WARRANTY; without even the implied warranty of 25 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License along 29 | * with this program. If not, see . 30 | */ 31 | 32 | #ifndef FAX4ENCODER_HH 33 | #define FAX4ENCODER_HH 34 | 35 | #include 36 | 37 | class CCITTFax4Encoder { 38 | public: 39 | CCITTFax4Encoder(); 40 | ~CCITTFax4Encoder(); 41 | uint8_t* encode(const uint8_t* buffer, uint32_t width, uint32_t height, uint32_t rowbytes, uint32_t& outputSize); 42 | 43 | private: 44 | struct EncoderState; 45 | struct TableEntry; 46 | EncoderState* m_state; 47 | 48 | void encode2DRow(const uint8_t* codeline, const uint8_t* refline, uint32_t linebits); 49 | inline void putspan(int32_t span, const TableEntry* tab); 50 | inline void putbits(uint16_t bits, uint16_t length); 51 | inline void flushbits(); 52 | 53 | static const TableEntry whiteCodes[]; 54 | static const TableEntry blackCodes[]; 55 | static const TableEntry horizcode; 56 | static const TableEntry passcode; 57 | static const TableEntry vcodes[]; 58 | }; 59 | 60 | #endif // CCITT_HH 61 | -------------------------------------------------------------------------------- /qt/src/ConfigSettings.cc: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * ConfigSettings.cc 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #include "ConfigSettings.hh" 21 | 22 | 23 | QMap ConfigSettings::s_settings; 24 | 25 | 26 | void ConfigSettings::add(AbstractSetting* setting) { 27 | s_settings.insert(setting->key(), setting); 28 | } 29 | 30 | void ConfigSettings::remove(const QString& key) { 31 | auto it = s_settings.find(key); 32 | if (it != s_settings.end()) { 33 | s_settings.erase(it); 34 | } 35 | } 36 | 37 | 38 | TableSetting::TableSetting(const QString& key, QTableWidget* table) 39 | : AbstractSetting(key), m_table(table) { 40 | QString str = QSettings().value(m_key).toString(); 41 | m_table->setRowCount(0); 42 | int nCols = m_table->columnCount(); 43 | 44 | for (const QString& row : str.split(';', Qt::SkipEmptyParts)) { 45 | int colidx = 0; 46 | QStringList cols = row.split(','); 47 | if (cols.size() != nCols) { 48 | continue; 49 | } 50 | int rowidx = m_table->rowCount(); 51 | m_table->insertRow(rowidx); 52 | for (const QString& col : cols) { 53 | m_table->setItem(rowidx, colidx++, new QTableWidgetItem(col)); 54 | } 55 | } 56 | } 57 | 58 | void TableSetting::serialize() { 59 | // Serialized string has format a11,a12,a13;a21,a22,a23;... 60 | QStringList rows; 61 | int nCols = m_table->columnCount(); 62 | for (int row = 0, nRows = m_table->rowCount(); row < nRows; ++row) { 63 | QStringList cols; 64 | for (int col = 0; col < nCols; ++col) { 65 | QTableWidgetItem* item = m_table->item(row, col); 66 | cols.append(item ? item->text() : QString()); 67 | } 68 | rows.append(cols.join(",")); 69 | } 70 | QSettings().setValue(m_key, QVariant::fromValue(rows.join(";"))); 71 | emit changed(); 72 | } 73 | -------------------------------------------------------------------------------- /qt/src/hocr/DisplayerToolHOCR.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * DisplayerToolHOCR.hh 4 | * Copyright (C) 2016-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef DISPLAYERTOOLHOCR_HH 21 | #define DISPLAYERTOOLHOCR_HH 22 | 23 | #include "Displayer.hh" 24 | 25 | class DisplayerToolHOCR : public DisplayerTool { 26 | Q_OBJECT 27 | public: 28 | enum Action {ACTION_NONE, ACTION_DRAW_GRAPHIC_RECT, ACTION_DRAW_CAREA_RECT, ACTION_DRAW_PAR_RECT, ACTION_DRAW_LINE_RECT, ACTION_DRAW_WORD_RECT}; 29 | 30 | DisplayerToolHOCR(Displayer* displayer, QObject* parent = 0); 31 | ~DisplayerToolHOCR(); 32 | 33 | QList getOCRAreas() override; 34 | void pageChanged() override { 35 | emit displayedSourceChanged(); 36 | reset(); 37 | } 38 | void resolutionChanged(double /*factor*/) override { 39 | reset(); 40 | } 41 | void rotationChanged(double /*delta*/) override { 42 | reset(); 43 | } 44 | void reset() override { 45 | setAction(ACTION_NONE, true); 46 | } 47 | 48 | void mousePressEvent(QMouseEvent* event) override; 49 | void mouseMoveEvent(QMouseEvent* event) override; 50 | void mouseReleaseEvent(QMouseEvent* event) override; 51 | 52 | void setAction(Action action, bool clearSel = true); 53 | void setSelection(const QRect& rect, const QRect& minRect); 54 | QImage getSelection(const QRect& rect) const; 55 | void clearSelection(); 56 | 57 | signals: 58 | void displayedSourceChanged(); 59 | void bboxDrawn(QRect rect, int action); 60 | void bboxChanged(QRect rect); 61 | void positionPicked(QPoint pos); 62 | void actionChanged(int action); 63 | 64 | private: 65 | DisplayerSelection* m_selection = nullptr; 66 | Action m_currentAction = ACTION_NONE; 67 | bool m_pressed = false; 68 | 69 | private slots: 70 | void selectionChanged(QRectF rect); 71 | }; 72 | 73 | #endif // DISPLAYERTOOLHOCR_HH 74 | -------------------------------------------------------------------------------- /qt/src/Config.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * Config.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef CONFIG_HH 21 | #define CONFIG_HH 22 | 23 | #include "common.hh" 24 | #include "ui_ConfigDialog.h" 25 | 26 | #include 27 | #include 28 | 29 | class Config : public QDialog { 30 | Q_OBJECT 31 | public: 32 | struct Lang { 33 | QString prefix, code, name; 34 | }; 35 | 36 | Config(QWidget* parent = nullptr); 37 | 38 | bool searchLangSpec(Lang& lang) const; 39 | QStringList searchLangCultures(const QString& code) const; 40 | void showDialog(); 41 | 42 | bool useUtf8() const; 43 | bool useSystemDataLocations() const; 44 | QString tessdataLocation() const; 45 | QString spellingLocation() const; 46 | 47 | static void openTessdataDir(); 48 | static void openSpellingDir(); 49 | static QString lookupLangCode(const QString& prefix) { return LANG_LOOKUP[prefix]; } 50 | static QStringList getAvailableLanguages(); 51 | 52 | public slots: 53 | void disableDictInstall(); 54 | void disableUpdateCheck(); 55 | 56 | private: 57 | enum Location {SystemLocation = 0, UserLocation = 1}; 58 | static const QList LANGUAGES; 59 | static const QMap LANG_LOOKUP; 60 | static const QMultiMap LANGUAGE_CULTURES; 61 | 62 | Ui::ConfigDialog ui; 63 | QFontDialog m_fontDialog; 64 | 65 | static QString spellingLocation(Location location); 66 | static QString tessdataLocation(Location location); 67 | 68 | private slots: 69 | void addLanguage(); 70 | void removeLanguage(); 71 | void updateFontButton(const QFont& font); 72 | void langTableSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected); 73 | void clearLineEditErrorState(); 74 | void setDataLocations(int idx); 75 | void toggleAddLanguage(bool forceHide = false); 76 | }; 77 | 78 | Q_DECLARE_METATYPE(Config::Lang) 79 | 80 | #endif // CONFIG_HH 81 | -------------------------------------------------------------------------------- /gtk/src/SearchReplaceFrame.cc: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * SearchReplaceFrame.cc 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #include "ConfigSettings.hh" 21 | #include "SearchReplaceFrame.hh" 22 | #include "SubstitutionsManager.hh" 23 | #include "Utils.hh" 24 | 25 | SearchReplaceFrame::SearchReplaceFrame() { 26 | ui.setupUi(); 27 | 28 | m_substitutionsManager = new SubstitutionsManager(); 29 | 30 | CONNECT(ui.checkbuttonMatchcase, toggled, [this] { clearErrorState(); }); 31 | CONNECT(ui.entrySearch, changed, [this] { clearErrorState(); }); 32 | CONNECT(ui.entrySearch, activate, [this] { findNext(); }); 33 | CONNECT(ui.entryReplace, activate, [this] { replaceNext(); }); 34 | CONNECT(ui.buttonSearchnext, clicked, [this] { findNext(); }); 35 | CONNECT(ui.buttonSearchprev, clicked, [this] { findPrev(); }); 36 | CONNECT(ui.buttonReplace, clicked, [this] { replaceNext(); }); 37 | CONNECT(ui.buttonReplaceall, clicked, [this] { emitReplaceAll(); }); 38 | CONNECT(ui.buttonSubstitutions, clicked, [this] { m_substitutionsManager->set_visible(true); }); 39 | CONNECT(m_substitutionsManager, apply_substitutions, [this](const std::map& substitutions) { 40 | emitApplySubstitutions(substitutions); 41 | }); 42 | 43 | ADD_SETTING(SwitchSettingT ("searchmatchcase", ui.checkbuttonMatchcase)); 44 | } 45 | 46 | SearchReplaceFrame::~SearchReplaceFrame() { 47 | delete m_substitutionsManager; 48 | } 49 | 50 | void SearchReplaceFrame::clear() { 51 | ui.entrySearch->set_text(""); 52 | ui.entryReplace->set_text(""); 53 | } 54 | 55 | void SearchReplaceFrame::clearErrorState() { 56 | Utils::clear_error_state(ui.entrySearch); 57 | } 58 | 59 | void SearchReplaceFrame::setErrorState() { 60 | Utils::set_error_state(ui.entrySearch); 61 | } 62 | 63 | void SearchReplaceFrame::hideSubstitutionsManager() { 64 | m_substitutionsManager->set_visible(false); 65 | } 66 | -------------------------------------------------------------------------------- /gtk/src/Scanner.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * Scanner.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef SCANNER_HH 21 | #define SCANNER_HH 22 | 23 | #include "common.hh" 24 | 25 | class Scanner { 26 | public: 27 | enum class State { IDLE = 0, OPEN, SET_OPTIONS, START, GET_PARAMETERS, READ }; 28 | enum class ScanMode { DEFAULT = 0, COLOR, GRAY, LINEART }; 29 | enum class ScanType { SINGLE = 0, ADF_FRONT, ADF_BACK, ADF_BOTH }; 30 | 31 | struct Device { 32 | std::string name; 33 | std::string label; 34 | }; 35 | 36 | struct Params { 37 | std::string device; 38 | std::string filename; 39 | double dpi; 40 | ScanMode scan_mode; 41 | int depth; 42 | ScanType type; 43 | int page_width; 44 | int page_height; 45 | }; 46 | 47 | virtual ~Scanner() { } 48 | 49 | virtual void init() = 0; 50 | virtual void redetect() = 0; 51 | virtual void scan(const Params& params) = 0; 52 | virtual void cancel() = 0; 53 | virtual void close() = 0; 54 | 55 | sigc::signal signal_initFailed() const { 56 | return m_signal_initFailed; 57 | } 58 | sigc::signal> signal_devicesDetected() const { 59 | return m_signal_devicesDetected; 60 | } 61 | sigc::signal signal_scanFailed() const { 62 | return m_signal_scanFailed; 63 | } 64 | sigc::signal signal_scanStateChanged() const { 65 | return m_signal_scanStateChanged; 66 | } 67 | sigc::signal signal_pageAvailable() const { 68 | return m_signal_pageAvailable; 69 | } 70 | 71 | protected: 72 | sigc::signal m_signal_initFailed; 73 | sigc::signal> m_signal_devicesDetected; 74 | sigc::signal m_signal_scanFailed; 75 | sigc::signal m_signal_scanStateChanged; 76 | sigc::signal m_signal_pageAvailable; 77 | }; 78 | 79 | 80 | #endif // SCANNER_HH 81 | -------------------------------------------------------------------------------- /qt/src/DisplayRenderer.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * DisplayRenderer.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef DISPLAYRENDERER_HH 21 | #define DISPLAYRENDERER_HH 22 | 23 | #include 24 | #include 25 | #include 26 | 27 | class DjVuDocument; 28 | 29 | class QImage; 30 | namespace Poppler { 31 | class Document; 32 | } 33 | 34 | class DisplayRenderer { 35 | public: 36 | DisplayRenderer(const QString& filename) : m_filename(filename) {} 37 | virtual ~DisplayRenderer() {} 38 | virtual QImage render(int page, double resolution) const = 0; 39 | virtual QImage renderThumbnail(int page) const = 0; 40 | virtual int getNPages() const = 0; 41 | 42 | void adjustImage(QImage& image, int brightness, int contrast, bool invert) const; 43 | 44 | protected: 45 | QString m_filename; 46 | }; 47 | 48 | class ImageRenderer : public DisplayRenderer { 49 | public: 50 | ImageRenderer(const QString& filename) ; 51 | QImage render(int page, double resolution) const override; 52 | QImage renderThumbnail(int page) const override; 53 | int getNPages() const override { 54 | return m_pageCount; 55 | } 56 | private: 57 | int m_pageCount; 58 | }; 59 | 60 | class PDFRenderer : public DisplayRenderer { 61 | public: 62 | PDFRenderer(const QString& filename, const QByteArray& password); 63 | QImage render(int page, double resolution) const override; 64 | QImage renderThumbnail(int page) const override; 65 | int getNPages() const override; 66 | 67 | private: 68 | std::unique_ptr m_document; 69 | mutable QMutex m_mutex; 70 | }; 71 | 72 | class DJVURenderer : public DisplayRenderer { 73 | public: 74 | DJVURenderer(const QString& filename); 75 | ~DJVURenderer(); 76 | QImage render(int page, double resolution) const override; 77 | QImage renderThumbnail(int page) const override; 78 | int getNPages() const override; 79 | 80 | private: 81 | DjVuDocument* m_djvu; 82 | }; 83 | 84 | #endif // IMAGERENDERER_HH 85 | -------------------------------------------------------------------------------- /qt/src/hocr/HOCRTextExporter.cc: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * HOCRTextExporter.cc 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #include "ConfigSettings.hh" 21 | #include "HOCRDocument.hh" 22 | #include "HOCRTextExporter.hh" 23 | #include "MainWindow.hh" 24 | 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | 31 | bool HOCRTextExporter::run(const HOCRDocument* hocrdocument, const QString& outname, const ExporterSettings* /*settings*/) { 32 | QFile outputFile(outname); 33 | if (!outputFile.open(QIODevice::WriteOnly)) { 34 | QMessageBox::warning(MAIN, _("Export failed"), _("The text export failed: unable to write output file.")); 35 | return false; 36 | } 37 | 38 | QString output; 39 | QTextStream outputStream(&output, QIODevice::WriteOnly); 40 | for (int i = 0, n = hocrdocument->pageCount(); i < n; ++i) { 41 | const HOCRPage* page = hocrdocument->page(i); 42 | if (!page->isEnabled()) { 43 | continue; 44 | } 45 | printItem(outputStream, page); 46 | } 47 | outputFile.write(MAIN->getConfig()->useUtf8() ? output.toUtf8() : output.toLocal8Bit()); 48 | outputFile.close(); 49 | bool openAfterExport = ConfigSettings::get ("openafterexport")->getValue(); 50 | if (openAfterExport) { 51 | QDesktopServices::openUrl(QUrl::fromLocalFile(outname)); 52 | } 53 | return true; 54 | } 55 | 56 | void HOCRTextExporter::printItem(QTextStream& outputStream, const HOCRItem* item, bool lastChild) { 57 | if (!item->isEnabled()) { 58 | return; 59 | } 60 | QString itemClass = item->itemClass(); 61 | if (itemClass == "ocrx_word") { 62 | outputStream << item->text(); 63 | if (!lastChild) { 64 | outputStream << " "; 65 | } 66 | } else { 67 | for (int i = 0, n = item->children().size(); i < n; ++i) { 68 | printItem(outputStream, item->children() [i], i == n - 1); 69 | } 70 | } 71 | if (itemClass == "ocr_line" || itemClass == "ocr_par") { 72 | outputStream << "\n"; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /qt/src/SearchReplaceFrame.hh: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C++; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */ 2 | /* 3 | * SearchReplaceFrame.hh 4 | * Copyright (C) 2013-2025 Sandro Mani 5 | * 6 | * gImageReader is free software: you can redistribute it and/or modify it 7 | * under the terms of the GNU General Public License as published by the 8 | * Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * gImageReader is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License along 17 | * with this program. If not, see . 18 | */ 19 | 20 | #ifndef SEARCHREPLACEFRAME_HH 21 | #define SEARCHREPLACEFRAME_HH 22 | 23 | #include "common.hh" 24 | #include "ui_SearchReplaceFrame.h" 25 | 26 | #include 27 | 28 | class SubstitutionsManager; 29 | 30 | class SearchReplaceFrame : public QFrame { 31 | Q_OBJECT 32 | public: 33 | explicit SearchReplaceFrame(QWidget* parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); 34 | QToolButton* buttonReplaceAll() const { return ui.toolButtonReplaceAll; } 35 | 36 | public slots: 37 | void clear(); 38 | void clearErrorState(); 39 | void setErrorState(); 40 | void hideSubstitutionsManager(); 41 | 42 | signals: 43 | void findReplace(const QString& searchstr, const QString& replacestr, bool matchCase, bool backwards, bool replace); 44 | void replaceAll(const QString& searchstr, const QString& replacestr, bool matchCase); 45 | void applySubstitutions(const QMap& substitutions, bool matchCase); 46 | 47 | private: 48 | Ui::SearchReplaceFrame ui; 49 | SubstitutionsManager* m_substitutionsManager; 50 | 51 | private slots: 52 | void findNext() { 53 | emit findReplace(ui.lineEditSearch->text(), ui.lineEditReplace->text(), ui.checkBoxMatchCase->isChecked(), false, false); 54 | } 55 | void findPrev() { 56 | emit findReplace(ui.lineEditSearch->text(), ui.lineEditReplace->text(), ui.checkBoxMatchCase->isChecked(), true, false); 57 | } 58 | void replaceNext() { 59 | emit findReplace(ui.lineEditSearch->text(), ui.lineEditReplace->text(), ui.checkBoxMatchCase->isChecked(), false, true); 60 | } 61 | void emitReplaceAll() { 62 | emit replaceAll(ui.lineEditSearch->text(), ui.lineEditReplace->text(), ui.checkBoxMatchCase->isChecked()); 63 | } 64 | void emitApplySubstitutions(const QMap& substitutions) { 65 | emit applySubstitutions(substitutions, ui.checkBoxMatchCase->isChecked()); 66 | } 67 | }; 68 | 69 | #endif // SEARCHREPLACEFRAME_HH 70 | --------------------------------------------------------------------------------