feat(工程建立): OCR文字识别工程建立

no

Log: no
Change-Id: I6bb42a4ae96f000a1ee937d2c69d1f7e3208e7e3
This commit is contained in:
He MingYang 2021-06-10 18:54:54 +08:00 committed by hemingyang
parent 6e5f39162a
commit 155256cbd9
88 changed files with 5685 additions and 0 deletions

108
CMakeLists.txt Normal file
View File

@ -0,0 +1,108 @@
#cmake
cmake_minimum_required(VERSION 3.10)
project(deepin-ocr)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
#qt使
set(QtModule Core Gui Widgets DBus)
find_package(Qt5 REQUIRED ${QtModule})
#
include_directories(src)
aux_source_directory(./src allSource)
FILE (GLOB allHeaders
./src/mainwindow.h
)
FILE (GLOB allSource
./src/mainwindow.cpp
)
#
#file(GLOB TS LIST_DIRECTORIES false ./translations/${PROJECT_NAME}*.ts)
#set_source_files_properties(${TS}
#PROPERTIES OUTPUT_LOCATION ${PROJECT_SOURCE_DIR}/translations)
#qt5_create_translation(QM ${allSource} ${TS})
#set(TS_FILES
# ./translations/deepin-ocr_zh_CN.ts
## ./translations/deepin-ocr_zh_TW.ts
# ./translations/deepin-ocr.ts)
#find_package(Qt${QT_VERSION} COMPONENTS ${REQUIRED_LIBS} LinguistTools REQUIRED)
#qt5_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES} OPTIONS)
#qt5_add_translation(qmFiles ${TargetTsFiles})
#set_source_files_properties(${qmfiles} PROPERTIES OUTPUT_LOCATION "translations")
set(LINK_DIR lib)
link_directories(${LINK_DIR})
add_executable(${PROJECT_NAME} ${allSource} ${allHeaders} "./src/main.cpp")
add_compile_definitions(LITE_DIV)
#------------------begins--------------------------#
#使
#3rd_lib
find_package(PkgConfig REQUIRED)
find_package(DtkCore REQUIRED)
find_package(DtkWidget REQUIRED)
find_package(DtkGui REQUIRED)
#添加第三方库的所有文件夹路径到工程中来(注意 *_INCLUDE_DIRS)
target_include_directories(${PROJECT_NAME} PUBLIC ${3rd_lib_INCLUDE_DIRS})
target_include_directories(${PROJECT_NAME} PUBLIC ${3rd_lib_INCLUDE_DIRS} ${DtkWidget_INCLUDE_DIRS})
if(DOTEST)
target_include_directories(${PROJECT_NAME_TEST} PUBLIC ${3rd_lib_INCLUDE_DIRS} ${DtkWidget_INCLUDE_DIRS})
endif()
target_link_libraries(${PROJECT_NAME}
${DtkWidget_LIBRARIES}
${Qt5Widgets_LIBRARIES}
)
find_package(Qt5LinguistTools REQUIRED)
#find_package(Qt${QT_VERSION} COMPONENTS ${REQUIRED_LIBS} LinguistTools REQUIRED)
file(GLOB TargetTsFiles LIST_DIRECTORIES false ./translations/deepin-ocr.ts)
#set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM 1)
qt5_create_translation(LangSrcs ${allSource} "ss.ts")
qt5_add_translation(${TargetTsFiles})
#set_source_files_properties(${qmfiles} PROPERTIES OUTPUT_LOCATION "translations")
#------------------end--------------------------#
#
qt5_use_modules(${PROJECT_NAME} ${QtModule})
if(DOTEST)
qt5_use_modules(${PROJECT_NAME_TEST} ${QtModule})
endif()
# ------------------------------- install report script -------------------------------
set(PREFIX /usr)
set(TranslationDir ${PREFIX}/share/${PROJECT_NAME}/translations/)
install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Targets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION /usr/bin
INCLUDES DESTINATION allHeaders)
#install
install(FILES ${LangSrcs} DESTINATION ${TranslationDir})

711
Makefile Normal file
View File

@ -0,0 +1,711 @@
#############################################################################
# Makefile for building: deepin-ocr
# Generated by qmake (3.1) (Qt 5.11.3)
# Project: deepin-ocr.pro
# Template: app
# Command: /usr/lib/qt5/bin/qmake -o Makefile deepin-ocr.pro 'QMAKE_CFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' QMAKE_LFLAGS_RELEASE=-Wl,-z,relro QMAKE_LFLAGS_DEBUG=-Wl,-z,relro QMAKE_STRIP=: PREFIX=/usr -- VERSION= LIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu DEFINES+=VERSION=1.0
#############################################################################
MAKEFILE = Makefile
####### Compiler, tools and options
CC = gcc
CXX = g++
DEFINES = -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -DQT_GUI_LIB -DQT_DBUS_LIB -DQT_XML_LIB -DQT_NETWORK_LIB -DQT_CONCURRENT_LIB -DQT_CORE_LIB
CFLAGS = -pipe -g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
CXXFLAGS = -pipe -g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I. -I. -isystem /usr/include/libdtk-5.5.0/DWidget -isystem /usr/include/libdtk-5.4.12/DGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtX11Extras -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/libdtk-5.4.12/DCore -isystem /usr/include/x86_64-linux-gnu/qt5/QtDBus -isystem /usr/include/x86_64-linux-gnu/qt5/QtXml -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3/QtCore -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtConcurrent -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -isystem /usr/include/libdrm -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++
QMAKE = /usr/lib/qt5/bin/qmake
DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
COPY = cp -f
COPY_FILE = cp -f
COPY_DIR = cp -f -R
INSTALL_FILE = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR = cp -f -R
QINSTALL = /usr/lib/qt5/bin/qmake -install qinstall
QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
MOVE = mv -f
TAR = tar -cf
COMPRESS = gzip -9f
DISTNAME = deepin-ocr1.0.0
DISTDIR = /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/.tmp/deepin-ocr1.0.0
LINK = g++
LFLAGS = -Wl,-z,relro
LIBS = $(SUBLIBS) -ldtkwidget -ldtkgui -lQt5PrintSupport -lQt5Widgets -lQt5X11Extras -lQt5Gui -ldtkcore -lQt5DBus -lQt5Xml -lQt5Network -lQt5Concurrent -lQt5Core -lGL -lpthread
AR = ar cqs
RANLIB =
SED = sed
STRIP = :
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = src/main.cpp \
src/mainwindow.cpp \
src/service/ocrinterface.cpp \
src/service/dbusocr_adaptor.cpp \
src/ocrapplication.cpp \
src/mainwidget.cpp \
src/textloadwidget.cpp \
src/resulttextview.cpp \
src/view/imageview.cpp qrc_resource.cpp \
moc_mainwindow.cpp \
moc_ocrinterface.cpp \
moc_dbusocr_adaptor.cpp \
moc_ocrapplication.cpp \
moc_mainwidget.cpp \
moc_resulttextview.cpp \
moc_textloadwidget.cpp \
moc_imageview.cpp
OBJECTS = main.o \
mainwindow.o \
ocrinterface.o \
dbusocr_adaptor.o \
ocrapplication.o \
mainwidget.o \
textloadwidget.o \
resulttextview.o \
imageview.o \
qrc_resource.o \
moc_mainwindow.o \
moc_ocrinterface.o \
moc_dbusocr_adaptor.o \
moc_ocrapplication.o \
moc_mainwidget.o \
moc_resulttextview.o \
moc_textloadwidget.o \
moc_imageview.o
DIST = translations/deepin-ocr_en_US.ts \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Attica.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuth.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCompletion.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigCore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigGui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigWidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCoreAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDBusAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGlobalAccel.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KItemViews.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore5.5.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui5.5.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget5.5.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetCore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetUi.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
.qmake.stash \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
translations.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbuscommon.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusinterfaces.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusadaptors.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
deepin-ocr.pro src/mainwindow.h \
src/service/ocrinterface.h \
src/service/dbusocr_adaptor.h \
src/ocrapplication.h \
src/mainwidget.h \
src/resulttextview.h \
src/textloadwidget.h \
src/view/imageview.h src/main.cpp \
src/mainwindow.cpp \
src/service/ocrinterface.cpp \
src/service/dbusocr_adaptor.cpp \
src/ocrapplication.cpp \
src/mainwidget.cpp \
src/textloadwidget.cpp \
src/resulttextview.cpp \
src/view/imageview.cpp
QMAKE_TARGET = deepin-ocr
DESTDIR =
TARGET = deepin-ocr
first: all
####### Build rules
$(TARGET): $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: deepin-ocr.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Attica.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuth.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCompletion.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigCore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigGui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigWidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCoreAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDBusAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGlobalAccel.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KItemViews.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore5.5.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui5.5.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget5.5.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetCore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetUi.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
.qmake.stash \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
translations.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbuscommon.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusinterfaces.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusadaptors.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
deepin-ocr.pro \
resource.qrc \
/usr/lib/x86_64-linux-gnu/libQt5PrintSupport.prl \
/usr/lib/x86_64-linux-gnu/libQt5Widgets.prl \
/usr/lib/x86_64-linux-gnu/libQt5X11Extras.prl \
/usr/lib/x86_64-linux-gnu/libQt5Gui.prl \
/usr/lib/x86_64-linux-gnu/libQt5DBus.prl \
/usr/lib/x86_64-linux-gnu/libQt5Xml.prl \
/usr/lib/x86_64-linux-gnu/libQt5Network.prl \
/usr/lib/x86_64-linux-gnu/libQt5Concurrent.prl \
/usr/lib/x86_64-linux-gnu/libQt5Core.prl
$(QMAKE) -o Makefile deepin-ocr.pro 'QMAKE_CFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' QMAKE_LFLAGS_RELEASE=-Wl,-z,relro QMAKE_LFLAGS_DEBUG=-Wl,-z,relro QMAKE_STRIP=: PREFIX=/usr -- VERSION= LIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu DEFINES+=VERSION=1.0
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Attica.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuth.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCompletion.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigCore.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigGui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigWidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCoreAddons.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDBusAddons.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGlobalAccel.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KItemViews.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore5.5.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui5.5.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget5.5.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetCore.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetUi.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf:
.qmake.stash:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf:
translations.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbuscommon.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusinterfaces.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusadaptors.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf:
deepin-ocr.pro:
resource.qrc:
/usr/lib/x86_64-linux-gnu/libQt5PrintSupport.prl:
/usr/lib/x86_64-linux-gnu/libQt5Widgets.prl:
/usr/lib/x86_64-linux-gnu/libQt5X11Extras.prl:
/usr/lib/x86_64-linux-gnu/libQt5Gui.prl:
/usr/lib/x86_64-linux-gnu/libQt5DBus.prl:
/usr/lib/x86_64-linux-gnu/libQt5Xml.prl:
/usr/lib/x86_64-linux-gnu/libQt5Network.prl:
/usr/lib/x86_64-linux-gnu/libQt5Concurrent.prl:
/usr/lib/x86_64-linux-gnu/libQt5Core.prl:
qmake: FORCE
@$(QMAKE) -o Makefile deepin-ocr.pro 'QMAKE_CFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' QMAKE_LFLAGS_RELEASE=-Wl,-z,relro QMAKE_LFLAGS_DEBUG=-Wl,-z,relro QMAKE_STRIP=: PREFIX=/usr -- VERSION= LIB_INSTALL_DIR=/usr/lib/x86_64-linux-gnu DEFINES+=VERSION=1.0
qmake_all: FORCE
all: Makefile $(TARGET)
dist: distdir FORCE
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
distdir: FORCE
@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
$(COPY_FILE) --parents resource.qrc $(DISTDIR)/
$(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
$(COPY_FILE) --parents src/mainwindow.h src/service/ocrinterface.h src/service/dbusocr_adaptor.h src/ocrapplication.h src/mainwidget.h src/resulttextview.h src/textloadwidget.h src/view/imageview.h $(DISTDIR)/
$(COPY_FILE) --parents src/main.cpp src/mainwindow.cpp src/service/ocrinterface.cpp src/service/dbusocr_adaptor.cpp src/ocrapplication.cpp src/mainwidget.cpp src/textloadwidget.cpp src/resulttextview.cpp src/view/imageview.cpp $(DISTDIR)/
$(COPY_FILE) --parents /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_zh_CN.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_en_US.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_zh_HK.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_zh_TW.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_ar.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_br.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_ca.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_cs.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_da.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_de.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_es.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_fi.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_fr.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_gl_ES.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_hu.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_it.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_ko.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_ms.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_nl.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_pl.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_pt.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_pt_BR.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_ru.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_sq.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_sr.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_tr.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_uk.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_ug.ts /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/translations/deepin-ocr_bo.ts $(DISTDIR)/
clean: compiler_clean
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
distclean: clean
-$(DEL_FILE) $(TARGET)
-$(DEL_FILE) .qmake.stash
-$(DEL_FILE) Makefile
####### Sub-libraries
mocclean: compiler_moc_header_clean compiler_moc_objc_header_clean compiler_moc_source_clean
mocables: compiler_moc_header_make_all compiler_moc_objc_header_make_all compiler_moc_source_make_all
check: first
benchmark: first
compiler_rcc_make_all: qrc_resource.cpp
compiler_rcc_clean:
-$(DEL_FILE) qrc_resource.cpp
qrc_resource.cpp: resource.qrc \
/usr/lib/qt5/bin/rcc \
assets/distinguish_normal_dark.svg \
assets/icon_toast_sucess_new.svg \
assets/appicon_light.svg \
assets/copy_light.svg \
assets/distinguish_normal_light.svg \
assets/appicon_dark.svg \
assets/copy_dark.svg \
assets/tip_dark.svg \
assets/tip_light.svg \
assets/download_light.svg \
assets/distinguish_light.svg \
assets/distinguish_dark.svg \
assets/download_dark.svg
/usr/lib/qt5/bin/rcc -name resource resource.qrc -o qrc_resource.cpp
compiler_moc_predefs_make_all: moc_predefs.h
compiler_moc_predefs_clean:
-$(DEL_FILE) moc_predefs.h
moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
g++ -pipe -g -O2 -fdebug-prefix-map=/home/hmy/Desktop/deepin-ocr/2/deepin-ocr=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -W -dM -E -o moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
compiler_moc_header_make_all: moc_mainwindow.cpp moc_ocrinterface.cpp moc_dbusocr_adaptor.cpp moc_ocrapplication.cpp moc_mainwidget.cpp moc_resulttextview.cpp moc_textloadwidget.cpp moc_imageview.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_mainwindow.cpp moc_ocrinterface.cpp moc_dbusocr_adaptor.cpp moc_ocrapplication.cpp moc_mainwidget.cpp moc_resulttextview.cpp moc_textloadwidget.cpp moc_imageview.cpp
moc_mainwindow.cpp: src/mainwindow.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/usr/include/libdtk-5.5.0/DWidget -I/usr/include/libdtk-5.4.12/DGui -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3/QtGui -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtX11Extras -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/libdtk-5.4.12/DCore -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtXml -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3/QtCore -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtConcurrent -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/mainwindow.h -o moc_mainwindow.cpp
moc_ocrinterface.cpp: src/service/ocrinterface.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/usr/include/libdtk-5.5.0/DWidget -I/usr/include/libdtk-5.4.12/DGui -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3/QtGui -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtX11Extras -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/libdtk-5.4.12/DCore -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtXml -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3/QtCore -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtConcurrent -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/service/ocrinterface.h -o moc_ocrinterface.cpp
moc_dbusocr_adaptor.cpp: src/service/dbusocr_adaptor.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/usr/include/libdtk-5.5.0/DWidget -I/usr/include/libdtk-5.4.12/DGui -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3/QtGui -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtX11Extras -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/libdtk-5.4.12/DCore -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtXml -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3/QtCore -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtConcurrent -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/service/dbusocr_adaptor.h -o moc_dbusocr_adaptor.cpp
moc_ocrapplication.cpp: src/mainwindow.h \
src/ocrapplication.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/usr/include/libdtk-5.5.0/DWidget -I/usr/include/libdtk-5.4.12/DGui -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3/QtGui -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtX11Extras -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/libdtk-5.4.12/DCore -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtXml -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3/QtCore -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtConcurrent -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/ocrapplication.h -o moc_ocrapplication.cpp
moc_mainwidget.cpp: src/resulttextview.h \
src/textloadwidget.h \
src/mainwidget.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/usr/include/libdtk-5.5.0/DWidget -I/usr/include/libdtk-5.4.12/DGui -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3/QtGui -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtX11Extras -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/libdtk-5.4.12/DCore -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtXml -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3/QtCore -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtConcurrent -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/mainwidget.h -o moc_mainwidget.cpp
moc_resulttextview.cpp: src/resulttextview.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/usr/include/libdtk-5.5.0/DWidget -I/usr/include/libdtk-5.4.12/DGui -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3/QtGui -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtX11Extras -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/libdtk-5.4.12/DCore -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtXml -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3/QtCore -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtConcurrent -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/resulttextview.h -o moc_resulttextview.cpp
moc_textloadwidget.cpp: src/textloadwidget.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/usr/include/libdtk-5.5.0/DWidget -I/usr/include/libdtk-5.4.12/DGui -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3/QtGui -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtX11Extras -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/libdtk-5.4.12/DCore -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtXml -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3/QtCore -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtConcurrent -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/textloadwidget.h -o moc_textloadwidget.cpp
moc_imageview.cpp: src/view/imageview.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/home/hmy/Desktop/deepin-ocr/2/deepin-ocr -I/usr/include/libdtk-5.5.0/DWidget -I/usr/include/libdtk-5.4.12/DGui -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/5.11.3/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets/5.11.3/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtGui/5.11.3/QtGui -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtX11Extras -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/libdtk-5.4.12/DCore -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtXml -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3 -I/usr/include/x86_64-linux-gnu/qt5/QtCore/5.11.3/QtCore -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtConcurrent -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include src/view/imageview.h -o moc_imageview.cpp
compiler_moc_objc_header_make_all:
compiler_moc_objc_header_clean:
compiler_moc_source_make_all:
compiler_moc_source_clean:
compiler_uic_make_all:
compiler_uic_clean:
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_rcc_clean compiler_moc_predefs_clean compiler_moc_header_clean
####### Compile
main.o: src/main.cpp src/ocrapplication.h \
src/mainwindow.h \
src/service/ocrinterface.h \
src/service/dbusocr_adaptor.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o src/main.cpp
mainwindow.o: src/mainwindow.cpp src/mainwindow.h \
src/mainwidget.h \
src/resulttextview.h \
src/textloadwidget.h \
src/service/dbusocr_adaptor.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o src/mainwindow.cpp
ocrinterface.o: src/service/ocrinterface.cpp src/service/ocrinterface.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ocrinterface.o src/service/ocrinterface.cpp
dbusocr_adaptor.o: src/service/dbusocr_adaptor.cpp src/service/dbusocr_adaptor.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dbusocr_adaptor.o src/service/dbusocr_adaptor.cpp
ocrapplication.o: src/ocrapplication.cpp src/ocrapplication.h \
src/mainwindow.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ocrapplication.o src/ocrapplication.cpp
mainwidget.o: src/mainwidget.cpp src/mainwidget.h \
src/resulttextview.h \
src/textloadwidget.h \
src/view/imageview.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwidget.o src/mainwidget.cpp
textloadwidget.o: src/textloadwidget.cpp src/textloadwidget.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o textloadwidget.o src/textloadwidget.cpp
resulttextview.o: src/resulttextview.cpp src/resulttextview.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o resulttextview.o src/resulttextview.cpp
imageview.o: src/view/imageview.cpp src/view/imageview.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o imageview.o src/view/imageview.cpp
qrc_resource.o: qrc_resource.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o qrc_resource.o qrc_resource.cpp
moc_mainwindow.o: moc_mainwindow.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
moc_ocrinterface.o: moc_ocrinterface.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_ocrinterface.o moc_ocrinterface.cpp
moc_dbusocr_adaptor.o: moc_dbusocr_adaptor.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_dbusocr_adaptor.o moc_dbusocr_adaptor.cpp
moc_ocrapplication.o: moc_ocrapplication.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_ocrapplication.o moc_ocrapplication.cpp
moc_mainwidget.o: moc_mainwidget.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwidget.o moc_mainwidget.cpp
moc_resulttextview.o: moc_resulttextview.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_resulttextview.o moc_resulttextview.cpp
moc_textloadwidget.o: moc_textloadwidget.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_textloadwidget.o moc_textloadwidget.cpp
moc_imageview.o: moc_imageview.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_imageview.o moc_imageview.cpp
####### Install
install_target: first FORCE
@test -d $(INSTALL_ROOT)/usr/bin || mkdir -p $(INSTALL_ROOT)/usr/bin
-$(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)
-$(STRIP) $(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)
uninstall_target: FORCE
-$(DEL_FILE) $(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)
-$(DEL_DIR) $(INSTALL_ROOT)/usr/bin/
install_dbus_service: first FORCE
@test -d $(INSTALL_ROOT)/usr/share/dbus-1/services || mkdir -p $(INSTALL_ROOT)/usr/share/dbus-1/services
-$(QINSTALL) /home/hmy/Desktop/deepin-ocr/2/deepin-ocr/com.deepin.Ocr.service $(INSTALL_ROOT)/usr/share/dbus-1/services/com.deepin.Ocr.service
uninstall_dbus_service: FORCE
-$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/dbus-1/services/com.deepin.Ocr.service
-$(DEL_DIR) $(INSTALL_ROOT)/usr/share/dbus-1/services/
install: install_target install_dbus_service FORCE
uninstall: uninstall_target uninstall_dbus_service FORCE
FORCE:

79
README.md Normal file
View File

@ -0,0 +1,79 @@
# deepin-ocr
Deepin ocr is a .
### Dependencies
### Build dependencies
_The **master** branch is current development branch, build dependencies may changes without update README.md, refer to `./debian/control` for a working build depends list_
* pkg-config
* libdtkwidget-dev
* Qt5(>=5.6) with modules:
* qt5-default
* qt5-qmake
* qtbase5-dev
## Installation
### Build from source code
1. Make sure you have installed all dependencies.
_Package name may be different between distros, if dde-file-manager is available from your distro, check the packaging script delivered from your distro is a better idea._
Assume you are using [Deepin](https://distrowatch.com/table.php?distribution=deepin) or other debian-based distro which got dde-file-manager delivered:
``` shell
$ apt build-dep deepin-ocr
```
2. Build:
```
$ cd deepin-album
$ mkdir Build
$ cd Build
$ cmake ..
$ make
```
3. Install:
```
$ sudo make install
```
The executable binary file could be found at `/usr/bin/deepin-ocr `
## Usage
Execute `deepin-ocr`
## Documentations
- [User Documentation](https://wikidev.uniontech.com/index.php?title=%E7%9B%B8%E5%86%8C) | [用户文档](https://wikidev.uniontech.com/index.php?title=%E7%9B%B8%E5%86%8C)
## Getting help
- [Official Forum](https://bbs.deepin.org/)
- [Developer Center](https://github.com/linuxdeepin/developer-center)
- [Gitter](https://gitter.im/orgs/linuxdeepin/rooms)
- [IRC Channel](https://webchat.freenode.net/?channels=deepin)
- [Wiki](https://wiki.deepin.org/)
## Getting involved
We encourage you to report issues and contribute changes
- [Contribution guide for developers](https://github.com/linuxdeepin/developer-center/wiki/Contribution-Guidelines-for-Developers-en) (English)
- [开发者代码贡献指南](https://github.com/linuxdeepin/developer-center/wiki/Contribution-Guidelines-for-Developers) (中文)
## License
deepin-ocr is licensed under [GPLv3](

9
assets/Tips_dark.svg Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>温馨提示</title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="OCR_1备份" transform="translate(-560.000000, -785.000000)" fill="#6D7C88">
<path d="M567,785 C570.865993,785 574,788.134007 574,792 C574,795.865993 570.865993,799 567,799 C563.134007,799 560,795.865993 560,792 C560,788.134007 563.134007,785 567,785 Z M567,791 C566.447715,791 566,791.447715 566,792 L566,792 L566,795 C566,795.552285 566.447715,796 567,796 C567.552285,796 568,795.552285 568,795 L568,795 L568,792 C568,791.447715 567.552285,791 567,791 Z M567,788 C566.447715,788 566,788.447715 566,789 C566,789.552285 566.447715,790 567,790 C567.552285,790 568,789.552285 568,789 C568,788.447715 567.552285,788 567,788 Z" id="温馨提示"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1001 B

9
assets/Tips_light.svg Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>温馨提示</title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="OCR_1" transform="translate(-560.000000, -784.000000)" fill="#8AA1B4">
<path d="M567,784 C570.865993,784 574,787.134007 574,791 C574,794.865993 570.865993,798 567,798 C563.134007,798 560,794.865993 560,791 C560,787.134007 563.134007,784 567,784 Z M567,790 C566.447715,790 566,790.447715 566,791 L566,791 L566,794 C566,794.552285 566.447715,795 567,795 C567.552285,795 568,794.552285 568,794 L568,794 L568,791 C568,790.447715 567.552285,790 567,790 Z M567,787 C566.447715,787 566,787.447715 566,788 C566,788.552285 566.447715,789 567,789 C567.552285,789 568,788.552285 568,788 C568,787.447715 567.552285,787 567,787 Z" id="温馨提示"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 995 B

119
assets/appicon_dark.svg Normal file
View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>识图</title>
<defs>
<filter x="-12.5%" y="-12.5%" width="125.0%" height="125.0%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<linearGradient x1="50%" y1="-9.36523438%" x2="50%" y2="100%" id="linearGradient-2">
<stop stop-color="#EBEBEB" offset="0%"></stop>
<stop stop-color="#B5B5B5" offset="93.9280293%"></stop>
<stop stop-color="#CFCFCF" offset="100%"></stop>
</linearGradient>
<path d="M25.5454545,1 C28.5579168,1 31,3.44208318 31,6.45454545 L31,25.5454545 C31,28.5579168 28.5579168,31 25.5454545,31 L6.45454545,31 C3.44208318,31 1,28.5579168 1,25.5454545 L1,6.45454545 C1,3.44208318 3.44208318,1 6.45454545,1 L25.5454545,1 Z" id="path-3"></path>
<filter x="-1.7%" y="-1.7%" width="103.3%" height="103.3%" filterUnits="objectBoundingBox" id="filter-4">
<feOffset dx="0" dy="-1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0" type="matrix" in="shadowInnerInner1" result="shadowMatrixInner1"></feColorMatrix>
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetInner2"></feOffset>
<feComposite in="shadowOffsetInner2" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner2"></feComposite>
<feColorMatrix values="0 0 0 0 0.993263134 0 0 0 0 0.980733786 0 0 0 0 0.980733786 0 0 0 0.5 0" type="matrix" in="shadowInnerInner2" result="shadowMatrixInner2"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixInner1"></feMergeNode>
<feMergeNode in="shadowMatrixInner2"></feMergeNode>
</feMerge>
</filter>
<linearGradient x1="24.8901367%" y1="0%" x2="63.1795247%" y2="103.312174%" id="linearGradient-5">
<stop stop-color="#5F5F5F" offset="0%"></stop>
<stop stop-color="#000000" stop-opacity="0.768930288" offset="100%"></stop>
</linearGradient>
<linearGradient x1="18.536377%" y1="0%" x2="66.7195638%" y2="103.965251%" id="linearGradient-6">
<stop stop-color="#575757" offset="0%"></stop>
<stop stop-color="#090909" stop-opacity="0.852737107" offset="100%"></stop>
</linearGradient>
<path d="M12.4547635,21.3567246 L13.3578792,18.9915966 L13.3578792,18.9915966 L18.6421208,18.9915966 L19.5452365,21.3567246 C19.6931539,21.7440985 20.0647919,22 20.4794461,22 L20.8954345,22 C21.3076584,22 21.641832,21.6658264 21.641832,21.2536025 C21.641832,21.1582002 21.6235425,21.0636826 21.5879537,20.9751669 L17.4273347,10.6269608 C17.2750389,10.2481736 16.9077761,10 16.4995192,10 L15.5004808,10 C15.0922239,10 14.7249611,10.2481736 14.5726653,10.6269608 L10.4120463,20.9751669 C10.2582706,21.3576347 10.4436622,21.792346 10.82613,21.9461217 C10.9146456,21.9817105 11.0091633,22 11.1045655,22 L11.5205539,22 C11.9352081,22 12.3068461,21.7440985 12.4547635,21.3567246 Z M18,17 L14,17 L15.9737991,12 L16.0436681,12 L18,17 Z" id="path-7"></path>
<filter x="-17.9%" y="-12.5%" width="135.4%" height="141.7%" filterUnits="objectBoundingBox" id="filter-8">
<feMorphology radius="0.5" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
<feOffset dx="0" dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<linearGradient x1="68.3268229%" y1="-18.0867513%" x2="76.2898763%" y2="168.660482%" id="linearGradient-9">
<stop stop-color="#696969" offset="0%"></stop>
<stop stop-color="#010101" offset="100%"></stop>
</linearGradient>
<path d="M9.5,5 C9.77614237,5 10,5.22385763 10,5.5 C10,5.77614237 9.77614237,6 9.5,6 L6,6 L6,9.5 C6,9.77614237 5.77614237,10 5.5,10 C5.22385763,10 5,9.77614237 5,9.5 L5,6 C5,5.44771525 5.44771525,5 6,5 L9.5,5 Z" id="path-10"></path>
<filter x="-5.0%" y="-5.0%" width="120.0%" height="120.0%" filterUnits="objectBoundingBox" id="filter-11">
<feOffset dx="0.5" dy="0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<linearGradient x1="-31.3110352%" y1="41.2353516%" x2="148.433431%" y2="35.0504557%" id="linearGradient-12">
<stop stop-color="#696969" offset="0%"></stop>
<stop stop-color="#010101" offset="100%"></stop>
</linearGradient>
<path d="M26.5,5 C26.7761424,5 27,5.22385763 27,5.5 C27,5.77614237 26.7761424,6 26.5,6 L23,6 L23,9.5 C23,9.77614237 22.7761424,10 22.5,10 C22.2238576,10 22,9.77614237 22,9.5 L22,6 C22,5.44771525 22.4477153,5 23,5 L26.5,5 Z" id="path-13"></path>
<filter x="-5.0%" y="-5.0%" width="120.0%" height="120.0%" filterUnits="objectBoundingBox" id="filter-14">
<feOffset dx="0.5" dy="0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<linearGradient x1="34.769694%" y1="121.805827%" x2="50%" y2="-99.1357422%" id="linearGradient-15">
<stop stop-color="#696969" offset="0%"></stop>
<stop stop-color="#010101" offset="100%"></stop>
</linearGradient>
<path d="M9.5,21 C9.77614237,21 10,21.2238576 10,21.5 C10,21.7761424 9.77614237,22 9.5,22 L6,22 L6,25.5 C6,25.7761424 5.77614237,26 5.5,26 C5.22385763,26 5,25.7761424 5,25.5 L5,22 C5,21.4477153 5.44771525,21 6,21 L9.5,21 Z" id="path-16"></path>
<filter x="-5.0%" y="-15.0%" width="120.0%" height="120.0%" filterUnits="objectBoundingBox" id="filter-17">
<feOffset dx="0.5" dy="-0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<linearGradient x1="114.76237%" y1="44.3684896%" x2="-58.0517578%" y2="44.3684896%" id="linearGradient-18">
<stop stop-color="#696969" offset="0%"></stop>
<stop stop-color="#010101" offset="100%"></stop>
</linearGradient>
<path d="M26.5,21 C26.7761424,21 27,21.2238576 27,21.5 C27,21.7761424 26.7761424,22 26.5,22 L23,22 L23,25.5 C23,25.7761424 22.7761424,26 22.5,26 C22.2238576,26 22,25.7761424 22,25.5 L22,22 C22,21.4477153 22.4477153,21 23,21 L26.5,21 Z" id="path-19"></path>
<filter x="-15.0%" y="-5.0%" width="120.0%" height="120.0%" filterUnits="objectBoundingBox" id="filter-20">
<feOffset dx="-0.5" dy="0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
</defs>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="OCR_1_dark" transform="translate(-550.000000, -274.000000)">
<g id="识图" filter="url(#filter-1)" transform="translate(550.000000, 274.000000)">
<g id="路径">
<use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-3"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
</g>
<g id="A" fill-rule="nonzero">
<use fill="black" fill-opacity="1" filter="url(#filter-8)" xlink:href="#path-7"></use>
<path stroke="url(#linearGradient-6)" stroke-width="0.5" d="M16.4995192,9.75 C16.7546798,9.75 16.9970297,9.82755426 17.1993857,9.964294 C17.3612704,10.0736858 17.4975591,10.2209563 17.5943339,10.3967007 L17.6592886,10.5337009 L21.8324239,20.9130373 C21.9106103,21.5618345 21.771822,21.7863339 21.5999939,21.9581619 C21.4196814,22.1384744 21.170582,22.25 20.8954345,22.25 C20.1749765,22.25 19.9573039,22.1581411 19.7705322,22.0295344 C19.6073013,21.9171373 19.470744,21.7660028 19.3753168,21.5860852 L19.3116841,21.4459058 L18.4699765,19.2415966 L13.5300235,19.2415966 L12.6883159,21.4459058 C12.5958675,21.6880145 12.4335065,21.889038 12.2294678,22.0295344 C12.0254291,22.1700308 11.7797128,22.25 11.5205539,22.25 C10.3762036,22.0837486 10.2767767,21.8525571 10.188036,21.6444754 C10.1046751,21.4490084 10.0834543,21.2270405 10.1380949,21.0107458 L10.1800924,20.8819071 L14.3407114,10.5337009 C14.4358963,10.296959 14.5982584,10.1010337 14.8006143,9.964294 C14.9624991,9.85490221 15.14998,9.78338912 15.3491392,9.75915956 L15.5004808,9.75 L16.4995192,9.75 Z M15.97684,12.6731525 L14.3674644,16.75 L17.6289424,16.75 L15.97684,12.6731525 Z" fill="url(#linearGradient-5)" fill-rule="evenodd"></path>
</g>
<g id="形状结合" fill-rule="nonzero">
<use fill="black" fill-opacity="1" filter="url(#filter-11)" xlink:href="#path-10"></use>
<use fill="url(#linearGradient-9)" xlink:href="#path-10"></use>
</g>
<g id="形状结合" fill-rule="nonzero" transform="translate(24.500000, 7.500000) rotate(-270.000000) translate(-24.500000, -7.500000) ">
<use fill="black" fill-opacity="1" filter="url(#filter-14)" xlink:href="#path-13"></use>
<use fill="url(#linearGradient-12)" xlink:href="#path-13"></use>
</g>
<g id="形状结合" fill-rule="nonzero" transform="translate(7.500000, 23.500000) scale(1, -1) translate(-7.500000, -23.500000) ">
<use fill="black" fill-opacity="1" filter="url(#filter-17)" xlink:href="#path-16"></use>
<use fill="url(#linearGradient-15)" xlink:href="#path-16"></use>
</g>
<g id="形状结合" fill-rule="nonzero" transform="translate(24.500000, 23.500000) scale(1, -1) rotate(-270.000000) translate(-24.500000, -23.500000) ">
<use fill="black" fill-opacity="1" filter="url(#filter-20)" xlink:href="#path-19"></use>
<use fill="url(#linearGradient-18)" xlink:href="#path-19"></use>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

119
assets/appicon_light.svg Normal file
View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>识图</title>
<defs>
<filter x="-12.5%" y="-12.5%" width="125.0%" height="125.0%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<linearGradient x1="50%" y1="-9.36523438%" x2="50%" y2="100%" id="linearGradient-2">
<stop stop-color="#EBEBEB" offset="0%"></stop>
<stop stop-color="#B5B5B5" offset="93.9280293%"></stop>
<stop stop-color="#CFCFCF" offset="100%"></stop>
</linearGradient>
<path d="M25.5454545,1 C28.5579168,1 31,3.44208318 31,6.45454545 L31,25.5454545 C31,28.5579168 28.5579168,31 25.5454545,31 L6.45454545,31 C3.44208318,31 1,28.5579168 1,25.5454545 L1,6.45454545 C1,3.44208318 3.44208318,1 6.45454545,1 L25.5454545,1 Z" id="path-3"></path>
<filter x="-1.7%" y="-1.7%" width="103.3%" height="103.3%" filterUnits="objectBoundingBox" id="filter-4">
<feOffset dx="0" dy="-1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0" type="matrix" in="shadowInnerInner1" result="shadowMatrixInner1"></feColorMatrix>
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetInner2"></feOffset>
<feComposite in="shadowOffsetInner2" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner2"></feComposite>
<feColorMatrix values="0 0 0 0 0.993263134 0 0 0 0 0.980733786 0 0 0 0 0.980733786 0 0 0 0.5 0" type="matrix" in="shadowInnerInner2" result="shadowMatrixInner2"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixInner1"></feMergeNode>
<feMergeNode in="shadowMatrixInner2"></feMergeNode>
</feMerge>
</filter>
<linearGradient x1="24.8901367%" y1="0%" x2="63.1795247%" y2="103.312174%" id="linearGradient-5">
<stop stop-color="#5F5F5F" offset="0%"></stop>
<stop stop-color="#000000" stop-opacity="0.768930288" offset="100%"></stop>
</linearGradient>
<linearGradient x1="18.536377%" y1="0%" x2="66.7195638%" y2="103.965251%" id="linearGradient-6">
<stop stop-color="#575757" offset="0%"></stop>
<stop stop-color="#090909" stop-opacity="0.852737107" offset="100%"></stop>
</linearGradient>
<path d="M12.4547635,21.3567246 L13.3578792,18.9915966 L13.3578792,18.9915966 L18.6421208,18.9915966 L19.5452365,21.3567246 C19.6931539,21.7440985 20.0647919,22 20.4794461,22 L20.8954345,22 C21.3076584,22 21.641832,21.6658264 21.641832,21.2536025 C21.641832,21.1582002 21.6235425,21.0636826 21.5879537,20.9751669 L17.4273347,10.6269608 C17.2750389,10.2481736 16.9077761,10 16.4995192,10 L15.5004808,10 C15.0922239,10 14.7249611,10.2481736 14.5726653,10.6269608 L10.4120463,20.9751669 C10.2582706,21.3576347 10.4436622,21.792346 10.82613,21.9461217 C10.9146456,21.9817105 11.0091633,22 11.1045655,22 L11.5205539,22 C11.9352081,22 12.3068461,21.7440985 12.4547635,21.3567246 Z M18,17 L14,17 L15.9737991,12 L16.0436681,12 L18,17 Z" id="path-7"></path>
<filter x="-17.9%" y="-12.5%" width="135.4%" height="141.7%" filterUnits="objectBoundingBox" id="filter-8">
<feMorphology radius="0.5" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
<feOffset dx="0" dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<linearGradient x1="68.3268229%" y1="-18.0867513%" x2="76.2898763%" y2="168.660482%" id="linearGradient-9">
<stop stop-color="#696969" offset="0%"></stop>
<stop stop-color="#010101" offset="100%"></stop>
</linearGradient>
<path d="M9.5,5 C9.77614237,5 10,5.22385763 10,5.5 C10,5.77614237 9.77614237,6 9.5,6 L6,6 L6,9.5 C6,9.77614237 5.77614237,10 5.5,10 C5.22385763,10 5,9.77614237 5,9.5 L5,6 C5,5.44771525 5.44771525,5 6,5 L9.5,5 Z" id="path-10"></path>
<filter x="-5.0%" y="-5.0%" width="120.0%" height="120.0%" filterUnits="objectBoundingBox" id="filter-11">
<feOffset dx="0.5" dy="0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<linearGradient x1="-31.3110352%" y1="41.2353516%" x2="148.433431%" y2="35.0504557%" id="linearGradient-12">
<stop stop-color="#696969" offset="0%"></stop>
<stop stop-color="#010101" offset="100%"></stop>
</linearGradient>
<path d="M26.5,5 C26.7761424,5 27,5.22385763 27,5.5 C27,5.77614237 26.7761424,6 26.5,6 L23,6 L23,9.5 C23,9.77614237 22.7761424,10 22.5,10 C22.2238576,10 22,9.77614237 22,9.5 L22,6 C22,5.44771525 22.4477153,5 23,5 L26.5,5 Z" id="path-13"></path>
<filter x="-5.0%" y="-5.0%" width="120.0%" height="120.0%" filterUnits="objectBoundingBox" id="filter-14">
<feOffset dx="0.5" dy="0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<linearGradient x1="34.769694%" y1="121.805827%" x2="50%" y2="-99.1357422%" id="linearGradient-15">
<stop stop-color="#696969" offset="0%"></stop>
<stop stop-color="#010101" offset="100%"></stop>
</linearGradient>
<path d="M9.5,21 C9.77614237,21 10,21.2238576 10,21.5 C10,21.7761424 9.77614237,22 9.5,22 L6,22 L6,25.5 C6,25.7761424 5.77614237,26 5.5,26 C5.22385763,26 5,25.7761424 5,25.5 L5,22 C5,21.4477153 5.44771525,21 6,21 L9.5,21 Z" id="path-16"></path>
<filter x="-5.0%" y="-15.0%" width="120.0%" height="120.0%" filterUnits="objectBoundingBox" id="filter-17">
<feOffset dx="0.5" dy="-0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<linearGradient x1="114.76237%" y1="44.3684896%" x2="-58.0517578%" y2="44.3684896%" id="linearGradient-18">
<stop stop-color="#696969" offset="0%"></stop>
<stop stop-color="#010101" offset="100%"></stop>
</linearGradient>
<path d="M26.5,21 C26.7761424,21 27,21.2238576 27,21.5 C27,21.7761424 26.7761424,22 26.5,22 L23,22 L23,25.5 C23,25.7761424 22.7761424,26 22.5,26 C22.2238576,26 22,25.7761424 22,25.5 L22,22 C22,21.4477153 22.4477153,21 23,21 L26.5,21 Z" id="path-19"></path>
<filter x="-15.0%" y="-5.0%" width="120.0%" height="120.0%" filterUnits="objectBoundingBox" id="filter-20">
<feOffset dx="-0.5" dy="0.5" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
</defs>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="OCR_2一期" transform="translate(-550.000000, -274.000000)">
<g id="识图" filter="url(#filter-1)" transform="translate(550.000000, 274.000000)">
<g id="路径">
<use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-3"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
</g>
<g id="A" fill-rule="nonzero">
<use fill="black" fill-opacity="1" filter="url(#filter-8)" xlink:href="#path-7"></use>
<path stroke="url(#linearGradient-6)" stroke-width="0.5" d="M16.4995192,9.75 C16.7546798,9.75 16.9970297,9.82755426 17.1993857,9.964294 C17.3612704,10.0736858 17.4975591,10.2209563 17.5943339,10.3967007 L17.6592886,10.5337009 L21.8324239,20.9130373 C21.9106103,21.5618345 21.771822,21.7863339 21.5999939,21.9581619 C21.4196814,22.1384744 21.170582,22.25 20.8954345,22.25 C20.1749765,22.25 19.9573039,22.1581411 19.7705322,22.0295344 C19.6073013,21.9171373 19.470744,21.7660028 19.3753168,21.5860852 L19.3116841,21.4459058 L18.4699765,19.2415966 L13.5300235,19.2415966 L12.6883159,21.4459058 C12.5958675,21.6880145 12.4335065,21.889038 12.2294678,22.0295344 C12.0254291,22.1700308 11.7797128,22.25 11.5205539,22.25 C10.3762036,22.0837486 10.2767767,21.8525571 10.188036,21.6444754 C10.1046751,21.4490084 10.0834543,21.2270405 10.1380949,21.0107458 L10.1800924,20.8819071 L14.3407114,10.5337009 C14.4358963,10.296959 14.5982584,10.1010337 14.8006143,9.964294 C14.9624991,9.85490221 15.14998,9.78338912 15.3491392,9.75915956 L15.5004808,9.75 L16.4995192,9.75 Z M15.97684,12.6731525 L14.3674644,16.75 L17.6289424,16.75 L15.97684,12.6731525 Z" fill="url(#linearGradient-5)" fill-rule="evenodd"></path>
</g>
<g id="形状结合" fill-rule="nonzero">
<use fill="black" fill-opacity="1" filter="url(#filter-11)" xlink:href="#path-10"></use>
<use fill="url(#linearGradient-9)" xlink:href="#path-10"></use>
</g>
<g id="形状结合" fill-rule="nonzero" transform="translate(24.500000, 7.500000) rotate(-270.000000) translate(-24.500000, -7.500000) ">
<use fill="black" fill-opacity="1" filter="url(#filter-14)" xlink:href="#path-13"></use>
<use fill="url(#linearGradient-12)" xlink:href="#path-13"></use>
</g>
<g id="形状结合" fill-rule="nonzero" transform="translate(7.500000, 23.500000) scale(1, -1) translate(-7.500000, -23.500000) ">
<use fill="black" fill-opacity="1" filter="url(#filter-17)" xlink:href="#path-16"></use>
<use fill="url(#linearGradient-15)" xlink:href="#path-16"></use>
</g>
<g id="形状结合" fill-rule="nonzero" transform="translate(24.500000, 23.500000) scale(1, -1) rotate(-270.000000) translate(-24.500000, -23.500000) ">
<use fill="black" fill-opacity="1" filter="url(#filter-20)" xlink:href="#path-19"></use>
<use fill="url(#linearGradient-18)" xlink:href="#path-19"></use>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

14
assets/copy_dark.svg Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>复制</title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="OCR_1备份" transform="translate(-1219.000000, -774.000000)" fill="#C5CFE0">
<g id="复制" transform="translate(1219.000000, 774.000000)">
<g transform="translate(11.000000, 11.000000)" id="形状结合">
<path d="M11,2 C12.1045695,2 13,2.8954305 13,4 L13,13 C13,14.1045695 12.1045695,15 11,15 L2,15 C0.8954305,15 1.3527075e-16,14.1045695 0,13 L0,4 C-1.3527075e-16,2.8954305 0.8954305,2 2,2 L11,2 Z M6.59090909,5.54545455 L6.40909091,5.54545455 C6.13294853,5.54545455 5.90909091,5.76931217 5.90909091,6.04545455 L5.90909091,6.04545455 L5.909,7.909 L4.04545455,7.90909091 C3.79999466,7.90909091 3.59584618,8.08596607 3.55351021,8.31921528 L3.54545455,8.40909091 L3.54545455,8.59090909 C3.54545455,8.86705147 3.76931217,9.09090909 4.04545455,9.09090909 L4.04545455,9.09090909 L5.909,9.09 L5.90909091,10.9545455 C5.90909091,11.2000053 6.08596607,11.4041538 6.31921528,11.4464898 L6.40909091,11.4545455 L6.59090909,11.4545455 C6.86705147,11.4545455 7.09090909,11.2306878 7.09090909,10.9545455 L7.09090909,10.9545455 L7.09,9.09 L8.95454545,9.09090909 C9.20000534,9.09090909 9.40415382,8.91403393 9.44648979,8.68078472 L9.45454545,8.59090909 L9.45454545,8.40909091 C9.45454545,8.13294853 9.23068783,7.90909091 8.95454545,7.90909091 L8.95454545,7.90909091 L7.09,7.909 L7.09090909,6.04545455 C7.09090909,5.79999466 6.91403393,5.59584618 6.68078472,5.55351021 L6.59090909,5.54545455 Z"></path>
<path d="M13.8818897,2.23625192 C13.8818897,1.66283686 13.4502542,1.19023708 12.8941747,1.12564841 L12.7637794,1.11812596 L3.00013252,1.11781589 C3.38682971,0.449569654 4.10941789,0 4.93700723,0 L12.7637794,0 C13.9988099,0 15,1.00120409 15,2.23625192 L15,10.0631336 C15,10.8907346 14.5504366,11.6133329 13.8821998,12.0000355 L13.8818897,2.23625192 Z" fill-rule="nonzero"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

14
assets/copy_light.svg Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>复制</title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="OCR_1" transform="translate(-1219.000000, -773.000000)" fill="#536076">
<g id="复制" transform="translate(1219.000000, 773.000000)">
<g transform="translate(11.000000, 11.000000)" id="形状结合">
<path d="M11,2 C12.1045695,2 13,2.8954305 13,4 L13,13 C13,14.1045695 12.1045695,15 11,15 L2,15 C0.8954305,15 1.3527075e-16,14.1045695 0,13 L0,4 C-1.3527075e-16,2.8954305 0.8954305,2 2,2 L11,2 Z M6.59090909,5.54545455 L6.40909091,5.54545455 C6.13294853,5.54545455 5.90909091,5.76931217 5.90909091,6.04545455 L5.90909091,6.04545455 L5.909,7.909 L4.04545455,7.90909091 C3.79999466,7.90909091 3.59584618,8.08596607 3.55351021,8.31921528 L3.54545455,8.40909091 L3.54545455,8.59090909 C3.54545455,8.86705147 3.76931217,9.09090909 4.04545455,9.09090909 L4.04545455,9.09090909 L5.909,9.09 L5.90909091,10.9545455 C5.90909091,11.2000053 6.08596607,11.4041538 6.31921528,11.4464898 L6.40909091,11.4545455 L6.59090909,11.4545455 C6.86705147,11.4545455 7.09090909,11.2306878 7.09090909,10.9545455 L7.09090909,10.9545455 L7.09,9.09 L8.95454545,9.09090909 C9.20000534,9.09090909 9.40415382,8.91403393 9.44648979,8.68078472 L9.45454545,8.59090909 L9.45454545,8.40909091 C9.45454545,8.13294853 9.23068783,7.90909091 8.95454545,7.90909091 L8.95454545,7.90909091 L7.09,7.909 L7.09090909,6.04545455 C7.09090909,5.79999466 6.91403393,5.59584618 6.68078472,5.55351021 L6.59090909,5.54545455 Z"></path>
<path d="M13.8818897,2.23625192 C13.8818897,1.66283686 13.4502542,1.19023708 12.8941747,1.12564841 L12.7637794,1.11812596 L3.00013252,1.11781589 C3.38682971,0.449569654 4.10941789,0 4.93700723,0 L12.7637794,0 C13.9988099,0 15,1.00120409 15,2.23625192 L15,10.0631336 C15,10.8907346 14.5504366,11.6133329 13.8821998,12.0000355 L13.8818897,2.23625192 Z" fill-rule="nonzero"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>识别文字</title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="截图备份-2" transform="translate(-896.000000, -888.000000)">
<g id="截图工具栏备份" transform="translate(725.000000, 876.000000)">
<g id="识别文字" transform="translate(171.000000, 12.000000)">
<rect id="占位备份-2" fill="#FFFFFF" opacity="0" x="0" y="0" width="36" height="36" rx="8"></rect>
<path d="M15.7114428,23 L16.3681592,20.728513 L19.5522388,20.728513 L20.2487562,23 L22,23 L18.8092869,13 L17.1044776,13 L14,23 L15.7114428,23 Z M19,19 L17,19 L17.9939024,16 L19,19 Z" id="A备份" fill="#C5CFE0" fill-rule="nonzero"></path>
<g id="编组" transform="translate(8.500000, 9.000000)" fill="#C5CFE0">
<path d="M6.5,0 L6.5,2 L2.5,2 L2.5,6 L0.5,6 L0.5,-1.8369702e-16 L6.5,0 Z" id="形状结合"></path>
<path d="M6.5,12 L6.5,14 L2.5,14 L2.5,18 L0.5,18 L0.5,12 L6.5,12 Z" id="形状结合备份-2" transform="translate(3.500000, 15.000000) scale(1, -1) translate(-3.500000, -15.000000) "></path>
<path d="M18.5,0 L18.5,2 L14.5,2 L14.5,6 L12.5,6 L12.5,-1.8369702e-16 L18.5,0 Z" id="形状结合备份" transform="translate(15.500000, 3.000000) scale(-1, 1) translate(-15.500000, -3.000000) "></path>
<path d="M18.5,12 L18.5,14 L14.5,14 L14.5,18 L12.5,18 L12.5,12 L18.5,12 Z" id="形状结合备份-3" transform="translate(15.500000, 15.000000) scale(-1, -1) translate(-15.500000, -15.000000) "></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>识别文字</title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="截图备份" transform="translate(-898.000000, -893.000000)">
<g id="截图工具栏" transform="translate(727.000000, 881.000000)">
<g id="识别文字" transform="translate(171.000000, 12.000000)">
<rect id="占位备份-2" fill="#FFFFFF" opacity="0" x="0" y="0" width="36" height="36" rx="8"></rect>
<path d="M15.7114428,23 L16.3681592,20.728513 L19.5522388,20.728513 L20.2487562,23 L22,23 L18.8092869,13 L17.1044776,13 L14,23 L15.7114428,23 Z M19,19 L17,19 L17.9939024,16 L19,19 Z" id="A备份" fill="#000000" fill-rule="nonzero"></path>
<g id="编组" transform="translate(8.500000, 9.000000)" fill="#000000">
<path d="M6.5,0 L6.5,2 L2.5,2 L2.5,6 L0.5,6 L0.5,-1.8369702e-16 L6.5,0 Z" id="形状结合"></path>
<path d="M6.5,12 L6.5,14 L2.5,14 L2.5,18 L0.5,18 L0.5,12 L6.5,12 Z" id="形状结合备份-2" transform="translate(3.500000, 15.000000) scale(1, -1) translate(-3.500000, -15.000000) "></path>
<path d="M18.5,0 L18.5,2 L14.5,2 L14.5,6 L12.5,6 L12.5,-1.8369702e-16 L18.5,0 Z" id="形状结合备份" transform="translate(15.500000, 3.000000) scale(-1, 1) translate(-15.500000, -3.000000) "></path>
<path d="M18.5,12 L18.5,14 L14.5,14 L14.5,18 L12.5,18 L12.5,12 L18.5,12 Z" id="形状结合备份-3" transform="translate(15.500000, 15.000000) scale(-1, -1) translate(-15.500000, -15.000000) "></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>识别文字</title>
<g id="浅" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="看图_文字识别备份" transform="translate(-607.000000, -860.000000)">
<g id="识别文字" transform="translate(607.000000, 860.000000)">
<rect id="Rectangle-175" fill="#FFFFFF" opacity="0" transform="translate(18.000000, 18.000000) scale(-1, 1) translate(-18.000000, -18.000000) " x="0" y="0" width="36" height="36" rx="8"></rect>
<path d="M18.0786885,13 C18.5138684,13 18.8990862,13.2814395 19.0313691,13.6960269 L19.0313691,13.6960269 L21.7338345,22.165812 C21.7538948,22.2286826 21.7641061,22.2942787 21.7641061,22.360272 C21.7641061,22.713584 21.4776901,23 21.1243781,23 L21.1243781,23 L20.9880777,23 C20.5487159,23 20.1608194,22.7132198 20.032015,22.2931623 L20.032015,22.2931623 L19.5522388,20.728513 L16.3681592,20.728513 L15.920258,22.2777384 C15.7965764,22.705535 15.4049181,23 14.9596013,23 L14.9596013,23 L14.8557214,23 C14.7923534,23 14.7293476,22.9904449 14.6688289,22.971657 C14.3363482,22.8684391 14.150494,22.5152357 14.2537119,22.182755 L14.2537119,22.182755 L16.8860742,13.7035111 C17.0159588,13.2851329 17.4030347,13 17.8411105,13 L17.8411105,13 Z M17.9939024,16 L17,19 L19,19 L17.9939024,16 Z" id="形状结合" fill="#C5CFE0" fill-rule="nonzero"></path>
<g id="编组" transform="translate(9.000000, 9.000000)" fill="#C5CFE0">
<path d="M4.5,0 C4.77614237,-5.07265313e-17 5,0.223857625 5,0.5 C5,0.776142375 4.77614237,1 4.5,1 L1,1 L1,4.5 C1,4.77614237 0.776142375,5 0.5,5 C0.223857625,5 -1.33226763e-15,4.77614237 -1.33226763e-15,4.5 L-6.66133815e-16,1 C-4.4408921e-16,0.44771525 0.44771525,5.80308224e-17 1,9.18485099e-17 L4.5,0 Z" id="形状结合"></path>
</g>
<g id="编组" transform="translate(11.500000, 24.500000) scale(1, -1) translate(-11.500000, -24.500000) translate(9.000000, 22.000000)" fill="#C5CFE0">
<path d="M4.5,0 C4.77614237,-5.07265313e-17 5,0.223857625 5,0.5 C5,0.776142375 4.77614237,1 4.5,1 L1,1 L1,4.5 C1,4.77614237 0.776142375,5 0.5,5 C0.223857625,5 -1.33226763e-15,4.77614237 -1.33226763e-15,4.5 L-6.66133815e-16,1 C-4.4408921e-16,0.44771525 0.44771525,5.80308224e-17 1,9.18485099e-17 L4.5,0 Z" id="形状结合"></path>
</g>
<g id="编组" transform="translate(24.500000, 11.500000) scale(-1, 1) translate(-24.500000, -11.500000) translate(22.000000, 9.000000)" fill="#C5CFE0">
<path d="M4.5,0 C4.77614237,-5.07265313e-17 5,0.223857625 5,0.5 C5,0.776142375 4.77614237,1 4.5,1 L1,1 L1,4.5 C1,4.77614237 0.776142375,5 0.5,5 C0.223857625,5 -1.33226763e-15,4.77614237 -1.33226763e-15,4.5 L-6.66133815e-16,1 C-4.4408921e-16,0.44771525 0.44771525,5.80308224e-17 1,9.18485099e-17 L4.5,0 Z" id="形状结合"></path>
</g>
<g id="编组" transform="translate(24.500000, 24.500000) scale(-1, -1) translate(-24.500000, -24.500000) translate(22.000000, 22.000000)" fill="#C5CFE0">
<path d="M4.5,0 C4.77614237,-5.07265313e-17 5,0.223857625 5,0.5 C5,0.776142375 4.77614237,1 4.5,1 L1,1 L1,4.5 C1,4.77614237 0.776142375,5 0.5,5 C0.223857625,5 -1.33226763e-15,4.77614237 -1.33226763e-15,4.5 L-6.66133815e-16,1 C-4.4408921e-16,0.44771525 0.44771525,5.80308224e-17 1,9.18485099e-17 L4.5,0 Z" id="形状结合"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>识别文字</title>
<g id="浅" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="看图_文字识别" transform="translate(-607.000000, -860.000000)">
<g id="音乐底部控制栏normal备份" transform="translate(320.000000, 843.000000)">
<g id="Group-4" transform="translate(10.000000, 10.000000)">
<g id="识别文字" transform="translate(277.000000, 7.000000)">
<rect id="Rectangle-175" fill="#FFFFFF" opacity="0" transform="translate(18.000000, 18.000000) scale(-1, 1) translate(-18.000000, -18.000000) " x="0" y="0" width="36" height="36" rx="8"></rect>
<path d="M18.0786885,13 C18.5138684,13 18.8990862,13.2814395 19.0313691,13.6960269 L19.0313691,13.6960269 L21.7338345,22.165812 C21.7538948,22.2286826 21.7641061,22.2942787 21.7641061,22.360272 C21.7641061,22.713584 21.4776901,23 21.1243781,23 L21.1243781,23 L20.9880777,23 C20.5487159,23 20.1608194,22.7132198 20.032015,22.2931623 L20.032015,22.2931623 L19.5522388,20.728513 L16.3681592,20.728513 L15.920258,22.2777384 C15.7965764,22.705535 15.4049181,23 14.9596013,23 L14.9596013,23 L14.8557214,23 C14.7923534,23 14.7293476,22.9904449 14.6688289,22.971657 C14.3363482,22.8684391 14.150494,22.5152357 14.2537119,22.182755 L14.2537119,22.182755 L16.8860742,13.7035111 C17.0159588,13.2851329 17.4030347,13 17.8411105,13 L17.8411105,13 Z M17.9939024,16 L17,19 L19,19 L17.9939024,16 Z" id="形状结合" fill="#000000" fill-rule="nonzero"></path>
<g id="编组" transform="translate(9.000000, 9.000000)" fill="#000000">
<path d="M4.5,0 C4.77614237,-5.07265313e-17 5,0.223857625 5,0.5 C5,0.776142375 4.77614237,1 4.5,1 L1,1 L1,4.5 C1,4.77614237 0.776142375,5 0.5,5 C0.223857625,5 -1.77635684e-15,4.77614237 -1.77635684e-15,4.5 L-1.11022302e-15,1 C-8.8817842e-16,0.44771525 0.44771525,5.80308224e-17 1,9.18485099e-17 L4.5,0 Z" id="形状结合"></path>
</g>
<g id="编组" transform="translate(11.500000, 24.500000) scale(1, -1) translate(-11.500000, -24.500000) translate(9.000000, 22.000000)" fill="#000000">
<path d="M4.5,0 C4.77614237,-5.07265313e-17 5,0.223857625 5,0.5 C5,0.776142375 4.77614237,1 4.5,1 L1,1 L1,4.5 C1,4.77614237 0.776142375,5 0.5,5 C0.223857625,5 -1.33226763e-15,4.77614237 -1.33226763e-15,4.5 L-6.66133815e-16,1 C-4.4408921e-16,0.44771525 0.44771525,5.80308224e-17 1,9.18485099e-17 L4.5,0 Z" id="形状结合"></path>
</g>
<g id="编组" transform="translate(24.500000, 11.500000) scale(-1, 1) translate(-24.500000, -11.500000) translate(22.000000, 9.000000)" fill="#000000">
<path d="M4.5,0 C4.77614237,-5.07265313e-17 5,0.223857625 5,0.5 C5,0.776142375 4.77614237,1 4.5,1 L1,1 L1,4.5 C1,4.77614237 0.776142375,5 0.5,5 C0.223857625,5 -1.33226763e-15,4.77614237 -1.33226763e-15,4.5 L-6.66133815e-16,1 C-4.4408921e-16,0.44771525 0.44771525,5.80308224e-17 1,9.18485099e-17 L4.5,0 Z" id="形状结合"></path>
</g>
<g id="编组" transform="translate(24.500000, 24.500000) scale(-1, -1) translate(-24.500000, -24.500000) translate(22.000000, 22.000000)" fill="#000000">
<path d="M4.5,0 C4.77614237,-5.07265313e-17 5,0.223857625 5,0.5 C5,0.776142375 4.77614237,1 4.5,1 L1,1 L1,4.5 C1,4.77614237 0.776142375,5 0.5,5 C0.223857625,5 -1.33226763e-15,4.77614237 -1.33226763e-15,4.5 L-6.66133815e-16,1 C-4.4408921e-16,0.44771525 0.44771525,5.80308224e-17 1,9.18485099e-17 L4.5,0 Z" id="形状结合"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

12
assets/download_dark.svg Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>下载 </title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="OCR_1备份" transform="translate(-1285.000000, -774.000000)" fill="#C5CFE0" fill-rule="nonzero">
<g id="下载-" transform="translate(1285.000000, 774.000000)">
<path d="M18.2813055,20.9148772 C18.3426674,20.9729155 18.4218441,21 18.5010208,21 C18.5801975,21 18.6593742,20.9709808 18.7207361,20.9148772 L22.5311777,17.5546063 C22.5826426,17.506241 22.6123338,17.4482027 22.6242103,17.3882298 C22.6598398,17.2102457 22.5252395,17.0167847 22.3114624,17.0167847 L19.9953613,17.0167847 L19.9953613,11.3095376 C19.9953613,11.1392919 19.8548227,11 19.6786546,11 L17.322383,11 C17.1481943,11 17.0056763,11.1373573 17.0056763,11.3095376 L17.0056763,17.0187193 L14.6575928,17.0187193 C14.4418363,17.0187193 14.3092153,17.2121803 14.3448448,17.3901644 C14.3567213,17.4501373 14.3864126,17.506241 14.4378775,17.5565409 L18.2813055,20.9148772 Z" id="路径"></path>
<path d="M25.6690112,21 L20.851055,21 L19.6450145,22.2511251 C19.3347125,22.5729073 18.9292511,22.7506751 18.5010343,22.7506751 C18.0728175,22.7506751 17.6652875,22.5729073 17.3570542,22.2511251 L16.1510137,21 L11.3330575,21 C11.148945,21 11,21.1620162 11,21.360036 L11,25.6377138 C11,25.8379838 11.148945,26 11.3330575,26 L25.6690112,26 C25.8531237,26 26,25.8379838 26,25.6377138 L26,21.3622862 C26,21.1620162 25.851055,21 25.6690112,21 Z" id="形状"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

12
assets/download_light.svg Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>下载 </title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="OCR_1" transform="translate(-1285.000000, -773.000000)" fill="#536076" fill-rule="nonzero">
<g id="下载-" transform="translate(1285.000000, 773.000000)">
<path d="M18.2813055,20.9148772 C18.3426674,20.9729155 18.4218441,21 18.5010208,21 C18.5801975,21 18.6593742,20.9709808 18.7207361,20.9148772 L22.5311777,17.5546063 C22.5826426,17.506241 22.6123338,17.4482027 22.6242103,17.3882298 C22.6598398,17.2102457 22.5252395,17.0167847 22.3114624,17.0167847 L19.9953613,17.0167847 L19.9953613,11.3095376 C19.9953613,11.1392919 19.8548227,11 19.6786546,11 L17.322383,11 C17.1481943,11 17.0056763,11.1373573 17.0056763,11.3095376 L17.0056763,17.0187193 L14.6575928,17.0187193 C14.4418363,17.0187193 14.3092153,17.2121803 14.3448448,17.3901644 C14.3567213,17.4501373 14.3864126,17.506241 14.4378775,17.5565409 L18.2813055,20.9148772 Z" id="路径"></path>
<path d="M25.6690112,21 L20.851055,21 L19.6450145,22.2511251 C19.3347125,22.5729073 18.9292511,22.7506751 18.5010343,22.7506751 C18.0728175,22.7506751 17.6652875,22.5729073 17.3570542,22.2511251 L16.1510137,21 L11.3330575,21 C11.148945,21 11,21.1620162 11,21.360036 L11,25.6377138 C11,25.8379838 11.148945,26 11.3330575,26 L25.6690112,26 C25.8531237,26 26,25.8379838 26,25.6377138 L26,21.3622862 C26,21.1620162 25.851055,21 25.6690112,21 Z" id="形状"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="30px" height="30px" viewBox="0 0 30 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 56.2 (81672) - https://sketch.com -->
<title>ok </title>
<desc>Created with Sketch.</desc>
<defs>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
<stop stop-color="#55C600" offset="0%"></stop>
<stop stop-color="#00C3B6" offset="100%"></stop>
</linearGradient>
<circle id="path-2" cx="10" cy="10" r="10"></circle>
<filter x="-27.5%" y="-17.5%" width="155.0%" height="155.0%" filterUnits="objectBoundingBox" id="filter-3">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="1.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0.835294118 0 0 0 0 0.270588235 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="文本编辑器" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="1-lignt备份" transform="translate(-442.000000, -530.000000)">
<g id="ok-2" transform="translate(442.000000, 530.000000)">
<g id="icon/ok" transform="translate(5.000000, 5.000000)">
<g id="ok">
<g id="Oval-127">
<use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
<use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
</g>
<polyline id="Path-1766" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" points="5.23632962 10.0435227 8.86867992 14.4222887 16.2792863 5.66475667"></polyline>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

20
assets/ocr_dark.svg Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>识别文字</title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="截图备份-2" transform="translate(-896.000000, -888.000000)">
<g id="截图工具栏备份" transform="translate(725.000000, 876.000000)">
<g id="识别文字" transform="translate(171.000000, 12.000000)">
<rect id="占位备份-2" fill="#FFFFFF" opacity="0" x="0" y="0" width="36" height="36" rx="8"></rect>
<path d="M15.7114428,23 L16.3681592,20.728513 L19.5522388,20.728513 L20.2487562,23 L22,23 L18.8092869,13 L17.1044776,13 L14,23 L15.7114428,23 Z M19,19 L17,19 L17.9939024,16 L19,19 Z" id="A备份" fill="#C5CFE0" fill-rule="nonzero"></path>
<g id="编组" transform="translate(8.500000, 9.000000)" fill="#C5CFE0">
<path d="M6.5,0 L6.5,2 L2.5,2 L2.5,6 L0.5,6 L0.5,-1.8369702e-16 L6.5,0 Z" id="形状结合"></path>
<path d="M6.5,12 L6.5,14 L2.5,14 L2.5,18 L0.5,18 L0.5,12 L6.5,12 Z" id="形状结合备份-2" transform="translate(3.500000, 15.000000) scale(1, -1) translate(-3.500000, -15.000000) "></path>
<path d="M18.5,0 L18.5,2 L14.5,2 L14.5,6 L12.5,6 L12.5,-1.8369702e-16 L18.5,0 Z" id="形状结合备份" transform="translate(15.500000, 3.000000) scale(-1, 1) translate(-15.500000, -3.000000) "></path>
<path d="M18.5,12 L18.5,14 L14.5,14 L14.5,18 L12.5,18 L12.5,12 L18.5,12 Z" id="形状结合备份-3" transform="translate(15.500000, 15.000000) scale(-1, -1) translate(-15.500000, -15.000000) "></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

20
assets/ocr_light.svg Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>识别文字</title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="截图备份" transform="translate(-898.000000, -893.000000)">
<g id="截图工具栏" transform="translate(727.000000, 881.000000)">
<g id="识别文字" transform="translate(171.000000, 12.000000)">
<rect id="占位备份-2" fill="#FFFFFF" opacity="0" x="0" y="0" width="36" height="36" rx="8"></rect>
<path d="M15.7114428,23 L16.3681592,20.728513 L19.5522388,20.728513 L20.2487562,23 L22,23 L18.8092869,13 L17.1044776,13 L14,23 L15.7114428,23 Z M19,19 L17,19 L17.9939024,16 L19,19 Z" id="A备份" fill="#000000" fill-rule="nonzero"></path>
<g id="编组" transform="translate(8.500000, 9.000000)" fill="#000000">
<path d="M6.5,0 L6.5,2 L2.5,2 L2.5,6 L0.5,6 L0.5,-1.8369702e-16 L6.5,0 Z" id="形状结合"></path>
<path d="M6.5,12 L6.5,14 L2.5,14 L2.5,18 L0.5,18 L0.5,12 L6.5,12 Z" id="形状结合备份-2" transform="translate(3.500000, 15.000000) scale(1, -1) translate(-3.500000, -15.000000) "></path>
<path d="M18.5,0 L18.5,2 L14.5,2 L14.5,6 L12.5,6 L12.5,-1.8369702e-16 L18.5,0 Z" id="形状结合备份" transform="translate(15.500000, 3.000000) scale(-1, 1) translate(-15.500000, -3.000000) "></path>
<path d="M18.5,12 L18.5,14 L14.5,14 L14.5,18 L12.5,18 L12.5,12 L18.5,12 Z" id="形状结合备份-3" transform="translate(15.500000, 15.000000) scale(-1, -1) translate(-15.500000, -15.000000) "></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

9
assets/tip_dark.svg Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>温馨提示</title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="OCR_1备份" transform="translate(-560.000000, -785.000000)" fill="#6D7C88">
<path d="M567,785 C570.865993,785 574,788.134007 574,792 C574,795.865993 570.865993,799 567,799 C563.134007,799 560,795.865993 560,792 C560,788.134007 563.134007,785 567,785 Z M567,791 C566.447715,791 566,791.447715 566,792 L566,792 L566,795 C566,795.552285 566.447715,796 567,796 C567.552285,796 568,795.552285 568,795 L568,795 L568,792 C568,791.447715 567.552285,791 567,791 Z M567,788 C566.447715,788 566,788.447715 566,789 C566,789.552285 566.447715,790 567,790 C567.552285,790 568,789.552285 568,789 C568,788.447715 567.552285,788 567,788 Z" id="温馨提示"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1001 B

9
assets/tip_light.svg Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>温馨提示</title>
<g id="6.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="OCR_1" transform="translate(-560.000000, -784.000000)" fill="#8AA1B4">
<path d="M567,784 C570.865993,784 574,787.134007 574,791 C574,794.865993 570.865993,798 567,798 C563.134007,798 560,794.865993 560,791 C560,787.134007 563.134007,784 567,784 Z M567,790 C566.447715,790 566,790.447715 566,791 L566,791 L566,794 C566,794.552285 566.447715,795 567,795 C567.552285,795 568,794.552285 568,794 L568,794 L568,791 C568,790.447715 567.552285,790 567,790 Z M567,787 C566.447715,787 566,787.447715 566,788 C566,788.552285 566.447715,789 567,789 C567.552285,789 568,788.552285 568,788 C568,787.447715 567.552285,787 567,787 Z" id="温馨提示"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 995 B

3
com.deepin.Ocr.service Normal file
View File

@ -0,0 +1,3 @@
[D-BUS Service]
Name=com.deepin.Ocr
Exec=/usr/bin/deepin-ocr --dbus

5
debian/changelog vendored Normal file
View File

@ -0,0 +1,5 @@
deepin-ocr (1.0) unstable; urgency=medium
* Pre-release for deepin-ocr 1.0
-- TagBuilder <hemingyang@uniontech.com> Fri, 10 May 2021 14:20:26 +0000

1
debian/compat vendored Normal file
View File

@ -0,0 +1 @@
11

13
debian/control vendored Normal file
View File

@ -0,0 +1,13 @@
Source: deepin-ocr
Section: utils
Priority: optional
Maintainer: Deepin Packages Builder <packages@deepin.com>
Build-Depends: debhelper (>= 11), cmake, qtbase5-dev, pkg-config,libdtkwidget-dev
Standards-Version: 4.1.3
Homepage: <insert the upstream URL, if relevant>
Package: deepin-ocr
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Ocr for UOS
Ocr is a text recognition software.

40
debian/copyright vendored Normal file
View File

@ -0,0 +1,40 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: deepin-ocr
Upstream-Contact: https://github.com/linuxdeepin/deepin-ocr/issues
Source: https://github.com/linuxdeepin/deepin-ocr
License: GPL-3+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>
.
On Debian systems, the complete text of the GNU General
Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFT

12
debian/rules vendored Executable file
View File

@ -0,0 +1,12 @@
#!/usr/bin/make -f
include /usr/share/dpkg/default.mk
export QT_SELECT=qt5
%:
dh $@
override_dh_auto_configure:
qmake
dh_auto_configure -- \
-- VERSION=$(VERSION) LIB_INSTALL_DIR=/usr/lib/$(DEB_HOST_MULTIARCH) DEFINES+="VERSION=$(DEB_VERSION_UPSTREAM)"

1
debian/source/format vendored Normal file
View File

@ -0,0 +1 @@
3.0 (native)

64
deepin-ocr.pro Normal file
View File

@ -0,0 +1,64 @@
######################################################################
# Automatically generated by qmake (3.1) Mon Jun 7 20:28:16 2021
######################################################################
TEMPLATE = app
TARGET = deepin-ocr
INCLUDEPATH += .
# The following define makes your compiler warn you if you use any
# feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
# Input
HEADERS += src/mainwindow.h \
src/service/ocrinterface.h \
src/service/dbusocr_adaptor.h \
src/ocrapplication.h \
src/mainwidget.h \
src/resulttextview.h \
src/textloadwidget.h \
src/view/imageview.h
SOURCES += src/main.cpp \
src/mainwindow.cpp \
src/service/ocrinterface.cpp \
src/service/dbusocr_adaptor.cpp \
src/ocrapplication.cpp \
src/mainwidget.cpp \
src/textloadwidget.cpp \
src/resulttextview.cpp \
src/view/imageview.cpp
QT += dtkgui
QT += dtkwidget
#installs
target.path=/usr/bin
#翻译
isEmpty(TRANSLATIONS) {
include(./translations.pri)
}
TRANSLATIONS_COMPILED = $$TRANSLATIONS
TRANSLATIONS_COMPILED ~= s/\.ts/.qm/g
translations.path=/usr/share/deepin-ocr/translations
translations.files=$$TRANSLATIONS_COMPILED
#Dbus文件
dbus_service.path=/usr/share/dbus-1/services
dbus_service.files=./com.deepin.Ocr.service
INSTALLS += target dbus_service translations
RESOURCES += \
resource.qrc

17
resource.qrc Normal file
View File

@ -0,0 +1,17 @@
<RCC>
<qresource prefix="/">
<file>assets/tip_dark.svg</file>
<file>assets/tip_light.svg</file>
<file>assets/download_light.svg</file>
<file>assets/icon_toast_sucess_new.svg</file>
<file>assets/download_dark.svg</file>
<file>assets/distinguish_normal_light.svg</file>
<file>assets/distinguish_normal_dark.svg</file>
<file>assets/distinguish_light.svg</file>
<file>assets/distinguish_dark.svg</file>
<file>assets/appicon_dark.svg</file>
<file>assets/appicon_light.svg</file>
<file>assets/copy_dark.svg</file>
<file>assets/copy_light.svg</file>
</qresource>
</RCC>

102
src/main.cpp Normal file
View File

@ -0,0 +1,102 @@
/*
* Copyright (C) 2020 ~ 2021 Deepin Technology Co., Ltd.
*
* Author: He MingYang Hao<hemingyang@uniontech.com>
*
* Maintainer: He MingYang <hemingyang@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ocrapplication.h"
#include "service/ocrinterface.h"
#include "service/dbusocr_adaptor.h"
#include <DWidget>
#include <DLog>
#include <DWindowManagerHelper>
#include <DWidgetUtil>
#include <DGuiApplicationHelper>
#include <DApplication>
#include <QCoreApplication>
#include <QDBusConnection>
#include <QDBusInterface>
DWIDGET_USE_NAMESPACE
int main(int argc, char *argv[])
{
if (argc < 2) {
qDebug() << "Cant open a null file";
return 0;
}
DGuiApplicationHelper::setUseInactiveColorGroup(false);
#if(DTK_VERSION < DTK_VERSION_CHECK(5,4,0,0))
DApplication::loadDXcbPlugin();
QScopedPointer<DApplication> app(new DApplication(argc, argv));
#else
QScopedPointer<DApplication> app(DApplication::globalApplication(argc,argv));
#endif
app->setOrganizationName("deepin");
app->setApplicationName("deepin-ocr");
app->setApplicationVersion("1.0");
Dtk::Core::DLogManager::registerConsoleAppender();
Dtk::Core::DLogManager::registerFileAppender();
QCommandLineOption dbusOption(QStringList() << "u" << "dbus", "Start from dbus.");
QCommandLineParser cmdParser;
cmdParser.setApplicationDescription("deepin-Ocr");
cmdParser.addHelpOption();
cmdParser.addVersionOption();
cmdParser.addOption(dbusOption);
cmdParser.process(*app);
app->loadTranslator();
OcrApplication instance;
QDBusConnection dbus = QDBusConnection::sessionBus();
if (dbus.registerService("com.deepin.Ocr")) {
// 第一次启动
// 注册Dbus服务和对象
dbus.registerObject("/com/deepin/Ocr", &instance);
// 初始化适配器
new DbusOcrAdaptor(&instance);
if (cmdParser.isSet(dbusOption)) {
// 第一调用已 --dbus参数启动
qDebug() << "dbus register waiting!";
return app->exec();
}
instance.openFile(QString(argv[1]));
} else {
// 第二次运行此应用,
// 调用DBus接口处理交给第一次调用的进程
// 本进程退退出
OcrInterface *pOcr = new OcrInterface("com.deepin.Ocr","/com/deepin/Ocr", QDBusConnection::sessionBus(), &instance);
qDebug() << __FUNCTION__ << __LINE__;
pOcr->openFile(QString(argv[1]));
//pOcr->openImage(QImage(QSize(500, 145), QImage::Format_RGB32));
return 0;
}
return app->exec();
}

315
src/mainwidget.cpp Normal file
View File

@ -0,0 +1,315 @@
#include "mainwidget.h"
#include "view/imageview.h"
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QHBoxLayout>
#include <QTextBlock>
#include <QStandardPaths>
#include <QFileDialog>
#include <QFileInfo>
#include <DGuiApplicationHelper>
#include <DMainWindow>
#include <DTitlebar>
#include <DMessageManager>
#define App (static_cast<QApplication*>(QCoreApplication::instance()))
MainWidget::MainWidget(QWidget *parent) :
DWidget(parent)
{
setupUi(this);
DGuiApplicationHelper::ColorType themeType = DGuiApplicationHelper::instance()->themeType();
setIcons(themeType);
setupConnect();
}
MainWidget::~MainWidget()
{
// m_mainGridLayout->addLayout(m_buttonHorizontalLayout, 1, 0, 1, 1);
m_mainGridLayout->removeItem(m_buttonHorizontalLayout);
if (m_imageview) {
m_imageview->deleteLater();
m_imageview = nullptr;
}
if (m_mainGridLayout) {
m_mainGridLayout->deleteLater();
m_mainGridLayout = nullptr;
}
if (m_horizontalLayout) {
m_horizontalLayout->deleteLater();
m_horizontalLayout = nullptr;
}
if (m_plainTextEdit) {
m_plainTextEdit->deleteLater();
m_plainTextEdit = nullptr;
}
if (m_buttonHorizontalLayout) {
m_buttonHorizontalLayout->deleteLater();
m_buttonHorizontalLayout = nullptr;
}
if (m_tipHorizontalLayout) {
m_tipHorizontalLayout->deleteLater();
m_tipHorizontalLayout = nullptr;
}
if (m_tiplabel) {
m_tiplabel->deleteLater();
m_tiplabel = nullptr;
}
if (m_copyBtn) {
m_copyBtn->deleteLater();
m_copyBtn = nullptr;
}
if (m_exportBtn) {
m_exportBtn->deleteLater();
m_exportBtn = nullptr;
}
if (m_tipIconLabel) {
m_tipIconLabel->deleteLater();
m_tipIconLabel = nullptr;
}
}
void MainWidget::setupUi(QWidget *Widget)
{
DMainWindow *mainWindow = static_cast<DMainWindow *>(this->parent());
if (mainWindow) {
mainWindow->titlebar()->setMenuVisible(false);
}
m_mainGridLayout = new QGridLayout(Widget);
m_mainGridLayout->setSpacing(6);
m_mainGridLayout->setContentsMargins(0, 0, 0, 0);
m_mainGridLayout->setObjectName(QStringLiteral("gridLayout"));
m_horizontalLayout = new QHBoxLayout(Widget);
m_horizontalLayout->setSpacing(0);
m_horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
m_plainTextEdit = new ResultTextView(Widget);
m_plainTextEdit->setObjectName(QStringLiteral("plainTextEdit"));
if (!m_imageview) {
m_imageview = new ImageView();
}
m_horizontalLayout->addWidget(m_imageview);
m_horizontalLayout->addWidget(m_plainTextEdit);
m_horizontalLayout->setStretch(0, 1);
m_mainGridLayout->addLayout(m_horizontalLayout, 0, 0, 1, 1);
m_mainGridLayout->setColumnStretch(0, 1);
m_buttonHorizontalLayout = new QHBoxLayout(Widget);
m_buttonHorizontalLayout->setContentsMargins(20, 0, 59, 0); //表示控件与窗体的左右边距
// m_buttonHorizontalLayout->setSpacing(30);
m_buttonHorizontalLayout->setObjectName(QStringLiteral("horizontalLayout_2"));
m_tipHorizontalLayout = new QHBoxLayout(Widget);
m_tipIconLabel = new DLabel(Widget);
m_tipIconLabel->setObjectName(QStringLiteral("tipIconLabel"));
m_tipHorizontalLayout->addWidget(m_tipIconLabel);
m_tiplabel = new DLabel(Widget);
m_tiplabel->setObjectName(QStringLiteral("tiplabel"));
m_tipHorizontalLayout->addWidget(m_tiplabel);
m_buttonHorizontalLayout->addLayout(m_tipHorizontalLayout);
QSpacerItem *horizontalSpacer = new QSpacerItem(159, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); m_buttonHorizontalLayout->addItem(horizontalSpacer);
m_buttonHorizontalLayout->addItem(horizontalSpacer);
m_copyBtn = new DIconButton(Widget);
m_copyBtn->setObjectName(QStringLiteral("Copy"));
m_copyBtn->setMaximumSize(QSize(40, 40));
m_buttonHorizontalLayout->addWidget(m_copyBtn);
m_exportBtn = new DIconButton(Widget);
m_exportBtn->setObjectName(QStringLiteral("Export"));
m_exportBtn->setMaximumSize(QSize(40, 40));
m_buttonHorizontalLayout->addWidget(m_exportBtn);
m_mainGridLayout->addLayout(m_buttonHorizontalLayout, 1, 0, 1, 1);
retranslateUi(Widget);
QMetaObject::connectSlotsByName(Widget);
m_pwidget = new QWidget(this);
m_pwidget->setFocusPolicy(Qt::NoFocus);
m_pwidget->setAttribute(Qt::WA_TransparentForMouseEvents);
m_pwidget->setFixedSize(this->width(), this->height() - 23);
m_pwidget->move(0, 0);
createLoadingUi();
// deleteLoadingUi();
}
void MainWidget::setupConnect()
{
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::paletteTypeChanged, this, &MainWidget::setIcons);
connect(m_exportBtn, &DIconButton::clicked, this, &MainWidget::slotExport);
connect(m_copyBtn, &DIconButton::clicked, this, &MainWidget::slotCopy);
}
void MainWidget::retranslateUi(QWidget *Widget)
{
Widget->setWindowTitle(QApplication::translate("Widget", "Widget", nullptr));
m_tiplabel->setText(QApplication::translate("Widget", "Tips: The clearer the image is, the more accurate the text is", nullptr));
// m_copyBtn->setText(QApplication::translate("Widget", "Copy", nullptr));
// m_exportBtn->setText(QApplication::translate("Widget", "Export", nullptr));
}
void MainWidget::createLoadingUi()
{
m_isLoading = true;
m_loadingWidget = new TextLoadWidget(this);
m_loadingWidget->resize(40, 40);
m_loadingWidget->show();
m_loadingTip = new DLabel(tr("Recognizing"), this);
m_loadingTip->show();
DGuiApplicationHelper::ColorType themeType = DGuiApplicationHelper::instance()->themeType();
if (themeType == DGuiApplicationHelper::DarkType) {
m_imageview->setForegroundBrush(QColor(0, 0, 0, 150)); //设置场景的前景色,类似于遮罩
} else {
m_imageview->setForegroundBrush(QColor(255, 255, 255, 150)); //设置场景的前景色,类似于遮罩
}
}
void MainWidget::deleteLoadingUi()
{
m_isLoading = false;
if (m_loadingWidget) {
m_loadingWidget->deleteLater();
m_loadingWidget = nullptr;
}
if (m_loadingTip) {
m_loadingTip->deleteLater();
m_loadingTip = nullptr;
}
m_imageview->setForegroundBrush(QColor(0, 0, 0, 0)); //设置场景的前景色,类似于遮罩
}
void MainWidget::loadingUi()
{
if (m_loadingWidget && m_loadingTip && m_plainTextEdit) {
int x = this->width() - m_plainTextEdit->width() / 2;
int y = this->height() / 2 - 50;
m_loadingWidget->move(x, y);
m_loadingTip->move(x - 20, y + 24);
}
}
void MainWidget::openImage(const QString &path)
{
QImage img(path);
m_imageview->openFilterImage(img);
m_imageview->fitWindow();
m_imgName = path;
}
void MainWidget::openImage(const QImage &img)
{
m_imageview->openFilterImage(img);
m_imageview->fitWindow();
m_imgName = "";
}
void MainWidget::resizeEvent(QResizeEvent *event)
{
loadingUi();
return DWidget::resizeEvent(event);
}
void MainWidget::slotCopy()
{
QIcon icon(":/assets/icon_toast_sucess_new.svg");
DFloatingMessage *pDFloatingMessage = new DFloatingMessage(DFloatingMessage::MessageType::TransientType, this);
pDFloatingMessage->setBlurBackgroundEnabled(true);
pDFloatingMessage->setMessage(tr("Copied"));
pDFloatingMessage->setIcon(icon);
pDFloatingMessage->raise();
DMessageManager::instance()->sendMessage(this, pDFloatingMessage);
m_plainTextEdit->copy();
}
void MainWidget::slotExport()
{
QStringList list = QStandardPaths::standardLocations(QStandardPaths::DownloadLocation);
QString download = "";
if (list.size() > 0) {
download = list.at(0);
} else {
QStringList home = QStandardPaths::standardLocations(QStandardPaths::HomeLocation);
if (home.size() > 0) {
download = home.at(0) + "/Downloads";
}
}
QString fileName = QFileInfo(m_imgName).completeBaseName();
QString file_path = QFileDialog::getSaveFileName(this, "save as", download + "/" + fileName, "*.txt");
qDebug() << file_path;
QString path = file_path + ".txt";
QFile file(path);
if (file.open(QFile::WriteOnly | QFile::Text)) {
QTextStream out(&file);
out << m_plainTextEdit->document()->toPlainText();
}
}
void MainWidget::setIcons(DGuiApplicationHelper::ColorType themeType)
{
if (themeType == DGuiApplicationHelper::DarkType) {
m_tipIconLabel->setPixmap(QPixmap(":/assets/tip_dark.svg"));
m_tipIconLabel->setFixedSize(QSize(14, 14));
m_copyBtn->setIcon(QIcon(":/assets/copy_dark.svg"));
m_copyBtn->setIconSize(QSize(36, 36));
m_copyBtn->setFlat(true);
m_exportBtn->setIcon(QIcon(":/assets/download_dark.svg"));
m_exportBtn->setIconSize(QSize(36, 36));
m_exportBtn->setFlat(true);
App->setWindowIcon(QIcon(":/assets/appicon_dark.svg"));
DMainWindow *mainWindow = static_cast<DMainWindow *>(this->parent());
if (mainWindow) {
mainWindow->titlebar()->setIcon(QIcon(":/assets/appicon_dark.svg"));
}
if (m_isLoading) {
m_imageview->setForegroundBrush(QColor(0, 0, 0, 150)); //设置场景的前景色,类似于遮罩
}
} else {
m_tipIconLabel->setPixmap(QPixmap(":/assets/tip_light.svg"));
m_tipIconLabel->setFixedSize(QSize(14, 14));
m_copyBtn->setIcon(QIcon(":/assets/copy_light.svg"));
m_copyBtn->setIconSize(QSize(36, 36));
m_copyBtn->setFlat(true);
m_exportBtn->setIcon(QIcon(":/assets/download_light.svg"));
m_exportBtn->setIconSize(QSize(36, 36));
m_exportBtn->setFlat(true);
App->setWindowIcon(QIcon(":/assets/appicon_light.svg"));
DMainWindow *mainWindow = static_cast<DMainWindow *>(this->parent());
if (mainWindow) {
mainWindow->titlebar()->setIcon(QIcon(":/assets/appicon_light.svg"));
}
if (m_isLoading) {
m_imageview->setForegroundBrush(QColor(255, 255, 255, 150)); //设置场景的前景色,类似于遮罩
}
}
} // setupUi

66
src/mainwidget.h Normal file
View File

@ -0,0 +1,66 @@
#ifndef WIDGET_H
#define WIDGET_H
#include <DWidget>
#include <DIconButton>
#include <DPlainTextEdit>
#include <DLabel>
#include <DGuiApplicationHelper>
#include "resulttextview.h"
#include "textloadwidget.h"
class QGridLayout;
class QHBoxLayout;
class ImageView;
DWIDGET_USE_NAMESPACE
class MainWidget : public DWidget
{
Q_OBJECT
public:
explicit MainWidget(QWidget *parent = nullptr);
~MainWidget();
void setupUi(QWidget *Widget);
void setupConnect();
void retranslateUi(QWidget *Widget);
void createLoadingUi();
void deleteLoadingUi();
void loadingUi();
void openImage(const QString &path);
void openImage(const QImage &img);
protected:
void resizeEvent(QResizeEvent *event);
private slots:
void setIcons(DGuiApplicationHelper::ColorType themeType);
void slotCopy();
void slotExport();
// void change()
private:
QGridLayout *m_mainGridLayout{nullptr};
QHBoxLayout *m_horizontalLayout{nullptr};
ResultTextView *m_plainTextEdit{nullptr};
QHBoxLayout *m_buttonHorizontalLayout{nullptr};
QHBoxLayout *m_tipHorizontalLayout{nullptr};
DLabel *m_tiplabel{nullptr};
DIconButton *m_copyBtn{nullptr};
DIconButton *m_exportBtn{nullptr};
ImageView *m_imageview{nullptr};
DLabel *m_tipIconLabel{nullptr};
QString m_imgName; //当前图片绝对路径
QWidget *m_pwidget{nullptr};
TextLoadWidget *m_loadingWidget{nullptr};
DLabel *m_loadingTip{nullptr};
bool m_isLoading{false};
};
#endif // WIDGET_H

55
src/mainwindow.cpp Normal file
View File

@ -0,0 +1,55 @@
/*
* Copyright (C) 2020 ~ 2021 Deepin Technology Co., Ltd.
*
* Author: He MingYang Hao<hemingyang@uniontech.com>
*
* Maintainer: He MingYang <hemingyang@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "mainwindow.h"
#include "mainwidget.h"
#include "service/dbusocr_adaptor.h"
#include <QLabel>
#include <QDBusConnection>
#include <DTitlebar>
MainWindow::MainWindow(QWidget *parent)
: DMainWindow(parent)
{
if (!m_mainWidget) {
m_mainWidget = new MainWidget(this);
}
this->setCentralWidget(m_mainWidget);
}
MainWindow::~MainWindow()
{
}
bool MainWindow::openFile(const QString &filePaths)
{
m_mainWidget->openImage(filePaths);
return true;
}
bool MainWindow::openImage(const QImage &image)
{
m_mainWidget->openImage(image);
return true;
}

44
src/mainwindow.h Normal file
View File

@ -0,0 +1,44 @@
/*
* Copyright (C) 2020 ~ 2021 Deepin Technology Co., Ltd.
*
* Author: He MingYang Hao<hemingyang@uniontech.com>
*
* Maintainer: He MingYang <hemingyang@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <DMainWindow>
#include <QMainWindow>
class MainWidget;
DWIDGET_USE_NAMESPACE
class MainWindow : public DMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow() override;
bool openFile(const QString &filePaths);
bool openImage(const QImage &image);
private:
MainWidget *m_mainWidget{nullptr};
};
#endif // MAINWINDOW_H

48
src/ocrapplication.cpp Normal file
View File

@ -0,0 +1,48 @@
/*
* Copyright (C) 2020 ~ 2021 Deepin Technology Co., Ltd.
*
* Author: He MingYang Hao<hemingyang@uniontech.com>
*
* Maintainer: He MingYang <hemingyang@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ocrapplication.h"
#include "mainwindow.h"
OcrApplication::OcrApplication(QObject *parent) : QObject(parent)
{
}
bool OcrApplication::openFile(QString filePath)
{
qDebug() << __FUNCTION__ << __LINE__ << filePath;
MainWindow *win = new MainWindow();
win->openFile(filePath);
win->resize(800, 600);
win->show();
return true;
}
void OcrApplication::openImage(QImage image)
{
qDebug() << __FUNCTION__ << __LINE__ << image.size();
MainWindow *win = new MainWindow();
win->openImage(image);
win->resize(800, 600);
win->show();
}

47
src/ocrapplication.h Normal file
View File

@ -0,0 +1,47 @@
/*
* Copyright (C) 2020 ~ 2021 Deepin Technology Co., Ltd.
*
* Author: He MingYang Hao<hemingyang@uniontech.com>
*
* Maintainer: He MingYang <hemingyang@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef OCRAPPLICATION_H
#define OCRAPPLICATION_H
#include "mainwindow.h"
#include <QObject>
#include <QImage>
class OcrApplication : public QObject
{
Q_OBJECT
public:
explicit OcrApplication(QObject *parent = nullptr);
Q_INVOKABLE bool openFile(QString filePath);
Q_INVOKABLE void openImage(QImage image);
signals:
public slots:
};
#endif // OCRAPPLICATION_H

44
src/resulttextview.cpp Normal file
View File

@ -0,0 +1,44 @@
#include "resulttextview.h"
#include <QDebug>
ResultTextView::ResultTextView(QWidget *parent)
: m_Menu(nullptr), m_actCopy(nullptr), m_actCut(nullptr), m_actSelectAll(nullptr)
{
Q_UNUSED(parent)
m_Menu = new QMenu(this);
m_actCopy = new QAction(this);
m_actCopy->setText(tr("Copy"));
m_actCut = new QAction(this);
m_actCut->setText(tr("Cut"));
m_actSelectAll = new QAction(this);
m_actSelectAll->setText(tr("SelectAll"));
m_Menu->addAction(m_actSelectAll);
m_Menu->addAction(m_actCopy);
m_Menu->addAction(m_actCut);
connect(m_actSelectAll, &QAction::triggered, this, [ = ]() {
emit this->selectAll();
});
connect(m_actCopy, &QAction::triggered, this, [ = ]() {
emit this->copy();
});
connect(m_actCut, &QAction::triggered, this, [ = ]() {
emit this->cut();
});
}
void ResultTextView::contextMenuEvent(QContextMenuEvent *e)
{
Q_UNUSED(e)
//当前是否有选中文本
QString select_str = this->textCursor().selectedText();
if (select_str.length() < 1) {
m_actCopy->setEnabled(false);
m_actCut->setEnabled(false);
} else {
m_actCopy->setEnabled(true);
m_actCut->setEnabled(true);
}
m_Menu->exec(QCursor::pos());
}

27
src/resulttextview.h Normal file
View File

@ -0,0 +1,27 @@
#ifndef RESULTTEXTVIEW_H
#define RESULTTEXTVIEW_H
#include <QObject>
#include <DPlainTextEdit>
#include <QAction>
#include <QMenu>
DWIDGET_USE_NAMESPACE
class ResultTextView : public DPlainTextEdit
{
Q_OBJECT
public:
explicit ResultTextView(QWidget *parent = nullptr);
protected:
void contextMenuEvent(QContextMenuEvent *e) override;
private:
QMenu *m_Menu;
QAction *m_actCopy;
QAction *m_actCut;
QAction *m_actSelectAll;
};
#endif // RESULTTEXTVIEW_H

View File

@ -0,0 +1,64 @@
/*
* Copyright (C) 2020 ~ 2021 Deepin Technology Co., Ltd.
*
* Author: He MingYang Hao<hemingyang@uniontech.com>
*
* Maintainer: He MingYang <hemingyang@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dbusocr_adaptor.h"
#include <QtCore/QMetaObject>
#include <QtCore/QByteArray>
#include <QtCore/QList>
#include <QtCore/QMap>
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtCore/QVariant>
#include <QWidget>
#include <QDebug>
DbusOcrAdaptor::DbusOcrAdaptor(QObject *parent)
: QDBusAbstractAdaptor(parent)
{
// constructor
setAutoRelaySignals(true);
}
DbusOcrAdaptor::~DbusOcrAdaptor()
{
// destructor
}
bool DbusOcrAdaptor::openFile(QString filePath)
{
qDebug() << __FUNCTION__ << __LINE__;
QMetaObject::invokeMethod(parent(), "openFile", Q_ARG(QString, filePath));
return true;
}
void DbusOcrAdaptor::openImage(QByteArray images)
{
qDebug() << __FUNCTION__ << __LINE__;
QByteArray data = images;
QString tmp_data = QString::fromLatin1(data.data(), data.size());
QByteArray srcData = QByteArray::fromBase64(tmp_data.toLatin1());
data = qUncompress(srcData);
QImage image;
image.loadFromData(data);
QMetaObject::invokeMethod(parent(), "openImage", Q_ARG(QImage, image));
}

View File

@ -0,0 +1,67 @@
/*
* Copyright (C) 2020 ~ 2021 Deepin Technology Co., Ltd.
*
* Author: He MingYang Hao<hemingyang@uniontech.com>
*
* Maintainer: He MingYang <hemingyang@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef DBUSOCR_ADAPTOR_H
#define DBUSOCR_ADAPTOR_H
#include <QtCore/QObject>
#include <QtDBus/QtDBus>
QT_BEGIN_NAMESPACE
class QByteArray;
template<class T> class QList;
template<class Key, class Value> class QMap;
class QString;
class QStringList;
class QVariant;
QT_END_NAMESPACE
/*
* @bref: dbusocr_adaptor
*/
class DbusOcrAdaptor: public QDBusAbstractAdaptor
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "com.deepin.Ocr")
Q_CLASSINFO("D-Bus Introspection", ""
" <interface name=\"com.deepin.Ocr\">\n"
" <method name=\"openImage\">\n"
" <arg direction=\"in\" type=\"ay\" name=\"openImage\"/>\n"
" </method>\n"
" <method name=\"openFile\">\n"
" <arg direction=\"in\" type=\"s\" name=\"openFile\"/>\n"
" <arg direction=\"out\" type=\"b\"/>\n"
" </method>\n"
" </interface>\n")
public:
explicit DbusOcrAdaptor(QObject *parent);
virtual ~DbusOcrAdaptor();
public Q_SLOTS: // METHODS
void openImage(QByteArray images);
bool openFile(QString filePath);
Q_SIGNALS: // SIGNALS
};
#endif // DBUSDRAW_ADAPTOR_H

View File

@ -0,0 +1,34 @@
/*
* Copyright (C) 2020 ~ 2021 Deepin Technology Co., Ltd.
*
* Author: He MingYang Hao<hemingyang@uniontech.com>
*
* Maintainer: He MingYang <hemingyang@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ocrinterface.h"
#include <QDBusMetaType>
OcrInterface::OcrInterface(const QString &serviceName, const QString &ObjectPath,
const QDBusConnection &connection, QObject *parent)
: QDBusAbstractInterface(serviceName, ObjectPath, staticInterfaceName(), connection, parent)
{
}
OcrInterface::~OcrInterface()
{
}

View File

@ -0,0 +1,92 @@
/*
* Copyright (C) 2020 ~ 2021 Deepin Technology Co., Ltd.
*
* Author: He MingYang Hao<hemingyang@uniontech.com>
*
* Maintainer: He MingYang <hemingyang@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef OCRINTERFACE_H
#define OCRINTERFACE_H
#include <QtCore/QObject>
#include <QtCore/QByteArray>
#include <QtCore/QList>
#include <QtCore/QMap>
#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtCore/QVariant>
#include <QtDBus/QtDBus>
#include <QImage>
#include <QBuffer>
#include <QDebug>
class OcrInterface: public QDBusAbstractInterface
{
Q_OBJECT
public:
static inline const char *staticInterfaceName()
{
return "com.deepin.Ocr";
}
public:
/*
* @param: serviceName QDBusConnection
* @param: ObjectPath QDBusConnection
*/
OcrInterface(const QString &serviceName, const QString &ObjectPath,
const QDBusConnection &connection, QObject *parent = nullptr);
QDBusConnection dbus = QDBusConnection::sessionBus();
~OcrInterface();
public Q_SLOTS: // METHODS
/*
* @bref:openFile
* @param: filePath
* @return: QDBusPendingReply
*/
inline QDBusPendingReply<> openFile(const QString &filePath)
{
return call(QStringLiteral("openFile"), filePath);
}
/*
* @bref:openImages
* @param: image
* @return: QDBusPendingReply
* @note:
*/
inline QDBusPendingReply<> openImage(const QImage &image)
{
qDebug() << __FUNCTION__;
QByteArray data;
QBuffer buf(&data);
if (image.save(&buf, "PNG")) {
data = qCompress(data, 9);
data = data.toBase64();
}
return call(QStringLiteral("openImage"), QVariant::fromValue(data));
}
Q_SIGNALS: // SIGNALS
};
namespace com {
namespace deepin {
typedef ::OcrInterface Ocr;
}
}
#endif // DRAWINTERFACE_H

13
src/textloadwidget.cpp Normal file
View File

@ -0,0 +1,13 @@
#include "textloadwidget.h"
#include <QVBoxLayout>
TextLoadWidget::TextLoadWidget(DWidget *parent)
: DWidget(parent)
{
this->setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground, true);
m_spinner = new DSpinner(this);
m_spinner->start();
m_spinner->setFixedSize(24, 24);
m_spinner->show();
}

22
src/textloadwidget.h Normal file
View File

@ -0,0 +1,22 @@
#ifndef TEXTLOADWIDGET_H
#define TEXTLOADWIDGET_H
#include <DWidget>
#include <DSpinner>
#include <DLabel>
DWIDGET_USE_NAMESPACE
class QVBoxLayout;
class TextLoadWidget : public DWidget
{
Q_OBJECT
public:
TextLoadWidget(DWidget *parent = nullptr);
private :
DSpinner *m_spinner{nullptr};
QVBoxLayout *m_vboxLayout{nullptr};
DLabel *m_label{nullptr};
};
#endif // TEXTLOADWIDGET_H

278
src/view/imageview.cpp Normal file
View File

@ -0,0 +1,278 @@
#include "imageview.h"
#include <QPaintDevice>
#include <QGraphicsPixmapItem>
#include <QDebug>
#include <QDragEnterEvent>
#include <QMimeData>
#include <QFileDialog>
#include <QMessageBox>
#include <QThreadPool>
#include <qmath.h>
#include <QObject>
const qreal MAX_SCALE_FACTOR = 20.0;
const qreal MIN_SCALE_FACTOR = 0.029;
#define devicePixelRatioF devicePixelRatio
ImageView::ImageView(QWidget *parent):
QGraphicsView(parent)
{
setMouseTracking(true);
setDragMode(ScrollHandDrag);
QGraphicsScene *scene = new QGraphicsScene(this);
setScene(scene);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}
void ImageView::openImage(const QString &path)
{
if (scene()) {
if (m_currentImage) {
delete m_currentImage;
m_currentImage = nullptr;
}
m_currentImage = new QImage(path);
if (!m_currentImage->isNull()) {
QPixmap pic = QPixmap::fromImage(*m_currentImage);
scene()->clear();
m_pixmapItem = new QGraphicsPixmapItem(pic);
m_pixmapItem->setTransformationMode(Qt::SmoothTransformation);
QRectF rect = m_pixmapItem->boundingRect();
setSceneRect(rect);
scene()->addItem(m_pixmapItem);
fitWindow();
m_currentPath = path;
} else {
// App->setStackWidget(0);
}
m_FilterImage = image();
}
}
void ImageView::openFilterImage(QImage img)
{
if (!img.isNull() && scene()) {
m_FilterImage = img;
}
QPixmap pic = QPixmap::fromImage(img);
if (!pic.isNull()) {
scene()->clear();
m_pixmapItem = new QGraphicsPixmapItem(pic);
m_pixmapItem->setTransformationMode(Qt::SmoothTransformation);
QRectF rect = m_pixmapItem->boundingRect();
setSceneRect(rect);
scene()->addItem(m_pixmapItem);
fitWindow();
}
}
qreal ImageView::windowRelativeScale() const
{
QRectF bf = sceneRect();
if (this->window()->isFullScreen()) {
if (1.0 * (width()) / (height() + 15) > 1.0 * bf.width() / bf.height()) {
return 1.0 * (height() + 15) / bf.height();
} else {
return 1.0 * (width()) / bf.width();
}
} else {
if (1.0 * (width() - 20) / (height() - 180) > 1.0 * bf.width() / bf.height()) {
return 1.0 * (height() - 180) / bf.height();
} else {
return 1.0 * (width() - 20) / bf.width();
}
}
}
void ImageView::fitWindow()
{
qreal wrs = windowRelativeScale();
m_scal = wrs;
resetTransform();
scale(wrs, wrs);
// if (wrs - 1 > -0.01 && wrs - 1 < 0.01) {
// emit checkAdaptImageBtn();
// } else {
// emit disCheckAdaptImageBtn();
// }
m_isFitImage = false;
m_isFitWindow = true;
}
void ImageView::fitImage()
{
resetTransform();
m_scal = 1.0;
scale(1, 1);
m_isFitImage = true;
m_isFitWindow = false;
}
void ImageView::RotateImage(const int &index)
{
if (!m_pixmapItem && scene()) return;
QPixmap pixmap = m_pixmapItem->pixmap();
QMatrix rotate;
rotate.rotate(index);
pixmap = pixmap.transformed(rotate, Qt::FastTransformation);
pixmap.setDevicePixelRatio(devicePixelRatioF());
scene()->clear();
resetTransform();
m_pixmapItem = new QGraphicsPixmapItem(pixmap);
m_pixmapItem->setTransformationMode(Qt::SmoothTransformation);
// Make sure item show in center of view after reload
QRectF rect = m_pixmapItem->boundingRect();
setSceneRect(rect);
scene()->addItem(m_pixmapItem);
autoFit();
m_rotateAngel += index;
m_FilterImage = image();
}
void ImageView::savecurrentPic()
{
QString filename = QFileDialog::getSaveFileName(this, tr("Save Image"), "", tr("Images (*.png *.bmp *.jpg)")); //选择路径
image().save(filename);
}
void ImageView::savecurrentPicAs()
{
QFileDialog fileDialog;
QString fileName = fileDialog.getSaveFileName(this, tr("Open File"), "/home", tr("png"));
if (fileName == "") {
return;
}
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QMessageBox::warning(this, tr("error"), tr("open file error"));
return;
} else {
image().save(fileName, "png");
}
}
void ImageView::openImage(QImage *img)
{
if (!img->isNull() && scene()) {
QPixmap pic = QPixmap::fromImage(*img);
if (!pic.isNull()) {
scene()->clear();
m_pixmapItem = new QGraphicsPixmapItem(pic);
m_pixmapItem->setTransformationMode(Qt::SmoothTransformation);
QRectF rect = m_pixmapItem->boundingRect();
setSceneRect(rect);
scene()->addItem(m_pixmapItem);
fitWindow();
}
}
}
qreal ImageView::imageRelativeScale() const
{
return transform().m11() / devicePixelRatioF();
}
void ImageView::autoFit()
{
if (image().isNull())
return;
QSize image_size = image().size();
// change some code in graphicsitem.cpp line100.
if ((image_size.width() >= width() || image_size.height() >= height() - 150) && width() > 0 &&
height() > 0) {
fitWindow();
} else {
fitImage();
}
}
void ImageView::mouseMoveEvent(QMouseEvent *event)
{
return QGraphicsView::mouseMoveEvent(event);
}
const QImage ImageView::image()
{
if (m_pixmapItem) {
return m_pixmapItem->pixmap().toImage();
} else {
return QImage();
}
}
void ImageView::resizeEvent(QResizeEvent *event)
{
return QGraphicsView::resizeEvent(event);
}
void ImageView::wheelEvent(QWheelEvent *event)
{
qreal factor = qPow(1.2, event->delta() / 240.0);
scaleAtPoint(event->pos(), factor);
event->accept();
}
void ImageView::scaleAtPoint(QPoint pos, qreal factor)
{
// Remember zoom anchor point.
const QPointF targetPos = pos;
const QPointF targetScenePos = mapToScene(targetPos.toPoint());
// Do the scaling.
setScaleValue(factor);
// Restore the zoom anchor point.
//
// The Basic idea here is we don't care how the scene is scaled or transformed,
// we just want to restore the anchor point to the target position we've
// remembered, in the coordinate of the view/viewport.
const QPointF curPos = mapFromScene(targetScenePos);
const QPointF centerPos = QPointF(width() / 2.0, height() / 2.0) + (curPos - targetPos);
const QPointF centerScenePos = mapToScene(centerPos.toPoint());
centerOn(static_cast<int>(centerScenePos.x()), static_cast<int>(centerScenePos.y()));
}
void ImageView::setScaleValue(qreal v)
{
//由于矩阵被旋转,通过矩阵获取缩放因子,计算缩放比例错误,因此记录过程中的缩放因子来判断缩放比例
m_scal *= v;
qDebug() << m_scal;
scale(v, v);
//const qreal irs = imageRelativeScale() * devicePixelRatioF();
// Rollback
if (v < 1 && /*irs <= MIN_SCALE_FACTOR)*/m_scal < 0.03) {
const qreal minv = MIN_SCALE_FACTOR / m_scal;
// if (minv < 1.09) return;
scale(minv, minv);
m_scal *= minv;
} else if (v > 1 && /*irs >= MAX_SCALE_FACTOR*/m_scal > 20) {
const qreal maxv = MAX_SCALE_FACTOR / m_scal;
scale(maxv, maxv);
m_scal *= maxv;
} else {
m_isFitImage = false;
m_isFitWindow = false;
}
// qreal rescale = imageRelativeScale() * devicePixelRatioF();
// if (rescale - 1 > -0.01 && rescale - 1 < 0.01) {
// emit checkAdaptImageBtn();
// } else {
// emit disCheckAdaptImageBtn();
// }
}

68
src/view/imageview.h Normal file
View File

@ -0,0 +1,68 @@
/*
*
*/
#ifndef IMAGEVIEW_H
#define IMAGEVIEW_H
#include <QGraphicsView>
class QGraphicsPixmapItem;
class ImageView : public QGraphicsView
{
Q_OBJECT
public:
ImageView(QWidget *parent = nullptr);
//通过路径打开图片
void openImage(const QString &path);
//用于鼠标滚轮滑动
qreal windowRelativeScale() const;
qreal imageRelativeScale() const;
void scaleAtPoint(QPoint pos, qreal factor);
void setScaleValue(qreal v);
//自适应窗口
void autoFit();
//鼠标移动事件
void mouseMoveEvent(QMouseEvent *event) override;
//返回当前图片img
const QImage image();
void openFilterImage(QImage img);
public slots:
//适应窗口大小
void fitWindow();
//适应图片大小
void fitImage();
//旋转图片感觉index角度-为左,+为右
void RotateImage(const int &index);
//保存图片
void savecurrentPic();
//另存为
void savecurrentPicAs();
//打开该图片
void openImage(QImage *img);
//窗口大小改变事件
void resizeEvent(QResizeEvent *event) override;
//鼠标滚轮事件
void wheelEvent(QWheelEvent *event) override;
protected:
private:
QString m_currentPath;//当前图片路径
QGraphicsPixmapItem *m_pixmapItem{nullptr};//当前图像的item
bool m_isFitImage = false;//是否适应图片
bool m_isFitWindow = false;//是否适应窗口
qreal m_scal = 1.0;
int m_rotateAngel = 0; //旋转角度
QImage *m_currentImage{nullptr};//当前原始图像
QImage m_FilterImage{nullptr};//当前处理的图像
QImage m_lightContrastImage{nullptr};//亮度曝光度图像
};
#endif // IMAGEVIEW_H

35
translations.pri Normal file
View File

@ -0,0 +1,35 @@
TRANSLATIONS += \
$$PWD/translations/deepin-ocr_zh_CN.ts \
$$PWD/translations/deepin-ocr_en_US.ts \
$$PWD/translations/deepin-ocr_zh_HK.ts \
$$PWD/translations/deepin-ocr_zh_TW.ts \
$$PWD/translations/deepin-ocr_ar.ts \
$$PWD/translations/deepin-ocr_br.ts \
$$PWD/translations/deepin-ocr_ca.ts \
$$PWD/translations/deepin-ocr_cs.ts \
$$PWD/translations/deepin-ocr_da.ts \
$$PWD/translations/deepin-ocr_de.ts \
$$PWD/translations/deepin-ocr_es.ts \
$$PWD/translations/deepin-ocr_fi.ts \
$$PWD/translations/deepin-ocr_fr.ts \
$$PWD/translations/deepin-ocr_gl_ES.ts \
$$PWD/translations/deepin-ocr_hu.ts \
$$PWD/translations/deepin-ocr_it.ts \
$$PWD/translations/deepin-ocr_ko.ts \
$$PWD/translations/deepin-ocr_ms.ts \
$$PWD/translations/deepin-ocr_nl.ts \
$$PWD/translations/deepin-ocr_pl.ts \
$$PWD/translations/deepin-ocr_pt.ts \
$$PWD/translations/deepin-ocr_pt_BR.ts \
$$PWD/translations/deepin-ocr_ru.ts \
$$PWD/translations/deepin-ocr_sq.ts \
$$PWD/translations/deepin-ocr_sr.ts \
$$PWD/translations/deepin-ocr_tr.ts \
$$PWD/translations/deepin-ocr_uk.ts \
$$PWD/translations/deepin-ocr_ug.ts \
$$PWD/translations/deepin-ocr_bo.ts
DISTFILES += \
$$PWD/translations/deepin-ocr_en_US.ts

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ar">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="bo">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="br">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ca">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="cs">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="da">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="el" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation> Kαταγραφέας Oθόνης Deepin</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation>Έναρξη εγγραφής</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation>Επιλογή περιοχής</translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation>deepin-screen-recorder</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation>Εμφάνιση</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation>Αποθηκεύτηκε στο</translation>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation>Κάντε κλικ ή σύρετε για να
επιλέξετε την περιοχή για εγγραφή</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="es_419" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation>Haz clic en el icono de la bandeja o presiona nuevamente
el atajo de teclado para detener la grabación.</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation>Videograbadora Deepin</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation>Empezar a grabar</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation>Seleccionar área</translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation>deepin-screen-recorder</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation>Ver</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation>Grabación finalizada</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation>Guardado en</translation>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation>Hacer clic o arrastrar para
seleccionar la zona que grabar.</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="fa" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation>شروع ضبط</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation>ناحیه را انتخاب کنید</translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation>ذخیره در</translation>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fi">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="gl_ES">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="he" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation>מסריט המסך של Deepin</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation>התחלה בהסרטה</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation>בחירת אזור</translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation>deepin-screen-recorder</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation>תצוגה</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation>נשמר אל</translation>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation>יש ללחוץ או לגרור
כדי לבחור את האזור להסרטה</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="hi_IN" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation>ि ि</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation>deepin-screen-recorder</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation type="unfinished"/>
</message>
</context>
</TS>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="hr" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation>Deepin snimač zaslona</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation>Započni snimanje</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation>Odaberi područje</translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation>deepin-snimač-zaslona</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation>Pogled</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation>Spremljeno u</translation>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation>Klikni ili privuci za
odabir područja snimanja</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="hu">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="id" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation>Perekam layar deepin</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation>Mulai merekam</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation>Pilih area</translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation>deepin-screen-recorder</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation>Lihat</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation>Simpan ke</translation>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation>Klik atau seret ke
pilih area untuk rekam</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="it">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="ja" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation>
</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation>Deepin </translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation></translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation></translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation></translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation></translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation>
</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ko">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="lt" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation>Norėdami stabdyti įrašinėjimą,
spustelėkite dėklo piktogramą
arba dar kartą paspauskite trumpinį</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation>Deepin ekrano rašytuvas</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation>Pradėti įrašinėjimą</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation>Pasirinkti sritį</translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation>deepin-screen-recorder</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation>Žiūrėti</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation>Įrašinėjimas užbaigtas</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation>Įrašyta į</translation>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation>Spustelėkite ir vilkite,
norėdami pasirinkti
įrašinėjimo sritį</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ms">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="ne" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation> ि ि ि ि</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation>िि </translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation>ि </translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation> </translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation>िि--</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation></translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation> </translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation> ि</translation>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation> ि </translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="nl">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pl">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pt">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pt_BR">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="sk" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation>Kliknite na ikonu
alebo stlačte klávesovú skratku pre zastavenie nahrávania</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation>Deepin nahrávanie obrazovky</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation>Štart nahrávania</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation>Vybrať oblasť</translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation>deepin-nahravanie-obrazovky</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation>Pohľad</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation>Nahrávanie dokončené</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation>Uložené do</translation>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation>Kliknutím alebo ťahaním
vyberte oblasť pre nahrávanie</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="sl" version="2.1">
<context>
<name>CountdownTooltip</name>
<message>
<location filename="../src/countdown_tooltip.cpp" line="78"/>
<source>Click the tray icon
or press the shortcut again to stop recording</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../src/main_window.cpp" line="76"/>
<source>Deepin screen recorder</source>
<translation>Snemalnik zaslona Deepin</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="136"/>
<source>Start recording</source>
<translation>Začni snemanje</translation>
</message>
<message>
<location filename="../src/main_window.cpp" line="454"/>
<source>Select area</source>
<translation>Izberi območje</translation>
</message>
</context>
<context>
<name>RecordProcess</name>
<message>
<location filename="../src/record_process.cpp" line="229"/>
<source>deepin-screen-recorder</source>
<translation>snemalnik-zaslona-deepin</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="291"/>
<source>View</source>
<translation>Pogled</translation>
</message>
<message>
<location filename="../src/record_process.cpp" line="301"/>
<source>Recording finished</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../src/record_process.cpp" line="302"/>
<source>Saved to</source>
<translation>Shranjeno v</translation>
</message>
</context>
<context>
<name>StartTooltip</name>
<message>
<location filename="../src/start_tooltip.cpp" line="48"/>
<source>Click or drag to
select the area to record</source>
<translation>Kliknite ali povlecite,
da izberete območje snemanja</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="sq">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="sr">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="tr">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ug">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="uk">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_HK">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_TW">
<context>
<name>ImageView</name>
<message>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Images (*.png *.bmp *.jpg)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>png</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>open file error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWidget</name>
<message>
<source>Recognizing</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copied</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResultTextView</name>
<message>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cut</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SelectAll</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Widget</name>
<message>
<source>Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Tips: The clearer the image is, the more accurate the text is</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>